Linux找不到占用磁盤的文件 - df/du的區(qū)別

最近經(jīng)常收到磁盤空間不足的告警,但是去定位可刪除文件的時(shí)候,發(fā)現(xiàn)了一個(gè)問(wèn)題,df顯示磁盤滿了,但是du計(jì)算得到的磁盤總空間卻只占到磁盤空間的50%左右。 經(jīng)過(guò)查詢后終于找到原因

最終原因

文件如果在被某個(gè)進(jìn)程打開后刪除,還會(huì)存在文件系統(tǒng)中,只是標(biāo)記為(deleted)狀態(tài)。

df統(tǒng)計(jì)是文件系統(tǒng)(FileSystem)中的空閑磁盤大小,這個(gè)數(shù)值可以在文件系統(tǒng)中直接得到,所以命令執(zhí)行很快
du統(tǒng)計(jì)的目錄及文件占用的磁盤大小,如果文件刪除(被標(biāo)記為deleted狀態(tài))則不統(tǒng)計(jì)

問(wèn)題展示

[tenmao@vm ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G   18G   72K 100% /
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.4M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1                497M  171M  327M  35% /boot
tmpfs                    182M     0  182M   0% /run/user/1000

[root@vm /]# du -h --max-depth=1
146M      ./boot
0         ./dev
0         ./proc
9.4M      ./run
0         ./sys
36M       ./etc
44K       ./root
4.0K      ./tmp
344M      ./var
2.6G      ./usr
11G       ./home
0         ./media
0         ./mnt
136M      ./opt
0         ./srv
14G       .

df顯示磁盤占用100%(磁盤一共18G),du命令卻只查找到14G的空間占用

問(wèn)題定位

查看打開的文件列表

[tenmao@vm ~]$ lsof | grep deleted
less      12998          (省略)  /home/tenmao/test4 (deleted)

可以看到文件/home/tenmao/test4被進(jìn)程12998打開后, 又被其他進(jìn)程或命令刪除,在lsof命令中顯示為deleted狀態(tài)

解決問(wèn)題

停掉或重啟進(jìn)程12998

kill 12998
[tenmao@vm /]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   18G   14G  4.0G  78% /
devtmpfs                 898M     0  898M   0% /dev
tmpfs                    910M     0  910M   0% /dev/shm
tmpfs                    910M  9.4M  901M   2% /run
tmpfs                    910M     0  910M   0% /sys/fs/cgroup
/dev/sda1                497M  171M  327M  35% /boot
tmpfs                    182M     0  182M   0% /run/user/1000

停掉進(jìn)程后,df命令與du命令的大小基本一致了。

一個(gè)猜測(cè)

創(chuàng)建文件的時(shí)候,如果df顯示磁盤滿,但是du顯示有空間,是否可以創(chuàng)建文件?

結(jié)果顯示:創(chuàng)建文件的時(shí)候,判斷磁盤空間使用但是df的結(jié)果
(這也很符合預(yù)期,因?yàn)槲募€是交給文件系統(tǒng)來(lái)管理的)

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 觀其大綱 第1部分Linux的基礎(chǔ)知識(shí)第1章Linux概述第2章Linux系統(tǒng)的安裝KickStart開始自動(dòng)安裝...
    周少言閱讀 1,664評(píng)論 1 10
  • du 命令用來(lái)查看目錄或文件所占用磁盤空間的大小。 常用選項(xiàng)組合為:du -sh du的功能: du report...
    我只是一個(gè)小白木木閱讀 42,531評(píng)論 0 4
  • 一、Linux簡(jiǎn)介 1、什么是Linux 1.1、Linux操作系統(tǒng):指GUN/Linux,采用Linux內(nèi)核的G...
    飛吧sky閱讀 1,188評(píng)論 1 3
  • 1. 硬鏈接和軟連接區(qū)別 硬連接-------指通過(guò)索引節(jié)點(diǎn)來(lái)進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)...
    杰倫哎呦哎呦閱讀 2,504評(píng)論 0 2
  • 如果不裝X,跟咸魚又有什么區(qū)別了。聽了一節(jié)關(guān)于runtime相關(guān)的課程,這里第一時(shí)間做個(gè)筆記,方便自己過(guò)后的復(fù)習(xí)。...
    MR_詹閱讀 645評(píng)論 4 6

友情鏈接更多精彩內(nèi)容