幫助中心
這里有最新的使用文檔和教程
linux inode索引節點使用率100% 解決
df -i 查看了一下/分區的索引節點(inode),發現已經用滿(已用=100%),導致系統無法創建新目錄和文件。
du -sh 查看某文件的大小
周末因為一個鳥程序的日志每條都瘋狂輸出到一個文件,直接把inode塞滿了。記一下排查方法和刪除大量文件所做的一些措施。
問題排查
for i in /*; do echo $i; find $i | wc -l; done
1
首先使用上面的這條命令一步步縮小范圍,確定在哪個目錄下inode的節點數過多異常。
最后我鎖定到了日志目錄,可是里面只有幾個日志文件,在目錄下直接運行這條命令也只能看到可見文件的inode數,在上一級目錄卻發現inode數為200多萬。
在目錄下運行ls -f命令發現有大量的隱藏文件,所以對這些文件需要進行刪除操作。
文件的刪除
(1)很多人在博客上寫用rsync這條命令。新建一個空文件夾,然后使用rsync進行同步并刪除,使用之后inode的確被釋放出來了,可是速度真的慢。并不像網上說的快的一批。大概一秒也就刪了十個左右的文件。運行了好久沒啥用。
(2)使用find之后接上xargs rm -f,這個比起rsync還是快一點。
*可是等上面的命令運行結束之后,文件夾里還是有文件,但是怎么都刪不掉了。
ls -f 顯示memory exhausted,rm -rf ./運行一會兒就被killed了。
(3)最后使用ls -f | xargs -n 1 rm -rf 這條命令進行了刪除,速度看起來比之前的命令都更快一點。
所以我真的不知道為什么rsync并沒有那些博客里說的那么快,可能我輸入命令時的姿勢不夠正確吧
清理完成后檢查磁盤空間
執行上述清理磁盤空間的命令后,可以通過命令:df -h 查看一下剩余的磁盤空間。只要Use%沒有達到100%就可以了。
df -T 一樣的命令
解決方案
刪除/data/cache目錄中的部分文件,釋放出/data分區的一部分inode。
|
|
這個命令中 /var/spool/clientmqueue 是要刪除的文件所在的目錄 -type f這個參數限定find只查找普通文件(即不是管道文件,不是塊文件,不是鏈接文件,不是目錄等),防止誤刪除系統文件。
原因分析:系統中有用戶開啟了cron,而cron中執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啟動所以就產生了這些文件;
解決辦法:
將crontab里面的命令后面加上 > /dev/null 2>&1 或者crontab里面的命令后面加上 > /dev/null
1. 在Linux系統通過df -i查看inode值,如果inode值滿了,即使磁盤空間很大,也無法創建文件,使用touch abc.txt都無法執行
2. 在Solaris系統通過命令df -o i查看inode值
3. 在centos查看inode的方法
for i in /*; do echo $i; find $i | wc -l; done
4. 如果某個文件夾下面文件比較多,使用rm *是無法使用的
使用xargs命令來刪除數量比較多的文件 ls | xargs -n 10 rm -rf
阿里云 Linux實例磁盤空間滿和inode滿的問題排查方法
inode容量滿的處理
通過如下操作,解決inode容量滿的問題。
查詢inode使用情況
Linux的inode節點中,記錄了文件的類型、大小、權限、所有者、文件連接的數目、創建時間與更新時間等重要的信息,還有一個比較重要的內容就是指向數據塊的指針。一般情況不需要特殊配置,如果存放文件很多,則需要配置。有時磁盤空間有剩余但是不能存放文件,可能是由于inode耗盡所致。
- 執行df -i命令,可以查詢inode的使用情況。
- 如果inode使用率達到或者接近100%,可以通過如下兩種方式進行處理。
- 清除inode占用高的文件或者目錄。
- 修改inode數量。
清除inode占用高的文件或者目錄
如果不方便格式化磁盤以增加inode數量,可以參考如下步驟,清理inode占用量高的文件或者目錄。
- 登錄服務器,執行如下命令,分析根目錄下的每個二級目錄下有多少個文件。
1for i in /*; do echo $i; find $i | wc -l; done
系統顯示類似如下。
- 然后,逐層進入inode占用最高的目錄,繼續執行上述指令,逐步定位占用過高空間的文件或目錄,最后進行相應清理。
修改inode數量
如果不允許清理磁盤中的文件,或者清理后inode使用率仍然較高,則需要通過如下步驟,增加inode節點數量。
注:inode的調整需要重新格式化磁盤,請確保數據已經得到有效備份后,再進行以下操作。
- 執行如下命令,卸載系統文件。
1umount /home
- 執行如下命令,重新建立文件系統,指定inode節點數。
1mkfs.ext3 /dev/xvdb -N 1638400
注:本文指定inode節點數1638400,現場實際環境請以實際為準。
- 執行如下命令,修改fstab文件。
1vim /etc/fstab
- 執行如下命令,查看修改后的inode節點數。
1dumpe2fs -h /dev/xvdb | grep node
系統顯示類似如下。
僵尸文件分析與刪除
如果磁盤和inode都沒有問題,則需要查看是否存在未被清除句柄的僵尸文件。這些文件實際上已經被刪除,但是有服務程序在使用這些文件,導致這些文件一直被占用,無法釋放磁盤空間。如果這些文件過多,會占用很大的磁盤空間。參考以下步驟查看并刪除僵尸文件。
- 遠程登錄服務器。
- 執行如下命令,安裝lsof。