diskpart這個命令,用了很多年了。
作為曾經(jīng)SCCM的老手,至今還記得在System Center Configuration Manager的OSD(操作系統(tǒng)部署)中,為了實現(xiàn)單一鏡像單一序列部署到不同的計算機硬件,去編寫提供不同的磁盤分區(qū)的腳本。
這是由于不同廠商OEM提供Windows時,往往在磁盤上劃分了保留分區(qū)以存放恢復鏡像。如果企業(yè)或機構(gòu)中存在非在線恢復系統(tǒng)的需求,那么可以把OSD產(chǎn)生的鏡像WIM保存到保留的恢復分區(qū),以供需要時進行系統(tǒng)的回復。
另外,對于一個生產(chǎn)環(huán)境,用戶往往希望保留自己的數(shù)據(jù)分區(qū)而只恢復系統(tǒng)分區(qū)。在這個情況下,規(guī)范分區(qū)并且在OSD的任務序列中進行識別和處理就顯得非常的重要了。
在以前很長的一段時間里,對磁盤分區(qū)的了解滿足主分區(qū)、擴展分區(qū)、活動分區(qū)和MBR(主引導記錄)就能大致滿足日常需求了。在PC/AT時代,BIOS會去尋找磁盤上的激活的引導分區(qū),然后根據(jù)之上的引導扇區(qū)的信息,加載SYS或者bootmgr之類的引導控制程序,引導進入操作系統(tǒng)。
還記得用16進制磁盤編輯器查看分區(qū)表,能夠看到活動分區(qū)的0x80標記么?還記得查看引導扇區(qū),最后兩個雙字節(jié)為0x55 0xAA么?這里有幾篇文章可以幫助回憶:
Why 55 AA is used as the boot signature on IBM PCs?
http://stackoverflow.com/questions/11075003/why-55-aa-is-used-as-the-boot-signature-on-ibm-pcs
The PC/AT boot process
http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/pcat-boot-process.html#Active
可是技術(shù)不會停留,為了適應新的需求,例如為了超越2TB磁盤的限制,GPT磁盤分區(qū)出現(xiàn)了。相應的,磁盤類型ID也從以前的一個雙字節(jié)變成了GUID。
之所以想起來了解這個問題,是因為我干掉了機器出場自帶的恢復分區(qū)。所以順便了解下GPT分區(qū)。
如何創(chuàng)建、刪除分區(qū),一搜一堆,不在這篇的討論范圍內(nèi)。主要想看看分區(qū)類型。在刪除恢復分區(qū)的時候,通過diskpart detail partition命令,能看到我的SSD上有這些類型的分區(qū)。
除了熟悉的分區(qū)/卷的信息,主要有兩個信息是我想了解的,一個是分區(qū)類型,因為使用GPT磁盤,都顯示為GUID了;一個是屬性。
使用diskpart setid命令可以修改分區(qū)類型,當然也可以查看。
DISKPART> help setid 為帶焦點的分區(qū)更改分區(qū)類型字段。 語法: SET ID={<BYTE> | <GUID>} [OVERRIDE] [NOERR] ID={<BYTE> | <GUID>} 指定新分區(qū)類型。 對于主啟動記錄(MBR)磁盤,可以采用十六進制形式 對于 GUID 分區(qū)表(GPT)磁盤,可以為分區(qū)指定 EFI 系統(tǒng)分區(qū): 基本數(shù)據(jù)分區(qū): 可以使用此參數(shù)指定任何分區(qū)類型 GUID, Microsoft 保留分區(qū): 動態(tài)磁盤上的 LDM 元數(shù)據(jù)分區(qū): 動態(tài)磁盤上的 LDM 數(shù)據(jù)分區(qū): 群集元數(shù)據(jù)分區(qū): 除提及的限制之外,DiskPart 不會檢查 OVERRIDE 啟用 DiskPart 能夠強制首先卸載卷上的文件系統(tǒng), NOERR 僅用于腳本。遇到錯誤時,DiskPart 會繼續(xù) 僅供原始設(shè)備制造商(OEM)使用。 必須選擇一個分區(qū)才能成功執(zhí)行此操作。 警告: 使用此參數(shù)更改分區(qū)類型字段可能會導致計算機發(fā)生故障 此命令在動態(tài)磁盤或 Microsoft 保留分區(qū)上無法使用。 示例: SET ID=07 OVERRIDE |
這里有一篇比較完整的介紹:https://technet.microsoft.com/en-us/library/cc771243.aspx
我注意到幫助沒有說明我的OEM分區(qū),于是搜索。
原來這是個用于實現(xiàn)Intel Rapid Start Technology的分區(qū),文檔參見:http://download.intel.com/support/motherboards/desktop/sb/rapid_start_technology_user_guide_for_uefi1.pdf
那么,分區(qū)屬性又是怎么回事呢?使用diskpart gpt命令可以獲得分區(qū)屬性。
DISKPART> help gpt 在基本 GUID 分區(qū)表(GPT)磁盤上,將 GPT 屬性分配給帶焦點的分區(qū)。 語法: GPT ATTRIBUTES=<N> ATTRIBUTES=<N> 表示可應用于帶焦點的分區(qū)的屬性的十六進制值。GPT 屬性字段 可以在所有分區(qū)上設(shè)置以下屬性: 0x0000000000000001 將該分區(qū)標記為必需分區(qū)。這向所有的磁 對于基本數(shù)據(jù)分區(qū),定義了以下屬性: 0x8000000000000000 0x4000000000000000 0x2000000000000000 x1000000000000000 Microsoft 可能會隨時添加其他屬性。 GPT 分區(qū)屬性提供有關(guān)該分區(qū)使用情況的附加信息。 必須選擇一個基本 GPT 分區(qū)才能繼續(xù)執(zhí)行此操作。 警告: 更改 GPT 屬性可能會導致無法為基本數(shù)據(jù)卷分配驅(qū)動器號,或阻止裝載文件 示例: GPT ATTRIBUTES=0x8000000000000000 |
對照detail partition命令獲得的分區(qū)屬性,能夠發(fā)現(xiàn)有這么幾種:
0x0000000000000000;0X8000000000000000;0X8000000000000001
這樣一來,磁盤管理器中分區(qū)不能操作就很好理解了。
0x0000000000000000是標準的數(shù)據(jù)分區(qū),系統(tǒng)會自動分配盤符,也能夠正常的通過磁盤管理器進行操作管理;
0X8000000000000000系統(tǒng)不會分配盤符,這樣磁盤掛載到其他操作系統(tǒng)時不會出現(xiàn)不需要的盤符。但在需要的時候可以進行操作;
0X8000000000000001除了以上屬性之外,還疊加了防止刪除分區(qū)的屬性。
對于GPT磁盤以及相應的GUID等介紹,不論TechNet還是MSDN都有專門的文章。
Frequently asked questions about the GUID Partitioning Table disk architecture
https://support.microsoft.com/en-us/kb/302873
Windows and GPT FAQ
https://msdn.microsoft.com/en-us/library/windows/hardware/dn640535(v=vs.85).aspx
還記得安裝Windows的時候,自動多出來的兩個分區(qū)嗎?一個叫引導分區(qū),一個叫保留分區(qū),都是干啥用的呢?
查一下前面的GUID,引導分區(qū)其實就是一個EFI分區(qū),也可以簡稱ESP。這個分區(qū)通常保存引導需要的文件,例如bootmgr等。單獨做出來一個分區(qū)的好處是系統(tǒng)運行時,病毒和惡意代碼一般無法影響這個分區(qū)。
而保留分區(qū),全稱是Microsoft Reserved partition。安裝Windows的GPT分區(qū)磁盤一定會有這個分區(qū)。這個分區(qū)有什么作用呢?例如,基本磁盤轉(zhuǎn)化成動態(tài)磁盤,這個分區(qū)的數(shù)據(jù)就可以轉(zhuǎn)為LDM動態(tài)卷的數(shù)據(jù)庫。
為了驗證系統(tǒng)EFI分區(qū),上圖顯示了我使用提升的System賬戶查看了掛載的這個分區(qū)的內(nèi)容。
關(guān)于分區(qū)還有一篇極好的介紹文章:
https://technet.microsoft.com/en-us/library/dd799232%28v=ws.10%29.aspx
傳統(tǒng)MBR分區(qū)的模式如下: