檔案系統中的磁碟塊

2021-09-13 10:05:14 字數 1970 閱讀 4718

引言:扇面是磁碟中最小的物理儲存單位,而塊是作業系統最小的邏輯儲存單位。

物理層面,乙個磁碟按層次分為:磁碟組合 -> 單個磁碟 -> 某一盤面 -> 某一磁軌 -> 某一扇區 。回顧之前內容,每個磁碟有多條同心圓似的磁軌,磁軌被分割成多個部分。每部分的弧長加上到圓心的兩個半徑,恰好形成乙個扇形,所以叫做扇區。扇區是磁碟中最小的物理儲存單位。

由於扇區數目眾多在定址時比較困難,所以作業系統就將相鄰的扇區組合在一起,形成乙個塊,再對塊進行整體的操作,即塊是作業系統中最小的邏輯儲存單元。這樣可以使作業系統忽略底層物理儲存結構的設計。磁碟塊是作業系統自己「杜撰」的,是乙個虛擬的概念。其大小由作業系統決定,通常乙個塊 = 單個扇區大小 * 2的n次方,其中n是可修改的。 

作業系統在對磁碟進行管理時,通常以磁碟塊作為最小單位。而定位乙個磁碟塊則通過磁碟塊位址進行。磁碟塊位址類似於訪問記憶體時需要提供的記憶體位址,作業系統訪問磁碟塊的時候需要提供磁碟塊位址。不過磁碟塊位址比記憶體位址更加複雜,其包含多個部分,具體細節因作業系統的差異而不同。

典型的作業系統都會標明磁軌(磁柱)、盤面(磁頭)、扇面三個引數,以這種方式給出的位址稱為邏輯塊位址(logical block address, lba),這裡之所以用「邏輯」是因為lba不一定與磁碟上面的塊儲存區域的真實實體地址對應;磁碟控制器將負責進行從lba到實體地址的對映。下圖給出就是一種lba位址。

lba用於將磁碟讀寫請求傳送給磁碟控制器。在磁碟讀取請求資料裡,所要讀取資訊的起始位址由磁軌號(磁柱)、扇面號和盤面號(柱頭)組成,而扇面計數則給出了該次磁碟訪問將要讀取的扇面數量。磁碟控制器將這些引數轉換為一系列的底層磁碟操作。再對磁碟進行讀取時,作業系統負責將該數值寫入到磁碟驅動器介面裡制定的i/o埠。另外5個額外的、寬度為乙個位元組的暫存器則用來驅動讀寫命令和狀態資訊。

1、作業系統將要讀取的lba傳送給磁碟驅動器並啟動讀取命令。 

2、磁碟驅動器將磁頭移動到正確的位置,並啟動處於制定盤面上的磁頭來搜尋指定的磁軌。在磁頭的移動過程中,讀取磁頭不斷檢查下面的扇面號直到所要求的扇面找到為止。 

3、磁碟控制器將扇面資料和ecc(error checking and correcting,錯誤檢查和糾正)資訊傳送到乙個處於磁碟介面的緩衝區。這裡ecc資訊是資料流動動態過程中,進行計算得到的。 

4、磁碟驅動器向作業系統發出「資料就緒」訊號。 

5、作業系統從磁碟介面的緩衝區讀取資料,既可以按照乙個位元組乙個位元組的方式讀取,也可以啟動dma命令讀取。

4.1、塊、作業系統最小單元

磁碟的原理、物理實現,磁碟控制器是按照扇區這個單位完成資料讀取操作的,故磁碟讀寫基本單位是扇區。扇區數目眾多在定址時比較困難,所以作業系統就將相鄰的扇區組合在一起,形成乙個塊,再對塊進行整體的操作,即塊是作業系統中最小的邏輯儲存單元。檔案系統就是作業系統的一部分,所以檔案系統的最小單位也是塊。 

4.2、為什麼磁碟塊大小必須是扇區大小的整數倍呢?

磁碟讀取資料的基本單位就是單個扇區,通常乙個塊 = 單個扇區大小 * 2的n次方。n是整數,磁碟的io速度更快,會更合理的利用資源。否則會對扇區進行分割。 

4.3、4k對齊的概念

隨著時代發展,硬碟容量不斷擴充套件,使得之前定義的每個扇區512位元組不再是那麼的合理,於是改為每個扇區4096 個位元組,也就是現在常說的「4k扇區」。隨著ntfs成為了標準的硬碟檔案系統,其檔案系統的預設分配單元大小(塊)也是4096位元組,為了使塊與扇區相對應,即使物理硬碟分割槽與計算機使用的邏輯分割槽對齊,保證硬碟讀寫效率,所以就有了「4k對齊」的概念。 

新標準的」4k扇區」的硬碟廠商為了保證與作業系統相容,也將扇區模擬成512b,會預設定義為4096位元組大小為乙個塊,但因為其引導區占用了乙個磁軌共63個扇區,真正的檔案系統在63號扇區之後。 

參考資料:

1、《作業系統之哲學原理》 鄒恒明著

2、電腦中常用的「扇區」、「簇」、「塊」、「頁」等概念

3、扇區和磁碟塊的區別是什麼

檔案系統筆記三 磁碟塊

引言 扇面是磁碟中最小的物理儲存單位,而塊是作業系統最小的邏輯儲存單位。物理層面,乙個磁碟按層次分為 磁碟組合 單個磁碟 某一盤面 某一磁軌 某一扇區。回顧之前內容,每個磁碟有多條同心圓似的磁軌,磁軌被分割成多個部分。每部分的弧長加上到圓心的兩個半徑,恰好形成乙個扇形,所以叫做扇區。扇區是磁碟中最小...

磁碟及檔案系統

fdisk 對磁碟進行分割槽 fdisk l 列出指定裝置的分割槽表資訊 fdisk etc sda,建立新分割槽 partprobe 讓核心更新分割槽資訊 fisk對磁碟分割槽後,使用partprobe命令,可不重啟系統就能識別 cat proc partitions,檢視分割槽資訊 root l...

檢視磁碟檔案系統

fdisk l 檢視分割槽 df h 檢視已經掛載的檔案系統 parted print list 檢視檔案系統 磁碟如果是普通的分割槽,比如 ntfs ext3等,可以直接用 mount t 來制定檔案系統型別來掛載,但有時候磁碟是採用的lvm卷的分割槽,要掛載這類磁碟,就應該按照以下方式 a.掃瞄...