亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

Linux文件系統(tǒng)掛裝與高層體系結(jié)構(gòu)

時(shí)間:2020-08-12 16:55:34 Linux認(rèn)證 我要投稿

Linux文件系統(tǒng)掛裝與高層體系結(jié)構(gòu)

  Windows XP高昂的價(jià)格和升級(jí)收費(fèi)政策使更多企業(yè)和個(gè)人用戶轉(zhuǎn)向自由開(kāi)放的Linux操作系統(tǒng),目標(biāo)雇主群會(huì)迅速增長(zhǎng)。下面是小編整理的關(guān)于Linux文件系統(tǒng)掛裝與高層體系結(jié)構(gòu),希望大家認(rèn)真閱讀!

  文件系統(tǒng)體系結(jié)構(gòu)

  既然已經(jīng)看到了文件系統(tǒng)的構(gòu)造方法,現(xiàn)在就看看Linux文件系統(tǒng)層的體系結(jié)構(gòu)。本文從兩個(gè)角度考察Linux文件系統(tǒng)。首先采用高層體系結(jié)構(gòu)的角度。然后進(jìn)行深層次討論,介紹實(shí)現(xiàn)文件系統(tǒng)層的主要結(jié)構(gòu)。

  高層體系結(jié)構(gòu)

  盡管大多數(shù)文件系統(tǒng)代碼在內(nèi)核中(后面討論的用戶空間文件系統(tǒng)除外),但是圖 1 所示的體系結(jié)構(gòu)顯示了用戶空間和內(nèi)核中與文件系統(tǒng)相關(guān)的主要組件之間的關(guān)系。

  圖 1.Linux文件系統(tǒng)組件的體系結(jié)構(gòu)

  用戶空間包含一些應(yīng)用程序(例如,文件系統(tǒng)的使用者)和 GNU C 庫(kù)(glibc),它們?yōu)槲募到y(tǒng)調(diào)用(打開(kāi)、讀取、寫(xiě)和關(guān)閉)提供用戶接口。系統(tǒng)調(diào)用接口的作用就像是交換器,它將系統(tǒng)調(diào)用從用戶空間發(fā)送到內(nèi)核空間中的適當(dāng)端點(diǎn)。

  VFS 是底層文件系統(tǒng)的主要接口。這個(gè)組件導(dǎo)出一組接口,然后將它們抽象到各個(gè)文件系統(tǒng),各個(gè)文件系統(tǒng)的行為可能差異很大。有兩個(gè)針對(duì)文件系統(tǒng)對(duì)象的緩存(inode 和 dentry)。它們緩存最近使用過(guò)的文件系統(tǒng)對(duì)象。

  每個(gè)文件系統(tǒng)實(shí)現(xiàn)(比如 ext2、JFS 等等)導(dǎo)出一組通用接口,供 VFS 使用。緩沖區(qū)緩存會(huì)緩存文件系統(tǒng)和相關(guān)塊設(shè)備之間的請(qǐng)求。例如,對(duì)底層設(shè)備驅(qū)動(dòng)程序的讀寫(xiě)請(qǐng)求會(huì)通過(guò)緩沖區(qū)緩存來(lái)傳遞。這就允許在其中緩存請(qǐng)求,減少訪問(wèn)物理設(shè)備的次數(shù),加快訪問(wèn)速度。以最近使用(LRU)列表的形式管理緩沖區(qū)緩存。注意,可以使用 sync 命令將緩沖區(qū)緩存中的請(qǐng)求發(fā)送到存儲(chǔ)媒體(迫使所有未寫(xiě)的數(shù)據(jù)發(fā)送到設(shè)備驅(qū)動(dòng)程序,進(jìn)而發(fā)送到存儲(chǔ)設(shè)備)。

  這就是 VFS 和文件系統(tǒng)組件的高層情況,F(xiàn)在,討論實(shí)現(xiàn)這個(gè)子系統(tǒng)的主要結(jié)構(gòu)。

  主要結(jié)構(gòu)

  Linux 以一組通用對(duì)象的角度看待所有文件系統(tǒng)。這些對(duì)象是超級(jí)塊(superblock)、inode、dentry 和文件。超級(jí)塊在每個(gè)文件系統(tǒng)的根上,超級(jí)塊描述和維護(hù)文件系統(tǒng)的狀態(tài)。文件系統(tǒng)中管理的每個(gè)對(duì)象(文件或目錄)在Linux中表示為一個(gè) inode。inode 包含管理文件系統(tǒng)中的對(duì)象所需的所有元數(shù)據(jù)(包括可以在對(duì)象上執(zhí)行的操作)。另一組結(jié)構(gòu)稱為 dentry,它們用來(lái)實(shí)現(xiàn)名稱和 inode 之間的映射,有一個(gè)目錄緩存用來(lái)保存最近使用的 dentry。dentry 還維護(hù)目錄和文件之間的關(guān)系,從而支持在文件系統(tǒng)中移動(dòng)。最后,VFS 文件表示一個(gè)打開(kāi)的文件(保存打開(kāi)的文件的狀態(tài),比如寫(xiě)偏移量等等)。

  基本的文件系統(tǒng)體系結(jié)構(gòu)

  Linux 文件系統(tǒng)體系結(jié)構(gòu)是一個(gè)對(duì)復(fù)雜系統(tǒng)進(jìn)行抽象化的有趣例子。通過(guò)使用一組通用的 API 函數(shù),Linux 可以在許多種存儲(chǔ)設(shè)備上支持許多種文件系統(tǒng)。例如,read 函數(shù)調(diào)用可以從指定的文件描述符讀取一定數(shù)量的字節(jié)。read 函數(shù)不了解文件系統(tǒng)的類型,比如 ext3 或 NFS。它也不了解文件系統(tǒng)所在的存儲(chǔ)媒體,比如 AT Attachment Packet Interface(ATAPI)磁盤、Serial-Attached SCSI(SAS)磁盤或 Serial Advanced Technology Attachment(SATA)磁盤。但是,當(dāng)通過(guò)調(diào)用 read 函數(shù)讀取一個(gè)文件時(shí),數(shù)據(jù)會(huì)正常返回。本文講解這個(gè)機(jī)制的實(shí)現(xiàn)方法并介紹Linux文件系統(tǒng)層的主要結(jié)構(gòu)。

  什么是文件系統(tǒng)?

  首先回答最常見(jiàn)的問(wèn)題,“什么是文件系統(tǒng)”。文件系統(tǒng)是對(duì)一個(gè)存儲(chǔ)設(shè)備上的數(shù)據(jù)和元數(shù)據(jù)進(jìn)行組織的機(jī)制。由于定義如此寬泛,支持它的代碼會(huì)很有意思。正如前面提到的,有許多種文件系統(tǒng)和媒體。由于存在這么多類型,可以預(yù)料到Linux文件系統(tǒng)接口實(shí)現(xiàn)為分層的.體系結(jié)構(gòu),從而將用戶接口層、文件系統(tǒng)實(shí)現(xiàn)和操作存儲(chǔ)設(shè)備的驅(qū)動(dòng)程序分隔開(kāi)。

  掛裝

  在Linux中將一個(gè)文件系統(tǒng)與一個(gè)存儲(chǔ)設(shè)備關(guān)聯(lián)起來(lái)的過(guò)程稱為掛裝(mount)。使用 mount 命令將一個(gè)文件系統(tǒng)附著到當(dāng)前文件系統(tǒng)層次結(jié)構(gòu)中(根)。在執(zhí)行掛裝時(shí),要提供文件系統(tǒng)類型、文件系統(tǒng)和一個(gè)掛裝點(diǎn)。

  為了說(shuō)明Linux文件系統(tǒng)層的功能(以及掛裝的方法),我們?cè)诋?dāng)前文件系統(tǒng)的一個(gè)文件中創(chuàng)建一個(gè)文件系統(tǒng)。實(shí)現(xiàn)的方法是,首先用 dd 命令創(chuàng)建一個(gè)指定大小的文件(使用 /dev/zero 作為源進(jìn)行文件復(fù)制)-- 換句話說(shuō),一個(gè)用零進(jìn)行初始化的文件,見(jiàn)清單 1。

  清單 1. 創(chuàng)建一個(gè)經(jīng)過(guò)初始化的文件

  1.$ dd if=/dev/zero of=file.img bs=1k count=10000

  2.10000+0 records in

  3.10000+0 records out

  4.$

  現(xiàn)在有了一個(gè) 10MB 的 file.img 文件。使用 losetup 命令將一個(gè)循環(huán)設(shè)備與這個(gè)文件關(guān)聯(lián)起來(lái),讓它看起來(lái)像一個(gè)塊設(shè)備,而不是文件系統(tǒng)中的常規(guī)文件:

  1.$ losetup /dev/loop0 file.img

  2.$

  這個(gè)文件現(xiàn)在作為一個(gè)塊設(shè)備出現(xiàn)(由 /dev/loop0 表示)。然后用 mke2fs 在這個(gè)設(shè)備上創(chuàng)建一個(gè)文件系統(tǒng)。這個(gè)命令創(chuàng)建一個(gè)指定大小的新的 ext2 文件系統(tǒng),見(jiàn)清單 2。

  清單 2. 用循環(huán)設(shè)備創(chuàng)建 ext2 文件系統(tǒng)

  1.$ mke2fs -c /dev/loop0 10000

  2.mke2fs 1.35 (28-Feb-2004)

  3.max_blocks 1024000, rsv_groups = 1250, rsv_gdb = 39

  4.Filesystem label=

  5.OS type: Linux

  6.Block size=1024 (log=0)

  7.Fragment size=1024 (log=0)

  8.2512 inodes, 10000 blocks

  9.500 blocks (5.00%) reserved for the super user

  10....

  11.$

  使用 mount 命令將循環(huán)設(shè)備(/dev/loop0)所表示的 file.img 文件掛裝到掛裝點(diǎn) /mnt/point1。注意,文件系統(tǒng)類型指定為 ext2。掛裝之后,就可以將這個(gè)掛裝點(diǎn)當(dāng)作一個(gè)新的文件系統(tǒng),比如使用 ls 命令,見(jiàn)清單 3。

【Linux文件系統(tǒng)掛裝與高層體系結(jié)構(gòu)】相關(guān)文章:

Linux文件系統(tǒng)簡(jiǎn)介08-14

Linux btrfs文件系統(tǒng)及管理05-25

linux文件系統(tǒng)基礎(chǔ)知識(shí)匯總10-05

Linux用戶/文件系統(tǒng)管理詳解08-14

Linux操作系統(tǒng)文件系統(tǒng)基礎(chǔ)知識(shí)08-22

解析Linux磁盤和文件系統(tǒng)管理08-14

企業(yè)高層如何與下屬溝通09-25

Linux用戶與“最小權(quán)限”原則05-25

linux系統(tǒng)集群的架構(gòu)與實(shí)現(xiàn)11-07