使用Windows Deployment Services部署VHD Native Boot
VHD Native Boot 是一個能夠?qū)崿F(xiàn)從本地直接啟動 VHD(Virtual HardDisk)的技術。通過 VHD Native Boot,我們最終能夠?qū)崿F(xiàn)在一臺裸機上部署一套完整的 Windows 操作系統(tǒng),而這個操作系統(tǒng)僅被包含在一個 VHD 文件中。該技術目前僅支持 Windows 7的企業(yè)版、旗艦版,以及Windows Server 2008 R2 系列。VHD Native Boot 的特性和優(yōu)勢是顯而易見的,用戶可以在 Windows 7 中創(chuàng)建一個 VHD,并將系統(tǒng)灌入到 VHD 中,通過 Windows 7 bootmgr 來啟動 VHD。不論簡單還是復雜的系統(tǒng)環(huán)境都被存儲到了一個 VHD 中作為一個獨立系統(tǒng),所以維護起來更加方便。此外,用戶還能夠在同一臺計算機上創(chuàng)建最多達512個實例的 VHD Native Boot,很輕易地創(chuàng)建出多個系統(tǒng)環(huán)境,用于生產(chǎn)、測試、評估和開發(fā)。
在一臺 Windows 7操作系統(tǒng)的單機上添加一個 VHD Native Boot 的過程并不復雜,準備好 系統(tǒng)源文件install.wim和imagex.exe 工具(該工具能夠從 WAIK 中獲取,也可以從http://goxia.maytide.net/up/imagex.exe下載。),先使用 diskpart 創(chuàng)建一個 VHD,然后使用 imagex 釋放 install.wim 對應的系統(tǒng)到 VHD 中,最后使用bcdedit命令為這個 VHD 創(chuàng)建引導信息,最后重新啟動計算機在 bootmgr 列表中選擇從這個 VHD啟動即可。
使用diskpart創(chuàng)建VHD的命令行如下:
- diskpart
- create vdisk file=d:\windows7ult.vhd maximum=20480 type=expandable
- sel vdisk file=d:\windows7ult.vhd
- attach vdisk
- create partition primary
- format fs=ntfs quick label=win7nativeboot
- assign letter=v
- exit
上面的命令行將在D盤創(chuàng)建一個名為windows7ult.vhd的動態(tài)擴展類型,大小為20480M的VHD,并為其創(chuàng)建一個NTFS格式的主分區(qū),卷標命名為win7nativeboot,掛載到當前系統(tǒng)中,分配盤符v。
使用 imagex 工具釋放 Windows 7 安裝源 install.wim 中的旗艦版本到“v:\”,為此執(zhí)行下列命令:
imagex /apply f:\soruces\install.wim 5 v:
當系統(tǒng)文件釋放完畢之后就可以為其添加 VHD Native Boot 引導信息,為此執(zhí)行下面的命令行:
- bcdedit /copy {current} /d “Windows 7 Ultimate VHD Native Boot”
- bcdedit /set {GUID} device vhd=[d:]\windows7ult.vhd
- bcdedit /set {GUID} osdevice vhd=[d:]\windows7ult.vhd
- bcdedit /set {GUID} detecthal on
完成引導信息的創(chuàng)建之后,重新啟動計算機,此時會在引導菜單中看到一個名“Windows 7 Ultimate VHD Native Boot”的引導項,選擇它進行引導啟動。經(jīng)過短暫的系統(tǒng)初始化過程后,將進入這個 VHD 系統(tǒng)。
需要注意的是 VHD Native Boot 方式的系統(tǒng)將不支持睡眠功能,且無法使用BitLocker對磁盤進行加密,也不支持 RAID功能。此外,存放 VHD 文件的分區(qū)將不支持 Volume Snapshot,更為重要的是不論 VHD 是固定大小還是動態(tài)擴展類型,其容量必須小于當前 VHD 存儲的分區(qū)大小。
到這里,我們已經(jīng)對 VHD Native Boot 的創(chuàng)建有了詳細的認識,雖然過程非常簡單,但是在企業(yè)環(huán)境中 VHD Native Boot 具體能為我們帶來什么優(yōu)勢?!我們又應當如何來應用這項技術呢?!
在 Windows 7 的開發(fā)階段,我就有幸加入到了 Windows 7 Beta Program,對 Windows 7 進行測試和評估。從 Windows 7 M3 階段提供系統(tǒng)對 VHD 的原生支持,到 Windows 7 Beta 提供的 VHD Native Boot,讓我看到了 VHD Native Boot 的前景。那時我便在PC和NoteBook上開始應用 VHD Native Boot創(chuàng)建我的多系統(tǒng)環(huán)境,安裝多種語言和架構版本,用于執(zhí)行測試和評估工作。直至Windows 7和Windows Server 2008 R2 RTM后,公司便開始著手如何過渡到 Windows 7 系統(tǒng),由于當時的企業(yè)環(huán)境還是以Windows XP系統(tǒng)居多,難么直接將Windows XP升級到Windows 7不免存在諸多問題,唯恐會影響正常的生產(chǎn)工作。但是依照常規(guī)手段安裝多系統(tǒng)環(huán)境,除了要準備單獨用于安裝 Windows 7的分區(qū),還會出現(xiàn)目錄文件混亂的情況。要知道,企業(yè)的普通員工并不個個都是電腦高手,當他們進入系統(tǒng)打開資源管理器后看到兩個分區(qū)都存在系統(tǒng)文件夾會使他們感到迷茫并產(chǎn)生厭煩情緒!此時,如果利用VHD Native Boot將能夠化解這些憂慮和煩惱。而依照前面介紹的單機添加 VHD Native Boot的步驟,將會非常復雜,并增加額外的工作量,因為計算機已有的系統(tǒng)是 Windows XP,要實現(xiàn) VHD Native Boot 必須要將原先的引導程序改為 Windows 7 bootmgr。手工一臺一臺安裝 VHD Native Boot 將是一個噩夢!
OK,先別絕望!微軟已經(jīng)替我們考慮到了這點,現(xiàn)在通過Windows Server 2008 R2中的Windows Deployment Services(WDS)將能夠輕而易舉的將 VHD Native Boot 批量部署到用戶計算機中。因為 WDS 會自動幫你在裸機上創(chuàng)建相關的引導信息。此外,如果現(xiàn)有分區(qū)上已經(jīng)存在系統(tǒng),WDS 部署的 VHD Native Boot 能夠自動創(chuàng)建配置多引導。更酷的是可以部署多個 VHD Native Boot 到計算機上,同時支持差異磁盤方式以及動態(tài)磁盤。
正如我之前所介紹的,現(xiàn)在便可以利用Windows Server 2008 R2中WDS支持部署VHD Native Boot的這一新功能特性,向企業(yè)中已經(jīng)安裝有Windows XP或Windows Vista 的計算機部署一個Windows 7 VHD,或是一個事先經(jīng)過預安裝配置的Windows 7 VHD。此外使用VHD還同步支持物理機和虛擬機的部署,我們只需要維護一份VHD,便可以將其部署到物理計算機或虛擬系統(tǒng)上,效率方面也將得到進一步的提升。
因為當前企業(yè)環(huán)境已經(jīng)構建在微軟AD之上,現(xiàn)在只需要部署一臺基于Windows Server 2008 R2的WDS服務器即可。通過WDS控制器,將Windows 7或Windows Server 2008 R2安裝盤中的boot.wim添加到WDS啟動映像中。因為 WDS 目前還不支持 UI 方式來添加VHD,即通過 WDS 管理器添加 VHD 的操作,所以我們需要借助 WDS 命令行工具 – wdsutil.exe 來完成工作。為了便于管理,我們可以單獨為 VHD 類型的安裝映像建立一個安裝組,該操作可以使用 WDS 管理器進行添加,或使用下列命令行:
wdsutil /add-imagegroup /imagegroup:VHDs
安裝組創(chuàng)建完畢之后就可以開始添加 VHD 映像,為此請執(zhí)行下列命令:
wdsutil /verbose /progress /add-image /imagefile:d:\vhdimages\windows7ultimate.vhd /imagetype:install /imagegroup:VHDs
命令行中的 verbose 和 progress 參數(shù)可以省略,用來顯示詳細信息和處理進度。其他參數(shù)都很容易理解,或是用“/?”獲取相關的幫助,這里不再單獨說明。到這里 VHD 的添加就完成了,非常之簡單!如果是差異磁盤,那么只需要直接添加差異磁盤即可,父盤會自動添加到 WDS 存儲 images 的目錄中,出于安全原因原父盤名稱會被自動修改為 Base-1.vhd 并被賦予隱藏屬性。此外,打開 WDS 管理器我們能看到 VHDs 安裝組中會存在兩個剛添加好的映像,其中被禁用的便是 Base-1.vhd。因為添加的 VHD 都使用內(nèi)部版本名+版本號作為映像名稱,所以存在多個 VHD 時容易混淆,我們可以直接修改這些映像名稱!
一切準備工作就緒后,啟動一臺客戶端計算機(物理機或虛擬機均可)通過 PXE 引導進入 WDS 的安裝向?qū)Ы缑?,選擇之前添加的 VHD 執(zhí)行安裝,這個過程大概有10分鐘左右。
下圖可以看到 VHD 被部署到客戶端后的存儲方式,默認 WDS 會在客戶端計算機目標分區(qū)建立名為 WindowsImages 的根目錄,其中會依序創(chuàng)建000、001 這樣的子目錄存儲部署的 VHD 文件。此外,差異磁盤的父盤也會一同部署到客戶端計算機上。至于網(wǎng)上有網(wǎng)友提到的使用差異磁盤來做客戶端的還原和快速恢復應用,是一個很不錯的想法,但是在實際中我個人認為 VHD Native Boot 更多考慮的應該是應用中會遇到的阻礙等問題。要細心設計如何更好的應用,而不是功能本身的操作。如果要使用差異盤,則需要使用diskpart命令來創(chuàng)建,命令行如下:
create vdisk file=child.vhd parent=parentname.vhd
WDS部署VHD同樣支持無人值守腳本,能夠?qū)崿F(xiàn)自動化部署,從而減少工作量,有效提升了效率。 目前,利用 Windows Server 2008 R2的WDS已經(jīng)成功地在企業(yè)中實施了 Windows 7 VHD Native Boot 方式的部署,在保留原有 Windows XP生產(chǎn)平臺的同時,還能夠讓員工輕松的開始向 Windows 7平臺的過渡。高效且有保障!此外對于企業(yè)中一些特殊部門,還可以部署多種應用環(huán)境的Windows 7滿足特殊需求。