Condividi tramite


Eseguire la migrazione alle condivisioni file NFS di Azure

Questo articolo illustra gli aspetti di base della migrazione da file server Linux a condivisioni file di Azure NFS, disponibili solo come condivisioni file Premium (livello multimediale SSD). Verranno confrontati anche gli strumenti di copia file open source fpsync e rsync per comprenderne le prestazioni durante la copia di dati nelle condivisioni file di Azure.

Annotazioni

File di Azure non supporta gli elenchi di controllo di accesso NFS (ACL).

Si applica a

Tipo di condivisione file SMB NFS
Condivisioni file Standard (GPv2), archiviazione con ridondanza locale/archiviazione con ridondanza della zona No No
Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona No No
Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona No Sì

Prerequisiti

È necessaria almeno una condivisione file di Azure NFS montata in una macchina virtuale Linux. Per crearne una, vedere Creare una condivisione file classica di Azure. È consigliabile montare la condivisione con nconnect per usare più connessioni TCP. Per altre informazioni, vedere Migliorare le prestazioni delle condivisioni file di Azure NFS.

Strumenti di migrazione

Molti strumenti sono disponibili per trasferire i dati in condivisioni file NFS. Tuttavia, non tutti risultano efficienti quando si opera con un file system distribuito, che presenta considerazioni prestazionali differenti rispetto agli ambienti locali. In un file system distribuito, ogni chiamata di rete prevede un round trip a un server che potrebbe non essere locale. Pertanto, è fondamentale ottimizzare il tempo dedicato alle chiamate di rete per ottenere prestazioni ottimali e un trasferimento efficiente dei dati in rete.

Utilizzare Azure Storage Mover

È ora possibile usare Azure Storage Mover per eseguire la migrazione delle condivisioni file NFSv3 e NFSv4 alle condivisioni file di Azure NFSv4.1. Spostamento archiviazione di Azure è un servizio di migrazione completamente gestito che consente di eseguire la migrazione a Azure di file e cartelle locali riducendo al minimo i tempi di inattività.

Uso di fpsync e rsync

Nonostante sia a thread singolo, rsync è uno strumento di copia file open source versatile. Può copiare localmente, da/verso un altro host su qualsiasi shell remota o da un daemon rsync remoto. Offre molte opzioni e consente la specifica flessibile del set di file da copiare. fpsync, tuttavia, è un'applicazione multithreading e offre quindi alcuni vantaggi, tra cui la possibilità di eseguire processi rsync in parallelo.

Questo articolo illustra come usare fpsync per spostare i dati da un file server Linux a condivisioni file di Azure NFS.

Per copiare i dati, fpsync usa gli strumenti rsync (impostazione predefinita), cpio o tar. Calcola i subset della directory di origine src_dir/ e genera processi di sincronizzazione per sincronizzarli con la directory di destinazione dst_dir/. Esegue processi di sincronizzazione in tempo reale mentre analizza simultaneamente il file system, il che lo rende uno strumento utile per migrare in modo efficiente file system di grandi dimensioni e copiare dataset estesi composti da numerosi file.

Annotazioni

Fpsync sincronizza solo il contenuto della directory, non la directory di origine stessa. A differenza di *rsync*, *fpsync* applica obbligatoriamente il carattere '/' finale nella directory di origine, il che significa che, dopo la sincronizzazione, non verrà creata una sottodirectory con il nome della directory di origine all’interno della directory di destinazione.

Installare fpart

Per usare fpsync, è necessario installare il partitioner di filesystem fpart. Installare fpart nella distribuzione Linux preferita. Dopo l'installazione, fpsync verrà visualizzato in /usr/bin/.

In Ubuntu, usare la gestione pacchetti apt per installare fpart.

sudo apt-get install fpart

Copiare dati dall'origine alla destinazione

Assicurarsi che la condivisione file di Azure di destinazione (target) sia montata in una macchina virtuale Linux. Vedere Prerequisiti.

Se si sta eseguendo una migrazione completa, i dati verranno copiati in tre fasi:

  1. Copia di base: copia dall'origine alla destinazione quando non sono presenti dati nella destinazione. Per la copia di base, è consigliabile usare fpsync con cpio come strumento di copia.
  2. Copia incrementale: copia solo le modifiche incrementali dall'origine alla destinazione. Per la sincronizzazione incrementale, è consigliabile usare fpsync con rsync come strumento di copia. Questa operazione deve essere eseguita più volte per riflettere tutte le modifiche.
  3. Passaggio finale: è necessario un passaggio finale per eliminare tutti i file nella destinazione che non esistono nell'origine.

La copia dei dati con *fpsync* prevede sempre una variante del seguente comando:

fpsync -m <specify copy tool - rsync/cpio/tar> -n <parallel transfers> <absolute source path> <absolute destination path>

Copia di base

Per la copia di base, usare fpsync con cpio.

fpsync -m cpio -n <parallel transfers> <absolute source path> <absolute destination path>

Per altre informazioni, vedere Supporto di Cpio e Tar.

Copia incrementale

Per la sincronizzazione incrementale, usare fpsync con lo strumento di copia predefinito (rsync). Per riflettere tutte le modifiche, è consigliabile eseguire questa operazione più volte.

fpsync -n <parallel transfers> <absolute source path> <absolute destination path>

Per impostazione predefinita, fpsync specifica le opzioni rsync seguenti: -lptgoD -v --numeric-ids. È possibile specificare opzioni rsync aggiuntive aggiungendo -o option al comando fpsync.

Passaggio finale

Dopo varie sincronizzazioni incrementali, è necessario eseguire un passaggio finale per eliminare tutti i file nella destinazione che non esistono all'origine. È possibile eseguire questa operazione manualmente con rsync --delete per eliminare file aggiuntivi dalla directory /data/dst/, oppure usare fpsync con l'opzione -E. Per informazioni dettagliate, vedere Il passaggio finale.

Confronto tra rsync e fpsync con set di dati diversi

Questa sezione confronta le prestazioni di rsync e fpsync con set di dati diversi.

Set di dati e configurazione

La tabella seguente elenca i diversi set di dati usati per confrontare le prestazioni degli strumenti di copia in carichi di lavoro diversi.

Configurazione # Tipo di copia Conteggio file Conteggio directory Dimensione del file Dimensioni totali
1.1 Copia di base 1 milione 1 0-32 KiB 18 GiB
1.2 Incrementale (modifica differenziale) 1 milione 1 0-32 KiB 18 GiB
2 Copia di base 191,345 3,906 0-32 KiB 3 GiB
3 Copia di base 5,000 1 10 MiB 50 GiB

I test sono stati eseguiti su macchine virtuali di Azure Standard_D8s_v3 con 8 vCPU, 32 GiB di memoria e più di 1 TiB di spazio su disco per set di dati di grandi dimensioni. Per la destinazione, sono state configurate condivisioni file di Azure NFS con più di 1 TiB di cui è stato effettuato il provisioning.

Esperimenti e risultati: rsync e fpsync

Sulla base dei nostri esperimenti con le configurazioni sopra indicate, abbiamo osservato che fpsync ha ottenuto le prestazioni migliori quando utilizzato con 64 thread in combinazione con rsync e 16 thread con cpio, per una condivisione file NFS di Azure montata con nconnect=8. I risultati effettivi variano in base alla configurazione e ai set di dati.

Annotazioni

La velocità effettiva per File di Azure può essere molto superiore a quella rappresentata nei grafici seguenti. Alcuni esperimenti sono stati volutamente condotti con set di dati di piccole dimensioni per semplicità.

Configurazione 1

Per una singola directory con 1 milione di file di piccole dimensioni pari a 18 GiB, questo test è stato eseguito sia come copia di base che come copia incrementale.

Eseguendo una copia di base dall'origine alla destinazione, sono stati osservati i risultati seguenti.

Grafico che mostra i risultati del test della configurazione 1 per una copia di base.

Eseguendo una copia incrementale (modifica delta), sono stati osservati i risultati seguenti.

Grafico che mostra i risultati del test della configurazione 1 per una copia incrementale.

Configurazione 2

Eseguendo una copia di base di 191.345 file di piccole dimensioni in 3.906 directory con dimensioni totali pari a 3 GiB, sono stati osservati i seguenti risultati.

Grafico che mostra i risultati del test della configurazione 2 per una copia di base.

Configurazione 3

Eseguendo una copia di base di 5.000 file di grandi dimensioni (10 MiB) in una singola directory con dimensioni totali di 50 GiB, sono stati osservati i seguenti risultati.

Grafico che mostra i risultati del test della configurazione 3 per una copia di base.

Riepilogo dei risultati

L'uso di applicazioni multithread come fpsync può migliorare la velocità effettiva e le operazioni di I/O al secondo durante la migrazione alle condivisioni file di Azure NFS rispetto agli strumenti di copia a thread singolo, ad esempio rsync. I test mostrano che:

  • La distribuzione dei dati nella directory consente di parallelizzare il processo di migrazione e di ottenere così prestazioni migliori.
  • La copia di dati da dimensioni di file di dimensioni maggiori garantisce prestazioni migliori rispetto alla copia dei dati da dimensioni di file più piccole.

La tabella seguente riepiloga i risultati.

Configurazione # Conteggio file Conteggio directory Dimensione del file Dimensioni totali durata rsync velocità effettiva rsync durata fpsync velocità effettiva fpsync Aumento della velocità effettiva
1.1 (baseline) 1 milione 1 0-32 KiB 18 GiB 837.06 minuti 0.33 MiB/s 228.16 minuti 1.20 MiB/s 267%
1.2 (incrementale) 1 milione 1 0-32 KiB 18 GiB 84.02 minuti 3.25 MiB/s 7.5 minuti 36.41 MiB/s 1,020%
2 (baseline) 191,345 3,906 0-32 KiB 3 GiB 191.86 minuti 0.27 MiB/s 8.47 minuti 6.04 MiB/s 2.164%
3 (baseline) 5,000 1 10 MiB 50 GiB 8.12 minuti 105.04 MiB/s 2.76 minuti 308.90 MiB/s 194%

Dichiarazione di non responsabilità per le informazioni di terze parti

Gli strumenti open source menzionati in questo articolo sono soluzioni di terze parti conosciute. Non sono sviluppate, di proprietà o supportate da Microsoft, direttamente o indirettamente. È responsabilità del cliente esaminare la licenza software e la dichiarazione di supporto fornita nella documentazione di terze parti.

Passaggi successivi