檔案系統基礎知識之磁碟

2021-08-10 05:05:38 字數 3569 閱讀 3753

**   

磁碟的物理結構

乙個磁碟驅動器兩個主要的移動部件;乙個是磁碟片組合(disk assembly) ,另乙個是磁頭組合(head assembly)。磁碟片組合由乙個或多個圓盤(platter)組成,它們圍繞著一根中心主軸旋轉。圓盤的上表面和下表面塗覆了一薄層磁性材料,二進位制位被儲存在這些磁性材料上。其中,0和1在磁材料中表現為不同的模式。       

磁碟被組織成磁軌(track),磁軌是單個碟片上的同心圓。所有盤面上半徑相同的磁軌構成了柱面(cylinder),從磁碟的頂檢視可以看到,磁軌佔據大部分盤面,最靠近主軸的區域除外。沿著磁軌的資料密度大於沿著半徑的資料密度。在2023年,乙個典型的磁碟上每英吋有大約100 000個磁軌,但是沿著磁軌每英吋能夠儲存100萬個二進位制位。 

磁軌被組織成扇區(sector)。扇區是被間隙(gap)分割的圓的片段,間隙未被磁化為0或1 

雖然中顯示每乙個磁軌有相同的扇區數,但實際上,每個磁軌的扇區數通常是不同的,靠外圈磁軌的扇區數比靠內圈磁軌的扇區數多。就讀寫磁碟而論,扇區是不可分割的單位;就磁碟錯誤而論,它也是乙個不可分割的單位。倘若一部分磁化層被以某種方式損壞,以至於它不再能儲存資訊,那麼那些包含這個部分的整個扇區也不能再使用。間隙大約佔整個磁軌的10%,用於幫助標識扇區的起點。通常,在磁碟與主存之間所傳輸資料的邏輯單元稱為塊,其由乙個或多個扇區所組成。 

第二個可移動部件是磁頭組合,它承載著磁頭。每乙個盤面有乙個磁頭,它極其貼近地懸浮在盤面上,但是絕對不與盤面接觸(否則就要發生「頭損毀」,碟片被破壞)。磁頭讀出經過它下面的盤面的磁方向,也能改變其磁方向,以便在磁碟上寫資訊。每個磁頭被固定在乙個磁頭臂上,所有盤面的磁頭隨著磁頭臂一同移進移出,磁頭臂是固定的磁頭組合的一部分。 

很顯然,計算整個磁碟的容量的演算法是:盤面數x磁軌數x扇區數x扇區位元組數

磁碟的邏輯結構

要組織磁碟上儲存的資料,使得可以方便的儲存和訪問,就要實現資料的定位。資料的定位主要有兩種方式:chs

位址和lba

線性位址。

chs位址

早期硬碟儲存空間採用3維位址結構描述:

c=cylinder(柱面。若干盤體重疊,相同的磁軌(track上)構成的乙個立面體)

h=head(磁頭。一張盤有兩面(side),每面乙個磁頭)

s=sector(扇區。盤體上的圓形軌跡為磁軌,把磁軌等分為若干儲存區域)

磁碟的容量=柱面總數×磁頭總數×每道扇區總數×每扇區容量(512byte)

lba位址

lba是邏輯塊位址的簡稱,它是一種線性位址結構,它其實是由chs計算的扇區編號順序編址,即0柱0面1扇區為lba 0扇區。現在的硬碟廠家為了保持相容性,仍然提供了虛擬的chs引數,可在bios設定中看到。對硬碟的資料訪問是靠系統呼叫int 13h中斷程式實現的,它將欲訪問的資料位址傳遞給硬碟介面電路(ata介面)完成讀寫操作。

528mb的限制:早期的硬碟的chs引數被限制為:磁頭數最大16,柱面數最大1024,扇區最大63,每扇區位元組數為512位元組。因此1024×16×63×512b≈528mb。

8gb容量限制:將柱面數增加到16384,其他不變,共計24bit,則硬碟容量最大為:16384×16×63×512b≈8.4gb。

32gb容量限制:硬碟採用了虛擬chs值,使得柱面數為65535,其他不變,共計26bit,這樣,磁碟的總容量最大為: 65535×16×63×512b≈32gb。  

137g  容量限制:由於普遍使用了lba定址模式和虛擬chs引數,將扇區數進一步增加為255,共計28位,將其乘積作為lba值。這樣系統使用28位的lba引數,約計137gb。

磁碟的儲存結構

剛剛從廠商處購來的新硬碟既無任何資料,也不能寫入任何資料,必須先進行低階格式化,fdisk 分割槽,format 高階格式化後方可使用。對硬碟的這一系列初始化工作,稱之為硬碟準備。過程如下:低階格式化---------------fdisk 分割槽-------------------format 高階格式化。 

(1)低階格式化:磁碟為了達到隨機訪問的目的,需要在磁碟上劃分出磁軌,然後又在磁軌劃分出扇區,每個扇區以扇區間隙、同步引導位元組和扇區編號作為扇區的起始,然後才是扇區的內容,後面還有校驗標記。計算機就是憑藉這些標記資訊來識別扇區的。低階格式化就是在磁軌上標上這些標記而已。所以低階格式化的操作實際上僅僅是乙個簡單的寫過程,寫的不是資料而是標記。同時低階格式化還會剔出壞磁軌。 

(2)fdisk分割槽:允許整個物理硬碟在邏輯上劃分成最多4個主分割槽(其中可以有乙個擴充套件分割槽),以實現多個作業系統共享硬碟空間。在建立了擴充套件分割槽的前提下,可以將擴充套件分割槽劃分成乙個或多個邏輯分割槽。在硬碟上建立分割槽表的同時,fdisk 會把主引導記錄mbr 寫到硬碟的主引導記錄(柱面0,磁頭0,扇區1),並啟用乙個使用者指定的主分割槽。下面要特別介紹一下主引導記錄mbr :  

mbr 稱為硬碟主引導記錄。它是在分割槽時由fdisk 建立在硬碟柱面0,磁頭0,扇區1 上的,總共占用512 個位元組,包括一小段執行**(主引導**)、磁碟特徵和硬碟分割槽表。主引導記錄(以及後面介紹的引導扇區)結束的兩個位元組必須是引導自舉標記0x55aa。磁碟特徵位於0x01b8, 指定磁碟作業系統。  

主引導**實現下列功能:   a. 掃瞄分割槽表查詢活動分割槽;  b. 尋找活動分割槽的起始扇區; c. 將活動分割槽的引導扇區讀到記憶體; d. 執行引導扇區的執行**。 如果主引導**未完成這些功能, 系統會顯示下列的錯誤資訊之一: invalid partition table, error loading operating system, missing operating system.  

主引導記錄mbr 由4 個部分組成:a.主引導程式(偏移位址0000h~0088h),它負責從活動分割槽中裝載並執行系統引導程式;b.出錯資訊資料區(偏移位址0089~00e1 為出錯資訊,10e2h~10bd 全為0 位元組); c.分割槽表(dpt,disk partition table,含4 個分割槽項,偏移位址01beh~01fdh,每個分割槽表項長16 個位元組,共64 位元組),即主分割槽和擴充套件分割槽的資訊;d.結束標誌(偏移位址01efh~01ffh ),這兩個位元組值為結束標誌55aa,如果該標誌錯誤系統就不能啟動.  

注意:硬碟的引導記錄是不屬於任何乙個作業系統的,它先於所有的作業系統而被調入記憶體並發揮作用,然後才將控制權交給主分區內的作業系統,並讓主分割槽資訊表來管理硬碟。

(3)高階格式化:  

這一步之前的所有操作,都是與具體的檔案系統沒有任何關係的,從現在開始,才涉及到具體的檔案系統,換句話說,高階格式化是與我們要建立的檔案系統相關的,因此我們呼叫高階格式化命令時,檔案型別是必須提供的引數之一。

在dos/windows系統中,用format對指定分割槽進行高階格式化,將分割槽空間劃分邏輯扇區,生成dos 引導扇區(即邏輯0 扇區)dbr,檔案分配表fat 和根檔案目錄表fdt。        

在linux系統中,需要使用mkfs命令將分割槽進行格式化,建立想要的檔案系統,如ext2,ext3,等。

經過以上三步後,磁碟的儲存結構看起來如下圖所示:

linux檔案系統基礎知識

2012 02 06 13 15 標籤 linux 基礎知識 分類 file system 1 linux檔案系統分配策略 塊分配 block allocation 和 擴充套件分配 extent allocation 塊分配 磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,...

linux檔案系統基礎知識

1 linux檔案系統分配策略 塊分配 block allocation 和 擴充套件分配 extent allocation 塊分配 磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。每一次檔案擴充套件時,塊分配演算法就...

linux檔案系統基礎知識

1 linux檔案系統分配策略 塊分配 block allocation 和 擴充套件分配 extent allocation 塊分配 磁碟上的檔案塊根據需要分配給檔案,避免了儲存空間的浪費。但當檔案擴充時,會造成檔案中檔案塊的不連續,從而導致過多的磁碟尋道時間。每一次檔案擴充套件時,塊分配演算法就...