首页 > 其他 > 详细

INode满的处理方法

时间:2020-02-11 17:13:51      阅读:121      评论:0      收藏:0      [点我收藏+]

故障现象:
[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

#Linux创建GPT分区格式化并挂载
https://blog.csdn.net/sinat_38769473/article/details/91366873

#
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亿多个。
==========================================================================================

INode满的处理方法

原文:https://www.cnblogs.com/littlehb/p/12295309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!