背景有時會出現這樣的情況,磁盤空間顯示已經被占滿,但是在查看磁盤的具體文件占用情況時,發現磁盤仍然有很大的空余空間。
1. 執行df命令查看磁盤使用情況,發現磁盤已經滿了。
-bash-4.2$ df -thfilesystem type size used avail use% mounted on/dev/vda1 ext4 30g 30g 0 100% /devtmpfs devtmpfs 489m 0 489m 0% /devtmpfs tmpfs 497m 0 497m 0% /dev/shmtmpfs tmpfs 497m 50m 447m 11% /runtmpfs tmpfs 497m 0 497m 0% /sys/fs/cgroup 2. 執行du命令查看各個目錄的磁盤占用情況,把各個目錄文件的大小相加,發現并沒有占滿磁盤,有10多g空間莫名失蹤。
-bash-4.2$ du -h --max-depth=1 /home16m /home/logs11g /home/serverdog11g /home 3. 為何會出現這樣的情況呢?
因為雖然文件已被刪除,但是一些進程仍然打開這些文件,因此其占用的磁盤空間并沒有被釋放。執行?lsof?命令顯示打開已刪除的文件。將有問題的進程重啟(或,清空),磁盤空間就會得到釋放。
-bash-4.2# lsof | grep deletemysqld 2470 mysql 4u reg 253,1 0 523577 /var/tmp/ibfteqfn (deleted)mysqld 2470 mysql 5u reg 253,1 0 523579 /var/tmp/ibahcidw (deleted)mysqld 2470 mysql 6u reg 253,1 0 523581 /var/tmp/ibljialu (deleted)mysqld 2470 mysql 7u reg 253,1 0 523585 /var/tmp/ibcfnztb (deleted)mysqld 2470 mysql 11u reg 253,1 0 523587 /var/tmp/ibcjuqva (deleted)那么,linux的文件系統,到底為什么這么設計呢?要了解這些,就要先弄清楚并不容易,下面將從一些基本概念入手,一步步將這些梳理清楚:
什么是虛擬文件系統(vfs:virtual filesystem)?什么是通用文件模型?文件的概念超級塊對象(superblock object)索引節點對象(inode object)文件對象(file object)目錄項對象(dentry object)文件的表達內存表達磁盤表達目錄樹的構建軟鏈接 vs 硬鏈接文件 & 磁盤管理索引節點狀態文件 & 進程管理操作:打開&刪除虛擬文件系統(virtual filesystem)下圖顯示了linux操作系統中負責文件管理的基本組件。上半區域為用戶模式,下半區域為內核模式。應用程序使用標準庫libc來訪問文件,庫將請求映射到系統調用,以便進入內核模式。
可以給開公司的發票嗎-其他問題云服務器cvm和ecs有什么區別云服務器能備案幾個域名網站電腦中刺客信條英靈殿出現存檔數據損壞的解決教程mysql不嚴謹模式怎么開啟?618云服務器秒殺【亳州網站建設】這些SEO關鍵詞選擇錯誤,不要忽視了lamp下如何一鍵安裝php