真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux下du和df的工作原理

本篇內(nèi)容主要講解“l(fā)inux下du和df的工作原理”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“l(fā)inux下du和df的工作原理”吧!

成都創(chuàng)新互聯(lián)公司于2013年成立,先為三元等服務(wù)建站,三元等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為三元企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

1.原理介紹

1 .1du的工作原理

du命令會(huì)對(duì)待統(tǒng)計(jì)文件逐個(gè)調(diào)用fstat這個(gè)系統(tǒng)調(diào)用,獲取文件大小。它的數(shù)據(jù)是基于文件獲取的,所以有很大的靈活性,不一定非要針對(duì)一個(gè)分區(qū),可以跨越多個(gè)分區(qū)操作。如果針對(duì)的目錄中文件很多,du速度就會(huì)很慢了。

1.2 df的工作原理

df命令使用的事statfs這個(gè)系統(tǒng)調(diào)用,直接讀取分區(qū)的超級(jí)塊信息獲取分區(qū)使用情況。它的數(shù)據(jù)是基于分區(qū)元數(shù)據(jù)的,所以只能針對(duì)整個(gè)分區(qū)。由于df直接讀取超級(jí)塊,所以運(yùn)行速度不受文件多少影響。

2.實(shí)驗(yàn)?zāi)M

常見(jiàn)的df和du不一致情況就是文件被刪除的而進(jìn)程句柄還在導(dǎo)致的問(wèn)題。當(dāng)一個(gè)文件被刪除后,在文件系統(tǒng)目錄中已經(jīng)不可見(jiàn)了,所以du就不會(huì)再統(tǒng)計(jì)它了。然而如果此時(shí)還有運(yùn)行的進(jìn)程持有這個(gè)已經(jīng)被刪除了的文件的句柄,那么這個(gè)文件就不會(huì)真正在磁盤中被刪除,分區(qū)超級(jí)塊中的信息也就不會(huì)更改,這樣df仍舊會(huì)統(tǒng)計(jì)這個(gè)被刪除了的文件。

首先查看磁盤和路徑

[root@zhjk115 app]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                       45G  8.0G   35G  19% /

tmpfs                 4.0G  1.5G  2.5G  37% /dev/shm

/dev/mapper/VolGroup-lv_app

                      255G   42G  201G  18% /app

/dev/sda1             485M   38M  422M   9% /boot

[root@zhjk115 app]#

[root@zhjk115 app]# pwd

/app

用dd命令創(chuàng)建1G大學(xué)的文件

[root@zhjk115 app]# dd if=/dev/zero of=/app/test.iso bs=1024k count=1000

1000+0 records in

1000+0 records out

1048576000 bytes (1.0 GB) copied, 4.31891 s, 243 MB/s

查看df和du結(jié)果,目前是一致的

[root@zhjk115 app]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                       45G  8.0G   35G  19% /

tmpfs                 4.0G  1.5G  2.5G  37% /dev/shm

/dev/mapper/VolGroup-lv_app

                      255G   43G  200G  18% /app

/dev/sda1             485M   38M  422M   9% /boot

[root@zhjk115 app]# du -sh

43G

模擬進(jìn)程在使用test.iso文件

[root@zhjk115 app]# tail -f test.iso &

[1] 22349

[root@zhjk115 app]# ps -ef |grep tail

root     22349 21633 28 09:56 pts/1    00:00:01 tail -f test.iso

root     22353 21633  0 09:56 pts/1    00:00:00 grep tail

刪除test.iso文件,可以看出df和du的結(jié)果是不一致的

[root@zhjk115 app]# rm -rf test.iso

 [root@zhjk115 app]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                       45G  8.0G   35G  19% /

tmpfs                 4.0G  1.5G  2.5G  37% /dev/shm

/dev/mapper/VolGroup-lv_app

                      255G   43G  200G  18% /app

/dev/sda1             485M   38M  422M   9% /boot

 [root@zhjk115 app]# du -sh

42G

用lsof查看哪個(gè)進(jìn)程在使用/app/test.iso

[root@zhjk115 app]# lsof |grep test.iso

tail   22349   root    3r   REG   253,2 1048576000  12 /app/test.iso

手動(dòng)kill占有test.iso文件的進(jìn)程,此時(shí),du和df的結(jié)果一致

[root@zhjk115 app]# kill -9 22349

[1]+  Killed                  tail -f test.iso

[root@zhjk115 app]# du -sh

42G 

[root@zhjk115 app]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

                       45G  8.0G   35G  19% /

tmpfs                 4.0G  1.5G  2.5G  37% /dev/shm

/dev/mapper/VolGroup-lv_app

                      255G   42G  201G  18% /app

/dev/sda1             485M   38M  422M   9% /boot

結(jié)論:

本實(shí)驗(yàn)主要是針對(duì)Linux環(huán)境的使用,該問(wèn)題是由于進(jìn)程的文件句柄釋放問(wèn)題導(dǎo)致的,很多情況為清理完日志等文件是du顯示為已釋放空間,但df空間還在使用,此時(shí)可以通過(guò)echo(或者>)代替rm來(lái)避免這種情況,同時(shí)也可以查看是哪個(gè)進(jìn)程在使用,可以根據(jù)情況手動(dòng)清理、重啟應(yīng)用或者等待釋放。

注:當(dāng)oracle主機(jī)某些日志被清理后但df顯示空間沒(méi)有被釋放也是同樣的道理,一般來(lái)說(shuō)等一段時(shí)間即可,否則需要重啟數(shù)據(jù)庫(kù)實(shí)例來(lái)釋放空間。

到此,相信大家對(duì)“l(fā)inux下du和df的工作原理”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:linux下du和df的工作原理
鏈接地址:http://weahome.cn/article/gdcesp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部