天天看點

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最大檔案數

 CentOS 6下建立GPT分區的方法

1、parted 或 gparted

2、gdisk

使用parted方法 

其中gdisk最簡單,跟fdisk用法幾乎一樣 

跟fdisk一樣,衍生工具還有cgdisk、sgdisk

可以通過epel源來安裝gdisk

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

查找所有零位元組檔案

 删除所有零位元組檔案