首頁 > 軟體

Linux系統inode占滿故障解決方法

2020-06-16 17:08:56

眾所周知,Linux檔案系統中inode編碼是指向磁碟block的唯一編號,若伺服器遭入侵或紀錄檔檔案將磁碟inode資源編號耗盡,新資料無法獲取inode編號導致無法儲存。舉例說明:在磁碟中/boot獨立分割區中檢視現有inode資源並通過for迴圈建立大量檔案佔用耗盡inode編號,導致磁碟無法寫入內容,最後進行處理故障。

[root@CentOS7 ~]#  df -i /boot/                                #檢視inode編號
Filesystem    Inodes IUsed IFree IUse% Mounted on
/dev/sda1      1024064  38 1024026  1%  /boot
[root@centos7 ~] for i in {358..1024500}; do touch  file$i;done
[root@centos7 ~]# df -i /boot                                #發現inode佔滿
Filesystem      Inodes  IUsed IFree IUse%  Mounted on
/dev/sda1      1024064 1024064    0  100% /boot
[root@centos7 ~]#  cd /boot                                       
[root@centos7  boot]# touch 123.txt                            #建立檔案無法成功
touch: cannot  touch ‘123.txt’: No space left on device

 方法一:通過傳統方式利用for迴圈刪除檔案,但是比較緩慢
[root@centos7 ~] for i in {950000..1024500}; do rm -rf  file$i;done #一點的刪除

 方法二:利用傳引數的方法快速有效的刪除檔案
[root@centos7 boot]# ls file{400000..500000}|xargs rm 最為有效的方法,傳引數
[root@centos7 boot]# ll file{600000..700000}|xargs rm ll列出的引數過多,傳給rm
ls: cannot access file600000: No such file or directory 時,rm不識別,因此通過
rm: invalid option -- 'w'                                ls顯示出獨立的檔名進
Try 'rm --help' for more information.                    行傳遞。
rm: invalid option -- 'w'

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146458.htm


IT145.com E-mail:sddin#qq.com