2011年12月26日 星期一

硬碟分割區的研究(二) --- 從指令fdisk觀察

假設我們有一顆磁碟「/dev/sdb」,這顆磁碟有255個磁頭(head),2610個磁柱(cylinder),以及平均一個磁軌有63個磁區 (63 sectors/track)。現在我們透過指令「fdisk」將這個磁碟分割成3個分割區:sdb1、sdb2、sdb3。結果列舉如下圖:

圖(一):以磁柱編號來顯示磁碟資訊
從上圖可知這3個分割區的範圍:
sdb1:從磁柱1~磁柱1       => 表示sdb1座落在磁柱1裡面。
sdb2:從磁柱2~磁柱2       => 表示sdb2座落在磁柱2裡面。
sdb3:從磁柱3~磁柱2610  => 表示sdb3座落在磁柱3~2610裡面。


圖(二):以磁區編號來顯示磁碟資訊
Q1:這3個分割區各自擁有多少個磁區(sector)?
PS:fdisk -l顯示的資訊,磁區編號從0開始,磁柱編號是從1開始。
從上圖的資訊可知:
1.每1個磁柱(cylinder)含有255*63=16065個磁區(sector)。
2.第1個磁柱含有16065個磁區,編號從Sector 0~16064。
3.第1個分割區「sdb1」擁有磁碟第1個磁柱(編號1)的部份磁區,Sector 63 ~ 16064。所以換言之第1個分割區並沒有擁有第1個磁柱的所有磁區。
4.第2個分割區「sdb2」擁有磁碟第2個磁柱全部的磁區,Sector 16065 ~ 32129。所以擁有的磁區總數=32129-16065+1=16065=1 個磁柱所含有的全部的磁區數。
5.第3個分割區「sdb3」擁有磁碟第2個磁柱~第2610磁柱全部的磁區,(2610-3+1)*16065=41897520=41929649-32130+1。


Q2:磁碟的第1個磁區(編號Sector 0)到第63個磁區(編號Sector 62),共63個Sectors不屬於第1個分割區(sdb1),那這些沒用在分割區的磁區是用來作什麼的?

PS:CHS表示法,磁柱從0起算,磁頭從0起算,磁區從1起算;所以MBR是(0,0,1)。
這63個磁區按位置是座落在磁碟最前頭的63個磁區,其中最開頭的磁區也就是磁碟的第1個磁區,是我們俗稱的MBR,也就是「主要開機磁區」。接在MBR後面的62個磁區是保留磁區,與MBR一起組合成一個磁軌(track),按CHS定址的表示法是(0,0,1)、(0,0,2)一直到(0,0,63)。也就是磁碟的第一個磁盤(對應第1個磁頭)上的第1個磁軌(對應第1個磁柱)上的所有磁區。
所以總結來說,每個磁碟的前63個磁區有特殊使用,不在分割區裡頭。也因此除了有座落在第1個磁柱的分割區不會用滿第1磁柱的所有磁區;其它磁柱的磁區都會全部給分割區使用。


Q3:圖(二)中,blocks欄位的紅色框框數值"8032+",這"+"是什麼意思??
在linux作業系統中,無論是哪一個檔案系統,預設都是以1 block=1024 Bytes=1 KB來統計磁碟容量,既然1個block等於1024 Bytes,也就相當於2個磁區(因為1個磁區固定為512 Bytes),所以我們將sdb2的總磁區數16065除以2會得到8032餘1,這代表這個分割區內含的總磁區數如果以1個block等於1024 Bytes來換算的話,我們會得到該磁區有8032個完整的blocks,和1個不完整的block,而這一個不完整的block便用『+號』表示。而有的人是說該欄位正確的數字應是「8032.5」個block,不過指令fdisk只能顯示整數,所以『+號』表示小數點之後還有值,也就是比8032還要多一點,但又不到8033。這樣的說法也是對的,因為實際意義是一樣的。




從指令「fdisk」了解磁碟的分割區之後,下一篇我們用另一個操作磁碟分割表(Partition Table)的指令「sfdisk」來再看一次該磁碟的分割區資訊,作一個對應和驗證,順便學習了解「sfdisk」,而且這一個指令可以備份和還原「Partition Table」,實用性分常高。