A causa dell'esigenza di risorse di Windows, nei server VPS dominano distribuzioni Linux leggere: Mint, Colibri OS, Debian o Ubuntu, prive di un ambiente desktop pesante, non necessario per i nostri scopi. Come si dice, solo console, solo hardcore! E in effetti, questo non è affatto un'esagerazione: lo stesso Debian parte con 256 MB di RAM e un core a 1 GHz, cioè praticamente su qualsiasi 'ceppo'. Per un lavoro confortevole, servono almeno 512 MB e un processore un po' più veloce. Ma cosa succede se vi diciamo che è possibile fare più o meno la stessa cosa su VPS con Windows? Che non è necessario installare il pesante Windows Server, che richiede da tre a quattro gigabyte di RAM e almeno un paio di core a 1,4 GHz? Basta usare Windows Server Core: liberatevi dell'interfaccia GUI e di alcuni servizi. Di come farlo parleremo nell'articolo.
Chi è questo Windows Server Core?
Informazioni chiare su cos'è Windows (server) Core non si trovano nemmeno sul sito ufficiale di Microsoft; anzi, è così confuso che non è facile capirlo subito, ma i primi riferimenti risalgono all'epoca di Windows Server 2008. In sostanza, Windows Core è un nucleo operativo di Windows Server (sorpresa!), 'snellito' delle dimensioni della propria GUI e di circa la metà dei servizi accessori.
La principale caratteristica di Windows Core è la bassa richiesta di hardware e la gestione completamente da console tramite PowerShell.
Se si visita il sito di Microsoft e si controllano i requisiti tecnici, per avviare Windows Server 2016/2019 avrete bisogno di almeno 2 GB di RAM e di un core a 1,4 GHz. Ma tutti noi capiamo che con tale configurazione possiamo aspettarci solo l'avvio del sistema, ma sicuramente non un funzionamento confortevole del nostro OS. È proprio per questo che per far funzionare Windows Server si tende a riservare più memoria e almeno 2 core/4 thread dal processore, se non si fornisce una costosa macchina fisica su qualche Xeon, invece di una semplice macchina virtuale.
Tuttavia, il nucleo stesso del sistema server richiede solo 512 MB di RAM, e quelle risorse del processore che venivano utilizzate dalla GUI solo per essere visualizzate e per mantenere attivi i suoi numerosi servizi possono essere allocate per qualcosa di più utile.
Ecco un confronto tra i servizi supportati out-of-the-box di Windows Core e un Windows Server completo dal sito ufficiale di Microsoft:
application
server core
server withdesktop experience
Command prompt
available
available
Windows PowerShell/ Microsoft .NET
available
available
Perfmon.exe
non disponibile
available
Windbg (GUI)
supportato
available
Resmon.exe
non disponibile
available
Regedit
available
available
Fsutil.exe
available
available
Disksnapshot.exe
non disponibile
available
Diskpart.exe
available
available
Diskmgmt.msc
non disponibile
available
Devmgmt.msc
non disponibile
available
Server Manager
non disponibile
available
Mmc.exe
non disponibile
available
Eventvwr
non disponibile
available
Wevtutil (Query eventi)
available
available
Services.msc
non disponibile
available
Pannello di controllo
non disponibile
available
Aggiornamento di Windows (GUI)
non disponibile
available
Esplora file di Windows
non disponibile
available
Barra delle applicazioni
non disponibile
available
Notifiche della barra delle applicazioni
non disponibile
available
Taskmgr
available
available
Internet Explorer o Edge
non disponibile
available
Sistema di aiuto integrato
non disponibile
available
Shell di Windows 10
non disponibile
available
Windows Media Player
non disponibile
available
PowerShell
available
available
PowerShell ISE
non disponibile
available
PowerShell IME
available
available
Mstsc.exe
non disponibile
available
Servizi Desktop remoto
available
available
Gestore Hyper-V
non disponibile
available
Come si può vedere, da Windows Core è stato rimosso molto. Sono stati eliminati servizi e processi legati all'interfaccia grafica del sistema, così come ogni genere di "spazzatura", che sicuramente non sarà necessaria sulla nostra macchina virtuale da console, ad esempio, Windows Media Player.
Quasi come Linux, ma non è lui
Windows Server Core ha molto in comune con le distribuzioni Linux, ma in realtà non è del tutto corretto fare questo confronto. Sì, questi sistemi condividono una ridotta esigenza di risorse grazie all'assenza di GUI e a molti servizi secondari, ma dal punto di vista dell'uso e di alcuni approcci alla costruzione, è pur sempre Windows e non un sistema unix.
Il modo più semplice per capirlo è che, con la costruzione manuale del kernel Linux e l'installazione successiva di pacchetti e servizi, anche la distribuzione Linux più leggera può essere trasformata in qualcosa di pesante e simile a un coltellino svizzero (qui ci sarebbe voglia di fare una battuta su Python e inserire un'immagine della serie "Se i linguaggi di programmazione fossero armi", ma non lo faremo). In Windows Core c'è molta meno libertà, visto che stiamo trattando comunque un prodotto Microsoft.
Windows Server Core viene fornito già come immagine preconfezionata, la configurazione predefinita della quale può essere valutata nella tabella sopra. Se avrai bisogno di qualcosa dall'elenco non supportato, dovrai aggiungere gli elementi mancanti online tramite la console. Tuttavia, è importante non dimenticare il 'Feature on demand' e la possibilità di scaricare componenti in formato CAB, che possono essere aggiunti all'immagine prima dell'installazione. Ma questo scenario non funziona se, mentre stai lavorando, ti accorgi che ti manca qualche servizio rimosso.
Ma ciò che distingue favorevolmente la versione Core dalla versione completa è la possibilità di aggiornare il sistema e aggiungere servizi senza interrompere il lavoro. Windows Core supporta l'installazione 'a caldo' di pacchetti, senza riavvio. Come risultato, sulla base di osservazioni pratiche: un macchina con Windows Core deve essere riavviata circa 6 volte meno frequentemente rispetto a un server Windows, quindi una volta ogni sei mesi, e non una volta al mese.
Un vantaggio piacevole per gli amministratori sarà il fatto che se il sistema viene utilizzato come previsto - tramite la console, senza RDP - e non viene trasformato in un secondo Windows Server, diventa estremamente sicuro rispetto alla versione completa. Infatti, la maggior parte delle vulnerabilità di Windows Server si concentra proprio su RDP e sulle azioni degli utenti che attraverso questo stesso RDP fanno cose che non dovrebbero. È un po' come la storia di Henry Ford e il suo approccio al colore delle automobili: «Qualsiasi cliente può avere un'auto dipinta di qualsiasi colore desideri, purché sia nera». Così è con il sistema: l'utente può interagire con il sistema in qualsiasi modo, l'importante è che lo faccia tramite console.
Installazione e gestione di Windows Server 2019 Core
In precedenza abbiamo detto che Windows Core è praticamente Windows Server senza l'interfaccia GUI. Cioè, puoi utilizzare quasi qualsiasi versione di Windows Server come versione core, cioè rinunciare all'interfaccia GUI. Per i prodotti della famiglia Windows Server 2019, ci sono 3 delle 4 build server: la modalità core è disponibile per Windows Server 2019 Standard Edition, Windows Server 2019 Datacenter e Hyper-V Server 2019, quindi da questo elenco si esclude solo Windows Server 2019 Essentials.
Inoltre, il pacchetto di installazione di Windows Server Core non deve essere cercato in modo particolare. Nello standard dell'installer di Microsoft, la versione core viene offerta praticamente per impostazione predefinita, mentre la versione con GUI deve essere selezionata manualmente:

In realtà ci sono più di un modo di gestire il sistema, oltre a quello menzionato di PowerShell, che è quello raccomandato dal produttore per default. È possibile gestire una macchina virtuale su Windows Server Core in almeno cinque modi diversi:
- PowerShell Remoto;
- Strumenti di Amministrazione Remota del Server (RSAT);
- Windows Admin Center;
- Sconfig;
- Gestore del Server.
Le prime tre opzioni sono di particolare interesse: PowerShell standard, RSAT e Windows Admin Center. Tuttavia, è importante capire che ottenendo i vantaggi di uno degli strumenti, ci si trova ad affrontare anche le limitazioni che esso comporta.
Non ci soffermeremo sulle possibilità della console, PowerShell è PowerShell, con i suoi evidenti pro e contro. Con RSAT e WAC, però, tutto è un po' più complesso.
WAC fornisce accesso a elementi di controllo di sistema importanti, come la modifica del registro e la gestione di dischi e dispositivi. RSAT nel primo caso funziona solo in modalità di solo lettura e non permette di effettuare modifiche, mentre per gestire dischi e dispositivi fisici gli strumenti di amministrazione del server remoto hanno bisogno di GUI, il che non è il nostro caso. In generale, RSAT non gestisce file e, di conseguenza, aggiornamenti, installazione/rimozione di programmi e modifiche al registro.
▍Gestione del sistema
WAC
RSAT
Gestione dei componenti
Sì
Sì
Editor del registro
Sì
No
Gestione della rete
Sì
Sì
Visualizzazione degli eventi
Sì
Sì
Cartelle condivise
Sì
Sì
Gestione dei dischi
Sì
Solo per server con GUI
Pianificatore attività
Sì
Sì
Gestione dei dispositivi
Sì
Solo per server con GUI
Gestione file
Sì
No
Gestione degli utenti
Sì
Sì
Gestione dei gruppi
Sì
Sì
Gestione dei certificati
Sì
Sì
Aggiornamenti
Sì
No
Disinstallazione di programmi
Sì
No
Monitor di sistema
Sì
Sì
D'altra parte, RSAT ci dà un controllo completo sui ruoli della macchina, mentre Windows Admin Center non può fare nulla al riguardo. Ecco un confronto delle capacità di RSAT e WAC in questo aspetto, per maggiore chiarezza:
▍Gestione dei ruoli
WAC
RSAT
Advanced Thread Protection
ANTEPRIMA
No
Windows Defender
ANTEPRIMA
Sì
Contenitori
ANTEPRIMA
Sì
Centro amministrativo AD
ANTEPRIMA
Sì
Domini e Trust AD
No
Sì
Siti e servizi AD
No
Sì
DHCP
ANTEPRIMA
Sì
DNS
ANTEPRIMA
Sì
Gestore DFS
No
Sì
Gestore GPO
No
Sì
Gestore IIS
No
Sì
Quindi è già chiaro che rinunciando a GUI e PowerShell a favore di altri strumenti di gestione, non si può scappare con l'uso di un unico strumento: per un'amministrazione completa su tutti i fronti avremo bisogno almeno di una combinazione di RSAT e WAC.
È importante ricordare che utilizzare WAC richiede 150-180 megabyte di memoria RAM. Windows Admin Center crea 3-4 sessioni sul lato del server quando si connette, che non vengono terminate nemmeno disconnettendo lo strumento dalla macchina virtuale. Inoltre, WAC non funziona con versioni di PowerShell precedenti, quindi avrete bisogno di almeno PowerShell 5.0. Tutto ciò va contro la nostra il paradigma di rigida economia delle risorse, ma per il comfort bisogna pagare. Nel nostro caso: con memoria RAM.
Un'altra opzione per gestire Server Core è installare un GUI tramite strumenti di terze parti, per non dover gestire quelle tonnellate di spazzatura che vengono con una installazione completa dell'interfaccia.
In questo caso abbiamo due opzioni: installare il sistema originale Explorer o utilizzare Explorer++. In alternativa a quest'ultimo, qualsiasi file manager va bene: Total Commander, FAR Manager, Double Commander e così via. Quest'ultima opzione è preferibile se l'economia della memoria RAM è fondamentale per voi. È possibile aggiungere Explorer++ o qualsiasi altro file manager creando una cartella di rete e avviandola tramite la console o il pianificatore.
L'installazione di un Explorer completo ci offre più possibilità nel lavoro con software dotato di UI. Per questo dobbiamo alla funzionalità Server Core App Compatibility Feature on Demand (FOD) che ripristinerà nel sistema MMC, Eventvwr, PerfMon, Resmon, Explorer.exe e persino Powershell ISE. Tuttavia, per questo dovremo pagare, come nel caso del WAC: perderemo irreversibilmente circa 150-200 megabyte di RAM, che verranno sprecati da explorer.exe e altri servizi. Anche se sulla macchina non c'è un utente attivo.


Ecco come appare l'utilizzo della memoria del sistema su macchine con il pacchetto Explorer originale e senza di esso.
Qui sorge la legittima domanda: perché tutte queste manovre con PowerShell, FOD, file manager, se ogni passo a sinistra o a destra porta a un aumento dell'assunzione di RAM? Perché affollarsi di strumenti e muoversi inquieti per garantire un lavoro confortevole su Windows Server Core, quando potete semplicemente installare Windows Server 2016/2019 e vivere come una persona normale?
Ci sono diverse ragioni per utilizzare Server Core. Prima: un consumo di memoria quasi dimezzato. Se ricordate, questa condizione era alla base del nostro articolo sin dall'inizio. Ecco un confronto, il consumo di memoria di Windows Server 2019, confrontatelo con gli screenshot poco sopra:

Ed ecco, 1146 MB di memoria utilizzata invece di 655 MB su Core.
Se ipotizziamo che il WAC non vi servirà e utilizzerete Explorer++ invece dell'originale Explorer, allora otterrete comunque quasi mezzo ettaro su ogni macchina virtuale che esegue Windows Server. Se la macchina virtuale è una sola, l'aumento è trascurabile, ma se sono cinque? Qui la presenza di GUI fa la differenza, soprattutto se non vi serve.
In secondo luogo, qualsiasi danza attorno a Windows Server Core non vi porterà a combattere il principale problema dell'utilizzo di Windows Server: RDP e la sua sicurezza (cioè, la sua completa assenza). Windows Core, anche con l'aggiunta di FOD, RSAT e WAC, è ancora un server senza RDP, il che significa che non è soggetto al 95% degli attacchi esistenti.
Nel complesso
In generale, Windows Core è solo leggermente "più grasso" rispetto a qualsiasi distribuzione Linux stock, ma è molto più funzionale. Se avete bisogno di liberare risorse e siete pronti a lavorare con la console, WAC e RSAT, utilizzando file manager invece di un GUI completo — allora vale la pena prestare attenzione a Core. Tanto più che con essa non dovrete pagare per un Windows completo, e i soldi risparmiati possono essere spesi per aggiornare il vostro , aggiungendo, ad esempio, RAM. Per comodità, abbiamo aggiunto Windows Server Core al nostro .
Fonte: habr.com
