亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

操作系統(tǒng)

Linux文件系統(tǒng)的幾個(gè)要點(diǎn)

時(shí)間:2024-08-18 08:46:19 操作系統(tǒng) 我要投稿
  • 相關(guān)推薦

Linux文件系統(tǒng)的幾個(gè)要點(diǎn)

  Linux的文件系統(tǒng)是一個(gè)比較復(fù)雜的體系,因?yàn)長(zhǎng)inux系統(tǒng)中文件就是一切,所以L(fǎng)inux系統(tǒng)有多復(fù)雜,Linux文件系統(tǒng)就有多復(fù)雜。本文就來(lái)詳解一下Linux文件系統(tǒng)的幾個(gè)要點(diǎn)。

  一、 物理磁盤(pán)到文件系統(tǒng)

  我們知道文件最終是保存在硬盤(pán)上的。硬盤(pán)最基本的組成部分是由堅(jiān)硬金屬材料制成的涂以磁性介質(zhì)的盤(pán)片,不同容量硬盤(pán)的盤(pán)片數(shù)不等。每個(gè)盤(pán)片有兩面,都可記錄信息。盤(pán)片被分成許多扇形的區(qū)域,每個(gè)區(qū)域叫一個(gè)扇區(qū),每個(gè)扇區(qū)可存儲(chǔ)128×2的N次方(N=0.1.2.3)字節(jié)信息。在DOS中每扇區(qū)是128×2的2次方=512字節(jié),盤(pán)片表面上以盤(pán)片中心為圓心,不同半徑的同心圓稱(chēng)為磁道。硬盤(pán)中,不同盤(pán)片相同半徑的磁道所組成的圓柱稱(chēng)為柱面。磁道與柱面都是表示不同半徑的圓,在許多場(chǎng)合,磁道和柱面可以互換使用,我們知道,每個(gè)磁盤(pán)有兩個(gè)面,每個(gè)面都有一個(gè)磁頭,習(xí)慣用磁頭號(hào)來(lái)區(qū)分。扇區(qū),磁道(或柱面)和磁頭數(shù)構(gòu)成了硬盤(pán)結(jié)構(gòu)的基本參數(shù),幫這些參數(shù)可以得到硬盤(pán)的容量,基計(jì)算公式為:

  存儲(chǔ)容量=磁頭數(shù)×磁道(柱面)數(shù)×每道扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù)

  要點(diǎn):

  (1)硬盤(pán)有數(shù)個(gè)盤(pán)片,每盤(pán)片兩個(gè)面,每個(gè)面一個(gè)磁頭

 。2)盤(pán)片被劃分為多個(gè)扇形區(qū)域即扇區(qū)

 。3)同一盤(pán)片不同半徑的同心圓為磁道

 。4)不同盤(pán)片相同半徑構(gòu)成的圓柱面即柱面

  (5)公式: 存儲(chǔ)容量=磁頭數(shù)×磁道(柱面)數(shù)×每道扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù)

 。6)信息記錄可表示為:××磁道(柱面),××磁頭,××扇區(qū)

  那么這些空間又是怎么管理起來(lái)的呢?unix/linux使用了一個(gè)簡(jiǎn)單的方法。如圖所示。

  它將磁盤(pán)塊分為以下三個(gè)部分:

  1) 超級(jí)塊,文件系統(tǒng)中第一個(gè)塊被稱(chēng)為超級(jí)塊。這個(gè)塊存放文件系統(tǒng)本身的結(jié)構(gòu)信息。比如,超級(jí)塊記錄了每個(gè)區(qū)域的大小,超級(jí)塊也存放未被使用的磁盤(pán)塊的信息。

  2) I-切點(diǎn)表。超級(jí)塊的下一個(gè)部分就是i-節(jié)點(diǎn)表。每個(gè)i-節(jié)點(diǎn)就是一個(gè)對(duì)應(yīng)一個(gè)文件/目錄的結(jié)構(gòu),這個(gè)結(jié)構(gòu)它包含了一個(gè)文件的長(zhǎng)度、創(chuàng)建及修改時(shí)間、權(quán)限、所屬關(guān)系、磁盤(pán)中的位置等信息。一個(gè)文件系統(tǒng)維護(hù)了一個(gè)索引節(jié)點(diǎn)的數(shù)組,每個(gè)文件或目錄都與索引節(jié)點(diǎn)數(shù)組中的唯一一個(gè)元素對(duì)應(yīng)。系統(tǒng)給每個(gè)索引節(jié)點(diǎn)分配了一個(gè)號(hào)碼,也就是該節(jié)點(diǎn)在數(shù)組中的索引號(hào),稱(chēng)為索引節(jié)點(diǎn)號(hào)

  3) 數(shù)據(jù)區(qū)。文件系統(tǒng)的第3個(gè)部分是數(shù)據(jù)區(qū)。文件的內(nèi)容保存在這個(gè)區(qū)域。磁盤(pán)上所有塊的大小都一樣。如果文件包含了超過(guò)一個(gè)塊的內(nèi)容,則文件內(nèi)容會(huì)存放在多個(gè)磁盤(pán)塊中。一個(gè)較大的文件很容易分布上千個(gè)獨(dú)產(chǎn)的磁盤(pán)塊中。

  二、 創(chuàng)建一個(gè)文件的過(guò)程

  我們從前面可以知道文件的內(nèi)容和屬性是分開(kāi)存放的,那么又是如何管理它們的呢?現(xiàn)在我們以創(chuàng)建一個(gè)文件為例來(lái)講解。

  在命令行輸入命令:

  $ who 》 userlist

  我們可以通過(guò)系統(tǒng)命令ls來(lái)查看新建文件userlist的信息:(ls 命令后的i就表示打印i節(jié)點(diǎn)信息)

  當(dāng)完成這個(gè)命令時(shí)。文件系統(tǒng)中增加了一個(gè)存放命令who輸出內(nèi)容的新文件userlist,那么這整個(gè)過(guò)程到底是怎么回事呢?

  文件主要有屬性、內(nèi)容以及文件名三項(xiàng)。內(nèi)核將文件內(nèi)容存放在數(shù)據(jù)區(qū),文件屬性存放在i-節(jié)點(diǎn),文件名存放在目錄中。圖2顯示了創(chuàng)建一個(gè)文件的例子,假如這個(gè)新文件要3 個(gè)存儲(chǔ)塊來(lái)存放內(nèi)容。那么整個(gè)個(gè)程大概如下:

  創(chuàng)建成功一個(gè)文件主要有以下四個(gè)步驟:

  1) 存儲(chǔ)屬性 也就是文件屬性的存儲(chǔ),內(nèi)核先找到一塊空的i-節(jié)點(diǎn)。圖3中。內(nèi)核找到i-節(jié)點(diǎn)號(hào)921130。內(nèi)核把文件的信息記錄其中。如文件的大小、文件所有者、和創(chuàng)建時(shí)間等

  2) 存儲(chǔ)數(shù)據(jù) 即文件內(nèi)容的存儲(chǔ),由于該文件需要3個(gè)數(shù)據(jù)塊。因此內(nèi)核從自由塊的列表中找到3個(gè)自由塊。圖3中分別為600、200、992,內(nèi)核緩沖區(qū)的第一塊數(shù)據(jù)復(fù)制到塊600,第二和第三分別復(fù)制到922和600.

  3) 記錄分配情況,數(shù)據(jù)保存到了三個(gè)數(shù)據(jù)塊中。所以必須要記錄起來(lái),以后再找到正確的數(shù)據(jù)。分配情況記錄在文件的i-節(jié)點(diǎn)中的磁盤(pán)序號(hào)列表里。這3個(gè)編號(hào)分別放在最開(kāi)始的3個(gè)位置。

  4) 添加文件名到目錄,新文件的名字是userlist 內(nèi)核將文件的入口(47,userlist)添加到目錄文件里。文件名和i-節(jié)點(diǎn)號(hào)之間的對(duì)應(yīng)關(guān)系將文件名和文件和文件的內(nèi)容屬性連接起來(lái),找到文件名就找到文件的i-節(jié)點(diǎn)號(hào),通過(guò)i-節(jié)點(diǎn)號(hào)就能找到文件的屬性和內(nèi)容。

  三、 創(chuàng)建一個(gè)目錄的過(guò)程

  前面說(shuō)了創(chuàng)建一個(gè)文件的大概過(guò)程,也了解文件內(nèi)容、屬性以及入口的保存方式,那么創(chuàng)建一個(gè)目錄時(shí)又是怎么回事呢?

  我現(xiàn)在test目錄使用命令mkdir 新增一個(gè)子目錄child:

  從用戶(hù)的角度看,目錄child是目錄test的一個(gè)子目錄,那么在系統(tǒng)中這層關(guān)系是怎么實(shí)現(xiàn)的呢?實(shí)際上test目錄包含一個(gè)指向子目錄child的i-節(jié)點(diǎn)的鏈接,原理跟普通文件一樣,因?yàn)槟夸浺彩俏募。目錄在系統(tǒng)中的保存方式和結(jié)構(gòu)大概如下:

  目錄其實(shí)也是文件,只是它的內(nèi)容比較特殊。所以它的創(chuàng)建過(guò)程和文件創(chuàng)建過(guò)程一樣,只是第二步寫(xiě)的內(nèi)容不同。

  1) 系統(tǒng)找到空閑的i-節(jié)點(diǎn)號(hào)887220,寫(xiě)入目錄的屬性

  2) 找到空閑的數(shù)據(jù)塊1002來(lái)存儲(chǔ)目錄的內(nèi)容,只是目錄的內(nèi)容比較特殊,包含文件名字列表,列表一般包含兩個(gè)部分:i-節(jié)點(diǎn)號(hào)和文件名,這個(gè)列表其實(shí)也就是文件的入口,新建的目錄至少包含三個(gè)目錄”。”和”。!逼渲小!敝赶蜃约,”。!敝赶蛏霞(jí)目錄,我們可以通過(guò)比較對(duì)應(yīng)的i-節(jié)點(diǎn)號(hào)來(lái)驗(yàn)證,887270 對(duì)應(yīng)著上級(jí)目錄中的child對(duì)應(yīng)的i-節(jié)點(diǎn)號(hào)

  3) 記錄分配情況。這個(gè)和創(chuàng)建文件完全不樣

  4) 添加目錄的入口到父目錄,即在父目錄中的child入口。

  一般都說(shuō)文件存放在某個(gè)目錄中,其實(shí)目錄中存入的只是文件在i-節(jié)點(diǎn)表的入口,而文件的內(nèi)容則存儲(chǔ)在數(shù)據(jù)區(qū)。圖3中,我們一般會(huì)說(shuō)“文件userlist在目錄test中”,其實(shí)這意味著目錄test中有一個(gè)指向i-節(jié)點(diǎn)921130的鏈接,這個(gè)鏈接所附加的文件名為userlist,這也可以這樣理解:目錄包含的是文件的引用,每個(gè)引用被稱(chēng)為鏈接。文件的內(nèi)容存儲(chǔ)在數(shù)據(jù)塊。文件的屬性被記錄在一個(gè)被稱(chēng)為i-節(jié)點(diǎn)的結(jié)構(gòu)中。I-節(jié)點(diǎn)的編號(hào)和文件名關(guān)聯(lián)起來(lái)存在目錄中。

  注意:其中“!北硎臼钱(dāng)前目錄。而“。!笔钱(dāng)前目錄的父目錄。但也有特殊情況:如我們查看根目錄/的情況:

  發(fā)現(xiàn)“!焙汀。!倍贾赶騣-節(jié)點(diǎn)2。實(shí)際上當(dāng)我們用mkfs創(chuàng)建一個(gè)文件系統(tǒng)時(shí),mkfs都會(huì)將根目錄的父目錄指向自己。所以根目錄下。和。。指向同一個(gè)i-節(jié)點(diǎn)也不奇怪了。

  四、 理解鏈接

  鏈接分為兩種,1是硬鏈接,2是符號(hào)鏈接(也稱(chēng)為軟鏈接)

  1、 硬鏈接

  硬鏈接(had link),是將目錄鏈接到文件樹(shù)的指針,硬鏈接同時(shí)也是將文件名和文件本身鏈接起來(lái)的指針

  我們現(xiàn)在進(jìn)入目錄child:并輸入法以下命令

  我們發(fā)現(xiàn)通過(guò)ln建立的鏈接文件mylink對(duì)應(yīng)的i-節(jié)點(diǎn)也是921130.和上一級(jí)目錄下的userlist指向的i-節(jié)點(diǎn)號(hào)是一樣的。由此我們可以知道m(xù)ylink和。。/userlist其實(shí)是指向同一個(gè)i-節(jié)點(diǎn)號(hào),也可以理解為這兩者其實(shí)是同一個(gè)文件。

  創(chuàng)建一個(gè)鏈接的步驟大概如下:

  1) 通過(guò)原文件的文件名找到文件的i-節(jié)點(diǎn)號(hào)

  2) 添加文件名關(guān)聯(lián)到目錄,新文件的名字是mylink 內(nèi)核將文件的入口(921130,mylink)添加到目錄文件里。

  和創(chuàng)建文件的過(guò)程比較發(fā)現(xiàn),鏈接少了寫(xiě)文件內(nèi)容的步驟,完全相同的是把文件名關(guān)聯(lián)到目錄這一步

  現(xiàn)在.i- 節(jié)點(diǎn)號(hào)921130對(duì)應(yīng)了兩個(gè)文件名。鏈接數(shù)也會(huì)變成2個(gè),文件的內(nèi)容并不會(huì)發(fā)生任何變化。前面我們已經(jīng)講了:目錄包含的是文件的引用,每個(gè)引用被稱(chēng)為鏈接。所以鏈接文件和原始文件本質(zhì)上是一樣的,因?yàn)樗鼈兌际侵赶蛲粋(gè)i-節(jié)點(diǎn)。由于此原因也就可以理解鏈接的下列特性:你改變其中任何一個(gè)文件的內(nèi)容,別的鏈接文件也一樣是變化;另外如果你刪除某一個(gè)文件,系統(tǒng)只會(huì)在所指向的i-節(jié)點(diǎn)上把鏈接數(shù)減1,只有當(dāng)鏈接數(shù)減為零時(shí)才會(huì)真正釋放i-節(jié)點(diǎn)。

  硬鏈接有兩個(gè)特點(diǎn):

  1)不能跨文件系統(tǒng)

  2)不能對(duì)目錄

  2、符號(hào)鏈接

  另外還有一種符號(hào)鏈接,也稱(chēng)“軟鏈接”,符號(hào)鏈接是通過(guò)文件名引用文件,而不是i-節(jié)點(diǎn)號(hào),這和硬鏈接的原理完全是不同的,我們先看屬性:

  發(fā)現(xiàn)通過(guò)ln –s 創(chuàng)建的軟鏈接mylink2的i-節(jié)點(diǎn)是1574059,和。。/userlist的不相同。軟鏈接的好處就是可以跨不同的文件系統(tǒng),而且可以鏈接目錄。

  以上就是Linux文件系統(tǒng)的要點(diǎn)的介紹了,因?yàn)長(zhǎng)inux一切設(shè)備都是文件的特性,所以L(fǎng)inux文件系統(tǒng)太重要的,最好把這些要點(diǎn)都記熟了。

【Linux文件系統(tǒng)的幾個(gè)要點(diǎn)】相關(guān)文章:

linux的文件系統(tǒng)03-07

Linux文件系統(tǒng)結(jié)構(gòu)分析論文02-25

Linux 文件系統(tǒng)管理03-07

解讀 Linux 集群的新型文件系統(tǒng)03-06

Linux學(xué)習(xí)基本要點(diǎn)03-09

Linux學(xué)習(xí)基本要點(diǎn)01-25

簡(jiǎn)單地講解Linux的文件系統(tǒng)及相關(guān)的掛載命令02-28

Linux環(huán)境下使用GFS文件系統(tǒng)可以嗎03-06

Linux管理員不可不知十大PHP安全要點(diǎn)03-20