Related Posts Plugin for WordPress, Blogger...

網管人雜誌

本文刊載於 網管人雜誌第 121 期 - 2016 年 2 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。

文章目錄

1、前言
2、建立 Nano Server 映像檔
          建立用於 VM 虛擬主機的 Nano Server
          建立用於實體主機的 Nano Server
          客製化 Nano Server 映像檔
3、本機管理 Nano Server
4、遠端管理 Nano Server
          伺服器管理員
          Windows PowerShell
          Windows PowerShell CIM
          Windows Remote Management
5、結語


1、前言

預計在 2016 年發佈,微軟新世代雲端作業系統 Windows Server 2016(先前開發代號為Windows Server vNext)當中,有項微軟針對雲端應用最佳化的極精簡伺服器版本「Nano Server」。它是在 Ignite 2015 年度技術大會上首度發表,也就是從 Windows Server 2016 TP2(第 2 版技術預覽版本)便開始新增的安裝選項。

簡單來說,在企業或組織當中的管理人員於先前的 Windows Server 版本當中,倘若希望能夠使用精簡的伺服器版本時可以採用「Server Core」版本,而 Nano Server 跟原有的 Server Core 運作概念相同,但是比起 Server Core 來說卻是更為精簡的版本。它沒有本地登入功能也不支援遠端桌面(RDP),同時也移除了非必要的運作元件,例如,GUI Stack、32 Bit(WOW64)、預設 Server Core 元件...等,並且僅支援 64 Bit 的應用程式、工具、代理程式。

此外,所有針對 Nano Server 必須透過 WMI、PowerShell、PowerShell DSC(Desired State Configuration)來進行遠端管理作業,或是透過 System Center 及其它管理工具。並且所有伺服器角色及功能也必須使用「部署映像服務與管理(Deployment Image Servicing and Management,DISM)」的方式來新增及安裝。

圖 1、Nano Server 運作架構示意圖

Nano Server 是以「雲端優先(Cloud-First)」為概念進行重構的伺服器版本,它支援運作「容器(Container)」環境(Windows Server Container 及 Hyper-V Container),並且支援多種程式語言,例如,C#、Java、Node.js、Python...等,同時也可以運作在「VM 虛擬主機(Virtual Machine)」、「實體伺服器(Physical Server)」環境中,並且運作 Hyper-V、SOFS(Scale-Out File Server)...等伺服器角色。

倘若將 Nano Server 與目前的 Windows Server 運作環境互相比較的話,不管是在磁碟佔用空間方面(Disk Footprint)、重大安全性更新數量(Important Bulletins)、重新啟動主機次數(Number of Reboots)、系統服務運作數量(Service Running)、核心記憶體佔用空間(Kernel Memory in Use)...等,相較於完整的 Windows Server 或 Server Core 都來得更為精簡。

圖 2、極精簡的伺服器版本Nano Server


2、建立 Nano Server 映像檔

目前,最新版本的 Windows Server 2016 技術預覽版本為 TP4,其實在 TP4 版本之前要建立 Nano Server 是相對麻煩的。舉例來說,在 Windows Server 2016 TP2 及 TP3 版本時,Nano Server 映像檔是要額外下載的,並沒有內含在 Windows Server 2016 ISO 映像檔當中,並且建立 Nano Server 映像檔的 PowerShell,也必須額外至 TechNet Gallery 下載才能方便建立,否則便要自行鍵入一大串的 PowerShell 指令才能產生 Nano Server 映像檔。

現在,在 Windows Server 2016 TP4 版本當中,除了 Nano Server 映像檔內含在 Windows Server 2016 ISO 映像檔之外,建立 Nano Server 映像檔的 PowerShell 也已經整合完成。並且,從 Windows Server 2016 TP4 版本開始,Nano Server 已經開始支援 DNS Server、IIS Server 等伺服器角色,以及 MPIO、VMM、SCOM、DSC、DCB、Windows Server Installer、WMI Provider...等伺服器功能。

此外,Windows Server 2016 TP4 版本中的 Nano Server,也多出了「Nano Server Recovery Console」特色功能,以便管理人員可以透過 Console 輕鬆查看及編輯 Nano Server 的網路組態設定,並且也可以進行關機及重新啟動 Nano Server 等管理動作。

Nano Server 可以運作在 Hyper-V 虛擬化平台中的 VM 虛擬主機,也可以運作在實體主機當中。接著,我們來實作如何建立出可運作於 VM 虛擬主機及實體主機的 Nano Server。


建立用於 VM 虛擬主機的 Nano Server

在本文的實作環境中,我們先為一台實體主機安裝 Windows Server 2016 TP4 版本,以便稍後掛載 Windows Server 2016 TP4 ISO 映像檔,並結合 PowerShell 指令及內建的 Nano Server Image 模組,建立可運作在 Hyper-V 虛擬化平台上的 VM 虛擬磁碟(VHD/VHDX)。

此外,在 Windows Server 2016 TP4 安裝過程時,請於安裝選項清單中選擇第二項,也就是結尾有 Desktop Experience 的安裝選項,才會是完整 GUI 圖形操作介面的 Windows Server 2016 TP4 運作環境。若選擇第一項的話則為指令介面的 Server Core 運作模式。

圖 3、為一台實體主機安裝 Windows Server 2016 TP4 版本

順利安裝 Windows Server 2016 TP4 版本後,請掛載 Windows Server 2016 TP4 ISO 映像檔,順利掛載後將會看到「NanoServer」子資料夾,進入後可以看到此實作所需要的「Convert-WindowsImage.ps1」及「NanoServerImageGenerator.psm1」指令碼檔案。請將整個 NanoServer 子資料夾複製到本機路徑,例如,C:\NanoServer。

圖 4、將 NanoServer 子資料夾複製到本機路徑

當你在深入查看 NanoServer 資料夾內容的話,便會發現到在 Packages 子資料夾中存放許多「.cab」檔案,這些檔案便是屆時幫 Nano Server 新增角色或功能時所需的檔案。此外,目前的 Nano Server 僅支援單一語系,所以僅會看到「en-us」子資料夾。

圖 5、Package 子資料夾存放新增伺服器角色及功能以及語系等所需檔案

請開啟 PowerShell 指令視窗,鍵入「cd C:\NanoServer」指令切換路徑至 Nano Server 資料夾當中,接著鍵入「Import-Module .\NanoServerImageGenerator.psm1」指令匯入 Nano Server 映像檔建立模組。

然後,便可以鍵入「New-NanoServerImage –MediaPath D:\ –BasePath .\Base –TargetPath '.\NanoImage\NanoVM.vhdx' –GuestDrivers –EnableRemoteManagementPort」指令,建立運作於VM虛擬主機(VHDX 虛擬硬碟檔)的 Nano Server。

下列為上述指令中,所用到的相關參數及功能說明:

  • –MediaPath: 指定 Windows Server 2016 TP4 ISO 映像檔的根路徑。在本文的實作環境當中 ISO 映像檔的掛載路徑為「D 槽」。
  • –BasePath: 指定 Nano Server 建立過程中,要將 Nano Server WIM 及 Packages 等相關檔案複製到何處存放。在本文實作環境中,將會存放於「C:\NanoServer\Base」路徑。
  • –TargetPath: 指定建立 VM 虛擬主機「VHD / VHDX」虛擬硬碟檔的存放路徑。若屆時的 VM 虛擬主機為第一世代,則請建立 VHD 虛擬硬碟檔(將為 MBR 磁碟分割格式),若 VM 虛擬主機為第二世代請建立 VHDX 虛擬硬碟檔(將為 GPT 磁碟分割格式)。在本文實作環境中,因為 VM 虛擬主機為第二世代因此建立 VHDX 虛擬硬碟檔,並且將會存放於「C:\NanoServer\NanoImage\NanoVM.vhdx」。
  • –GuestDrivers: 將 Nano Server 運作於 Hyper-V 虛擬化平台中的 VM 虛擬主機時,預先安裝相關的虛擬裝置驅動程式。
  • –EnableRemoteManagementPort: 指定 Nano Server 預先開啟遠端管理 TCP Port 5985 連接埠,以便管理人員屆時能透過 WinRM(Windows Remote Management)的方式,進行 Nano Server 的遠端管理作業。


當上述建立運作於 VM 虛擬主機的 Nano Server 指令執行後,將會提示你鍵入屆時 Nano Server 的管理者密碼,鍵入完畢後便會開始建立內含 Nano Server 的 VHDX 虛擬硬碟檔。(事實上,New-NanoServerImage 建立指令,也可以在 Windows 8.1、10、Windows Server 2012 R2 作業系統中的 PowerShell 環境中執行。)

圖 6、建立運作於 VM 虛擬主機的 Nano Server

建立作業完成後,便可以在剛才建立指令中所指定的「C:\NanoServer\NanoImage」路徑下,發現用於運作 VM 虛擬主機的「NanoVM.vhdx」虛擬硬碟檔,你可以看到 Nano Server 真的非常的輕巧,此實作範例中所建立的虛擬硬碟檔僅佔用「612 MB」儲存空間而已。

圖 7、產生運作於 VM 虛擬主機的 Nano Server 僅佔用 612 MB 儲存空間而已

此時,你就可以在 Hyper-V 虛擬化平台中,建立第二世代的 VM 虛擬主機然後指定掛載剛才所產生的 NanoVM.vhdx 虛擬硬碟檔,順利啟動運作 Nano Server 的 VM 虛擬主機後,便可以看到 Nano Server 的登入畫面。請鍵入剛才建立過程中,所指定的 Nano Server 管理者密碼即可登入。

圖 8、Nano Server 登入畫面


建立用於實體主機的 Nano Server

事實上,建立運作於實體主機的 Nano Server 映像檔的操作步驟,與建立運作於 VM 虛擬主機的 Nano Server 流程類似。因此,重複操作步驟的部分便不再贅述,僅會說明差異及需要注意的地方。

同樣的,請你先將 Windows Server 2016 ISO 映像檔掛載,並將 NanoServer 子資料夾複製到本機路徑,然後匯入 NanoServerImageGenerator.psm1 模組即可。請鍵入「New-NanoServerImage –MediaPath D:\ –BasePath .\Base –TargetPath '.\NanoImage\NanoServer.vhd' –OEMDrivers –EnableRemoteManagementPort」指令。

讀者應該已經發現,產生用於實體主機 Nano Server 映像檔的指令,與 VM 虛擬主機 Nano Server 映像檔的指令大同小異,唯一不同的部分在於「–OEMDrivers」參數,也就是在建立此 Nano Server 映像檔時,載入與 Windows Server 2016 TP4 中 Server Core 版本相同的硬體裝置驅動程式,例如,網路卡、儲存控制器...等。

值得注意的是,屆時運作 Nano Server 的實體主機,若是採用「BIOS」的話那麼便應該要產生 .vhd 檔案,倘若實體主機為新式的「UEFI」時則應該要產生 .vhdx 檔案才行。

最後,便可以透過 WinPE 為實體主機開機後,複製剛才所建立的 NanoServer.vhd 至實體主機當中,然後採用下列 bcdedit 指令以便實體主機可以達成 Boot from VHD,順利將 Nano Server 運作在實體主機上。
bcdedit /copy {current} /d "Nano Server"
bcdedit /set {GUID} device vhd=[c:]\NanoServer\NanoServer.vhd
bcdedit /set {GUID} osdevice vhd=[c:]\NanoServer\NanoServer.vhd
bcdedit /set {GUID} path \windows\system32\boot\winload.exe



客製化 Nano Server 映像檔

透過上述二項實作建立 Nano Server 映像檔的練習後,相信讀者已經都會建立基本的 Nano Server 映像檔了。但是實務上,企業或組織運作環境當中並非是這麼單純的運作環境,舉例來說,通常主機至少必須給予固定 IP 位址、電腦名稱、加入網域...等。

接著,就讓我們來了解及實作如何客製化 Nano Server 映像檔。下列,便是列出在建立 Nano Server 映像檔可額外使用的相關參數及說明:

  • –ComputerName: 指定 Nano Server 的電腦名稱
  • –DomainName: 指定 Nano Server 要加入的網域名稱。
  • –Ipv4Address: 指定 Nano Server 的固定 IP 位址。
  • –Ipv4SubnetMask: 指定 Nano Server 的子網路遮罩
  • –Ipv4Gateway: 指定 Nano Server 的預設閘道
  • –DriversPath: 當預設的 OEM 驅動程式無法滿足時,可以指定 Nano Server 要額外載入的驅動程式路徑,所指定的驅動程式資料夾當中應該存在相關的 SYS 及 INF 檔案。此外,值得注意的是 Nano Server 僅支援 64 bit 的驅動程式。
  • –MaxSize: 指定產生的 Nano Server 映像檔大小
  • –ForAzure: 當客製化後的 Nano Server 要運作於 Microsoft Azure 公有雲環境時,請使用此參數同時搭配「–GuestDrivers」及「–EnableRemoteManagementPort」參數即可。
  • –Compute: 預先載入「Hyper-V 伺服器角色」至 Nano Server 當中。
  • –Clustering: 預先載入「容錯移轉叢集(Failover Cluster)」伺服器功能,至 Nano Server 當中。
  • –Storage: 預先載入「File Server」伺服器角色,以及其它儲存元件至 Nano Server 當中。
  • –Defender: 預先載入「Windows Defender Antimalware」,以及預設的簽章檔案至 Nano Server 當中。
  • –ReverseForwarders: 預先載入「應用程式相容性」功能特色,以便支援應用程式框架例如,Ruby、Node.js...等。
  • –Containers: 預先載入「Windows Containers」功能特色至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-DNS-Package: 預先載入「DNS Server」伺服器角色,至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-DSC-Package: 預先載入「DSC(Desired State Configuration)」伺服器功能,至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-IIS-Package: 預先載入「IIS(Internet Information Server)」伺服器功能,至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-SCVMM-Package: 預先載入「SCVMM Agent」至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-SCVMM-Compute-Package: 規劃 Nano Server 啟用 Hyper-V 伺服器角色,並且希望透過 SCVMM 進行監控時,請勿使用上述介紹的「–Compute」參數為 Nano Server 預先載入 Hyper-V 伺服器角色。應該改為採用「–Packages Microsoft-NanoServer-Compute-Package」參數為 Nano Server 預先載入 Hyper-V 伺服器角色,並且搭配此項目參數達到以利屆時 SCVMM 進行監控。
  • –Packages Microsoft-NanoServer-NPDS-Package: 預先載入「NPDS(Network Performance Diagnostics Service)」伺服器功能至 Nano Server 當中。
  • –Packages Microsoft-NanoServer-DCB-Package: 預先載入「DCB(Data Center Bridging)」伺服器功能至 Nano Server 當中。


假設,當我們希望預先為 Nano Server 指定電腦名稱為「NanoTest01」時,便可以採用「-ComputerName NanoTest01」參數及參數值進行指定,同時搭配「Ipv4Address、Ipv4SubnetMask」參數及參數值,便可以為 Nano Server 預先指定固定 IP 位址及子網路遮罩。

圖 9、為 Nano Server 預先指定電腦名稱、固定 IP 位址、子網路遮罩

同樣的,如果屆時這台 Nano Server 要啟用「Hyper-V Containers」機制的話,那麼在建立 Nano Server 映像檔時,便可以加入「-Containers」及「-Compute」參數即可。

圖 10、為 Nano Server 預先載入 Hyper-V Containers 角色


3、本機管理 Nano Server

事實上,在先前的 Windows Server 2016 TP2、TP3 技術預覽版本當中,要針對 Nano Server 進行管理作業的話只能採用「遠端管理」的方式。現在,從 Windows Server 2016 TP4 版本開始,支援 Nano Server Recovery Console 特色功能,讓 Nano Server 的基礎管理作業變得相當簡單。

當 Nano Server 啟動並順利採用管理者帳號及密碼登入後,便可以看到 Nano Server Recovery Console 畫面,在此管理畫面中你可以看到 Nano Server 的電腦名稱、工作群組或網域、作業系統版本、主機日期及時間、主機時區、網路組態資訊。

你可以使用「Ctrl + F6」組合鍵來重新啟動 Nano Server,或使用「Ctrl + F12」組合鍵關閉 Nano Server。或是透過「TAB 鍵」選取「Networking」項目,進行 Nano Server 的網路組態設定,或是選取「Firewall」項目進行防火牆規則的管理作業。

圖 11、Nano Server Recovery Console 管理畫面

當你進入 Networking 項目後,便可以看到此台 Nano Server 的網路組態設定資訊,例如,IPv4、IPv6、DNS Server、預設閘道...等。在這個管理畫面中,你可以啟用或停用網路卡、編輯 IPv4 或 IPv6 位址內容、新增路由、切換為固定 IP 位址模式或採用 DHCP。

圖 12、Nano Server Recovery Console 網路組態設定管理畫面

當你進入 Firewall 項目後,便可以看到此台 Nano Server 的防火牆規則清單,在這個管理畫面中,你可以快速且方便的啟用或停用指定的防火牆規則。

圖 13、Nano Server Recovery Console 防火牆規則管理畫面


4、遠端管理 Nano Server

了解 Nano Server 本機管理方式後,讀者應該可以了解到在實務上應該都會採用遠端管理的方式,來管理企業或組織當中的 Nano Server。你可以有多種方式遠端管理 Nano Server,例如,伺服器管理員(Server Manager)、Windows PowerShell、WMI(Windows Management Instrumentation)、Windows Remote Management。或者透過 Serial Cable 連接到 Nano Server 之後,再透過 EMS(Emergency Management Services)進行管理作業。


伺服器管理員

當你設定好 Nano Server 網路組態並加入網域環境後,便可以開啟「伺服器管理員(Server Manager)」,依序點選「All Servers > Add Servers > Active Directory」後鍵入 Nano Server 電腦名稱,將 Nano Server 加入至管理清單當中。

如果,Nano Server 並沒有加入網域的話,那麼請點選「All Servers > Add Servers > DNS」後鍵入 Nano Server 電腦名稱,將 Nano Server 加入至管理清單當中。但是,你將會發現無法取得該台 Nano Server 的 IP 位址,並且運作狀態為「Kerveros target resolution error」,此時請點選該台 Nano Server 後按下滑鼠右鍵選擇「Manage As」項目,然後於彈出的 Windows Security 視窗中鍵入 Nano Server 的管理者帳號及密碼,通過驗證程序後便會顯示該台 Nano Server 的 IP 位址,同時運作狀態也將轉變為「Online」。

圖 14、透過伺服器管理員遠端管理 Nano Server


Windows PowerShell

在你採用 Windows PowerShell 的方式遠端管理 Nano Server 之前,必須要先執行「Set-Item」指令將遠端的 Nano Server 的 IP 位址或電腦名稱,加入到管理主機當中的「Trusted Hosts」清單內。
Set-Item WSMan:\localhost\Client\TrustedHosts "<電腦名稱或IP位址>"

接著,便可以使用「Enter-PSSession」指令,連接至遠端的 Nano Server 進行 PowerShell 遠端管理作業。
Enter-PSSession -ComputerName "<電腦名稱或IP位址>" -Credential 電腦名稱\Administrator

倘若,你的 Nano Server 是運作在 Hyper-V 虛擬化平台中的 VM 虛擬主機,那麼你可以直接透過內建的 PowerShell Direct 功能,直接進行 PowerShell 遠端管理作業。
Enter-PSSession -VMName "<VM虛擬主機名稱>" -Credential電腦名稱\Administrator


Windows PowerShell CIM

你也可以透過 Windows PowerShell 啟動 CIM Session,以 WinRM(Windows Remote Management)的方式去執行 WMI 指令,達到遠端管理 Nano Server 的目的。
$ip = "<電腦名稱或IP位址>"
$cim = New-CimSession –Credential 電腦名稱\Administrator –ComputerName $ip
Get-CimInstance –CimSession $cim –ClassName Win32_ComputerSystem | Format-List *



Windows Remote Management

你也可以採用 WinRM 的方式,直接在遠端 Nano Server 上執行相關的管理動作。同樣的,在採用 WinRM 進行管理之前,必須先完成加入至本機 Trusted Hosts 的前置作業才行。
winrm quickconfig
winrm set winrm/config/client @{TrustedHosts="*"}
chcp 65001


接著,你就可以執行相關管理指令在遠端的 Nano Server 當中,下列範例指令將會執行「ipconfig」指令,列出遠端 Nano Server 的網路組態資訊。
winrs –r:< 電腦名稱或 IP 位址> -u:Administrator -p:<管理者密碼> ipconfig


5、結語

透過本文的說明及實作演練,相信讀者已經了解到在 Windows Server 2016 當中,如何為企業或組織建立精簡快速且效能良好的 Nano Server,同時在本文中也實作如何因應不同的需求,直接客製化出所需的 Nano Server,最後再說明如何進行本機及遠端管理 Nano Server 作業。

事實上,Nano Server 仍有許多進階功能值得探討,在後續的文章當中也將會讀者繼續深入剖析,例如,實戰 Nano Server 架構 Hyper-V Cluster、SOFS Cluster...等進階技術。
文章標籤: ,