精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從 lsof 開始,深入理解 Linux 虛擬文件系統

系統 Linux
Linux 的文件系統,到底為什么這么設計呢?要了解這些,就要先弄清楚并不容易,下面將從一些基本概念入手,一步步將這些梳理清楚。

背景

有時會出現這樣的情況,磁盤空間顯示已經被占滿,但是在查看磁盤的具體文件占用情況時,發現磁盤仍然有很大的空余空間。

1.執行df命令查看磁盤使用情況,發現磁盤已經滿了。

-bash-4.2$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 30G 30G 0 100% /
devtmpfs devtmpfs 489M 0 489M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 50M 447M 11% /run
tmpfs 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來訪問文件,庫將請求映射到系統調用,以便進入內核模式。

所有與文件相關的操作的入口都是虛擬文件系統(VFS),而非特定的額文件系統(如Ext3、ReiserFS和NFS)。VFS 提供了系統庫和特定文件系統之間的接口。因此,VFS 不僅充當抽象層,而且實際上它提供了一個文件系統的基本實現,可以由不同的實現來使用和擴展。因此,要了解文件系統是如何工作的,就要先了解VFS 。

通用文件模型

VFS 的主要思想在于引入了一個通用文件模型(common file model)。通用文件模型由以下對象類型組成:

超級塊對象(superblock object)

內存:文件系統安裝時創建,存放文件系統的有關信息

磁盤:對應于存放在磁盤上的文件系統控制塊(filesystem control block)

索引節點對象(inode object)

內存:訪問時創建,存放關于具體文件的一般信息(inode 結構)

磁盤:對應于存放在磁盤上的文件控制塊(file control block)

每個索引節點對象都有一個索引節點號,唯一地標識文件系統的文件

文件對象(file object)

內存:打開文件時創建,存放 打開文件 與進程之間進行交互的有關信息(file 結構)

打開文件信息,僅當進程訪問文件期間存在于內核內存中。

目錄項對象(dentry object)

內存:目錄項一旦被讀入內存,VFS就會將其轉換成dentry 結構的目錄項對象

磁盤:特定文件系統以特定的方式存儲在磁盤上

存放目錄項(即,文件名稱)與對應文件進行鏈接的有關信息

目錄樹

綜合來說,Linux 的 根文件系統(system’s root filessystem) 是內核啟動mount的第一個文件系統。內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之后,從中把一些基本的初始化腳本和服務等加載到內存中去運行(文件系統和內核是完全獨立的兩個部分)。其他文件系統,則后續通過腳本或命令作為子文件系統安裝在已安裝文件系統的目錄上,最終形成整個目錄樹。

start_kernel  
vfs_caches_init
mnt_init
init_rootfs // 注冊rootfs文件系統
init_mount_tree // 掛載rootfs文件系統

rest_init
kernel_thread(kernel_init, NULL, CLONE_FS);

就單個文件系統而言,在文件系統安裝時,創建超級塊對象;沿樹查找文件時,總是首先從初識目錄的中查找匹配的目錄項,以便獲取相應的索引節點,然后讀取索引節點的目錄文件,轉化為dentry對象,再檢查匹配的目錄項,反復執行以上過程,直至找到對應的文件的索引節點,并創建索引節點對象。

軟鏈接 vs 硬鏈接

軟鏈接是一個普通的文件,其中存放的是另外一個文件的路徑名。硬鏈接則指向同一個索引節點,硬鏈接數記錄在索引節點對象的 i_nlink 字段。當i_nlink字段為零時,說明沒有硬鏈接指向該文件。

文件 & 進程管理

下圖是一個簡單示例,說明進程是怎樣與文件進行交互。三個不同進程打開同一個文件,每個進程都有自己的文件對象,其中兩個進程使用同一個硬鏈接(每個硬鏈接對應一個目錄對象),兩個目錄項對象都指向同一個 索引節點對象。

索引節點的數據又由兩部分組成:內存數據和磁盤數據。Linux 使用 Write back 作為索引節點的數據一致性策略。對于索引節點的數據,當文件被打開時,才會加載索引節點到內存;當不再被進程使用,則從內存踢出;如果中間有更新,則需要把數據寫回磁盤。

*  "in_use" - valid inode, i_count > 0, i_nlink > 0
* "dirty" - as "in_use" but also dirty
* "unused" - valid inode, i_count = 0

索引節點是否仍在使用,是通過 open() 和 close() 操作建立和銷毀文件對象,文件對象通過索引節點提供的 iget 和 iput  更新索引節點的i_count字段,以完成使用計數。open 操作使得 i_count 加一, close 操作使得 i_count 減一。在 close 操作時判斷索引節點是否釋放,如果 i_count = 0,則意味著不再有進程引用,將會從內存釋放。

文件 & 磁盤管理

文件與磁盤管理聯系最緊密的操作,莫過于touch和rm操作,而尤以后者最為關鍵。通過strace(或 dtruss),查看 rm 的實際的系統調用

# dtruss rm tmp
...
geteuid(0x0, 0x0, 0x0) = 0 0
ioctl(0x0, 0x4004667A, 0x7FFEE06F09C4) = 0 0
lstat64("tmp\0", 0x7FFEE06F0968, 0x0) = 0 0
access("tmp\0", 0x2, 0x0) = 0 0
unlink("tmp\0", 0x0, 0x0) = 0 0

可以發現 rm 實際是通過 unlink 完成的。unlink代表刪除目錄項,以及減少其索引節點的計數。由通用文件模型可知,父目錄本身同樣是一個文件,也就意味著目錄項是其文件數據的一部分。刪除目錄項等價于從父目錄的文件中刪除數據,也就意味著首先要打開父目錄的文件。那么,刪除操作即可理解為:

  1. 刪除命令(一個進程)使用 open 操作獲得父目錄文件對象
  2. 通過 iget 增加 目錄文件的索引節點對象計數
  3. 讀取目錄文件數據
  • 將目錄文件數據轉化為目錄項對象
  • 由于目錄項包含文件的索引節點,類似的,需要通過 iget 增加文件的索引節點對象計數
  1. 刪除目錄的目錄項
  2. 減少文件索引節點對象的硬鏈接計數i_nlink
  3. 通過 iput 結束對文件索引節點對象的操作,使用計數 i_count 減一
  • 判斷i_count是否為零,如果為零,則釋放內存
  • 然后,判斷i_nlink是否為零,如果為零,則釋放磁盤空間
  1. 通過 iput 結束對目錄索引節點對象的操作。

總結

回頭來看遇到的問題,其實可以從兩個角度來理解:

索引與數據

文件系統與文件、磁盤管理與文件、進程管理與文件,最核心的都是文件的索引,而不是文件的數據。把數據和索引分開是理解文件系統的關鍵。

緩存策略

由于操作系統使用 Write back 的策略,意味著只有先釋放內存,才有可能釋放磁盤。

Why lsof ?

從上面的模型可以很清楚的理解,因為目錄已經沒有索引到文件了,但是打開文件還有索引到文件,所以不能立刻釋放磁盤空間。

為什么 lsof 可以找到已刪除未釋放的文件呢?

lsof,顧名思義:list open files,該命令的原理就是查找打開文件的列表,因此可以找到已刪除未釋放的文件。

責任編輯:龐桂玉 來源: Linux學習
相關推薦

2020-10-12 17:40:44

lsofLinux虛擬文件

2023-12-06 09:32:35

Linux系統

2020-07-22 14:53:06

Linux系統虛擬文件

2021-05-31 07:50:59

Linux文件系統

2018-09-12 15:48:35

ext4Linux文件系統

2019-05-22 09:00:16

Linux虛擬文件系統

2019-05-29 16:33:32

Linux虛擬系統

2018-08-24 10:10:25

Linux文件系統技術

2019-09-20 10:04:45

Linux系統虛擬文件

2019-06-14 14:58:58

虛擬文件系統Linux

2009-07-21 10:49:26

ASP.NET虛擬文件

2024-02-02 10:38:06

虛擬文件系統VFS

2023-02-10 08:11:43

Linux系統調用

2025-10-28 04:25:00

2025-03-28 09:19:11

2010-03-02 14:21:30

Linux操作系統

2022-08-21 16:52:27

Linux虛擬內存

2021-05-27 07:12:20

Ext2路徑Linux

2022-11-09 08:12:07

2023-09-18 11:34:17

Linux系統
點贊
收藏

51CTO技術棧公眾號

亚洲免费观看视频| 在线成人h网| 欧美一级淫片007| 日本aa在线观看| 无套内谢的新婚少妇国语播放| 日韩午夜激情| 国产亚洲精品久久久久动| 嫩草视频免费在线观看| 国产美女一区视频| 久久久久久久久蜜桃| 成人羞羞国产免费| 国产成人综合欧美精品久久| 欧美激情偷拍自拍| 亚洲精品国精品久久99热一 | av中文字幕一区二区三区| 国模少妇一区二区三区| 91高清视频在线免费观看| 国产综合精品久久久久成人av| 日韩在线网址| 欧美怡红院视频| 黄色片免费在线观看视频| 国产日产精品久久久久久婷婷| 国产福利一区二区三区视频| 国产精品白嫩美女在线观看| 久久精品这里只有精品| 免费观看成人性生生活片| 亚洲黄色片在线观看| 日本一区二区久久精品| 亚洲av综合色区无码一区爱av | 日韩一区三区| 精品视频久久久| 青青青免费在线| 污污网站免费在线观看| 精品亚洲国产成人av制服丝袜| 69av在线视频| 国产第一页在线播放| 亚洲国产一区二区三区在线播放| 亚洲无亚洲人成网站77777| 少妇熟女视频一区二区三区| 亚洲在线资源| 欧美日韩国产另类不卡| 免费黄色一级网站| 成人线上视频| 精品女同一区二区三区在线播放| 特级西西444| 免费黄色网址在线观看| 国产欧美一区二区三区网站| 鲁鲁狠狠狠7777一区二区| 少妇无码一区二区三区| 国产成人精品www牛牛影视| 91中文精品字幕在线视频| www.亚洲激情| 青青草97国产精品免费观看无弹窗版| 欧美一性一乱一交一视频| 日韩精品视频免费看| 伊人成人在线| 97视频在线观看免费| 日韩高清免费av| 亚洲福利免费| 9.1国产丝袜在线观看| 日韩精品成人在线| 久久福利毛片| 国产精品黄色影片导航在线观看| 成人免费视频国产免费| 97精品国产| 日韩在线视频中文字幕| 99热这里只有精品4| 久久免费av| 欧美成人精品在线| 麻豆一区二区三区精品视频| 国产在线欧美| 97精品久久久| 久久久黄色大片| 俺要去色综合狠狠| 色婷婷综合成人| 国产盗摄一区二区三区在线| 国产综合视频| 欧美一区二区三区四区在线| 69视频免费看| 狠狠色丁香久久婷婷综| 春色成人在线视频| 在线观看免费中文字幕| 精品一区二区三区蜜桃| 国产精品成人一区二区三区| 色婷婷在线视频| 国产色爱av资源综合区| 中文字幕久久一区| 国产高清在线a视频大全| 粉嫩老牛aⅴ一区二区三区| 国产精品va无码一区二区| 中文字幕系列一区| 日韩欧美一区中文| 草草影院第一页| 超碰精品在线观看| 亚洲国产古装精品网站| 亚洲黄色小说视频| 亚洲一本二本| 国产z一区二区三区| 91国偷自产中文字幕久久| 国产精品一二三四| 欧洲一区二区日韩在线视频观看免费| 亚洲s色大片| 欧美日韩激情美女| 午夜啪啪小视频| 国产精品色在线网站| 中文国产亚洲喷潮| 国产成人无码精品| 国产一区二区日韩精品| 欧美不卡三区| 男女免费观看在线爽爽爽视频| 色94色欧美sute亚洲线路二| 各处沟厕大尺度偷拍女厕嘘嘘| 久久亚洲精品人成综合网| 精品国产不卡一区二区三区| 国产日韩在线视频| 91国内精品视频| 久久欧美中文字幕| 欧美日韩激情四射| 激情欧美一区二区三区黑长吊| 亚洲精品720p| 免费在线视频观看| 精品一区二区三区免费视频| 欧美动漫一区二区| 川上优av中文字幕一区二区| 欧美一级一区二区| 日韩一区二区不卡视频| 日本不卡一区二区三区| 欧美黑人3p| 国产精选在线| 精品日产卡一卡二卡麻豆| 日本一级片免费| 久久精品国产网站| 亚洲欧美日韩精品在线| 日本少妇一区| 精品无人国产偷自产在线| 国产在线成人精品午夜| 国产久卡久卡久卡久卡视频精品| 亚洲精品一区二区三区蜜桃久 | 亚洲国产精品人人做人人爽| 九九热视频免费| 91亚洲国产高清| 国产欧美va欧美va香蕉在线| а中文在线天堂| 91在线视频在线| 视频一区免费观看| 在线一区视频观看| 国产亚洲欧美一区| 国产又黄又粗又爽| 91在线视频在线| 少妇高潮毛片色欲ava片| 345成人影院| 亚洲人成电影在线播放| 国产黄色大片免费看| 国产一级久久| 精品一区二区国产| 福利在线免费视频| 国产视频精品va久久久久久| 国产精品6666| 不卡av在线免费观看| 亚洲欧美日韩不卡| 亚洲美女色播| 久久夜色撩人精品| 国产人妻精品一区二区三区| 国产精品久久久久aaaa樱花| 亚洲自拍第三页| 久久精品国产www456c0m| 国产精品偷伦视频免费观看国产| 国产在线资源| 欧美视频完全免费看| 99热6这里只有精品| 老鸭窝一区二区久久精品| 欧美日韩亚洲在线| jizzyou欧美16| 色妞欧美日韩在线| 丰满熟妇人妻中文字幕| 亚洲国产精品尤物yw在线观看| 亚洲一区二区三区四区av| 亚洲激情精品| 免费在线国产精品| 国产日韩在线观看视频| 欧美国产精品人人做人人爱| 免费国产黄色片| 欧美日韩另类视频| av不卡中文字幕| 日韩黄色小视频| 欧美亚洲视频一区| 北条麻妃在线一区二区免费播放| 26uuu亚洲国产精品| 青青草视频在线免费观看| 在线观看免费一区| 久久久国产精品黄毛片| 久久这里只有精品6| 免费看黄色一级大片| 99久久久久国产精品| 999热视频| 秋霞国产精品| 久久99视频免费| 无码国产色欲xxxx视频| 欧美视频一区二区三区四区| 五月天色婷婷丁香| 久久久久久久久久久电影| 中文字幕第17页| 亚洲日本视频| 热久久最新网址| 一区二区三区日本久久久| 国产女人18毛片水18精品| 黄色的视频在线观看| 色视频www在线播放国产成人| 99久久国产免费| 欧美日韩中文字幕在线| 久久噜噜色综合一区二区| 国产精品亚洲а∨天堂免在线| 国模杨依粉嫩蝴蝶150p| 中文字幕一区二区三区乱码图片 | www.久久久久爱免| 91极品视频在线| 一本一道波多野毛片中文在线 | 国产亚洲精品成人a| 日韩中文字幕1| 久久亚洲a v| 999久久久91| 蜜桃导航-精品导航| 精品国产乱码久久久久久樱花| 精品精品欲导航| 少妇无套内谢久久久久| 亚洲二区在线观看| 久久人妻无码aⅴ毛片a片app| 99久久免费视频.com| 91网址在线观看精品| 免费xxxx性欧美18vr| 免费国产a级片| 中文字幕免费一区二区三区| 色综合视频二区偷拍在线 | 97人人澡人人爽| 巨大黑人极品videos精品| 97在线视频观看| h片在线观看网站| 久久激情视频免费观看| 欧美女子与性| 精品动漫一区二区三区在线观看| 国产精品一品二区三区的使用体验 | 蜜桃传媒视频第一区入口在线看| 国产精品白丝av嫩草影院| 亚洲va国产va天堂va久久| 精品久久毛片| 国产精品日韩在线观看| 永久免费毛片在线播放| 久久久久久久999精品视频| 国产黄色在线免费观看| 日韩中文字幕久久| 欧美日韩视频精品二区| 日韩精品电影网| 色资源在线观看| 亚洲精品久久久久久久久久久久 | 日本精品在线观看视频| 91麻豆.com| 极品白嫩丰满美女无套| 成人黄色在线看| 成人h动漫精品一区| www.一区二区| 日本一级片在线播放| 成人av资源网站| 素人fc2av清纯18岁| 97久久人人超碰| 人妻无码一区二区三区| 2021久久国产精品不只是精品| 国产av自拍一区| 久久久久久免费| 五月天精品视频| 国产欧美日韩在线看| 五月天婷婷丁香网| 中文字幕一区二区三区不卡在线| 欧美美女性生活视频| 欧美激情中文不卡| 中文字幕免费在线看线人动作大片| 欧美激情在线一区二区三区| 日本美女xxx| 中文字幕一区三区| 日操夜操天天操| 日韩欧美在线观看| 国产女主播喷水视频在线观看 | 日韩精品在线观看免费| 在线看国产一区二区| 亚洲天堂网在线观看视频| 欧美精品三级日韩久久| 国产激情视频在线播放| 亚洲男女自偷自拍图片另类| jyzzz在线观看视频| 久久国产精品99国产精| 视频在线观看入口黄最新永久免费国产| 97精品国产97久久久久久春色 | 国产精品日韩久久久久| 免费观看亚洲天堂| 欧美日韩亚洲在线| 99精品视频精品精品视频 | 亚洲激情女人| 天天摸天天碰天天添| 久久99在线观看| 丰满人妻一区二区三区免费视频棣| 99精品视频在线观看免费| 男女男精品视频网站| 亚洲色图欧美偷拍| 日韩精品在线免费视频| 欧美欧美午夜aⅴ在线观看| 人妻无码中文字幕| 国产一区二区三区高清在线观看| av毛片在线免费看| 欧美在线视频免费播放| 日本在线一区二区三区| 欧美一二三四五区| 在线精品国产| 日韩一区二区三区久久| yourporn久久国产精品| 中文字幕第69页| 亚洲大片在线观看| 精品人妻av一区二区三区| 色婷婷激情综合| 国产毛片毛片毛片毛片| 亚洲精品v欧美精品v日韩精品| 成人日批视频| 国产精品成人va在线观看| 国产精品美女久久久久| 欧美视频一区二| 亚洲免费视频中文字幕| 成人国产精品久久久| 精品欧美一区二区久久久| 欧美综合影院| 国产精品永久免费| 中日韩免视频上线全都免费| 99re8这里只有精品| 久久夜色精品| 最近中文字幕无免费| 亚洲色图视频网站| 国产精品高清无码| 亚洲精品97久久| 91精品国产91久久久久久青草| 国产精品9999| 西野翔中文久久精品字幕| 日本人体一区二区| 黄色精品一二区| 欧美三级视频网站| 色诱亚洲精品久久久久久| 亚洲色图欧美视频| 久久久亚洲影院| 欧美成年网站| 日本福利视频在线观看| 久久成人18免费观看| 人与嘼交av免费| 欧美三级电影网| 免费在线一级片| 欧美日韩美少妇| 成人高清免费观看mv| 国产精品精品久久久| 国产探花在线精品| 免费观看精品视频| 2020国产成人综合网| 亚洲天堂男人av| 亚洲欧美日韩一区二区三区在线| 高潮在线视频| 日韩av电影免费在线| 久久久精品日韩| 一级片手机在线观看| 色偷偷久久一区二区三区| 免费黄色在线视频网站| 日本久久精品视频| 国产成人黄色| 亚洲黄色小视频在线观看| 国产欧美一区二区三区在线老狼| 亚洲午夜精品久久久| 日韩网站免费观看| 日本a在线天堂| 另类综合日韩欧美亚洲| 欧美做爰爽爽爽爽爽爽| 欧美一区二区三区免费在线看| 成人video亚洲精品| 国产精品我不卡| 亚洲永久在线| x88av在线| 日韩欧美www| а√天堂8资源中文在线| 久久国产精品99久久久久久丝袜| 日韩国产精品久久久久久亚洲| 69xxx免费| 日韩一区二区免费在线观看| 1234区中文字幕在线观看| 精品网站在线看| 天堂av在线一区| 免费一级特黄3大片视频| 欧美一区二区三区色| 国产探花视频在线观看| 国产日韩欧美一区二区三区四区| 视频一区二区中文字幕| 日韩一卡二卡在线观看| 日韩欧美国产系列| 国产伦精品一区二区三区视频金莲| 日韩欧美一区二区三区四区| 老司机午夜精品99久久| 国产精品不卡av| 亚洲网站在线播放| 久久99成人|