In Windows Server 2016 TP2 è stata introdotta una nuova opzione d’installazione che va ad aggiungersi alle opzioni d’installazione già presenti in Windows Server 2012 R2 ovvero la Server Core, la Minimal Server Interface e la Server con GUI. Nano Server è un sistema operativo server di dimensioni ridotte ottimizzato per l’utilizzo in private cloud che va incontro alle attuali esigenze per quanto riguarda l’implementazione di piattaforme atte ad erogare servizi.
Caratteristiche di Nano Server
Spostare la propria infrastruttura in Cloud significa adottare un modello di spesa che si basa sul pagamento delle spazio occupato, della banda consumata, del tempo di attività delle proprie macchine virtuali e delle risorse computazionali e di memoria occupate. Questo significa che le seguenti ad esempio che i riavvi causati da aggiornamenti a componenti non utilizzati sono di fatto un costo in quanto la macchina virtuale sebbene risulti attiva e quindi il tempo venga fatturato i servizi erogati dal sistema non risultano disponibili per un certo lasso di tempo. Analoga considerazione va fatta per sistemi operativi che richiedono dimensioni su disco o risorse computazionali elevate in quanto non ottimizzati per i soli ruoli che sono chiamati a svolgere; inoltre un sistema che contiene componenti non utilizzati offre una superficie di attacco più ampia e richiederà aggiornamenti più frequenti con un conseguente maggior numero di riavvi e un maggior consumo di banda per il download degli aggiornamenti.
Nano Server risponde esattamente a queste problematiche in quanto è un sistema operativo server a 64 bit frutto di un refactoring profondo senza interfaccia grafica con l’obbiettivo di realizzare un sistema ottimizzato per i ruoli e funzionalità necessarie nel contesto in cui verrà utilizzato. Infatti in Nano Server i ruoli e le funzionalità sono gestiti tramite Packages (.cab), vi è un supporto limitato e in modalità testuale per il logon in console mentre il Remote Desktop non è supportato, inoltre sono stati rimossi il GUI stack, il supporto ai 32 bits (WOW64) e agli MSI.
Di seguito i ruoli e funzionalità che sono disponibili per Nano Server in Windows Server 2016 TP4:
Ruoli | Funzionalità |
Hyper-V Failover Clustering File Server e storage components DNS Server IIS server | Hyper-V guest drivers (per VM Nano Server) Basic drivers (per network adapters e storage controllers Windows Defender Antimalware Reverse forwarders (per application compatibility) Desired State Configuration (DSC) Host support for Windows Containers System Center Virtual Machine Manager agent Network Performance Diagnostics Service (NPDS) Data Center Bridging Supporto a MPIO Supporto a SCOM Windows Server Installer WMI provider per Windows Update |
Per evitare il crash delle applicazioni quando invocano API non presente in Nano Server è possibile utilizzare la funzionalità di Reverse Forwarders che consente di aggiungere il seguente subset di binary Desktop Win32:
- advapi32.dll
- comctl32.dll
- comdlg32.dll
- gdi32.dll
- kernel32.dll
- ole32.dll
- psapi.dll
- shell32.dll
- shlwapi.dll
- user32.dll
- version.dll
- winmm.dll
Grazie a Reverse Forwarders è possibile eseguire le seguenti applicazioni:
- Chef
- Nginx
- Node.js
- Redis
- OpenSSL
- Ruby (2.1.5)
- PHP
- Python 3.5
- GO
- MySQL
- Java (OpenJDK)
- SQLite
Di seguito invece alcuni confronti eseguiti tra le varie opzioni d’installazione in cui appaiono evidenti i vantaggi portati dalla semplificazione del sistema operativo in termini di riduzione degli aggiornamenti necessari, rapidità di avvio, riduzione delle risorse necessarie per l’installazione e l’esecuzione del sistema:
Criterio | Nano Server | Server Core | Full Server |
Aggiornamenti importanti del 2014 | 9 | 23 | 26 |
Aggiornamenti critici del 2014 | 2 | 8 | 23 |
Numero reboot per installazione degli aggiornamenti 2014 | 3 | 6 | 11 |
Driver caricati | 73 | 98 | – |
Servizi in esecuzione | 22 | 46 | – |
Porte aperte | 12 | 31 | – |
Numero processi | 21 | 26 | – |
IO per eseguire il boot | 150 MByte | 255 MByte | – |
Memoria utilizzata dal Kernel | 61 MByte | 139 MByte | – |
Installazione | 40 sec | 300 sec | – |
Spazio su disco occupato | 0.4 GByte | 4.84 GByte | – |
Dimensione VHD | 0.41 GByte | 6.3 GByte | – |
Nano Server è stato sviluppato con lo scopo di essere focalizzato su due obbiettivi il primo, come abbiamo visto, è quello di essere un Infrastrutture CloudOS e il secondo è quello di essere pensato per il supporto ad applicazioni Born-in-the-cloud ovvero applicazioni Born-in-the-cloud.
Ciò significa che Nano Server si propone come l’OS Microsoft per il deploy di Docker Containers come era logico aspettarsi dopo l’annuncio fatto il 15 ottobre 2014 della partnership tra Microsoft e Docker. Grazie al supporto in Windows Server 2016 al Open Source basato sui Containers per l’automazione della distribuzione delle applicazioni su differenti piattaforme Linux-based sarà quindi possibile eseguire un deploy più semplice di quello basato sulle macchine virtuali in quanto l’applicazione è impacchettata insieme alle sue dipendenze in un contenitore virtuale che può essere eseguito su qualsiasi versione di Linux inoltre in questo modo si ottiene un avvio più rapido grazie all’astrazione del solo OS e delle componenti necessarie all’applicazione.
Per maggiori informazioni sull’utilizzo dei Containers in ambiente Windows si veda Windows Containers Documentation.
Hyper-V su Nano Server
Il ruolo Hyper-V funziona su Nano Sever allo stesso modo in cui funziona su Windows Server in modalità Server Core, ma con le seguenti limitazioni:
- La gestione è esclusivamente remota e il computer da cui si esegue la gestione remota deve avere la stessa build di Windows Server del Nano Server, versioni precedenti di Hyper-V Manager o degli Hyper-V Windows PowerShell cmdlets non funzionano
- RemoteFX non è disponibile
Va però precisato che in Windows Server 2016 TP4 non sono ancora disponibili tutte le funzionalità, ma solo le seguenti:
- Abilitazione del ruolo Hyper-V
- Creazione di VM Gen 1 e Gen2
- Creazione di virtual switches
- Avvio di VM ed esecuzione di OS Guest Windows
La funzionalità Hyper-V Replica non è supportata, se si desidera testare la a live migration di macchine virtuali è possibile creare le stesse su una share SMB e gestire l’autenticazione tramite Constrained delegation o CredSSP (a riguardo si veda Getting Started with Nano Server – Using Hyper-V on Nano Server).
Failover Clustering su Nano Server e Supporto all’MPIO
Il ruolo Failover clustering funziona su Nano Sever allo stesso modo in cui funziona su Windows Server in modalità Server Core, ma con le seguenti limitazioni:
- La gestione è esclusivamente remota tramite Failover Cluster Manager o PowerShell
- Tutti i nodi del cluster devono essere membri dello stesso dominio (come in WS)
- L’account di dominio di gestione deve avere privilegi amministrativi su tutti i nodi Nano Server (come in WS)
- I comandi devono essere eseguiti in un prompt con privilegi amministrativi
Va però precisato che in Windows Server 2016 TP4 non sono ancora supportate le seguenti funzionalità:
- Cluster validation tests per i nodi Nano Server
- Esecuzione locale dei failover clustering cmdlets PowerShell
- Ruoli cluster differenti da Hyper-V e File Server
Per quanto riguarda in vece il supporto all’MPIO vi sono le seguenti differenze rispetto all’utilizzo in Server Core o Full Server:
- E’ supportato solo il Microsoft Device Specific Module (MDSM)
- La policy di Load Balancing Policy è scelta dinamicamente
- La policy di Load Balancing Policy non può essere modificata
- I dispositivi di archiviazione sono referenziati tramite il bus type (FC, iSCSI o SAS). Quando l’MPIO viene installato i dischi sono esposti più volte (una volta per ogni path) sino a che l’MPIO non è configurato per referenziare e gestire lo specifico disco
Per maggiori informazioni e per la gestione dell’MPIO tramite PowerShell si veda MPIO on Nano Server.
DNS e IIS su Nano Server
E’ possibile aggiungere il ruolo DNS sia creando un’immagine custom d’installazione (a riguardo si veda Getting Started with Nano Server – Creating a custom Nano Server image) che utilizzando Windows PowerShell remoting (per ulteriori informazioni si veda How to Deploy Windows DNS Server on Nano Server ).
Per quanto riguarda invece il ruolo IIS è possibile, come per il DNS creare un’immagine custom d’installazione che abbia il ruolo IIS attivato che aggiungerlo dopo aver installato Nano Server tramite Windows PowerShell remoting, per ulteriori informazioni sul deploy del ruolo IIS in Nano Server e sulle feature supportate si vedano IIS on Nano Server e il post IIS, ASP.NET Core, Tomcat, and WordPress on Nano Server.
Installazione di Nano Server
Nella TP4 di Windows Server 2016 il deploy di Nano Server è stato semplificato grazie all’introduzione dello script NanoServerImageGenerator.psm1 che permette una più agevole gestione delle seguenti operazioni:
- Join a dominio
- Injection di drivers
- Abilitazione WinRM
- Impostazione IP
- Gestione della dimensione del VHD
- Injection di file
- Preparazione per l’esecuzione in Azure
Per una guida Step-by-step sul deploy di Nano Server tramite WDS si veda il post Step-By-Step: deploying Nano Server using WDS, di seguito invece il deploy virtuale o fisico tramite gli scripts integrati nel media di WS2016 supportati in Windows 8.1, Windows 10, Windows Server 2012 R2 e Windows Server 2016 Threshold Preview.
Deploy di una VM Nano Server
Per la creazione di una VM per Nano Server è possibile utilizzare la seguente procedura basata su cmdlets Powershell:
- Copiare gli scripts NanoServerImageGenerator.psm1 e Convert-WindowsImage.ps1 dalla cartella NanoServer nel media di WS 2016
- Avviare Windows PowerShell con credenziali amministrative e spostarsi nella directory in cui sono stati copiati gli scripts
- Importare lo script NanoServerImageGenerator tramite il comando: Import-Module NanoServerImageGenerator.psm1 –Verbose
- Creazione di un VHD che include gli Hyper-V guest drivers tramite il seguente comando che richiederà la password di Administrator per il VHD:
New-NanoServerImage -MediaPath <path root media> -BasePath <path base> -TargetPath <path target>
-ComputerName <computer name> -GuestDrivers -Language en-us
(dove <path root media> è la root del media d’installazione, <path base> è la directory di copia per il WIM e i packages, <path target> è la directory in cui verrà creato il VHD e <computer name> il computer name della VM) - Creare la VM tramite Hyper-V Manager usando il VHD creato
- Avviare la VM e connettersi ad essa tramite la console
- Autenticarsi alla Recovery Console tramite l’account adminstrator con la password impostata durante la creazione del VHD
- Ottenere l’indirizzo IP assegnato alla VM
- Gestire la VM Nano Server tramite PowerShell remoting oppure altro remote management tool
Deploy di Nano Server su un Server Fisico
Per l’installazione di Nano Server su un server fisico è possibile creare un VHD con Nano Server ed eseguirlo in un server fisico su cui è stato installato Windows Server in modalità Server Core utilizzando la seguente procedura basata su cmdlets Powershell:
- Copiare gli scripts NanoServerImageGenerator.psm1 e Convert-WindowsImage.ps1 dalla cartella NanoServer nel media di WS 2016
- Avviare Windows PowerShell con credenziali amministrative e spostarsi nella directory in cui sono stati copiati gli scripts
- Importare lo script NanoServerImageGenerator tramite il comando: Import-Module NanoServerImageGenerator.psm1 –Verbose
- Creazione di un VHD che include gli OEM drivers e i ruoli/funzionalità desiderate tramite il seguente comando che richiederà la password di Administrator per il VHD:
New-NanoServerImage -MediaPath <path root media> -BasePath <path base> -TargetPath <path target> -ComputerName <computer name> OEMDrivers <role/feature options> -Language en-us (dove <path root media> è la root del media d’installazione, <path base> è la directory di copia per il WIM e i packages, <path target> è la directory in cui verrà creato il VHD, <computer name> il computer name della VM e <role/feature options> i ruoli/feature da attivare) - Copiare il VHD sul server fisico e configurare il boot da VHD tramite la seguente procedura:
- Eseguire il mount del VHD
- Impostare il boot da VHD con il comando: bcdboot <drive vhd>\windows
- Eseguire l’umount del VHD
- Avviare il computer tramite il VHD di Nano Server
- Autenticarsi alla Emergency Management Console
- Ottenere l’indirizzo IP assegnato alla VM
- Gestire la VM Nano Server tramite PowerShell remoting oppure altro remote management tool
Per quanto riguarda i ruoli da attivare è possibile usare i seguenti parametri:
Ruolo | Parametro | Funzionalità | Parametro |
Hyper-V | Compute | Reverse forwarders | ReverseForwarders |
Failover clustering | Clustering | Windows Defender Antimalware | Defender |
File Server e funzionalità storage | Storage |
Per ulteriori informazioni si veda Getting Started with Nano Server – Creating a custom Nano Server image.
Join a Dominio di Nano Server
Per eseguite il join a dominio è possibile usare l’offline domain provisioning come illustrato in Getting Started with Nano Server – Joining domains e Getting Started with Nano Server – Joining Nano Server to a domain utilizzando il cmdlet New-NanoServerImage e il comando djoin.
Gestione Remota di Nano Server
Per gestire remotamente Nano Server è possibile utilizzando le seguenti approcci:
- Windows PowerShell remoting
- Windows PowerShell CIM sessions over WinRM
- Windows Remote Management (WinRM)
- Emergency Management Services (EMS)
Inoltre è possibile utilizzare Server Manager, Azure Portal o gli RSAT a riguardo si veda il post Introducing Server management tools sul blog dedicato a Nano Server.
Per poter gestire remotamente un host Nano Server è necessario conoscerne l’indirizzo IP assegnato che viene mostrato nel prompt dei comandi al primo avvio. Di seguito la panoramica completa dei vari tool che permettono una gestione remota totale o parziale di un host Nano Server:
Di seguito un esempio di gestione remota tramite PowerShell remoting e WMI:
# Aggiunta dell’indirizzo IP del Nano Server alla lista dei trusted hosts
Set-Item WSMan:\localhost\Client\TrustedHosts “<IP address of Nano Server>”
# Avvio sessione remota
$ip = “<IP address of Nano Server>”
$user = “$ip\Administrator”
Enter-PSSession -ComputerName $ip -Credential $user
# Avvio sessione CMI per esecuzione commando WM di lettura versione OS
Get-CimInstance –ClassName Win32_OperatingSystem
# Avvio sessione CMI per esecuzione commando WM di lettura informazioni di Sistema
Get-CimInstance –CimSession $cim –ClassName Win32_ComputerSystem | Format-List *
# Avvio sessione CMI per esecuzione commando WM di lettura informazioni relative ai processi in esecuzione
Get-CimInstance -Query “SELECT * from Win32_Process WHERE name LIKE ‘p%’“
# Chiusura sessione remota
Exit-PSSession
Di seguito invece un esempio di gestione remota tramite Windows Remote Management (WinRM):
# Aggiunta dell’indirizzo IP del Nano Server alla lista dei trusted hosts
Set-Item WSMan:\localhost\Client\TrustedHosts “<IP address of Nano Server>”
Configurazione WinRM
winrm quickconfig
winrm set winrm/config/client @{TrustedHosts=”*”}
Impostazione Code Page
chcp 65001
Esecuzione IpConfig su Nano Server remotamente tramite WinRM
winrs –r:<IP address Nano Server> -u:Administrator -p:<password> ipconfig
Oltre ai tool Microsoft ovviamente possono essere utilizzati anche tool di terze parti per la gestione di Nano Server, un esempio è il 5nine Manager che come descritto nel post Nano Server Administration using 5nine Manager può semplificare tramite la sua GUI nonnsolo la configurazione, ma anche il monitoraggio.
Nano Server Recovery Console
Nano Server include anche una Recovery Console che consente di eseguire alcune operazioni da una console testuale come ad esempio la gestione delle impostazioni di rete, delle firewall rules e la modifica dello stato delle schede di rete.
Conclusioni
Nano Server sarà il futuro nucleo di Windows Server e diventerà la base per componenti Cloud, per le applicazioni Born-in-the-Cloud e per tutti i componenti e fornirà un modello Just Enough OS per tutte le applicazioni. Non tutto ovviamente potrà essere eseguito su Nano Server per questo motivo Server Core fornirà la compatibilità per le applicazioni Enterprise esistenti quando sarà necessario avere un deploy del sistema operativo con i soli componenti necessari.
Se si desidera iniziare subito a testare Nano Server è anche possibile scaricare un VHD di valutazione che contiene un’installazione di Nano Server basato su Windows Server 2016 Technical Preview 4 seguendo le indicazioni contenute nel post Download just Nano Server in a VHD (Windows Server 2016 Technical Preview 4) pubblicato sul blog dedicato a Nano Server.