/dev/mapper/VolGroup00-root 滿了關於inodes佔用100%的問題及解決方法

天府雲創發表於2016-12-29

現象
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G   48G     0 100% /
tmpfs                         1.7G   80K  1.7G   1% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/VolGroup-lv_home  848G  2.3G  803G   1% /home


解決方法

1、查詢佔空間大,且沒用的檔案或資料夾,刪除掉。

find / -size +100M -exec ls -lh {} \;


2、對該分割槽擴容,方法如下:

目標:將VolGroup-lv_home縮小到20G,並將剩餘的空間新增給VolGroup-lv_root
 
1.首先檢視磁碟使用情況
[root@localhost ~]# df -h
檔案系統 容量  已用 可用  已用% 掛載點
Filesystem             Size  Used Avail Use% Mounted on  
/dev/mapper/VolGroup-lv_root 154G  7.9G  139G   6% /
tmpfs                 1.9G  100K  1.9G   1% /dev/shm
/dev/sda1             485M   69M  391M  15% /boot
/dev/mapper/VolGroup-lv_home 299G  984M  283G   1% /home
 
2、解除安裝/home
[root@localhost ~]# umount /home
umount /home 如果提示無法解除安裝,則是有程式佔用/home,使用如下命令來終止佔用程式:
[root@localhost ~]# fuser -km /home  
 
3、調整分割槽大小
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
如果提示執行“e2fsck -f /dev/mapper/VolGroup-lv_home”,則執行相關命令: 
[root@localhost ~]# e2fsck -f /dev/mapper/VolGroup-lv_home 然後重新執行命令:
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_home 20G
注:resize2fs 為重新設定磁碟大小,只是重新指定一下大小,並不對結果有影響,需要下面lvreduce的配合
 
4、掛載上/home,檢視磁碟使用情況
[root@localhost ~]# mount /home
[root@localhost ~]# df -h
 
5、設定空閒空間
使用lvreduce指令用於減少LVM邏輯卷佔用的空間大小。可能會刪除邏輯捲上已有的資料,所以在操作前必須進行確認。記得輸入 “y”
[root@localhost ~]# lvreduce -L 20G /dev/mapper/VolGroup-lv_home
注:lvreduce -L 20G的意思為設定當前檔案系統為20G,如果lvreduce -l 20G是指從當前檔案系統上減少20G
使用lvreduce減小邏輯卷的大小。注意:減小後的大小不能小於檔案的大小,否則會丟失資料。 
 
可以使用vgdisplay命令等檢視一下可以操作的大小。也可以是用fdisk -l命令檢視詳細資訊。
[root@localhost ~]# vgdisplay
注:vgdisplay為顯示LVM卷組的後設資料資訊
 
6.把閒置空間掛在到根目錄下
[root@localhost ~]# lvextend -L +283G /dev/mapper/VolGroup-lv_root
注:lvextend -L +283G為在檔案系統上增加283G
[root@localhost ~]# resize2fs -p /dev/mapper/VolGroup-lv_root
 
7、檢查調整結果
[root@localhost ~]# df -h

[場景]

/dev/mapper/VolGroup00-LogVol00 是邏輯卷/ 根目錄才是實際掛載的目錄。根分割槽都塞滿了,自己清理一些垃圾檔案或者加硬碟線上擴容、主要看看/tmp /var目錄下的一些臨時檔案和一些日誌檔案,選擇些的進行清理給你個命令`看下哪個目錄下東西大find / -size +10M -exec ls -lh {} \;

df -i

​for i in ./*; do echo $i; find $i | wc -l; done  查檔案數量

今天nagios報警,一臺伺服器的disk滿了,使用du -sh * 或 du -sh /* 檢視目錄的大小,查詢佔用空間大的目錄/var/spool/clientmqueue....

然後我就想/var/spool/clientmqueue這個目錄幹嘛用的,糾結了半天,谷歌了下,原來/var/spool/clientmqueue是如果系統中有使用者開啟了cron,而cron中執行的程式有輸出內容,輸出內容會以郵件形式發給cron的使用者,而sendmail沒有啟動所以就產生了這些檔案。

伺服器上確實有cron定時執行數十個指令碼,而且都沒有設定輸出定向,日積月累的檔案都被儲存在/var/spool/clientmqueue目錄下面樂 = =.

解決方法:在cron的自動執行語句後加上> /dev/null 2>&1例:4 3 * * * /usr/bin/w > /dev/null 2>&1這樣就OK拉,就不會寫到那個目錄下了....

在這裡說一點,/var/spool/clientmqueue目錄檔案太多,rm -rf *時候會提示:

“-bash: /bin/rm: Argument list too long“..意思是引數太長,rm 幹不了。可以用ls | xargs rm -f這個命令將/var/spool/clientmqueue目錄下所有檔案刪除。

OK。清理完畢~

情況描述:今天我們郵件伺服器收發不了郵件了,而且連線到伺服器上開啟服務都開不了,起始以為磁碟空間不足,df 看了一下

發現空間是足夠的,然後df -i 檢視了下inodes,發現根目錄下的inodes值使用率為100%了

解決方法:通過以下指令碼進行檢查,檢視到底哪個目錄下面的檔案最多:

for i in /*; do echo $i; find $i | wc -l; done(如果確定是某個目錄下面,則/轉換為該目錄絕對路徑,如/var/spool,則使用for i in /var/spool/*; do echo $i; find $i | wc -l; done)

最終發現/var/soppl目錄最多。然後又進一步確定是/var/spool/amavisd/quarantine 目錄下面有上百萬個檔案,機器已經無法正常顯示了,後來百度檢視了下這個目錄是郵件伺服器,處理垃圾郵件活病毒郵件隔離的,明白原因了,刪除該目錄下所有檔案;使用xargs命令來刪除數量比較多的檔案:

ls | xargs -n 10 rm -rf

執行了大約10多小時之後,最終解決問題。

操作命令:

for i in /var/spool/*; do echo $i; find $i | wc -l; done

[root@L-AP-3-37 ~]# cd /var/spool/clientmqueue

[root@L-AP-3-37 clientmqueue]# ls | xargs rm -f

相關文章