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

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

linux下du和df的工作原理-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!

1.原理介紹

1 .1du的工作原理

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

1.2 df的工作原理

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

2.實驗?zāi)M

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

首先查看磁盤和路徑

[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

模擬進程在使用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查看哪個進程在使用/app/test.iso

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

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

手動kill占有test.iso文件的進程,此時,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é)論:

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

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

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


網(wǎng)站名稱:linux下du和df的工作原理-創(chuàng)新互聯(lián)
文章起源:http://weahome.cn/article/djpesc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部