1. inodes介紹
Linux系統下文件數據儲存在“塊”中,文件的元信息,例如文件的創建者、文件的創建日期、文件的大小等。這種儲存文件元信息的區域就叫做inode,中文譯名為“索引節點”。
inode也占用硬盤空間,硬盤格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據;另一個是inode區(inode table),存放inode所包含的信息。
每個inode節點的大小,一般是128字節或256字節。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小為128字節,每1KB就設置一個inode,那么inode table的大小就會達到128MB,占整塊硬盤的12.8%。
2. inodes資源耗盡
inodes使用完與存儲空間使用完相似,都是創建不了文件或無法正常執行一些命令。inodes使用完,存儲空間可能還有,這種情況一般是生成了大量的小文件,把inode table占滿。
一般情況下存儲空間使用完,inodes往往才使用百分之幾,所以容易忽視對inodes使用情況的監控。
借用網圖來說明inodes用盡,而磁盤空間還未用完的情況:查看磁盤空間使用情況,使用df命令
查看inodess使用情況,使用df -i命令:
上述兩個命令可以使用-h參數,命令為df -h和df -hi。從圖中看見磁盤空間使用71%,但是inodes使用100%。
3. inodes耗盡解決
inodes的大小在磁盤格式化分區時確定,跟分區的大小相關,分區越大,inodes越大,反之亦然。
linux操作系統根目錄一般分區比較小,如果有定時性的小文件產生而又未及時清理,則很容易造成inodes占滿。
inodes占滿解決步驟:
(1)查看文件最多的目錄
for i in /*; do echo $i; find $i | wc -l; done
如果確定目錄范圍,把/*寫的具體點
最終發現是/var/spool/postfix/maildrop目錄下小文件過多,原因如下:由于linux在執行cron時,會將cron執行腳本中的output和warning信息,都會以郵件的形式發送給cron所有者。由于客戶環境中的sendmail和postfix沒有正常運行,郵件發送不成功,導致全部小文件都堆積在maildrop目錄下,另由于缺乏自動清理的機制,故此目錄下堆積了大量的文件。
經過排查root用戶下發現有個每分鐘進行一次時鐘同步的定時任務,該定時任務每分鐘產生一個小文件。
(2) 刪除大量文件
ls | xargs -n 1000 rm -rf 需要使用xargs命令,不然會刪除失敗。
4. 總結
(1)設置方面在crontab -e 第一行增加MAILTO=“” ,就沒有文件產生啦
(2)重定向對定時任務設置定向輸出文件,不需要日志輸出的定時任務可以將日志重定向到/dev/null,如下:
*/10 * * * * /tmp/test.sh 》/dev/null 2》&1
(3) 定時清理文件
find 目錄 -type f -mtime +30 | xargs -n 1000 rm -f**
(4) 監控inodes的使用
備注:應注意crontab的寫法和產生的文件的定時清理
責編AJX
-
數據
+關注
關注
8文章
7014瀏覽量
88980 -
Linux
+關注
關注
87文章
11300瀏覽量
209403 -
操作系統
+關注
關注
37文章
6816瀏覽量
123313
發布評論請先 登錄
相關推薦
評論