欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

INode满的处理方法 有大用

故障现象:

[root@localhost ~]# df -ia

Filesystem        Inodes    IUsed     IFree IUse% Mounted on

/dev/sda3       34390016  1001472  33388544    3% /

proc                   0        0         0     - /proc

sysfs                  0        0         0     - /sys

devpts                 0        0         0     - /dev/pts

tmpfs            4078835    14733   4064102    1% /dev/shm

/dev/sda1          65536       46     65490    1% /boot

/dev/sdb1      301989888   196723 301793165    1% /data

none                   0        0         0     - /proc/sys/fs/binfmt_misc

/dev/sdc1       26226048 25935058    290990   99% /usr/local/tomcat7/webapps/dsideal_yy/html/down



99%的inode满了,不能继续写入文件。



===========================================================================================

思考方法:

参考别人的文档:

https://www.landui.com/help/show-9636.html


2T     -->  122101760   别人的2T硬盘,一般划分122101760个inode

100T  --> 26226048     赤峰的磁盘100T, 划分了 26226048 个 inode,真是醉了~,不提前规划好,这个整不死才怪。


看到有 122101760 个 inodes 吧,一个 inode 占256字节,那么换算成 M 单位是:(122101760 * 256) / (1024 ** 20 = 29810M,差不多 30G 啊!



#查看文件个数

cd /usr/local/tomcat7/webapps/dsideal_yy/html/down/Material


for i in /usr/local/tomcat7/webapps/dsideal_yy/html/down/Material/*; do echo $i; find $i |wc -l; done

for i in /usr/local/tomcat7/webapps/dsideal_yy/html/down/Thumbs/*; do echo $i; find $i |wc -l; done

for i in /usr/local/tomcat7/webapps/dsideal_yy/html/down/Preview/*; do echo $i; find $i |wc -l; done


结果显示,一个 Material的Hash化后一个子目录下文件个数约:26287

总计: 256*26287=6729472  约 670W


一个 Preview的Hash化后一个子目录下文件个数约:41901

总计: 256*41901=10726656  约 1000W



一个 Thumbs的Hash化后一个子目录下文件个数约:5000

总计: 256*5000=10726656  约 100W


文件总数约为:670W+1000W+100W=1770W

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

学习了一下,inode这个东东是在分区,格式化时指定的,指定后不能修改!!!!!!

[root@localhost ~]#  tune2fs -l /dev/sdc1 | grep 'Inode count'

Inode count:              26226048


#

man 一下 mkfs.ext4,发现有两个参数可以制定 inode 数量

    -i bytes-per-inode:多少个字节一个 inode

    -N number-of-inodes:直接制定 inode 数量

默认 16k 一个 inode 相当于

mkfs.ext4 -i 16384 -n /dev/sdc


把这个数字加大了就行了,最好是 1024 的倍数。比如 1M,即 1048576 字节。

mkfs.ext4 -i 1048576 -n /dev/sdc

===========================================================================================

以下是自定义inodes值,其实正常情况是不需要的。

因为60GB分区默认分配400万个inodes,一个图片100KB算,400万个inodes存满会达到400GB尺寸,已经超过分区本身容量,所以不用特意自定义inodes。

ext4格式最低的bytes-per-inode值为1024 好吧我们根据磁盘大小手动指定Inodes最大数吧

fdisk -l

新的磁盘是/dev/sdb 32g

我们可以看到/dev/sdb 这个盘共有 32212254720 bytes 可用那我们手工计算下他允许的最大的inode数目31457280 好了算出来了我们现在就可以指定Inodes值格盘了

mkfs.ext4 -N 31457280 /dev/sdb

当然你也可以直接用 mkfs.ext4 -i 1024 /dev/sdb mkfs.ext4 -i 2048 /dev/sdb mkfs.ext4 -i 4096 /dev/sdb 这样来格盘调整Inodes值

挂盘

mount /dev/xvdd /home/1

查看Inodes使用数df -i

好了。。是不是已经千万级别了。。基本等于无限。。。

注意更多的Inodes值会占用磁盘的容量大约是百分之一。为了获取更多的可用文件数相信大家也不会在乎那几百M的磁盘空间吧。好了本次教程到此为止。。血的教训啊,

吐槽啊ext4 格式下100G的磁盘默认格盘才给了我600w的可用文件数吐血总么可能满足万恶的html文件和缩略图文件的需求呢


https://www.baishitou.cn/1180.html


如何计算出分区支持的最多inodes数量呢?


比如500GB硬盘=524288000kb

524288000个inodes,5亿多个。

==========================================================================================


刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则

 http://blog.sina.com.cn/s/blog_4a2fadfb0102v05o.html


linux 下 ext4最大文件数

比如500GB硬盘=524288000kb

524288000个inodes,5亿多个。

1.

2.

 CentOS 6下建立GPT分区的方法


1、parted 或 gparted


2、gdisk

使用parted方法 


 # /usr/sbin/parted -s /dev/sdb mklabel gpt  

1.

其中gdisk最简单,跟fdisk用法几乎一样 


 # gdisk /dev/sdb 

1.


跟fdisk一样,衍生工具还有cgdisk、sgdisk

可以通过epel源来安装gdisk


# yum install gdisk --enablerepo=epel

1.


2,按提示操作,”? for help“; 3,选“o”---This option deletes all partitions and creates a new protective MBR; 4,选“n”---新建分区; 5,选“1”---分区数为1(生成、dev/sdb1); 6,选“enter”默认---起始终止扇区选择; 7,选“w”保存---保存退出;  二、格式化硬盘 mkfs -t ext4 /dev/sdb1  (网上推荐ext4,它为ext3的升级版)  三、创建挂载点,挂载 mkdir /home/wd4t (命名:wd的硬盘,4T大小) sudo mount /dev/sdb1 /home/wd4t 若要取消挂载: umount /dev/sdb1  四、开机自动挂载 vi /etc/fstab,添加如下行: /dev/sdb1       /home/wd4t1      ext4    defaults        0       1



查找所有零字节文件


cd /usr/local/tomcat7/webapps/dsideal_yy/html/down

find . -name "*" -type f -size 0c

1.

2.

 删除所有零字节文件


 

-----------------------------------

INode满的处理方法

https://blog.51cto.com/u_3044148/3357341


来自 https://blog.51cto.com/u_3044148/3357341


Linux服务器,查看日志发现程序无法继续写文件,但是用df -h查看磁盘容量还有剩余。

排查思路:怀疑是机器的inode节点被占满,使用df -i查看磁盘inode节点使用情况,果然是inode节点满了。

进行如下步骤进行排查:

1,df -i查看磁盘节点使用情况,查看到inode节点已满。

[aig_sg_automation_test@xen18-52 aig_sg_automation_test]$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-LogVol00
3000592 462749 2537843 16% /
tmpfs 1023253 5 1023248 1% /dev/shm
/dev/xvda1 51200 42 51158 1% /boot
172.16.29.199:/backup100/SoftWare
4487457984 552476 4486905508 1% /mnt

2,进入到可能的目录,运行for i in ./*; do echo i;findi;findi | wc -l; done统计当前目录使用节点的情况

3,发现

/usr/local/was/IBM/WebSphere/AppServer/profiles/aig_sg_automation_test/EBAO_ARCH_HOME/print_archive_data/document/pdf

 每天有10000+ pdf生成,直接删除历史文件,

来自   https://www.likecs.com/show-205179750.html



普通分类: