女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深入剖析Linux內核虛擬文件系統

書生途 ? 來源:書生途 ? 作者:書生途 ? 2022-05-14 15:53 ? 次閱讀

虛擬文件系統(Virtual File System,簡稱VFS)是Linux內核的子系統之一,它為用戶程序提供文件和文件系統操作的統一接口,屏蔽不同文件系統的差異和操作細節。借助VFS可以直接使用open()、read()、write()這樣的系統調用操作文件,而無須考慮具體的文件系統和實際的存儲介質。

通過VFS系統,Linux提供了通用的系統調用,可以跨越不同文件系統和介質之間執行,極大簡化了用戶訪問不同文件系統的過程。另一方面,新的文件系統、新類型的存儲介質,可以無須編譯的情況下,動態加載到Linux中。

"一切皆文件"是Linux的基本哲學之一,不僅是普通的文件,包括目錄、字符設備、塊設備、套接字等,都可以以文件的方式被對待。實現這一行為的基礎,正是Linux的虛擬文件系統機制。

VFS之所以能夠銜接各種各樣的文件系統,是因為它抽象了一個通用的文件系統模型,定義了通用文件系統都支持的、概念上的接口。新的文件系統只要支持并實現這些接口,并注冊到Linux內核中,即可安裝和使用。

舉個例子,比如Linux寫一個文件:

int ret = write(fd, buf, len);

調用了write()系統調用,它的過程簡要如下:

首先,勾起VFS通用系統調用sys_write()處理。
接著,sys_write()根據fd找到所在的文件系統提供的寫操作函數,比如op_write()。
最后,調用op_write()實際的把數據寫入到文件中。


操作示意圖如下:

poYBAGJ_YASAUwjJAAA7Acyjm8U821.jpg

文件系統

Linux下常用文件系統介紹

  • swap 文件系統
    swap文件系統用于Linux的交換分區。在Linux中,使用整個交換分區來提供虛擬內存,其分區大小一般應是系統物理內存的2倍,在安裝Linux操作系統時,就應創建交換分區,它是Linux正常運行所必需的,其類型必須是swap,交換分區由操作系統自行管理
  • Btrfs 文件系統
  • Ext系列文件系統
    ext是第一個專門為Linux設計的文件系統類型,稱為擴展文件系統。目前已經到了第四版分別是ext2, ext3,ext4 其中 centOS6默認是ext4文件系統
  • xfs 文件系統
  • NFS文件系統
  • FAT系列文件系統

比較

文件系統 最大文件名長度 最大文件大小 最大分區大小
ext2 255 bytes 2 TB 16 TB
ext3 255 bytes 2 TB 16 TB
ext4 255 bytes 16 TB 1 EB
XFS 255 bytes 8 EB 8 EB
Btrfs 255 bytes 16 EB 16 EB

選擇

文件系統 適用場景 原因
ext2 U盤 U盤一般不會存很多文件,且U盤的文件在電腦上有備份,安全性要求沒那么高,由于ext2不寫日志(journal),所以寫U盤性能比較好。當然由于ext2的兼容性沒有fat好,目前大多數U盤格式還是用fat
ext3 對穩定性要求高的地方 有了ext4后,好像沒什么原因還要用ext3,ext4現在的問題是出來時間不長,還需要一段時間變穩定
ext4 小文件較少 ext系列的文件系統都不支持inode動態分配,所以如果有大量小文件需要存儲的話,不建議用ext4
xfs 小文件多或者需要大的xttr空間,如openstack swift將數據文件的元數據放在了xttr里面 xfs支持inode動態分配,所以不存在inode不夠的情況,并且xttr的最大長度可以達到64K
btrfs 沒有頻繁的寫操作,且需要btrfs的一些特性 btrfs雖然還不穩定,但支持眾多的功能,如果你需要這些功能,且不會頻繁地寫文件,那么選擇btrfs

【文章福利】小編推薦自己的Linux內核技術交流群:【865977150】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!!

pYYBAGJ_YASAJ6ViAADZ9NmCySQ377.jpg

磁盤的組成原理

除了固態硬盤之外,硬盤一般都由磁盤、主軸馬達、磁頭臂、磁頭、永磁鐵等部分組成。

盤片

盤片的表面涂有磁性物質,這些磁性物質用來記錄二進制數據。因為正反兩面都可涂上磁性物質,故一個盤片可能會有兩個盤面,硬盤的存儲介質是磁性材料,磁頭通過電流改變磁盤的磁性來存儲數據。硬盤在邏輯上被劃分為磁道、柱面以及扇區。

poYBAGJ_YASAVYn9AAD-SY-VD1E146.jpg

扇區,磁道

每個盤片被劃分為一個個磁道,每個磁道又劃分為一個個扇區。如下圖:

pYYBAGJ_YASAKWLPAADS000QWn0658.jpg

其中,最內側磁道上的扇區面積最小,因此數據密度最大。

柱面

硬盤通常由重疊的一組盤片構成,每個盤面都被劃分為數目相等的磁道,并從外緣的“0”開始編號,具有相同編號的磁道形成一個圓柱,稱之為磁盤的柱面。

poYBAGJ_YASADs4lAAGnL_fsG_s422.jpg

分區

為什么要對硬盤進行分區呢?

因為我們必須要告訴操作系統:這塊硬盤可以訪問的區域是從 A 柱面到 B 柱面。如此一來,操作系統才能控制硬盤磁頭去 A-B 范圍內的柱面上訪問數據。如果沒有告訴操作系統這些信息,它就無法在磁盤上存取數據。所以對磁盤分區的要點是:記錄每一個分區的起始與結束柱面。 實際上,分區時指定的開始和結束位置是柱面上的扇區(sector):

下面我們以CentOS7 為例來看一下分區情況:

[root@CentOS7 ~]# fdisk -l

磁盤 /dev/sda:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos # 使 用dos---MBR 分區方式
磁盤標識符:0x000ce1c0

   設備    Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM(邏輯卷)
# sda 分區
磁盤 /dev/mapper/centos-root:18.2 GB, 18249416704 字節,35643392 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

# 交換分區
磁盤 /dev/mapper/centos-swap:2147 MB, 2147483648 字節,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節

分區的組成結構

pYYBAGJ_YASAPD5QAADs7fh8uCI409.jpg

MBR

那么,這些分區的信息(起始柱面與結束柱面)被存放在磁盤的主引導區(Master Boot Recorder, MBR)。MBR 在一塊硬盤的第 0 軌上,這也是計算機啟動之后要去使用硬盤時必須讀取的第一個區域。

這個區域內記錄了硬盤里所有分區的信息即磁盤分區表,以及啟動時可以寫入引導程序的位置。因此 MBR 對于硬盤來說至關重要,如果它壞掉了,這塊磁盤也就壽終正寢了。

主引導記錄由三個部分組成:

  • 引導程序占用其中的前446字節(偏移0~1BDH)
  • 隨后的64字節(偏移1BEH~1FDH)為DPT(Disk Partition Table,硬盤分區表)
  • 最后的兩個字節“55 AA”(偏移1FEH~1FFH)是結束標志。

poYBAGJ_YAWAMqlKAACXw_YfVfY231.jpg

分區表:

pYYBAGJ_YAWANBiRAAC_UHoDySU606.jpg

GDT

Disk label type: gpt—GPT

在MBR硬盤中,分區信息直接存儲于主引導記錄(MBR)中(主引導記錄中還存儲著系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出于兼容性考慮,硬盤的第一個扇區仍然用作MBR,之后才是GPT頭。

跟現代的MBR一樣,GPT也使用邏輯區塊地址(LBA)取代了早期的CHS尋址方式。傳統MBR信息存儲于LBA 0,GPT頭存儲于LBA 1,接下來才是分區表本身。

poYBAGJ_YAWAOKKvAAIUeVuK-Z8298.jpg

為什么要提出新的方案呢?那就讓我們看看MBR分區方案有什么問題。前面已經提到了

  • 主分區數目不能超過4個的限制
  • 關鍵的是MBR分區方案無法支持超過2TB容量的磁盤。因為這一方案用4個字節存儲分區的總扇區數,最大能表示2的32次方的扇區個數,按每扇區512字節計算,每個分區最大不能超過2TB。磁盤容量超過2TB以后,分區的起始位置也就無法表示了。

有了扇區(sector),有了柱面(cylinder),有了 磁頭(head),顯然可以定位數據了,這就是數據定位(尋址)方式之一,CHS(也稱3D),對早期的磁盤(上圖所示)非常有效,知道用哪個 磁頭,讀取哪個柱面上的第幾扇區就OK了。CHS模式支持的硬盤容量有限,用8bit來存儲 磁頭地址,用10bit來存儲柱面地址,用6bit來存儲扇區地址,而一個扇區共有512Byte,這樣使用CHS尋址一塊硬盤最大容量為256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B來算就是8.4GB)
但現在很多硬盤采用同密度盤片,意味著內外磁道上的扇區數量不同,扇區數量增加,容量增加,3D很難定位尋址,新的尋址模式:LBA(Logical Block Addressing)。在LBA地址中,地址不再表示實際硬盤的實際 物理地址(柱面、 磁頭和扇區)。LBA編址方式將CHS這種三維尋址方式轉變為一維的線性尋址,它把硬盤所有的 物理扇區的C/H/S編號通過一定的規則轉變為一線性的編號,系統效率得到大大提高,避免了煩瑣的 磁頭/柱面/扇區的尋址方式。在訪問硬盤時,由硬盤控制器再將這種 邏輯地址轉換為實際硬盤的 物理地址。
LBA下的編號,扇區編號是從0開始。邏輯扇區號LBA的公式:
LBA(邏輯扇區號)=磁頭數 × 每磁道扇區數 × 當前所在柱面號 + 每磁道扇區數 × 當前所在磁頭號 + 當前所在扇區號 – 1
例如:CHS=0/0/1,則根據公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0
也就是說 物理0柱面0 磁頭1扇區,是 邏輯0扇區。也就是說 LBA就是扇區的編號, 按照磁道 柱面 和 磁頭 從小到大的順序編號

計算機啟動的過程

1. BIOS 程序啟動

上個世紀70年代初,“只讀內存”(read-only memory,縮寫為ROM)發明,開機程序被刷入ROM芯片,計算機通電后,第一件事就是讀取它。這塊芯片里的程序叫做"基本輸出輸入系統"(Basic Input/Output System),簡稱為BIOS。

2. 硬件自檢

BIOS程序首先檢查,計算機硬件能否滿足運行的基本條件,這叫做"硬件自檢"(Power-On Self-Test),縮寫為POST。
如果硬件出現問題,主板會發出不同含義的蜂鳴,啟動中止。如果沒有問題,屏幕就會顯示出CPU、內存、硬盤等信息。

硬件自檢完成后,BIOS把控制權轉交給下一階段的啟動程序。這時,BIOS需要知道,“下一階段的啟動程序"具體存放在哪一個設備。也就是說,BIOS需要有一個外部儲存設備的排序,排在前面的設備就是優先轉交控制權的設備。這種排序叫做"啟動順序”(Boot Sequence)。

打開BIOS的操作界面,里面有一項就是"設定啟動順序"。

pYYBAGJ_YAWAVwoYAAC2HD2M2Ks438.jpg

3. 主引導記錄

BIOS按照"啟動順序",把控制權轉交給排在第一位的儲存設備。

這時,計算機讀取該設備的第一個扇區,也就是讀取最前面的512個字節。如果這512個字節的最后兩個字節是0x55和0xAA,表明這個設備可以用于啟動;如果不是,表明設備不能用于啟動,控制權于是被轉交給"啟動順序"中的下一個設備。 這最前面的512個字節,就叫做"主引導記錄"(Master boot record,縮寫為MBR)。 主引導記錄"只有512個字節,放不了太多東西。它的主要作用是,告訴計算機到硬盤的哪一個位置去找操作系統

4. 啟動管理器

在這種情況下,計算機讀取"主引導記錄"前面446字節的機器碼之后,不再把控制權轉交給某一個分區,而是運行事先安裝的"啟動管理器"(boot loader),由用戶選擇啟動哪一個操作系統。Linux環境中,目前最流行的啟動管理器是Grub。

5. 操作系統

控制權轉交給操作系統后,操作系統的內核首先被載入內存。 以Linux系統為例,先載入/boot目錄下面的kernel。內核加載成功后,第一個運行的程序是/sbin/init。它根據配置文件(Debian系統是/etc/initab, CentOS 是systemd)產生init進程。這是Linux啟動后的第一個進程,pid進程編號為1,其他進程都是它的后代。

然后,init線程加載系統的各個模塊,比如窗口程序和網絡程序,直至執行/bin/login程序,跳出登錄界面,等待用戶輸入用戶名和密碼。

文件存貯

文件系統到底是怎么管理磁盤的被?首先,操作系統會將磁盤分區后,同一個文件系統中,我們以ext系列為例來說明: ext系統將空間(這里的空間是指的一段連續的磁盤空間)劃分為不同的功能區,比如元數據區和數據區。元數據去主要存貯文件的一些屬性,比如說大小,快信息,這些信息被存貯在inode當中,而數據去以datablock 為存貯單元,主要是存放了文件的數據。

因為磁盤上的數據要和內存交互,而內存通常是以4KB為單位的,所以從邏輯上,把磁盤按照4KB劃分比較方便(稱為一個block)?,F在假設由一個文件系統管理64個blocks的一個磁盤區域:

順序文件結構

顧名思義,文件的存貯數據塊是連續的空間。

優點是不需要額外的空間開銷,只要在文件目錄中指出文件的大小和首塊的塊號即可,對順序的訪問效率很高。適應于順序存取且文件不經常修改的情況。 缺點是

  • 文件動態地增長和縮小時系統開銷很大;
  • 文件創建時要求用戶提供文件的大??;
  • 存儲空間浪費較大。

鏈式文件系統

poYBAGJ_YAWAbeZGAACB6m0sioo690.jpg

克服了連續文件的不足之處,但文件的隨機訪問系統開銷較大。適應于順序訪問的文件。

索引式文件系統

在UNIX時代,就已經實現了索引式的文件系統。它的原理是為一個文件的所有塊建立一個索引表,索引表就是塊地址數組,每個數組元素就是塊的地址,第n個數組元素指向文件中的第n個塊,這樣訪問任意一個塊的時候,只需要從索引表中獲得塊地址就可以了。而且文件中的塊依然可以分散到不連續的零散空間中。其結構如下圖所示

pYYBAGJ_YAWAFkxYAABzVcnN9-M003.jpg

既適應于順序存訪問,也適應于隨機訪問,是一種比較好的文件物理結構,但要有用于索引表的空間開銷和文件索引的時間開銷

Ext 文件分區布局

poYBAGJ_YAaAfvxyAAErmg6RqJ8946.jpg

每個分區,將若干個塊兒組成一個塊組,每個塊組會有以下幾個結構

超級塊

1)超級塊(Super Block)描述整個分區的文件系統信息,如inode/block的大小、總量、使用量、剩余量,以及文件系統的格式與相關信息。超級塊在每個塊組的開頭都有一份拷貝(第一個塊組必須有,后面的塊組可以沒有)。

為了保證文件系統在磁盤部分扇區出現物理問題的情況下還能正常工作,就必須保證文件系統的super block信息在這種情況下也能正常訪問。所以一個文件系統的super block會在多個block group中進行備份,這些super block區域的數據保持一致。 超級塊記錄的信息有:

1、block 與 inode 的總量(分區內所有Block Group的block和inode總量);
2、未使用與已使用的 inode / block 數量;
3、block 與 inode 的大小 (block 為 1, 2, 4K,inode 為 128 bytes);
4、filesystem 的掛載時間、最近一次寫入數據的時間、最近一次檢驗磁盤 (fsck) 的時間等文件系統的相關信息;
5、一個 valid bit 數值,若此文件系統已被掛載,則 valid bit 為 0 ,若未被掛載,則 valid bit 為 1 。

它的結構如圖所示

pYYBAGJ_YAaAQZcTAAEPREVSgxE404.jpg

對于ext2/3/4文件系統,以上介紹的這些inode bitmap, data block bitmap和inode table,都可以通過一個名為"dumpe2fs"的工具來查看其在磁盤上的具體位置

GDT

2)塊組描述符表(GDT,Group Descriptor Table)由很多塊組描述符組成,整個分區分成多個塊組就對應有多少個塊組描述符。
每個塊組描述符存儲一個塊組的描述信息,如在這個塊組中從哪里開始是inode Table,從哪里開始是Data Blocks,空閑的inode和數據塊還有多少個等等。

Inode 和 Block 位圖

4)inode位圖(inode Bitmap)和塊位圖類似,本身占一個塊,其中每個bit表示一個inode是否空閑可用。 Inode bitmap的作用是記錄block group中Inode區域的使用情況,Ext文件系統中一個block group中可以有16384個Inode,代表著這個Ext文件系統中一個block group最多可以描述16384個文件。

poYBAGJ_YAaAaNVOAACx0QY8ELI371.jpg

inode

索引表的索引結構稱為inode,是"index node"的簡稱,用來索引,跟蹤一個文件的所有塊。inode是文件索引結構組織形式的具體體現,一個文件就必須對應一個inode。

5)inode表(inode Table)由一個塊組中的所有inode組成。一個文件除了數據需要存儲之外,一些描述信息也需要存儲,如文件類型,權限,文件大小,創建、修改、訪問時間等,這些信息存在inode中而不是數據塊中。

inode表占多少個塊在格式化時就要寫入塊組描述符中。 在Ext2/Ext3文件系統中,每個文件在磁盤上的位置都由文件系統block group中的一個Inode指針進行索引,Inode將會把具體的位置指向一些真正記錄文件數據的block塊,需要注意的是這些block可能和Inode同屬于一個block group也可能分屬于不同的block group。我們把文件系統上這些真實記錄文件數據的block稱為Data blocks。

索引表本身要占用存儲空間,如果文件很大時,塊就比較多,索引表就會很大。UNIX為了解決這個問題,采用間接索引表來處理。

pYYBAGJ_YAaAIUY4AADhcfYvlj4616.jpg

ls -i 命令可以顯示inode 號

?  command ls -ilt
total 24
3003623(inode號) -rwxr-xr-x  1 root  root    78  8 10 16:43 jump
3003622(inode號) -rwxr-xr-x  1 root  root   476  8 10 16:42 jumper.sh
3003624(inode號) -rwxr-xr-x  1 root  root  3346  3 24  2019 imgcat

data block

6)數據塊(Data Block)是用來放置文件內容數據的地方。根據不同的文件類型有以下幾種情況:
對于普通文件,文件的數據存儲在數據塊中。
對于目錄,該目錄下的所有文件名和目錄名存儲在所在目錄的數據塊中,除了文件名外,ls -l命令看到的其它信息保存在該文件的inode中。

文件分區實踐

我們根據實踐一下磁盤分區的步驟,實踐一下ext4下的文件管理系統的步驟。我們的系統如下。

Linux CentOS7 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

首先第一步,我們需要一塊硬盤,用于我是CentOS7的系統,這里我在虛擬機上新建了一塊硬盤,容量是1G,這塊硬盤還沒有格式,我可以在我的/dev 目錄下找到這塊硬盤。

[root@CentOS7 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

查看分區,我一共有兩塊硬盤,一塊是sda,一塊是sdb。我們接下來需要格式化一下sdb.

格式化硬盤

首先,我們需要用fdisk 將sdb

[root@CentOS7 ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x30c1a40d 創建新的 DOS 磁盤標簽。

命令(輸入 m 獲取幫助):m  #獲取幫助命令
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)   (這里表示,我們沒有任何分許,允許你創建4個可用分區,0個主分區,和一個邏輯分區)
   e   extended
Select (default p): p   (我們來創建主分區)
分區號 (1-4,默認 1):    (選擇分區號,默認即可)
起始 扇區 (2048-2097151,默認為 2048):      (0-2048) # 前2048是系統預留空間 
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-2097151,默認為 2097151):  (我們直接全部將1g劃分為這個分區)
將使用默認值 2097151
分區 1 已設置為 Linux 類型,大小設為 1023 MiB

創建文件系統

使用CentOS7 自帶的文件系統格式工具,將sdb整個硬盤格式化成ext4文件格式。
mke2fs:ext系列文件系統專用管理工具

[root@CentOS7 ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
無論如何也要繼續? (y,n) y
文件系統標簽=
OS type: Linux
塊大小=4096 (log=2)  
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks   # inodes數量和blicks 是數量
13107 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=268435456
8 block groups      # 8個塊組
32768 blocks per group, 32768 fragments per group
8192 inodes per group                   # 每組 inode 的數量
Superblock backups stored on blocks:    # 超級快的存貯位置
	32768, 98304, 163840, 229376

Allocating group tables: 完成
正在寫入inode表: 完成
Creating journal (8192 blocks): 完成  # 創建日志區
Writing superblocks and filesystem accounting information: 完成

查看分區

經過生面的步驟,我們已經將分區創建完畢,我們使用blkid 命令來查看一下分區

[root@CentOS7 ~]# blkid
/dev/sda1: UUID="79678d4f-9276-4d1e-8093-28623d77461e" TYPE="xfs"
/dev/sda2: UUID="FtqgeH-yiRM-f1Wr-73LT-QkQf-2kgX-BkXYi1" TYPE="LVM2_member"
/dev/sr0: UUID="2020-04-22-00-54-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="d0412c8e-07f5-4716-8be7-8ed2da9affca" TYPE="xfs"
/dev/mapper/centos-swap: UUID="ac1ae2c7-d653-4496-97fa-d9315f56993f" TYPE="swap"
/dev/sdb: UUID="6285b923-0ee4-444d-9c68-d6af94914bc3" TYPE="ext4"

查看 超級塊和塊組

dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          6285b923-0ee4-444d-9c68-d6af94914bc3
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              65536
Block count:              262144
Reserved block count:     13107
Free blocks:              249189
Free inodes:              65525
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      127
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Wed Sep 30 12:22:05 2020
Last mount time:          n/a
Last write time:          Wed Sep 30 12:22:05 2020
Mount count:              0
Maximum mount count:      -1
Last checked:             Wed Sep 30 12:22:05 2020
Check interval:           0 ()
Lifetime writes:          33 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      61f49ab4-d494-4be8-95b7-404358b685aa
Journal backup:           inode blocks
Journal features:         (none)
日志大小:             32M
Journal length:           8192
Journal sequence:         0x00000001
Journal start:            0


Group 0: (Blocks 0-32767)
  Checksum 0x4cc2, unused inodes 8181
  主 superblock at 0, Group descriptors at 1-1
  保留的GDT塊位于 2-128
  Block bitmap at 129 (+129), Inode bitmap at 145 (+145)
  Inode表位于 161-672 (+161)
  28521 free blocks, 8181 free inodes, 2 directories, 8181個未使用的inodes
  可用塊數: 142-144, 153-160, 4258-32767
  可用inode數: 12-8192
Group 1: (Blocks 32768-65535) [INODE_UNINIT]
  Checksum 0xabae, unused inodes 8192
  備份 superblock at 32768, Group descriptors at 32769-32769
  保留的GDT塊位于 32770-32896
  Block bitmap at 130 (bg #0 + 130), Inode bitmap at 146 (bg #0 + 146)
  Inode表位于 673-1184 (bg #0 + 673)
  32639 free blocks, 8192 free inodes, 0 directories, 8192個未使用的inodes
  可用塊數: 32897-65535
  可用inode數: 8193-16384

...

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1409

    瀏覽量

    41091
  • Linux
    +關注

    關注

    87

    文章

    11457

    瀏覽量

    212770
  • 文件系統
    +關注

    關注

    0

    文章

    293

    瀏覽量

    20285
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux平臺/proc虛擬文件系統詳解

    Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。proc
    發表于 06-08 10:49 ?1810次閱讀
    <b class='flag-5'>Linux</b>平臺/proc<b class='flag-5'>虛擬文件系統</b>詳解

    Linux虛擬文件系統的基礎知識

    虛擬文件系統是一個很龐大的架構,如果要分析的面面俱到,會顯得特別復雜而笨拙,讓人看著看著,就不知所云了(當然主要還是筆者太菜),所以這篇博客,以 open() 函數為切入點,來試著分析分析VFS文件系統的運轉機理,本文的代碼來源于 li
    發表于 08-25 12:17 ?486次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>虛擬文件系統</b>的基礎知識

    VFS虛擬文件系統描述

    1.VFS——虛擬文件系統,是文件系統對外的接口2.cache——高速緩沖存儲器3.linux的每個文件都是由 i 節點的結構體表示,i 節點包含對
    發表于 12-22 06:56

    Linux虛擬文件系統實現技術探討

    文章論述了 Linux 文件系統的邏輯關系和邏輯結構,對VFS 中幾個主要的數據結構進行了分析,剖析Linux 文件系統 中一個物理
    發表于 06-08 17:51 ?32次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>虛擬文件系統</b>實現技術探討

    玩轉Linux,先把文件系統搞懂

    引入了虛擬文件系統 VFS(Virtual File System) ,為各類文件系統提供一個統一的操作界面和應用編程接口。
    發表于 08-16 10:50 ?2157次閱讀
    玩轉<b class='flag-5'>Linux</b>,先把<b class='flag-5'>文件系統</b>搞懂

    linux 虛擬文件可以系統實現

    虛擬文件系統(VFS)是linux內核和具體I/O設備之間的封裝的一層共通訪問接口,通過這層接口,linux內核可以以同一的方式訪問各種I/
    發表于 05-04 16:56 ?568次閱讀
    <b class='flag-5'>linux</b> <b class='flag-5'>虛擬文件</b>可以<b class='flag-5'>系統</b>實現

    嵌入式Linux常用文件系統

    Linux支持很多文件系統,在選擇時應根據應用的功能選擇文件系統 內核只認識VFS(虛擬文件系統),不同的
    發表于 05-04 17:19 ?2571次閱讀
    嵌入式<b class='flag-5'>Linux</b>常用<b class='flag-5'>文件系統</b>

    簡單介紹Linux虛擬文件系統–VFS

    Linux中可以支持多種文件系統,而且支持各種文件系統之間相互訪問,這是因為有一個虛擬文件系統。虛擬文件系統也叫
    發表于 04-24 14:35 ?1644次閱讀

    Linux 內核/sys 文件系統介紹

    linux2.6內核引入sysfs文件系統,sysfs可以看成與proc,devfs和devpty同類別的文件系統,該文件系統
    發表于 04-25 16:20 ?4453次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>內核</b>/sys <b class='flag-5'>文件系統</b>介紹

    嵌入式Linux文件系統詳細介紹

    Linux支持多種文件系統,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對各類文件系統進行統一管理,Linux引入了
    發表于 04-27 19:23 ?4068次閱讀
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>文件系統</b>詳細介紹

    linux文件系統中的虛擬文件系統設計詳解

    Linux 中允許眾多不同的文件系統共存,如 ext2, ext3, vfat 等。通過使用同一套文件 I/O 系統 調用即可對 Linux
    發表于 04-02 14:37 ?2018次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>文件系統</b>中的<b class='flag-5'>虛擬文件系統</b>設計詳解

    如何區別Linux文件系統呢?

    虛擬文件系統是一種神奇的抽象,它使得 “一切皆文件” 哲學在 Linux 中成為了可能。
    的頭像 發表于 08-09 18:00 ?3906次閱讀

    Linux文件系統與持久性內存

    1、Linux 虛擬文件系統介紹 在 Linux 系統中一切皆文件,除了通常所說的狹義的文件以外
    的頭像 發表于 11-26 14:34 ?2734次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件系統</b>與持久性內存

    RT-Thread文檔_虛擬文件系統

    RT-Thread文檔_虛擬文件系統
    發表于 02-22 18:42 ?1次下載
    RT-Thread文檔_<b class='flag-5'>虛擬文件系統</b>

    Jtti:Linux虛擬文件系統和容器化的關系

    Linux中,虛擬文件系統(VFS)和容器化技術之間有密切的關系。容器化是指通過使用容器來運行應用程序,而容器本質上是在宿主機上運行的獨立進程,它們通常共享宿主機的操作系統內核和部分
    的頭像 發表于 11-27 15:38 ?410次閱讀