Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 |
|
|
| Condivisioni file Standard (GPv2), archiviazione con ridondanza geografica/archiviazione con ridondanza geografica della zona |
|
|
| Condivisioni file Premium (FileStorage), archiviazione con ridondanza locale/archiviazione con ridondanza della zona |
|
|
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:
- 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.
- 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.
- 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.
Eseguendo una copia incrementale (modifica delta), sono stati osservati i risultati seguenti.
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.
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.
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.