Hai sostanzialmente corretto.
La virtualizzazione a livello di file è fondamentalmente solo un server che supporta la condivisione di file. In genere tenterà di supportare un numero di protocolli diversi, come SMB (noto anche come CIFS - originato su Windows), NFS (originato su Solaris), AFS (Appletalk File Protocol), possibilmente RFS, e probabilmente alcuni altri.
In genere, tali interfacce accedono a un pool comune di file, in modo che un client possa accedere a un file tramite SMB e un altro lo stesso file tramite NFS e così via.
La virtualizzazione a livello di blocco fa la virtualizzazione a livello dei comandi SCSI / SATA. Un dispositivo di memorizzazione fisico (ad es. Un disco rigido) ha un certo numero di blocchi e un insieme di comandi per leggere e scrivere blocchi di dati. La virtualizzazione a livello di blocco significa imitare gli stessi comandi, quindi un driver di periferica può trasmettere gli stessi comandi e ottenere gli stessi risultati, ma in questo caso, invece di utilizzare una connessione SCSI dedicata, i comandi e i dati potrebbero essere trasmessi su FibreChannel, o forse anche Ethernet.
Molto semplificato, i tre hanno un aspetto simile a questo:
Naturalmente, quelli non sono l'unico modo in cui le cose possono essere fatte. Ad esempio, nello stack di virtualizzazione dei blocchi, è possibile avere un iniziatore iSCSI, nel qual caso in genere si dispone di Ethernet al posto di quanto mostrato sopra come FibreChannel.
La differenza importante, tuttavia, è abbastanza semplice: con la virtualizzazione a livello di file, il server / NAS tipicamente cerca di fornire un numero di protocolli di condivisione file, nella speranza che ogni cliente a cui tieni possa capirne almeno uno. Allo stesso modo, la maggior parte dei client tenta di supportare molti protocolli, nella speranza che sia possibile connettersi a tutti i server a cui tieni.
Nel caso della virtualizzazione a livello di blocco, c'è (almeno in teoria) solo un un insieme di comandi che essenzialmente tutti i sistemi operativi sanno come usare, quindi il server supporta solo quel set. Il problema è che i comandi SCSI sono in circolazione da molte generazioni e molti sottoinsiemi sono stati definiti. Quindi, anche se in teoria si tratta solo di un set di comandi, è possibile eseguire molte varianti.
Allo stesso tempo, hai davvero bisogno solo di un numero abbastanza piccolo di comandi per archiviare e recuperare i file su un dispositivo a blocchi (virtuale o meno). Molti dei comandi più avanzati riguardano operazioni come la migrazione dei dati in modo trasparente, l'esecuzione di backup con il minimo intervento da parte del cliente e così via. Aggiungono molte funzionalità utili, ma non sono strettamente necessarie per il semplice compito di consentire ai client di archiviare i file su un array di dischi.