問題:硬碟顯示被寫滿,但是用du -sh /*檢視時佔用硬碟空間之和還遠小於硬碟大小
即找不到硬碟分割槽是怎麼被寫滿的。
今天下午接到一學生緊急求助,說生產線伺服器硬碟滿了。該刪的日誌都刪掉了。可空間還是滿的,情況危急啊。這個問題,在多年以前直接和間接的遇到過3-4次。以前太懶惰了,這次記錄下來和大家分享。
相關日誌如下:
█ 檢視硬碟分割槽大小
[root@www ~]# cat /etc/redhat-release
CentOS release 5.3 (Final)
[root@www ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 117G 111G 0 100% /
/dev/sda1 145M 12M 126M 9% /boot
tmpfs 3.0G 0 3.0G 0% /dev/shm
這是一臺web伺服器(apache+tomcat+mysql)
通過dh -h命令檢視 總大小117G,使用了111G
[root@www /]# fdisk -l
Disk /dev/sda: 146.8 GB, 146815733760 bytes
255 heads, 63 sectors/track, 17849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 19 152586 83 Linux
/dev/sda2 20 2108 16779892+ 82 Linux swap / Solaris
/dev/sda3 2109 17849 126439582+ 83 Linux
[root@www /]# fdisk -l /dev/sda3
Disk /dev/sda3: 129.4 GB, 129474132480 bytes
255 heads, 63 sectors/track, 15741 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sda3 doesn't contain a valid partition table
==========================================================================================
█ 使用du命令檢視到底哪些目錄佔用了空間
[root@www /]# du -sh /*
8.6M /bin
6.1M /boot
2.8G /data ===》這裡是DB目錄
124K /dev
60M /etc
1.6G /home ===》這裡是日誌目錄
120M /lib
24M /lib64
16K /lost+found
8.0K /media
0 /misc
12K /mnt
0 /net
8.0K /opt
0 /proc
614M /root
35M /sbin
8.0K /selinux
24K /server
8.0K /srv
0 /sys
24K /tmp
2.5G /usr
29G /var ==》這裡是www目錄
可以看出,上面所有目錄之和 遠小於總的空間佔用111G,是什麼佔用了硬碟,還查不到呢?
---------------
解答:
出現上面問題原因:
在apache/tomcat服務在執行狀態下,清空了執行服務的日誌,這裡是清理了當天或正在寫入的apache及tomcat的日誌檔案,從而導致了上面問題。(有關原理細節見下文)
引申下:
一般情況下,大多數服務(包括指令碼)在執行時,是不能刪除當前正在寫入的日誌檔案的。這點請大家要記牢。
本文的解決辦法:
查詢機器自身的服務,然後重起apache和tomcat。
重起apache後:
[root@www 07]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 117G 109G 2.3G 98% /
/dev/sda1 145M 12M 126M 9% /boot
tmpfs 3.0G 0 3.0G 0% /dev/shm
重起tomcat後:
[root@www ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 117G 38G 74G 34% /
/dev/sda1 145M 12M 126M 9% /boot
tmpfs 3.0G 0 3.0G 0% /dev/shm
刪除檔案原理圖:
本文出自 “老男孩linux運維” 部落格,請務必保留此出處http://oldboy.blog.51cto.com/2561410/612351