從硬碟到文件系統

從硬碟到文件系統

這篇文章將要為大家介紹硬碟的組成及其工作原理,然後由硬碟引申到文件系統。

首先來為大家介紹硬碟的分類。

硬碟按介面來分的話一般可以分為:

SATA (Serial Advanced Technology Attachment,串列高級技術附件)介面硬碟。(SATA後面還有SATAⅡ)

圖1

SAS(Serial Attached SCSI)和介面硬碟。

圖2

大家有沒有覺得SAS介面硬碟和SATA介面硬碟很像?事實是它們倆確實很像,像到了SAS和SATA在物理層上完全兼容的地步,但是SAS和SATA又確確實實是兩種不同的介面。

SCSI(Small Computer System Interface(小型計算機介面))介面硬碟。

圖3

IDE(Integrated DrivenElectronics集成驅動器)介面硬碟。

圖4

FC(Fiber Channel光纖通道)介面硬碟

圖5

還有大家非常熟悉的USB介面的硬碟。

圖6

接下來我們來看看硬碟的組成。

圖7

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

硬碟的每一個組成部件都有其獨特的作用,下面讓我們來看看硬碟的工作原理。

硬碟的存儲介質是磁性材料,磁頭通過電流改變磁碟的磁性來存儲數據。

硬碟在邏輯上被劃分為磁軌、柱面以及扇區。

圖8

硬碟的每個碟片的每個面都有一個讀寫磁頭,磁碟盤面區域的劃分如圖所示。

圖9

硬碟的讀寫和扇區有著緊密相連的關係,在說扇區之前,我們來看一下與扇區相關的盤面、磁軌、和柱面。盤面、磁軌和柱面的位置大家可以參照圖8。

盤面:

硬碟的盤面一般用鋁合金材料做基片,高速硬碟也用玻璃做基片。硬碟的每一個盤面都有上下兩個盤面。一般每個盤面都會利用以存儲數據成為有效盤。當然也有極個別的硬碟盤面數為單數。每一個有效盤都有一個盤面好,按順序從上至下由0開始編號。盤面號又叫磁頭號,因為每一個有效盤都有一個對應的讀寫磁頭。

磁軌:

磁碟在格式化時被劃分為許多同心圓,這些同心圓軌跡叫做磁軌。磁軌從外向內由0開始編號。硬碟的每一個盤面有300——1024個磁軌(新式大容量盤每面的磁軌會更多)。信息以脈衝串的形式記錄在這些軌跡中,這些同心圓不是連續記錄數據,而是被劃分為一段段的圓弧,圓弧的角速度這些圓弧的角速度一樣。由於徑向長度不一樣,所以線速度也不一樣,外圈的線速度較內圈的線速度大。每段圓弧叫做一個扇區,扇區從1開始編號,每個扇區的數據作為一個單元同時讀出或寫入。

柱面:

所有盤面上的同一磁軌構成一個圓柱,通常稱為柱面。每個圓柱上的磁頭由上而下從0開始編號。磁頭讀/寫數據時首先在同一柱面內從0磁頭開始操作,依次向下在同一柱面的不同盤面上進行操作,只在同一柱面所有磁頭全部讀/寫完畢後磁頭才轉移到下一柱面。

扇區:

操作系統以扇區形式將信息存儲在硬碟上,每個扇區包括512個位元組的數據和一些其他信息。一個扇區有兩個主要部分:存儲數據地點的標識符和存儲數據的數據段。扇區的第一個主要部分是標識符。標識符,就是扇區頭標,包括組成扇區三維地址的三個數字:

盤面號:扇區所在的磁頭(或盤面)

柱面號:磁軌

扇面號:扇區在磁軌的位置,也叫塊號。

好了,我們對磁碟的基礎知識就介紹在這了,下面讓我們通過磁碟來了解計算機的文件系統。

磁頭靠近主軸接觸的表面,即線速度最小的地方,有一塊很特別的地方。為什麼說它特別呢,因為它不存放數據,稱為啟停區或著陸區,在啟停區外就是數據區。在數據區的最外面一圈就是「0」磁軌。硬碟的數據存放就是從最外圈開始的。

圖10

在硬碟啟動時,我們的磁頭會首先從啟停區移動到0磁軌,具體是0柱面,0磁頭,1扇區。硬碟的0柱面、0磁頭、1扇區為主引導扇區,FDISK程序寫到該扇區的內容為主引導記錄(MBR),該記錄佔用446個位元組,它用於硬碟啟動時將系統控制權轉移給用戶指定的並在分區表中登記了的某個操作系統區。

大家可能會問,什麼是主引導扇區和主引導記錄。下面讓我們來看看這個在硬碟啟動時比系統區還要先讀取的扇區吧。

主引導記錄(MBR,MainnBoot Record)是位於磁碟最前邊的一段引導代碼。它負責磁碟操作系統(DOS)對磁碟進行讀寫時分區合法性的判別、分區引導信息的定位,它由磁碟操作系統(DOS)在對硬碟進行初始化時產生的。硬碟的主引導記錄(MBR)是不屬於任何一個操作系統的,它先於所有的操作系統而被調入內存,並發揮作用,然後才將控制權交給主分區(活動分區)內的操作系統,並用主分區信息表來管理硬碟。

包含主引導記錄的扇區叫主引導扇區。

在我們的生活中,許多人都會認為分區就一定要把硬碟劃分成好幾個部分,其實我們完全可以只創建一個分區使用全部或部分的硬碟空間。不過,不論我們劃分了多少個分區,也不論使用的是SCSI硬碟還是IDE硬碟,都必須把硬碟的主分區設定為活動分區,這樣才能夠通過硬碟啟動系統。

我們的磁碟最多只能有四個主分區(硬碟分區實質上是對硬碟的一種格式化,然後才能使用硬碟保存各種信息。創建分區時,就已經設置好了硬碟的各項物理參數,指定了硬碟主引導記錄和引導記錄備份的存放位置。)。其中如果要設定擴展分區的話,擴展分區佔一個主分區位,擴展分區還可以再分為若干個邏輯分區。(硬碟可以設好多分區,但是能夠讓你設置為系統盤的就只有那麼四個主分區位)

Linux中,IDE硬碟最多只能有59個邏輯分區(5-63號),SATA介面硬碟最多只能有11個邏輯分區(5-15號)

DOS和FAT文件系統最初都被設計成可以支持在一塊硬碟上最多建立24個分區,分別使用從C到Z 24個驅動器盤符。

為什麼一個硬碟只能分四個主分區呢?

這是由個人計算機初期的設計架構決定的.一開始,PC被設計成這樣的啟動過程,開機時主板BIOS進行自檢,當一切OK後,就開始讀取硬碟的主引導扇區。通過上面的一些鋪墊我們可以知道,主引導扇區的大小是512位元組。BIOS把這512位元組的內容讀出來並執行。這512位元組包含了主引導記錄MBR,磁碟分區表項,結束標誌。由於空間只有區區512位元組,而主引導記錄要佔用446個位元組,結束標誌要佔用2個位元組,所以分區表的大小就只有64個位元組。他被設計成十分小但是又足夠描述硬碟的分區情況,包括分區的開始扇區,結束扇區,引導標誌,分區類型等等.每個分區信息用16個位元組表示,四個分區就用掉了所有的64個位元組的空間。所以我們的硬碟最多只能劃分為4個主分區。

圖11

我們都知道,在安裝操作系統和軟體之前,首先需要對硬碟進行分區和格式化,然後才能使用硬碟保存各種信息。為什麼需要進行格式化呢?這是因為每種操作系統所配置的文件屬性/許可權並不相同,n為了存放這些文件所需的數據,因此就需要將硬碟分區進行格式化,以成為操作系統能夠利用的文件系統格式。

由此我們也能夠知道,每種操作系統能夠使用的文件系統並不相同。舉例來說,windows 98 以前的微軟操作系統主要利用的文件系統是 FAT (或 FAT16),windows 2000 以後的版本有所謂的 NTFS 文件系統,至於 Linux 的正統文件系統則為 Ext2這一個。此外,在默認的情況下,windows 操作系統是不會認識 Linux 的next2 的。

圖12

那麼文件系統是如何運行的呢?這與操作系統的文件數據有關。較新的操作系統的文件數據除了文件實際內容外,n通常含有非常多的屬性。

這裡以部分文件系統為例向大家簡要地介紹文件系統的運行過程。

文件系統是裝在硬碟上的。Linux最傳統的磁碟文件系統使用的是ext2,所以我們就從ext2介紹文件系統。

Linux 操作系統的文件許可權(rwx)與文件屬性(擁有者、群組、時間參數等)。 文件系統通常會將這兩部份的數據分別存放在不同的區塊,許可權與屬性放置到 inode中(一個文件只有一個inode,同時記錄文件數據所存放的data block號碼),至於實際數據則放置到nblock 區塊中(一個文件可有多個block)。另外,還有一個超級區塊 (superblock) 會記錄整個文件系統的整體信息,包括 inode 與 block 的總量、使用量、剩餘量等。

我們ext2文件系統是索引式文件系統。具體的原理如圖13、圖14所示,灰色的方框代表inode,藍色的方框代表block。Ext2文件系統的每個文件都由一個inode和一個或多個block組成,當我們讀取文件時,首先會訪問文件的inode,確認許可權屬性。如果許可權和屬性符合要求,那麼就由inode裡面的記錄找到存儲數據的block。(這種文件系統產生的磁碟碎片很少,這也就是Linux不需要進行磁碟碎片整理的原因)

圖13

圖14

與Linux的ext2相比,FAT文件系統就沒有inode,只有存儲文件數據的block。那麼FAT文件系統又是如何解決大文件的存儲的呢?當一個文件比較大時,FAT文件系統就會為文件分配多個block,前一個block裡面裝著下一個block的號碼。FAT文件系統通過這樣的一種鏈表的形式存儲大文件。FAT文件系統在讀文件時只會從文件開始的那個block開始讀,讀完這個之後才會讀取下一個block的數據。FAT文件系統具體如圖15所示。(現在這種FAT文件系統主要用在U盤上面)

圖15

前面提到了Windows的文件系統,我們來看看Windows系統的文件系統的發展吧。

我們最開始用的DOS、Windows 95都是使用的FAT16文件系統,以前流行的Windows 98/2000/XP等系統也均支持FAT16文件系統。它最大可以管理大到2GB的分區,但每個分區最多只能有65525個簇(簇是磁碟空間的配置單位)。隨著硬碟或分區容量的增大,每個簇所佔的空間將越來越大,從而導致硬碟空間的浪費。

隨著大容量硬碟的出現,從Windows 98開始,FAT32開始流行。它是FAT16的增強版本,可以支持大到2TB(2048G的分區。FAT32使用的簇比FAT16小,從而有效地節約了硬碟空間。

在FAT32之後,微軟又推出了具有高層次的安全保證的NTFS文件系統和更高級的winFS文件系統。我們現在常用的win7系統支持NTFS和winFS文件系統,而win8載入的則是全新的ReFS系統。

文件系統的產生就是為了能更好地利用硬碟空間,但是硬碟在不斷改進,我們的文件系統也在不斷進步,一切都在改變。未來的文件系統和硬碟又是個什麼樣子,誰知道呢?n

(參考:鳥哥的linux私房菜等先輩大神文章)


推薦閱讀:

現今筆記本硬碟抗震如何?
台式機怎麼加機械硬碟和怎麼拆機械硬碟?
西部數據的硬碟如何準確識別是否是假貨 , 返修或翻新 ?
mSata3介面的速度是否比Sata3介面慢?
數據結構對機械硬碟的優化在對固態硬碟上的優化同樣適用么?

TAG:硬盘 | 文件系统 |