Rhel
df 命令未顯示正確的值
這是一個 RHEL 伺服器,我在它上面執行一個 MySQL 伺服器,數據庫和日誌文件(但是,日誌記錄被禁用)位於
/srv
有足夠空間的目錄中。最近我有一個崩潰的表,所以我嘗試修復它,但第二天我發現 MySQL 無法響應許多查詢,並出現錯誤指示沒有磁碟空間:
ERROR 1030 (HY000): Got error 28 from storage engine
所以我執行了以下命令來查看佔用空間的內容
[root@tms /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/server-slash 9.9G 9.5G 0 100% / tmpfs 7.8G 0 7.8G 0% /dev/shm /dev/sda1 485M 58M 402M 13% /boot /dev/mapper/server-var 739G 252G 450G 36% /srv
令人驚訝的是
/
目錄。但更令人驚訝的是,下面的目錄/
並沒有表示已用空間超過2 GB,而df
顯示的總空間為9.9 GB/
。[root@tms /]# du -sh /* 7.5M /bin 48M /boot 200K /dev 24M /etc 4.0K /home 223M /lib 21M /lib64 16K /lost+found 4.0K /media 4.0K /mnt 183M /opt ...deleted some file-not-found errors for files under /proc 0 /proc 144K /root 14M /sbin 4.0K /selinux 252G /srv 0 /sys 44K /tmp 917M /usr 259M /var
那麼為什麼會
df
顯示錯誤的值呢?我怎樣才能找出實際佔用空間的內容?
一種常見的程式技術是創建一個臨時文件並立即 unlink() 它。這使文件(及其空間)在程序執行期間可用,但在使用它的程序終止時會自動導致其刪除。一個優點是不需要編寫結語(清理)程式碼。
要確定您是否有一個打開未連結文件的程序,請執行以下操作:
lsof -a +L1 /dev/server_slash
(或者)
lsof +D /dev/server_slash +L1
查找 NLINK 值為零 (0) 的任何文件。這些將是具有零連結計數的文件,當最後一個程序終止時將消失。SIZE/OFFSET 列將提供相關文件的字元大小。