對(duì)很多PC的使用者來說,UEFI就像是一顆深水炸彈,表面風(fēng)平浪靜,暗地里卻早已引發(fā)了巨大的震動(dòng)。多虧了Microsoft的強(qiáng)橫,預(yù)裝WIN8的電腦指定需要GPT分區(qū)這一舉措,讓人們不禁發(fā)出感慨:哦天哪,我的電腦里還有這東西?一些好學(xué)的人對(duì)GPT進(jìn)行了解以后,進(jìn)一步發(fā)現(xiàn)了我們的幕后功臣:UEFI。本期文章我們就來說說,硬盤和硬盤分區(qū)這點(diǎn)事。
簡單地說,硬盤分區(qū)是就使用分區(qū)編輯器(partition editor)將一個(gè)硬盤上劃分幾個(gè)獨(dú)立的邏輯部分,盤片一旦劃分成數(shù)個(gè)分區(qū),不同類的目錄與文件可以存儲(chǔ)進(jìn)不同的分區(qū)。越多分區(qū),也就有更多不同的地方,可以將文件的性質(zhì)區(qū)分得更細(xì),按照更為細(xì)分的性質(zhì),存儲(chǔ)在不同的地方以管理文件;但太多分區(qū)就成了麻煩。
硬盤分區(qū)就像給一間空蕩的房子劃分出臥室,廚房,客廳等相互隔離的空間一樣。主要是為了方面用戶的使用。另一方面,通過合理的硬盤分區(qū),有效保護(hù)系統(tǒng)盤空間,確實(shí)能夠提高系統(tǒng)運(yùn)行速度,再者,硬盤分區(qū)也可以有效地對(duì)數(shù)據(jù)進(jìn)行保護(hù)。你當(dāng)然可以不分區(qū),只不過,當(dāng)你面對(duì)越來越多的子目錄,或者是越來越慢的Windows,不得不費(fèi)功夫去管理你的文件,或者重裝Windows的時(shí)候,恐怕會(huì)悔不當(dāng)初。 “不要把所有的雞蛋放在同一個(gè)籃子里”這句至理名言在經(jīng)濟(jì)學(xué)以外的其他領(lǐng)域也同樣是句警世恒言。
在講解MBR之前,有必要講講機(jī)械硬盤的一些相關(guān)概念,畢竟MBR作為20世紀(jì)最棒的磁盤管理方式,與機(jī)械硬盤可是聯(lián)系緊密的
(這樣可以更好地理解后面的內(nèi)容)。
機(jī)械硬盤原理
機(jī)械硬盤由堅(jiān)硬金屬材料制成的涂以磁性介質(zhì)的盤片,盤片兩面稱為盤面或扇面,都可以記錄信息,由磁頭對(duì)盤面進(jìn)行操作(如果你有壞的硬盤,可以動(dòng)手拆開看。嗯?為什么用壞的?用好的可能費(fèi)錢……)一般用磁頭號(hào)區(qū)分。結(jié)構(gòu)特性決定了機(jī)械硬盤如果受到劇烈沖擊(摔在地上或是勤奮的你想拆開學(xué)習(xí)),磁頭與盤面可能產(chǎn)生的哪怕是輕微撞擊都有可能報(bào)廢。
繼續(xù)講原理:假設(shè)磁頭不動(dòng),硬盤旋轉(zhuǎn),那么磁頭就會(huì)在磁盤表面畫出一個(gè)圓形軌跡并將之磁化,數(shù)據(jù)就保存在這些磁化區(qū)中,稱之為磁道,將每個(gè)磁道分段,一個(gè)弧段就是一個(gè)扇區(qū)。一個(gè)硬盤可以包含多個(gè)扇面,扇面同軸重疊放置,每個(gè)盤面磁道數(shù)相同,具有相同周長的磁道所形成的圓柱稱之為柱面,柱面數(shù)與磁道數(shù)相等。如下圖
了解了這些,我們就可以對(duì)最初的硬盤地址管理方式作一個(gè)原理層面的了解:
最初的尋址方式稱為CHS,在LBA(Logical Block Address)概念誕生之前,由他負(fù)責(zé)管理磁盤地址。所謂CHS即柱面(cylinder),磁頭(header),扇區(qū)(sector),通過這三個(gè)變量描述磁盤地址,需要明白的是,這里表示的已不是物理地址而是邏輯地址了。這種方法也稱作是LARGE尋址方式。該方法下:
硬盤容量=磁頭數(shù)×柱面數(shù)×扇區(qū)數(shù)×扇區(qū)大小(一般為512byte)。
后來,人們通過為每個(gè)扇區(qū)分配邏輯地址,以扇區(qū)為單位進(jìn)行尋址,也就有了LBA尋址方式。但是為了保持與CHS模式的兼容,通過邏輯變換算法,可以轉(zhuǎn)換為磁頭/柱面/扇區(qū)三種參數(shù)來表示,和 LARGE尋址模式一樣,這里的地址也是邏輯地址了。(固態(tài)硬盤的存儲(chǔ)原理雖然與機(jī)械硬盤不同,采用的是flash存儲(chǔ),但仍然使用LBA進(jìn)行管理,此處不再詳述。)
科普到這里,我們可以試圖去理解MBR分區(qū)了。現(xiàn)在我們來看看MBR分區(qū)的技術(shù)原理。
MBR原理
MBR:Master Boot Record,主分區(qū)引導(dǎo)記錄。最早在1983年在IBM PC DOS 2.0中提出。前面說過,每個(gè)扇區(qū)/區(qū)塊都被分配了一個(gè)邏輯塊地址,即LBA,而引導(dǎo)扇區(qū)則是每個(gè)分區(qū)的第一扇區(qū),而主引導(dǎo)扇區(qū)則是整個(gè)硬盤的第一扇區(qū)(主分區(qū)的第一個(gè)扇區(qū))。MBR就保存在主引導(dǎo)扇區(qū)中。另外,這個(gè)扇區(qū)里還包含了硬盤分區(qū)表DPT(Disk Partition Table),和結(jié)束標(biāo)志字(Magic number)。扇區(qū)總計(jì)512字節(jié),MBR占446字節(jié)(0000H - 01BDH),DPT占據(jù)64個(gè)字節(jié)(01BEH - 01FDH),最后的magic number占2字節(jié)(01FEH – 01FFH)。
現(xiàn)在,我們來看一個(gè)MBR記錄的實(shí)例:
80 01 01 00, 0B FE BF FC, 3F 00 00 00, 7E 86 BB 00
其中, “80”是一個(gè)分區(qū)的激活標(biāo)志,表示系統(tǒng)可引導(dǎo);“01 01 00”表示分區(qū)開始的磁頭號(hào)為01,開始的扇區(qū)號(hào)為01,開始的柱面號(hào)為00;“0B”表示該分區(qū)的系統(tǒng)類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);“FE BF FC”表示分區(qū)結(jié)束的磁頭號(hào)為254,分區(qū)結(jié)束的扇區(qū)號(hào)為63、分區(qū)結(jié)束的柱面號(hào)為764;“3F 00 00 00”表示首扇區(qū)的相對(duì)扇區(qū)號(hào)為63;“7E 86 BB 00”表示總扇區(qū)數(shù)為12289622。
可以看到,在只分配64字節(jié)給DPT的情況下,每個(gè)分區(qū)項(xiàng)分別占用16個(gè)字節(jié),因此只能記錄四個(gè)分區(qū)信息,盡管后來為了支持更多的分區(qū),引入了擴(kuò)展分區(qū)及邏輯分區(qū)的概念。但每個(gè)分區(qū)項(xiàng)仍然用16個(gè)字節(jié)存儲(chǔ)。能表示的最大扇區(qū)數(shù)為FF FF,FF FFH,因此可管理的最大空間=總扇區(qū)數(shù)*扇區(qū)大小(512byte),也就是 2TB (由于硬盤制造商采用1:1000進(jìn)行單位換算,因此也有2.2TB一說,別怪他們,他們不是程序員)。超過2TB以后的空間,不能分配地址,自然也就無法管理了。
MBR的諸多缺點(diǎn)使其應(yīng)用大大受限。硬盤技術(shù)日新月異,硬盤容量突飛猛進(jìn)(希捷將于今年開賣60TB 固態(tài)硬盤),多出來的硬盤空間總不能晾著吧,于是,Intel和Microsoft聯(lián)合,在剛誕生的UEFI規(guī)范下一起研發(fā)了新技術(shù)
GPT原理
GPT分區(qū):全稱為Globally Unique Identifier Partition Table,也叫做GUID分區(qū)表,它是UEFI 規(guī)范的一部分。由于硬盤容量的急速增長,MBR的2.2T容量難以滿足要求,而UEFI BIOS的推廣也為GPT的實(shí)現(xiàn)打下了堅(jiān)實(shí)的技術(shù)基礎(chǔ),GPT應(yīng)運(yùn)而生,
我們來看看GPT的結(jié)構(gòu)圖:
等等,MBR是不是走錯(cuò)片場了?答案當(dāng)然是沒有。這里的P意為protective,PMBR存在的意義就是,當(dāng)不支持GPT的分區(qū)工具試圖對(duì)硬盤進(jìn)行操作時(shí)(例如MS-DOS和Linux的fdisk程序),它可以根據(jù)這份PMBR以傳統(tǒng)方式啟動(dòng),過程和MBR+BIOS完全一致,極大地提高了兼容性。而支持GPT的系統(tǒng)在檢測PMBR后會(huì)直接跳到GPT表頭讀取分區(qū)表。和MBR類似,分區(qū)表中存儲(chǔ)了某個(gè)分區(qū)的起始和結(jié)束位置及其文件系統(tǒng)屬性信息,而分區(qū)才是實(shí)際存在的物理磁盤的一部分。
GPT HDR:GPT表頭,如下圖,主要定義了分區(qū)表中項(xiàng)目數(shù)及每項(xiàng)大小,還包含硬盤的容量信息。在64位的Windows Server 2003的機(jī)器上,最多可以創(chuàng)建128個(gè)分區(qū),即分區(qū)表中保留了128個(gè)項(xiàng),其中每個(gè)都是128字節(jié)。(也是EFI標(biāo)準(zhǔn)中的最低要求:分區(qū)表最小要有16,384字節(jié))分區(qū)表頭還記錄了這塊硬盤的GUID,分區(qū)表頭位置(總是LBA1)和大小,也包含了備份分區(qū)表頭和分區(qū)表的位置和大小信息(LBA-1~LBA-34)。同時(shí)還儲(chǔ)存著它本身和分區(qū)表的CRC32校驗(yàn)。固件、引導(dǎo)程序和操作系統(tǒng)在啟動(dòng)時(shí)可以根據(jù)這個(gè)校驗(yàn)值來判斷分區(qū)表是否出錯(cuò),如果出錯(cuò),可以使用軟件從硬盤最后的備份GPT中恢復(fù)整個(gè)分區(qū)表,如果備份GPT也校驗(yàn)錯(cuò)誤,硬盤將不可使用。具體內(nèi)容如下表:
Partition Table:分區(qū)表,包含分區(qū)的類型GUID(如:EFI系統(tǒng)分區(qū)的GUID類型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}),名稱,起始終止位置,該分區(qū)的GUID以及分區(qū)屬性。其內(nèi)容如下:
Microsoft對(duì)分區(qū)屬性做了更詳細(xì)的區(qū)分,目前有:
相較于MBR,GPT具有以下優(yōu)點(diǎn):
(1) 得益于LBA提升至64位,以及分區(qū)表中每項(xiàng)128位設(shè)定,GPT可管理的空間近乎無限大,假設(shè)一個(gè)扇區(qū)大小仍為512字節(jié),可表示扇區(qū)數(shù)為,算下來,可管理的硬盤容量=18EB(1EB=1024PB=1,048,576TB),2T在它面前完全不在話下。按目前的硬盤技術(shù)來看,確實(shí)近乎無限,不過,以后的事誰知道呢。
(2) 分區(qū)數(shù)量幾乎沒有限制,由于可在表頭中設(shè)置分區(qū)數(shù)量的大小,如果愿意,設(shè)置個(gè)分區(qū)也可以(有人愿意管理這么多分區(qū)嗎),不過,目前windows僅支持最大128個(gè)分區(qū)。
(3) 自帶保險(xiǎn),由于在磁盤的首尾部分各帶一個(gè)GPT表頭,任何一個(gè)受到破壞后都可以通過另一份恢復(fù),極大地提高了磁盤的抗性(兩個(gè)一起壞的請(qǐng)出門買彩票)。
(4) 循環(huán)冗余檢驗(yàn)值針對(duì)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)而計(jì)算,提高了數(shù)據(jù)崩潰的檢測幾率。
(5) 盡管目前分區(qū)類型不超過百數(shù)(十?dāng)?shù)也沒有吧。),GPT仍提供了16字節(jié)的GUID來標(biāo)識(shí)分區(qū)類型,使其更不容易產(chǎn)生沖突。
(6) 每個(gè)分區(qū)都可以擁有一個(gè)特別的名字,最長72字節(jié),足夠?qū)懸皇灼呗闪恕M足你的各種奇葩起名需求。
完美支持UEFI,畢竟它就是UEFI規(guī)范的衍生品。在將來全行業(yè)UEFI的情境下,GPT必將更快淘汰MBR。
其他
接下來進(jìn)入加料時(shí)間,更詳細(xì)的講述硬盤知識(shí)。
前面說到過,磁化的弧段稱作一個(gè)扇區(qū),一個(gè)扇區(qū)大小512kb,但硬盤在進(jìn)行文件操作時(shí)并非以扇區(qū)為單位,而是——簇,“簇”是系統(tǒng)進(jìn)行分配的最小單位,一個(gè)簇可以包含多個(gè)扇區(qū),假設(shè)目前一個(gè)簇包含4個(gè)扇區(qū),簇大小為2kb,一個(gè)文件大小恰為2kb,則占用了簇的所有可用空間,即便你有一個(gè)1B大小的文件需要保存,那么你占用的空間也是一個(gè)簇,簇內(nèi)其他空間不可讀寫。
而對(duì)簇的大小進(jìn)行管理的就是文件系統(tǒng):
FAT16/FAT32: 早期的MS-DOS和WIN95操作系統(tǒng)中最常見的硬盤分區(qū)格式。一個(gè)簇最小為512個(gè)字節(jié),其大小可以成倍增長,最大為32K,系統(tǒng)為每個(gè)簇分配唯一的索引號(hào)——一個(gè)16位二進(jìn)制數(shù)來標(biāo)識(shí)。因?yàn)?6位二進(jìn)制數(shù)最大為65536,所以FAT分區(qū)所擁有的簇的數(shù)量不可能超過65536個(gè)。這正是FAT分區(qū)大小不能超過2GB的原因。FAT16的繼任者——FAT32與其原理基本相同,相比前任優(yōu)勢僅在于分區(qū)可以大于2GB,但不能存儲(chǔ)大于4GB的單個(gè)文件,看看現(xiàn)在一部BD的電影都要3,4個(gè)G,顯然不能滿足時(shí)代的需求,被淘汰的很快。
NTFS文件系統(tǒng)相比FAT,最大優(yōu)點(diǎn)在于支持文件加密,通過采用日志式文件系統(tǒng),詳細(xì)記錄磁盤的所有讀寫操作,提高了數(shù)據(jù)和系統(tǒng)的安全性,另一點(diǎn)則是突破了4GB大小限制。也是目前機(jī)械硬盤上的分區(qū)主流。不過對(duì)于目前越來越親民的的flash存儲(chǔ),過多的操作記錄對(duì)存儲(chǔ)介質(zhì)造成了較大的負(fù)擔(dān),同樣的存取操作,NTFS下的讀寫次數(shù)就會(huì)比FAT32下來得多,造成了壽命較短的缺陷。因此針對(duì)移動(dòng)存儲(chǔ)設(shè)備和固態(tài)硬盤,推出了exFAT文件系統(tǒng)。
exFAT:分區(qū)大小和單文件大小最大可達(dá)16EB(16×1024×1024TB);簇大小非 常靈活,最小512B,最高達(dá)32MB;采用了剩余空間分配表,空間利用率更高;同一目錄下最大文件數(shù)可達(dá)65536個(gè)。其特性未必強(qiáng)于NTFS,主要是針對(duì)flash存儲(chǔ)設(shè)備進(jìn)行了優(yōu)化(SSD,U盤),傳統(tǒng)硬盤不能格式化為該格式。
要是到現(xiàn)在你對(duì)扇區(qū),簇,文件系統(tǒng),分區(qū)幾個(gè)名詞有點(diǎn)混淆,不妨看看下圖:
有人會(huì)問,圖中的怎么突然出現(xiàn)了4k扇區(qū),而且為什么下面又包含的是8個(gè)512b的扇區(qū)呢?邊上的偽裝是啥意思?恭喜你,你已經(jīng)抓住了近年來的硬盤發(fā)展潮流。
扇區(qū)的大小雖然約定俗成,但其實(shí)是可以更改的,開始于 2009 年晚期,硬盤制造商正在從傳統(tǒng)的 512 字節(jié)扇區(qū)遷移到更大、更高效的 4096 字節(jié)扇區(qū),國際硬盤設(shè)備與材料協(xié)會(huì)(International Disk Drive Equipment and
Materials Association,IDEMA)將之稱為高級(jí)格式化,也就是現(xiàn)在常說的“4K扇區(qū)”。
多年來,硬盤行業(yè)一直采用512字節(jié)扇區(qū)。然而,隨著硬盤容量的不斷增長,扇區(qū)大小日漸成為提高硬盤容量和糾錯(cuò)效率方面的制約。扇區(qū)分辨率(扇區(qū)大小和總存儲(chǔ)大小的百分比)越來越低,盡管在管理小型離散數(shù)據(jù)時(shí),分辨率越低越好。但現(xiàn)代的計(jì)算系統(tǒng)中多的是大型數(shù)據(jù)塊,一般遠(yuǎn)比傳統(tǒng) 512 字節(jié)扇區(qū)大小要大得多。另外,隨著區(qū)域密度的增加,小型 512 字節(jié)扇區(qū)在硬盤表面上占用的空間也將越來越小。硬盤扇區(qū)中的數(shù)據(jù)占據(jù)的空間越小,錯(cuò)誤糾正就會(huì)變得越困難,因?yàn)橥瑯哟笮〉慕橘|(zhì)缺陷對(duì)總體數(shù)據(jù)負(fù)載損害的百分比更高,所以就需要更大的糾錯(cuò)強(qiáng)度。現(xiàn)在,硬盤開始通過先進(jìn)的區(qū)域密度來提高錯(cuò)誤糾正的上限。因此,為了改善錯(cuò)誤糾正和實(shí)現(xiàn)格式化效率,提高扇區(qū)大小是硬盤行業(yè)內(nèi)的普遍訴求。
不過,由于計(jì)算機(jī)系統(tǒng)的緩慢發(fā)展,多數(shù)仍將扇區(qū)假定為512字節(jié),因此就產(chǎn)生了4K對(duì)齊問題。即使物理硬盤分區(qū)與計(jì)算機(jī)使用的邏輯分區(qū)對(duì)齊,保證硬盤讀寫效率。
有4k對(duì)齊當(dāng)然就有4k對(duì)不齊。這個(gè)鍋,或許應(yīng)該甩給操作系統(tǒng)。硬盤廠商為了保證與操作系統(tǒng)的兼容性,將新標(biāo)準(zhǔn)的"4K扇區(qū)"的硬盤模擬成扇區(qū)為512B的硬盤,問題出現(xiàn)在此時(shí):當(dāng)在一些特殊情況下格式化的系統(tǒng)(比如用ghost11.5以下版本),會(huì)默認(rèn)定義為4096字節(jié)大小為一個(gè)簇,這沒毛病,但是,由于其引導(dǎo)區(qū)只占用了不多不少63個(gè)扇區(qū),真正的文件系統(tǒng)在63號(hào)扇區(qū)之后,
我們可以算出前63個(gè)扇區(qū)大小為:63*512B = 32256B。
63個(gè)扇區(qū)占用簇個(gè)數(shù):32256B/4096B=7.875簇。
從第64個(gè)扇區(qū)開始,每個(gè)簇都會(huì)跨越兩個(gè)物理單元,占據(jù)前一個(gè)單元的一小部分和后一個(gè)單元的一大部分,前面說過,系統(tǒng)文件操作以簇為單位,如果每個(gè)簇都要用到兩個(gè)扇區(qū),勢必拖累讀寫速度。也就產(chǎn)生了“4k對(duì)不齊”的概念,“4K對(duì)齊”要做的事就是將硬盤的模擬扇區(qū)(512B)對(duì)齊到的8整數(shù)倍個(gè)“實(shí)際”4K扇區(qū),即8*4096 = 32768B,使其正好跨過63扇區(qū)的特性,從第64個(gè)扇區(qū)對(duì)齊。
其實(shí)不僅是操作系統(tǒng),一些廣泛使用的軟件程序也可能引發(fā)4k對(duì)不齊現(xiàn)象。因此,對(duì)齊技術(shù)的存在確有其必要性。盡管4k必然取代512b,但冰凍三尺非一日之寒,全行業(yè)仍需要一個(gè)時(shí)間來進(jìn)行技術(shù)的全面推廣。
后記
一些經(jīng)常被問到的關(guān)于GPT的問題:
- Q:怎么知道我的硬盤是MBR的還是GPT的?
A: windows自帶個(gè)非常好用的工具-diskpart,簡單幾條命令即可,如圖:
- Q:如何將GPT轉(zhuǎn)換為MBR?
A: 還是diskpart,( 警告 :請(qǐng)先備份內(nèi)容)
不過我還是建議你不要這樣做,畢竟MBR是個(gè)被淘汰的技術(shù)。
- Q:GPT真好,我想立刻使用,可是如何將MBR轉(zhuǎn)換為GPT而不丟失東西?
A:這是個(gè)好主意,你可以使用AOMEI Partition Assistant Standard,它是個(gè)免費(fèi)軟件。非常好用。不過還是建議提前備份內(nèi)容。
評(píng)論
查看更多