Linux文件系統掛裝與高層體系結構
Windows XP高昂的價格和升級收費政策使更多企業和個人用户轉向自由開放的Linux操作系統,目標僱主羣會迅速增長。下面是小編整理的關於Linux文件系統掛裝與高層體系結構,希望大家認真閲讀!
文件系統體系結構
既然已經看到了文件系統的構造方法,現在就看看Linux文件系統層的體系結構。本文從兩個角度考察Linux文件系統。首先採用高層體系結構的角度。然後進行深層次討論,介紹實現文件系統層的主要結構。
高層體系結構
儘管大多數文件系統代碼在內核中(後面討論的用户空間文件系統除外),但是圖 1 所示的體系結構顯示了用户空間和內核中與文件系統相關的主要組件之間的關係。
圖 x文件系統組件的體系結構
用户空間包含一些應用程序(例如,文件系統的使用者)和 GNU C 庫(glibc),它們為文件系統調用(打開、讀取、寫和關閉)提供用户接口。系統調用接口的作用就像是交換器,它將系統調用從用户空間發送到內核空間中的適當端點。
VFS 是底層文件系統的主要接口。這個組件導出一組接口,然後將它們抽象到各個文件系統,各個文件系統的行為可能差異很大。有兩個針對文件系統對象的緩存(inode 和 dentry)。它們緩存最近使用過的文件系統對象。
每個文件系統實現(比如 ext2、JFS 等等)導出一組通用接口,供 VFS 使用。緩衝區緩存會緩存文件系統和相關塊設備之間的請求。例如,對底層設備驅動程序的讀寫請求會通過緩衝區緩存來傳遞。這就允許在其中緩存請求,減少訪問物理設備的次數,加快訪問速度。以最近使用(LRU)列表的形式管理緩衝區緩存。注意,可以使用 sync 命令將緩衝區緩存中的請求發送到存儲媒體(迫使所有未寫的'數據發送到設備驅動程序,進而發送到存儲設備)。
這就是 VFS 和文件系統組件的高層情況。現在,討論實現這個子系統的主要結構。
主要結構
Linux 以一組通用對象的角度看待所有文件系統。這些對象是超級塊(superblock)、inode、dentry 和文件。超級塊在每個文件系統的根上,超級塊描述和維護文件系統的狀態。文件系統中管理的每個對象(文件或目錄)在Linux中表示為一個 inode。inode 包含管理文件系統中的對象所需的所有元數據(包括可以在對象上執行的操作)。另一組結構稱為 dentry,它們用來實現名稱和 inode 之間的映射,有一個目錄緩存用來保存最近使用的 dentry。dentry 還維護目錄和文件之間的關係,從而支持在文件系統中移動。最後,VFS 文件表示一個打開的文件(保存打開的文件的狀態,比如寫偏移量等等)。
基本的文件系統體系結構
Linux 文件系統體系結構是一個對複雜系統進行抽象化的有趣例子。通過使用一組通用的 API 函數,Linux 可以在許多種存儲設備上支持許多種文件系統。例如,read 函數調用可以從指定的文件描述符讀取一定數量的字節。read 函數不瞭解文件系統的類型,比如 ext3 或 NFS。它也不瞭解文件系統所在的存儲媒體,比如 AT Attachment Packet Interface(ATAPI)磁盤、Serial-Attached SCSI(SAS)磁盤或 Serial Advanced Technology Attachment(SATA)磁盤。但是,當通過調用 read 函數讀取一個文件時,數據會正常返回。本文講解這個機制的實現方法並介紹Linux文件系統層的主要結構。
什麼是文件系統?
首先回答最常見的問題,“什麼是文件系統”。文件系統是對一個存儲設備上的數據和元數據進行組織的機制。由於定義如此寬泛,支持它的代碼會很有意思。正如前面提到的,有許多種文件系統和媒體。由於存在這麼多類型,可以預料到Linux文件系統接口實現為分層的體系結構,從而將用户接口層、文件系統實現和操作存儲設備的驅動程序分隔開。
掛裝
在Linux中將一個文件系統與一個存儲設備關聯起來的過程稱為掛裝(mount)。使用 mount 命令將一個文件系統附着到當前文件系統層次結構中(根)。在執行掛裝時,要提供文件系統類型、文件系統和一個掛裝點。
為了説明Linux文件系統層的功能(以及掛裝的方法),我們在當前文件系統的一個文件中創建一個文件系統。實現的方法是,首先用 dd 命令創建一個指定大小的文件(使用 /dev/zero 作為源進行文件複製)-- 換句話説,一個用零進行初始化的文件,見清單 1。
清單 1. 創建一個經過初始化的文件
1.$ dd if=/dev/zero of= bs=1k count=10000
2.10000+0 records in
3.10000+0 records out
4.$
現在有了一個 10MB 的 文件。使用 losetup 命令將一個循環設備與這個文件關聯起來,讓它看起來像一個塊設備,而不是文件系統中的常規文件:
1.$ losetup /dev/loop0
2.$
這個文件現在作為一個塊設備出現(由 /dev/loop0 表示)。然後用 mke2fs 在這個設備上創建一個文件系統。這個命令創建一個指定大小的新的 ext2 文件系統,見清單 2。
清單 2. 用循環設備創建 ext2 文件系統
1.$ mke2fs -c /dev/loop0 10000
2fs 1.35 (28-Feb-2004)
_blocks 1024000, rsv_groups = 1250, rsv_gdb = 39
system label=
type: Linux
k size=1024 (log=0)
ment size=1024 (log=0)
8.2512 inodes, 10000 blocks
9.500 blocks (5.00%) reserved for the super user
10....
11.$
使用 mount 命令將循環設備(/dev/loop0)所表示的 文件掛裝到掛裝點 /mnt/point1。注意,文件系統類型指定為 ext2。掛裝之後,就可以將這個掛裝點當作一個新的文件系統,比如使用 ls 命令,見清單 3。
相關文章
-
Linux認證基礎知識:linux操作系統目錄結構
在現實生活或工作學習中,大家都經常接觸到作文吧,作文是一種言語活動,具有高度的綜合性和創造性。相信寫作文是一個讓許多人都頭痛的問題,下面是小編為大家整理的游泳的作文,僅供參考,歡迎大家閲讀。游泳的作文1游泳既能鍛 -
Linux認證系統管理:linuxmail命令發送郵件失敗
總結是在某一特定時間段對學習和工作生活或其完成情況,包括取得的成績、存在的問題及得到的經驗和教訓加以回顧和分析的書面材料,它可以提升我們發現問題的能力,讓我們抽出時間寫寫總結吧。總結你想好怎麼寫了嗎?以下是小 -
Linux文件系統結構分析論文
摘 要:闡述了Linux系統的文件結構類型,指出了EXT2是在Linux系統中最為常用的文件系統。分析了EXT2文件系統的磁盤佈局、索引結點及目錄結構,研究了EXT2系統實現按名存取的方法,文件讀取速度更高效。關鍵詞:EXT2文件系統;索 -
Linux操作系統文件系統基礎知識
Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公佈時間)。下面是小編收集的Linux操作系統文件系統基礎知識,希望大家認真閲讀! 一 、Linux文件結構文件結構是文件存放在磁盤等存貯設備上的組織方法。主 -
linux系統集羣的架構與實現
基於Linux系統的開源與穩定性,以及目前服務器集羣的廣泛應用,小編下面為大家整理關於linux系統集羣的架構與實現的文章,歡迎閲讀參考: 1.引言伴隨互聯網技術飛速發展和各種應用的逐漸開發,以及對計算機運行效率要求的不 -
嵌入式Linux系統中的GUI系統的研究與移植介紹
xx年,中支公司在省分公司各級領導及全體同仁的關心支持下,完成了籌建工作並順利開業,在業務的發展上也取得了較好的成績,佔領了一定的市場份額,圓滿地完成了省公司下達的各項任務指標,在此基礎上,公司總結xx年的工作經驗並結 -
Linux系統文件系統優化及磁盤檢查的方法
Linux中數據塊是儲存數據的基本數據單元,在linux中可以設置3中數據塊大小分別是1024(1kB),2048(2KB),4096(4KB)。數據塊大小決定了文件磁盤佔有量,打個比方如果你設置了數據塊大小是1024,不管你的文件有多大,至少要佔1KB -
linux操作系統目錄結構詳解
為了幫助廣大考試新手們更加順利地複習備考,小編整理了關於Linux目錄結構的備考資料,希望能夠對大家有所幫助。 linux 目錄結構/: 根目錄,一般根目錄下只存放目錄,不要存放文件,/etc、/bin、/dev、/lib、/sbin應該和根 -
Linux關閉selinux安全子系統的技巧
selinux是Linux的安全子系統,是一個強制訪問控制安全模塊,那麼要如何關閉selinux安全子系統呢?下面小編就給大家介紹下Linux關閉selinux安全子系統的技巧,一起來學習下吧。1、首先我們可以用命令來查看selinux的狀態geten -
Linux認證系統管理:linux下搭建ftp
最近為了方便目標板與PC機上LINUX之間的通訊,就在LINUX搭建了FTP,工作不難,寫個總結。主要經過以下幾個步驟: 1.檢查是否安裝了vsftpd服務器可以用rpm -q vsftpd命令來查看,若顯示"vsftpd-1.1.3-8",則説明系統已經安裝vs