近期回顧了下hdd磁碟的結構原理,重新又發現幾個比較有意思的問題
稍作整理記錄一下。
【背景資訊】fdisk -l 命令返回(rhce 7以下)
[root@vm_0_15_centos ~]# fdisk -l
disk /dev/vda: 53.7 gb, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
units = cylinders of 16065 * 512 = 8225280 bytes
sector size (logical/physical): 512 bytes / 512 bytes
i/o size (minimum/optimal): 512 bytes / 512 bytes
disk identifier: 0x00086547
寫在前面 先翻譯幾個單詞:
heads: 頭部 --->這裡理解為磁頭數
(ps,hdd中讀寫磁頭是分開的,寫+讀為一組,這裡表示磁頭組數,即盤面數 , 乙個盤有兩個面)
sectors / track:扇形 / 小道 --->這裡理解為磁軌 cylinders :圓柱 --->這裡理解為柱面
由上面的命令輸出可以很直觀的了解到這個分割槽的大小為:53687091200 bytes
即: 255 heads 63 sectors/track 6527 cylinders = 104856255(總sectors數)
104856255 * 512 = 53686402560 bytes數這裡開始拋幾個小問題:
為什麼磁頭數為單數? 另外數值為什麼有255這麼「巨」大? 磁軌外圈與內圈周長 相差巨大,為什麼扇區數一樣? 且為什麼是 63 ?
為什麼我們實際計算的53686402560 bytes數 與 53687091200 bytes不相等?
要解釋這幾個問題,我們還是一定要引出 磁碟定址 這個知識點。
磁碟定址,意思就是kernel 如何找到 pba(物理塊位址)的一種實現方式。
主要有兩種 chs(老式) 和 lba
chs由於早期磁碟的每個磁軌的扇區數一樣多(外圈磁顆粒稀疏,耐用性強),
整體磁碟空間大小也不大。所以在設計時用了24位來表示:10+8+6
c, (柱面數) 可程式設計數為 2^10 =1024
h, (磁頭數) 可程式設計數為 2^8 =256
s, (扇區數) 可程式設計數為 2^6 =64
由於1位用於特殊作用,均需要減1 即最大定址空間為:
1023 255 63 * 512 = 8414461440 bytes = 8g+
很顯然隨著儲存需求增加,單塊磁碟的儲存空間已經有了很大量級的發展。
其中物理特性裡,主要的幾個關鍵引數均有改變:
磁碟面的磁顆粒更高密+磁頭更穩定更細(影響c)
磁碟面的磁顆粒均勻分布(影響s)
磁碟增加磁碟盤面(影響h)
改變後之前的演算法就不在適用於現在的這種結構了。所以就出了新的定址
方式lba 邏輯塊位址(從0開始計,一直到最後乙個扇區)。
但為了相容老式的計算方式以及更為立體的體現硬碟物理構造形態(個人理解),還是會體現出chs的資訊出來。
ok, 了解到這裡 最上面的幾個問題就很好解答了:
為什麼磁頭數為單數? 另外數值為什麼有255這麼「巨」大?
這裡不是真實的磁頭數,只是為了在lba換算成chs時均用了chs的最
大值來轉換運算而已。如上面截圖一塊東芝3t的盤就是 8個盤面 16個磁頭數
磁軌外圈與內圈周長 相差巨大,為什麼扇區數一樣? 且為什麼是 63 ?
同理63也不是真實是這樣,真實情況肯定是外圈扇區數比內圈大 為什麼我們實際計算的53686402560 bytes數 與 53687091200 bytes不相等?
這個個人是這樣理解:units = cylinders of 16065 512 = 8225280 bytes
chs的乙個最小計算單元,即一1個柱面所擁有的扇區數: 255 63 = 16065
那麼在lba上表示出chs時肯定以lba為準,chs作為參考。為此當有零頭數時,就直接去掉不在chs上做顯示處理。實際情況中lba總扇區數幾乎一定不是 16065的倍數,所以我們用chs去計算總大小時會比lba的值稍小一點。範圍是在(1~16064) * 512
end.
硬碟的定址方式
什麼是chs定址 很久以前,硬碟的容量還非常小的時候,人們採用與軟盤類似的結構生產硬碟。也就是硬碟碟片的每一條磁軌都具有相同的扇區數。由此產生了所謂的csh 3d引數 disk geometry 即磁頭數 heads 柱面數 cylinders 扇區數 sectors 以及相應chs定址方式。chs...
硬碟中磁頭定址方式
看了好多中介紹硬碟工作原理的文章,一直有幾個問題困擾著我 1 硬碟工作時轉動,非工作時不轉動 2 磁頭定址的軌跡是怎麼樣的 下邊就這兩個問題來說明下 1 待機是將當前處於執行狀態的資料儲存在記憶體中,機器只對記憶體供電,而硬碟 螢幕和cpu等部件則停止供電。由於資料儲存在速度快的記憶體中,因此進入等...
硬碟定址的變換 硬碟大小在突破中前進
因為硬體 軟體設計上的缺陷,大容量硬碟曾在歷史上多次造成麻煩,最近一次硬碟容量問題出現在2.2tb身上,因此在開發windows 8 的時候,微軟就充分考慮了大容量硬碟的完整支援問題,以及新的4kb扇區格式。1,8g限制 硬碟定址的限制 硬碟最初使用的定址方法是柱面 磁頭 扇區chs cylinde...