NFS vs iSCSI per l’accesso ai dati delle VM
& NFS vs iSCSI: quale protocollo scegliere per l’archiviazione dei file VM VMware? Questa domanda sorge solitamente quando è necessario configurare uno storage condiviso per archiviare macchine virtuali (VM) che devono essere migrate tra Host VMware ESXi, per utilizzare le funzioni di clusteringe quando non ci sono slot liberi per collegare dischi fisici al server.
Le organizzazioni che effettuano l’implementazione di VMware vSphere in un grande data center preferiscono utilizzare Fibre Channel (FC) o Fibre Channel over Ethernet (FCoE), che sono costosi. Tuttavia, NFS e iSCSI sono interessanti per i data center di piccole e medie dimensioni utilizzati per l’infrastruttura VMware vSphere, poiché l’hardware necessario per configurare la condivisione file con questi protocolli di condivisione è più conveniente. Questo post del blog confronta NFS e iSCSI concentrandosi sul loro utilizzo in un’infrastruttura virtuale VMware vSphere.
Che cos’è NFS?
Network File System (NFS) è un protocollo di rete che consente di condividere i file memorizzati su un disco o un array di dischi di un server con altri computer della rete. NFS è stato sviluppato da SUN Microsystems e la prima versione è stata presentata nel 1984. Al momento della stesura di questo articolo, l’ultima implementazione di NFS è la versione 4.1. La versione 4.2 è in fase di sviluppo e non è ancora stata presentata per l’uso in produzione.
Con ogni nuova versione di NFS sono state aggiunte nuove funzionalità e miglioramenti, tra cui funzionalità utili per lo storage di virtualizzazione. NFS v4.1 fornisce un meccanismo che consente a più utenti di condividere lo stesso file e di garantire la coerenza dei dati (accesso parallelo). Sono supportati thread multipli per le operazioni.
NFS è il protocollo che opera a livello di applicazione del modello Open Systems Interconnect (OSI). I client accedono ai file inviando richieste Remote Procedure Call (RPC) a un server NFS per eseguire operazioni con file e directory sul server NFS.
Le richieste RPC vengono trasmesse al protocollo XDR (eXternal Data Representation) che opera sul livello di presentazione ed è lo standard per l’astrazione dei dati tra Piattaforme. XDR descrive la forma unificata e canonica di rappresentazione dei dati che non dipende dall’architettura del sistema informatico. Quando un client trasmette i dati, il client RPC trasforma i dati locali in una forma canonica e il server esegue l’operazione inversa.
Una volta completata l’unificazione dei dati, il servizio RPC sul lato client garantisce la richiesta delle procedure remote e la loro esecuzione sul server (fornendo le funzioni del livello di sessione). A questo punto, la spiegazione dei livelli specifici di NFS termina. Avanti, i dati vengono incapsulati in unità di dati TCP o UDP standard e trasferiti ai livelli sottostanti del modello OSI.
| Livelli OSI | Protocolli |
| Applicazione | NFS |
| Presentazione | XDR |
| Sessione | RPC |
| Trasporto | TCP |
| Reti | IP |
| Collegamento dati | Ethernet |
| – |
Condivisione NFS condivide i dati a livello di file. Per implementare lo storage condiviso NFS è possibile utilizzare adattatori di rete standard con interfaccia Ethernet e porta RJ-45.
Le versioni NFS più datate funzionano su UDP attraverso la rete IP, mentre le versioni più recenti (NFS v2 e v3) possono funzionare su TCP e UDP. NFS 4.0 e 4.1 utilizzano TCP su IPv4 come standard. NFS v4 funziona attraverso i firewall e via Internet.
VMware vSphere ESXi 6.0 e le versioni ESXi successive supportano NFS 3.0 e NFS 4.1. ESXi contiene un client NFS integrato che si connette a un server NFS tramite TCP/IP. Per la connessione tramite le versioni NFS 3.0 e 4.1 vengono utilizzati due diversi client NFS. È possibile selezionare la versione NFS da utilizzare durante la creazione di un nuovo archivio dati NFS. VMware non fornisce supporto per le seguenti funzioni quando si utilizza NFS v.4.1:
- Storage DRS
- Controllo I/O dello storage
- Site Recovery Manager
L’utilizzo degli archivi dati NFS è utile per archiviare modelli di VM e immagini ISO per l’installazione di sistemi operativi su VM.
Che cos’è iSCSI?
Internet Small Computer Interface (iSCSI) è un protocollo di rete che garantisce l’interazione di oggetti (iniziatori e destinazioni) nella rete per la condivisione dei dati. Un iniziatore iSCSI è configurato sul lato client e la destinazione iSCSI è configurata sul lato server.
Gli iniziatori iSCSI possono essere basati su software o su hardware. Quelli basati su hardware aiutano a scaricare il carico dalla centralina (CPU o processore) sulla macchina client e richiedono l’installazione di un adattatore bus host (HBA) hardware. Un HBA iSCSI hardware è un controller di interfaccia di rete (NIC) con un’interfaccia Ethernet. In questo confronto tra iSCSI e NFS, prendo in considerazione l’uso di iniziatori iSCSI basati su software. iSCSI è stato introdotto nel 2003 ed è descritto nella RFC 3720.
iSCSI è il protocollo del livello di sessione (funziona al livello 5 del modello OSI) che opera al di sopra dello stack TCP/IP. I dati sono condivisi a livello di blocco, a differenza di NFS ma in modo simile a FC. Questo è un punto importante nel confronto tra iSCSI e NFS. I comandi SCSI sono incapsulati in unità di dati TCP/IP e vengono trasferiti utilizzando reti Ethernet standard. Di conseguenza, un computer può inviare comandi SCSI a dispositivi di storage situati su un altro computer utilizzando una rete.
| Livelli | Descrizione |
| Applicazione | File system, database, ecc. |
| SCSI | Dati SCSI, comandi SCSI, stati SCSI |
| iSCSI | Servizi di protocollo iSCSI, nome qualificato iSCSI (IQN), Internet Storage Name Service (iSNS), autenticazione CHAP, ecc. |
| TCP | Un protocollo con un meccanismo di controllo degli errori (di solito funziona in uno stack TCP/IP) |
| IP | Un protocollo per la comunicazione di rete e il routing |
| Ethernet | Switch, cavi, porte (connettori), protocolli |
Nota: C’è un fatto interessante su come iSCSI può essere utilizzato per VMware VM recovery. Quando si utilizza il ripristino istantaneo per le VM in NAKIVO Backup & Replication, ad esempio per eseguire una VM su un host VMware ESXi direttamente da un backup, la VM viene creata sull’host VMware ESXi selezionato e i dischi virtuali vengono montati sulla VM utilizzando il protocollo iSCSI come dischi RDM in modalità di compatibilità virtuale.
VMware NFS vs iSCSI – Differenze principali
Sia NFS che iSCSI possono funzionare in reti Ethernet da 1 gigabit e 10 gigabit (1GbE e 10GbE) con un’implementazione utilizzando cavi in rame. Una velocità di rete più elevata è preferibile. Per ulteriori informazioni, consultare topologie di rete. Quando si utilizza un archivio dati condiviso in VMware vSphere per archiviare i file delle VM, entrambe le implementazioni (NFS e iSCSI) possono essere utilizzate per la migrazione live delle VM, il bilanciamento del carico e la migrazione delle VM tra gli archivi dati. Entrambi i protocolli di condivisione comportano un overhead significativo causato dal meccanismo di incapsulamento dei dati a più livelli sulle reti TCP/IP.
NFS è supportato sulla maggior parte dei dispositivi NAS dei vendor, ad esempio Synology e QNAP. Tuttavia, al giorno d’oggi non è difficile selezionare un NAS con supporto per iSCSI.
Esaminiamo più dettagliatamente questo confronto tra VMware NFS e iSCSI.
Bilanciamento del carico
Quando un percorso di rete non funziona o è sovraccarico, il multipathing offre la possibilità di bilanciare il carico tra un server e lo storage se sono presenti più percorsi.
NFS 4.1 supporta il multipathing se il trunking di sessione è disponibile sui server (ma non il trunking dell’ID client). Di conseguenza, è possibile accedere a un singolo volume NFS da più indirizzi IP. Se si utilizza NFS v3, utilizzare il round-robin DNS per il bilanciamento del carico di rete.
In VMware vSphere, il multipathing iSCSI funziona a livello di adattatore di rete VMkernel. Per il bilanciamento del carico iSCSI in vSphere, è possibile utilizzare il binding delle porte.
Caching
Quando si utilizza NFS, un file system con cache del file system si trova su un server NFS e un computer client deve controllare costantemente i metadati sul server NFS. La scrittura asincrona dei dati è supportata da NFS v3 e v4, ma gli aggiornamenti dei metadati sono sincroni.
Quando si utilizza iSCSI, il file system viene creato dal dispositivo client dopo aver avuto accesso allo storage condiviso a livello di blocco (come per VMware vSphere, un host VMware ESXi crea il file system VMFS su iSCSI LUN). Una politica di cache viene definita da un file system per lo storage condiviso iSCSI e la cache del file system si trova sul lato client. Ad esempio, se si utilizza iSCSI come protocollo di condivisione ed ext3 come file system, si dispone della cache di scrittura completa per gli aggiornamenti dei dati e dei metadati.
I file system più moderni utilizzano l’aggiornamento asincrono dei metadati e il journal basato su log per il ripristino dei dati. In generale, l’aggiornamento asincrono dei dati (utilizzato in iSCSI) è meno affidabile in termini di persistenza dei dati e dei metadati rispetto all’aggiornamento sincrono, come quello utilizzato in NFS.
Affidabilità
NFS. Il teaming NIC può essere utilizzato per proteggersi dai guasti di rete. Se una NIC si guasta, un’altra NIC può continuare a funzionare.
iSCSI. VMware Pluggable Storage Architecture (PSA) utilizza il plugin Storage Array Type per l’implementazione del failover quando si lavora con array iSCSI. Il binding iSCSI richiede la mappatura di più target iSCSI su sottoreti diverse all’iniziatore iSCSI.
Poiché sia iSCSI che NFS utilizzano TCP per l’incapsulamento, la consegna dei dati viene controllata a livello di rete.
VMFS sullo storage iSCSI può essere fragile se si memorizzano thin provisioned dischi virtuali per VM. Un’interruzione di corrente può rendere un volume irrecuperabile. Il comportamento degli archivi dati NFS in tali situazioni è leggermente più affidabile. È possibile mitigare questi problemi eseguendo regolarmente backup di VMware.
Sicurezza
Il traffico iSCSI non è generalmente crittografato, ma ciò non significa che non sia possibile proteggerlo. Per l’autenticazione delle condivisioni iSCSI è disponibile il supporto per l’uso di nome e password. Il protocollo CHAP (Challenge Handshake Authentication Protocol) consente al server e al client di assicurarsi che si fidino l’uno dell’altro.
NFS utilizza l’autenticazione basata su host. La configurazione predefinita di NFS non fornisce la crittografia (sys=system), ma quando si utilizza NFSv4 con Kerberos abilitato (sec=krb5p), la connessione è sicura. Nella configurazione del server NFS, è necessario definire l’indirizzo IP dell’host a cui è consentito l’accesso alla condivisione NFS. È anche possibile definire più host o l’intera sottorete. Ad esempio, il protocollo di condivisione basato su file SMB, ampiamente conosciuto, si basa sull’autenticazione basata sull’utente.
La configurazione di una VLAN dedicata o l’utilizzo di una rete fisica separata (privata) è la pratica consigliata per l’utilizzo dello storage iSCSI e NFS condiviso in VMware vSphere. Questo approccio consente di isolare il traffico di storage da altri tipi di traffico. NFS v3 non dispone di funzioni di sicurezza simili a quelle di NFS v4.1. Un server ESXi monta una condivisione NFS con accesso root (quando Kerberos non è utilizzato). Tenetelo presente quando create una configurazione sicura. Leggete anche VLAN e VXLAN.
NFS v.4.1 supporta l’autenticazione Kerberos con meccanismi di crittografia oltre al Data Encryption Standard (DES). Gli algoritmi crittografici in Kerberos impediscono agli utenti non autorizzati di accedere al traffico NFS. ESXi supporta le implementazioni krb5 e krb5i di Kerberos. ESXi 7.0 supporta la crittografia Kerberos NFS 4.1 e il meccanismo di sicurezza AUTH_SYS (ma non contemporaneamente).
VMware NFS vs iSCSI – Mappatura dei dispositivi raw
Quando si utilizza iSCSI come storage condiviso, è possibile configurare la mappatura dei dispositivi raw per una VM. La mappatura dei dispositivi raw (RDM) è una funzione che consente di collegare l’intero disco fisico o LUN iSCSI a una VM come dispositivo direttamente (anziché collegare un disco virtuale nella configurazione della VM). L’approccio basato su RDM differisce dall’approccio tradizionale in cui si crea un archivio dati su un LUN (Logical Unit Number), si crea il file system VMFS e si memorizzano i dischi virtuali utilizzati dalle VM su quel archivio dati. L’RDM è possibile quando si utilizza iSCSI perché una condivisione iSCSI funziona a livello di blocco e una VM può formattare un disco RDM a blocchi collegato con un file system personalizzato utilizzato da un sistema operativo guest installato sulla VM.
Per quanto riguarda NFS, l’utilizzo di una condivisione NFS per il collegamento come disco RDM non è supportato perché le condivisioni NFS funzionano a livello di file e RDM richiede che i dispositivi a blocchi siano collegati alle VM. Con le condivisioni NFS è possibile solo creare archivi dati NFS e archiviare file di dischi virtuali VMDK sui datastore. È possibile montare una condivisione NFS e una condivisione iSCSI a livello di sistema operativo guest se il sistema operativo guest dispone di un client NFS o di un iniziatore iSCSI. Pertanto, nella categoria della mappatura dei dispositivi raw nel confronto tra VMware iSCSI e NFS, il vincitore è iSCSI.
Prestazioni iSCSI vs NFS
In un’implementazione software iSCSI, le prestazioni sono leggermente superiori, ma anche il carico della CPU sull’host client è maggiore. iSCSI comporta anche un carico maggiore sulla rete. iSCSI genera più traffico di rete e carico di rete, mentre l’utilizzo di NFS è più fluido e prevedibile. Quando viene eseguito un numero elevato di operazioni di scrittura, è possibile notare un calo delle prestazioni con una condivisione NFS.
Quando si utilizza NFS in vSphere, è preferibile utilizzare NFS con supporto per vStorage API for Array Integration (VAAI) sul lato storage. VAAI consente di creare dischi virtuali con provisioning thick su archivio dati NFS. I dischi con provisioning thin vengono creati su archivio dati NFS per impostazione predefinita. Sia NFS che iSCSI supportano i frame Jumbo per migliorare le prestazioni di rete.
Al termine di questo confronto tra la velocità di iSCSI e NFS, è opportuno ricordare che le prestazioni dipendono anche dal vendor dell’array di storage.
Accesso simultaneo
iSCSI non supporta l’accesso simultaneo o parallelo ai dati su un dispositivo a blocchi. I dati devono essere condivisi tra due hop. Tuttavia, l’accesso parallelo è consentito a livello di un file system che supporta l’accesso parallelo ai file, ad esempio VMFS o GFS. Quando si utilizzano condivisioni iSCSI in VMware vSphere, l’accesso simultaneo alle condivisioni è garantito a livello VMFS.
NFS supporta l’accesso simultaneo ai file condivisi utilizzando un meccanismo di blocco e un meccanismo di coerenza close-to-open per evitare conflitti e preservare la coerenza dei dati. NFS v3 e NFS v4.1 utilizzano meccanismi diversi. NFS v3 può utilizzare il protocollo Network Lock Manager (NLM), mentre NFS v4.1 utilizza il blocco specificato dal protocollo nativo. Se si utilizza NFS v3 su VMware ESXi per accedere alle condivisioni file, ESXi non utilizza il protocollo NLM perché in questo caso VMware fornisce il proprio protocollo di blocco. I file di blocco con nome .lck-file_id vengono creati su una condivisione file quando si utilizzano condivisioni NFS v3 in VMware vSphere.
NFS v4.1 utilizza le prenotazioni per bloccare i file per l’accesso simultaneo. Se si crea una condivisione file NFS, tutti i client devono utilizzare la stessa versione del protocollo NFS (ad esempio, tutti gli host ESXi si connettono alla condivisione tramite NFS v.4.1). Se due client incompatibili utilizzano versioni diverse di NFS per accedere ai file su un server NFS, potrebbero verificarsi comportamenti incoerenti e danneggiamento dei dati.
Difficoltà di configurazione
Quando si utilizza NFS, è più facile configurare un server e un client. Utilizzare iSCSI per configurare uno storage condiviso è più difficile. È necessario configurare gli IQN per lo storage e gli host, configurare il servizio iSCSI, i LUN e il mascheramento e configurare più VLAN per motivi di sicurezza (isolando i segmenti di rete utilizzati per la comunicazione iSCSI per fornire un livello di sicurezza più elevato).
Leggi Volumi virtuali VMware che possono essere utilizzati per archiviare i dati delle VM.
iSCSI vs NFS in VMware vSphere – Tabella riassuntiva
Evidenziamo le funzioni principali di ciascun protocollo di condivisione dei dati in questo confronto tra iSCSI e NFS VMware nella tabella riassuntiva.
| iSCSI | Condivisione NFS | |
| Condivisione dei dati | A livello di blocco | A livello di file |
| Mappatura dei dispositivi raw per VM | Sì | No |
| Difficoltà di configurazione | Media | Facile |
| Avvio da SAN | Sì | No |
| Errore di verifica | Sì | Sì |
| Funzioni di sicurezza | CHAP | Kerberos |
| Storage vMotion | Sì | Sì |
| Storage DRS | Sì | Sì |
Conclusione
Entrambi i protocolli di condivisione sono sufficientemente maturi per essere utilizzati in VMware vSphere. La differenza principale tra iSCSI e NFS è che iSCSI condivide i dati a livello di blocco, mentre NFS condivide i dati a livello di file. Le prestazioni sono quasi identiche, ma in alcune situazioni iSCSI può fornire risultati migliori. I dischi RDM per le VM possono essere utilizzati con iSCSI ma non con NFS.
Entrambi i protocolli di condivisione di rete sono affidabili. Tuttavia, è comunque necessario utilizzare una soluzione di protezione dei dati di terze parti per evitare la perdita di dati e i tempi di inattività. Evitare interruzioni di corrente e altri guasti hardware per evitare la perdita di dati sullo storage condiviso. Utilizzare gruppi di continuità e creare backup regolari.