Windows Server 2016: Introduzione a Nano Server

Windows Server

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.

2016_04_04_Nano_01

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:

  1. Copiare gli scripts NanoServerImageGenerator.psm1 e Convert-WindowsImage.ps1 dalla cartella NanoServer nel media di WS 2016
  2. Avviare Windows PowerShell con credenziali amministrative e spostarsi nella directory in cui sono stati copiati gli scripts
  3. Importare lo script NanoServerImageGenerator tramite il comando: Import-Module NanoServerImageGenerator.psm1 –Verbose
  4. 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)
  5. Creare la VM tramite Hyper-V Manager usando il VHD creato
  6. Avviare la VM e connettersi ad essa tramite la console
  7. Autenticarsi alla Recovery Console tramite l’account adminstrator con la password impostata durante la creazione del VHD
  8. Ottenere l’indirizzo IP assegnato alla VM
  9. 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:

  1. Copiare gli scripts NanoServerImageGenerator.psm1 e Convert-WindowsImage.ps1 dalla cartella NanoServer nel media di WS 2016
  2. Avviare Windows PowerShell con credenziali amministrative e spostarsi nella directory in cui sono stati copiati gli scripts
  3. Importare lo script NanoServerImageGenerator tramite il comando: Import-Module NanoServerImageGenerator.psm1 –Verbose
  4. 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)
  5. Copiare il VHD sul server fisico e configurare il boot da VHD tramite la seguente procedura:
    1. Eseguire il mount del VHD
    2. Impostare il boot da VHD con il comando: bcdboot <drive vhd>\windows
    3. Eseguire l’umount del VHD
  6. Avviare il computer tramite il VHD di Nano Server
  7. Autenticarsi alla Emergency Management Console
  8. Ottenere l’indirizzo IP assegnato alla VM
  9. 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:

2016_04_04_Nano_02

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.

2016_04_04_Nano_03

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.

2016_04_04_Nano_04

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.

Riferimenti