雖然硬盤存儲技術(shù)的進(jìn)步越來越慢,但容量的增大是攔不住的。IDC最近預(yù)測稱,2015年的時候單塊硬盤的容量將達(dá)到8TB(單碟容量怎么也得2TB),是目前的兩倍還多。因為硬件、軟件設(shè)計上的缺陷,大容量硬盤曾在歷史上多次造成麻煩,最近一次硬盤容量問題出現(xiàn)在2.2TB身上,因此在開發(fā)Windows 8的時候,微軟就充分考慮了大容量硬盤的完整支持問題,以及新的4KB扇區(qū)格式。
硬盤尋址方法
硬盤最初使用的尋址方法是柱面/磁頭/扇區(qū)(CHS),通過分別指定柱面、磁頭、扇區(qū)來確定某個數(shù)據(jù)塊的確切位置,但這種方法在137GB以上容量硬盤面前就失效了。
取而代之的是邏輯區(qū)塊尋址(LBA),不再使用離散幾何來指定扇區(qū),而改用扇區(qū)編號來代表特定的數(shù)據(jù)塊。每個扇區(qū)都有預(yù)定義的尺寸(之前是512字節(jié)),從0開始順序編號,最大就是總?cè)萘砍陨葏^(qū)尺寸。
磁盤分區(qū)機(jī)制
LBA尋址方法理論上支持超大硬盤容量,但實際上扇區(qū)的數(shù)量還受制于磁盤分區(qū)機(jī)制。
磁盤分區(qū)的概念可以追溯到二十世紀(jì)八十年代初,是系統(tǒng)管理員們?yōu)榱朔奖闶褂貌煌募到y(tǒng)存儲數(shù)據(jù)而發(fā)明的。主引導(dǎo)記錄(MBR)分區(qū)表支持最多32-bit信息,換算成字節(jié)數(shù)就是2的32次方,也就是大約2.2TB。
你也許會蔑視他們的“短視”,但在三十年前的人們看來,2.2TB幾乎就是個遙不可及的天文數(shù)字,要知道當(dāng)時最大的民用硬盤也不過5MB,而價格超過1500美元。
其實剛剛進(jìn)入九十年代的時候,人們就已經(jīng)意識到了2.2TB容量限制問題,為此多家公司聯(lián)合制定了一種彈性的分區(qū)機(jī)制,這就是GUID分區(qū)表,簡稱GPT,并將其做為UEFI(統(tǒng)一可擴(kuò)展固件界面)規(guī)范的一部分。GPT支持最多64-bit信息,理論最大容量為9.4ZB,相當(dāng)于9400000000TB.又是一個“天文數(shù)字”,不過說不定哪天就會成為第二個“2.2TB”。
Windows Vista 64位開始,微軟就支持從GPT分區(qū)硬盤啟動系統(tǒng),但要求主板固件必須是UEFI,而不能是傳統(tǒng)BIOS。
PC里的固件:BIOS、UEFI
BIOS的意思就代表了其用途:基本輸入輸出系統(tǒng)。三十年前PC發(fā)明的時候它就出現(xiàn)了,但時至今日基本都還是老樣子。UEFI就是用來取代BIOS的,但長時間都未能投入實用,直到最新的Intel、AMD平臺上才開始普及。
UEFI從設(shè)計之初就考慮了對GUID分區(qū)表合超大容量硬盤的支持,比之那些通過BIOS繞道而行的方法可靠得多。Windows 8開始,微軟將會全面完善對UEFI的支持,借助UEFI固件、GTP分區(qū)表、LBA尋址方法共同管理超大硬盤。
下邊就是在一塊3TB硬盤上通過上述方法安裝、啟動操作系統(tǒng)的樣子。
4KB扇區(qū)格式
所有硬盤都內(nèi)建了某種形式的錯誤糾正信息和邏輯,以便在讀取磁盤碟片的時候自動處理信噪比(SNR)。隨著硬盤容量的增大,數(shù)據(jù)存儲位越靠越近,SNR隨之降低,硬盤的每個扇區(qū)就都不得不存儲更多的ECC(錯誤校驗碼),以彌補(bǔ)讀取錯誤,512字節(jié)的狹窄扇區(qū)空間慢慢就不夠用了。
于是,硬盤廠商將扇區(qū)容量擴(kuò)大到了4KB,稱之為“高級格式”(AF),并使用了新的ECC編碼機(jī)制,可以更高效地糾正錯誤,所占存儲空間也更少,等同于擴(kuò)大了可用容量。目前,西數(shù)、希捷等硬盤廠商都逐漸普及了4KB扇區(qū)格式。
扇區(qū)容量增大到4KB,數(shù)據(jù)的更新也必須按照這個尺寸來,所以為了實現(xiàn)更小數(shù)據(jù)塊的邏輯尋址,硬盤必須做一些額外的工作。
如上圖,一個4KB物理扇區(qū)仍然可以劃分成512字節(jié)邏輯扇區(qū)進(jìn)行邏輯尋址。為了寫入單獨一個512字節(jié)的邏輯扇區(qū),硬盤不能簡單地把磁頭挪到 4KB物理扇區(qū)上就寫入,而是需要先把整個物理扇區(qū)中的數(shù)據(jù)讀取到緩存中,在那里修改相應(yīng)的512字節(jié)邏輯扇區(qū),然后再整體寫回去,覆蓋舊扇區(qū)。這叫做“讀取-修改-寫入”(Read-Modify-Write)。
有這種中間轉(zhuǎn)換層的硬盤叫做“4K with 512-byte emulation”,縮寫為512e,而沒有的叫做“4K Native”,即一個是模擬的,一個是原生的。
讀取-修改-寫入可能會在面臨大容量非一致性數(shù)據(jù)的時候影響實際性能,因為Windows必須確保應(yīng)用程序能夠提取整個4KB物理扇區(qū),應(yīng)用程序則需要確保I/O的一致性以報告物理扇區(qū)尺寸。
吸取了之前版本在高級格式上的經(jīng)驗教訓(xùn)之后,Windows 8將其做為了關(guān)鍵的設(shè)計點,將成為第一個完整支持512e、4K Native兩種格式的操作系統(tǒng),主要包括:
- 增強(qiáng)現(xiàn)有API、引入新的API,方便應(yīng)用程序更好地查詢硬盤的物理扇區(qū)尺寸;
- 增強(qiáng)NTFS文件系統(tǒng)的大容量扇區(qū)識別,包括在執(zhí)行擴(kuò)展寫入的時候確保合適的后續(xù)扇區(qū)(寫入文件末尾的時候);
- Hyper-V虛擬化技術(shù)的新文件格式VHDx同樣可以識別大容量扇區(qū),完整支持兩種格式;
- 增強(qiáng)Windows啟動代碼,保證在4K Native原生硬盤上正確啟動。
還有更多工作將在Windows 8里默默進(jìn)行。