Migrieren zu NFS Azure-Dateifreigaben

In diesem Artikel werden die grundlegenden Aspekte der Migration von Linux-Dateiservern zu NFS Azure-Dateifreigaben behandelt, die nur als Premium-Dateifreigaben (FileStorage-Kontoart) verfügbar sind. Außerdem werden die Open-Source-Tools fpsync und rsync zum Kopieren von Dateien verglichen, um zu verstehen, wie sie beim Kopieren von Daten in Azure-Dateifreigaben abschneiden.

Hinweis

Azure Files unterstützt keine NFS-Zugriffssteuerungslisten (Access Control Lists, ACLs).

Gilt für:

Dateifreigabetyp SMB NFS
Standard-Dateifreigaben (GPv2), LRS/ZRS No No
Standard-Dateifreigaben (GPv2), GRS/GZRS No No
Premium-Dateifreigaben (FileStorage), LRS/ZRS No Yes

Voraussetzungen

Sie benötigen mindestens eine NFS Azure-Dateifreigabe, die auf einem virtuellen Linux-Computer (Virtual Machine, VM) eingebunden ist. Informationen zur Erstellung einer solchen Freigabe finden Sie unter Tutorial: Erstellen einer NFS-Azure-Dateifreigabe und Einbinden auf einem virtuellen Linux-Computer über das Azure-Portal. Es wird empfohlen, die Freigabe mit nconnect einzubinden, um mehrere TCP-Verbindungen zu verwenden. Weitere Informationen finden Sie unter Verbessern der NFS-Azure-Dateifreigabeleistung.

Migrationstools

Für die Übertragung von Daten an NFS-Dateifreigaben stehen zahlreiche Open-Source-Tools zur Verfügung. Allerdings sind nicht alle effizient, wenn ein verteiltes Dateisystem mit unterschiedlichen Leistungsaspekten verwendet wird (im Gegensatz zu einem lokalen Setup). In einem verteilten Dateisystem beinhaltet jeder Netzwerkaufruf einen Roundtrip zu einem Server, der möglicherweise nicht lokal ist. Daher ist es wichtig, die für Netzwerkanrufe benötigte Zeit zu optimieren, um die bestmögliche Leistung und eine effiziente Datenübertragung über das Netzwerk zu erzielen.

Vergleich von fpsync und rsync

rsync verfügt zwar nur über einen einzelnen Thread, ist aber trotzdem ein vielseitiges Open-Source-Tool zum Kopieren von Dateien. Es kann Daten lokal, an einen bzw. von einem anderen Host (über eine beliebige Remoteshell) oder an einen bzw. von einem rsync-Remotedaemon kopieren. Es bietet zahlreiche Optionen und ermöglicht die flexible Angabe der zu kopierenden Dateien. fpsync ist dagegen eine Anwendung mit mehreren Threads und bietet daher einige Vorteile. Hierzu zählt unter anderem die Möglichkeit, rsync-Aufträge parallel auszuführen.

In diesem Artikel wird fpsync verwendet, um Daten von einem Linux-Dateiserver in NFS Azure-Dateifreigaben zu verschieben.

Zum Kopieren der Daten verwendet fpsync entweder rsync (Standardeinstellung), cpio oder tar-Tools. Das Tool berechnet Teilmengen des Quellverzeichnisses src_dir/ und erzeugt Synchronisierungsaufträge, um sie mit dem Zielverzeichnis dst_dir/ zu synchronisieren. Es führt Synchronisierungsaufträge dynamisch aus und durchforstet gleichzeitig das Dateisystem. Dadurch eignet es sich gut für die effiziente Migration großer Dateisysteme sowie zum Kopieren umfangreicher Datasets mit mehreren Dateien.

Hinweis

fpsync synchronisiert nur Verzeichnisinhalte, nicht das Quellverzeichnis selbst. Im Gegensatz zu rsync erzwingt fpsync den abschließenden Schrägstrich („/“) im Quellverzeichnis. Dadurch ist im Zielverzeichnis nach der Synchronisierung kein Unterverzeichnis mit dem Namen des Quellverzeichnisses enthalten.

Installieren von fpart

Um fpsync verwenden zu können, muss der Dateisystempartitionierer fpart installiert werden. Installieren Sie fpart in der Linux-Distribution Ihrer Wahl. Nach der Installation sollte fpsync unter /usr/bin/ angezeigt werden.

Verwenden Sie unter Ubuntu den apt-Paket-Manager, um fpart zu installieren.

sudo apt-get install fpart

Kopieren von Daten aus der Quelle in das Ziel

Stellen Sie sicher, dass Ihre Azure-Zieldateifreigabe (Ziel) auf einem virtuellen Linux-Computer eingebunden ist. Siehe Voraussetzungen.

Kopieren Sie Ihre Daten im Falle einer vollständigen Migration in drei Phasen:

  1. Baselinekopie: Diese Option wird verwendet, um Daten aus der Quelle in das Ziel zu kopieren, wenn am Ziel noch keine Daten vorhanden sind. Für die Baselinekopie wird die Verwendung von fpsync mit cpio als Kopiertool empfohlen.
  2. Inkrementelle Kopie: Diese Option wird verwendet, um lediglich die inkrementellen Änderungen aus der Quelle in das Ziel zu kopieren. Für die inkrementelle Synchronisierung wird die Verwendung von fpsync mit rsync als Kopiertool empfohlen. Dieser Vorgang sollte mehrmals ausgeführt werden, um alle Änderungen zu erfassen.
  3. Abschließender Durchgang: Ein abschließender Durchgang ist erforderlich, um am Ziel alle Dateien zu löschen, die in der Quelle nicht vorhanden sind.

Beim Kopieren von Daten mit fpsync wird immer eine Version des folgenden Befehls verwendet:

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

Baselinekopie

Verwenden Sie für eine Baselinekopie fpsync mit cpio.

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

Weitere Informationen finden Sie unter Unterstützung von cpio und tar.

Inkrementelles Kopieren

Verwenden Sie für die inkrementelle Synchronisierung fpsync mit dem Standardtool zum Kopieren (rsync). Es empfiehlt es sich, den Vorgang mehrmals auszuführen, um alle Änderungen zu erfassen.

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

Von fpsync werden standardmäßig folgende rsync-Optionen angegeben: -lptgoD -v --numeric-ids. Sie können zusätzliche rsync-Optionen angeben, indem Sie dem fpsync-Befehl -o option hinzufügen.

Abschließender Durchgang

Nach mehreren inkrementellen Synchronisierungen müssen Sie einen abschließenden Durchgang ausführen, um alle Dateien an diesem Ziel zu löschen, die in der Quelle nicht vorhanden sind. Dazu können Sie entweder manuell rsync --delete ausführen, um zusätzliche Dateien aus dem Verzeichnis /data/dst/ zu löschen, oder Sie können fpsync mit der Option „-E“ verwenden. Ausführliche Informationen finden Sie unter Der abschließende Durchgang.

Vergleich von rsync und fpsync mit verschiedenen Datasets

In diesem Abschnitt wird die Leistung von rsync und fpsync mit verschiedenen Datasets verglichen.

Datasets und Konfiguration

In der folgenden Tabelle sind die verschiedenen Datasets aufgeführt, die verwendet wurden, um die Leistung der Kopiertools mit verschiedenen Workloads zu vergleichen:

Konfigurationsnr. Kopiertyp Dateianzahl Verzeichnisanzahl Dateigröße Gesamtgröße
1.1 Baselinekopie 1 Mio. 1 0–32 KiB 18 GiB
1.2 Inkrementell (Deltaänderung) 1 Mio. 1 0–32 KiB 18 GiB
2 Baselinekopie 191.345 3.906 0–32 KiB 3 GiB
3 Baselinekopie 5,000 1 10 MiB 50 GiB

Die Tests wurden auf virtuellen Azure-Computern vom Typ „Standard_D8s_v3“ mit 8 vCPUs, 32 GiB Arbeitsspeicher und mehr als 1 TiB Speicherplatz für große Datasets durchgeführt. Als Ziel wurden NFS Azure-Dateifreigaben mit einer bereitgestellten Größe von mehr als 1 TiB konfiguriert.

Experimente und Ergebnisse: rsync verglichen mit fpsync

Unsere Experimente mit den oben genannten Konfigurationen haben ergeben, dass fpsync am besten abschneidet, wenn es mit 64 Threads und rsync bzw. mit 16 Threads und cpio für eine mit nconnect=8eingebundene Azure NFS-Dateifreigabe verwendet wird. Die tatsächlichen Ergebnisse variieren abhängig von Ihrer Konfiguration und Ihren Datasets.

Hinweis

Der Durchsatz für Azure Files kann deutlich höher sein als in den folgenden Diagrammen angegeben. Einige der Experimente wurden der Einfachheit halber bewusst mit kleinen Datasets durchgeführt.

Konfiguration 1

Für ein einzelnes Verzeichnis mit einer Million kleinen Dateien und einer Gesamtgröße von 18 GiB haben wir diesen Test sowohl als Baselinekopie als auch als inkrementelle Kopie durchgeführt.

Bei einer Baselinekopie von der Quelle zum Ziel wurden folgende Ergebnisse erzielt:

Chart showing the test results of configuration 1 for a baseline copy.

Bei einer inkrementellen Kopie (Deltaänderung) wurden folgende Ergebnisse erzielt:

Chart showing the test results of configuration 1 for an incremental copy.

Konfiguration 2

Bei einer Baselinekopie von 191.345 kleinen Dateien in 3.906 Verzeichnissen mit einer Gesamtgröße von 3 GiB wurden folgende Ergebnisse erzielt:

Chart showing the test results of configuration 2 for a baseline copy.

Konfiguration 3

Bei einer Baselinekopie von 5.000 großen Dateien (10 MiB) in einem einzelnen Verzeichnis mit einer Gesamtgröße von 50 GiB wurden folgende Ergebnisse erzielt:

Chart showing the test results of configuration 3 for a baseline copy.

Zusammenfassung der Ergebnisse

Bei Verwendung von Anwendungen mit mehreren Threads wie fpsync können Durchsatz und IOPS bei der Migration zu NFS Azure-Dateifreigaben verbessert werden (verglichen mit Kopiertools wie rsync, die nur über einen einzelnen Thread verfügen). Unsere Tests haben Folgendes ergeben:

  • Durch die Verteilung der Daten auf das Verzeichnis können Sie den Migrationsprozess parallelisieren und somit eine bessere Leistung erzielen.
  • Das Kopieren von Daten aus größeren Dateien führt zu einer besseren Leistung als das Kopieren von Daten aus kleineren Dateien.

Die Ergebnisse sind in der folgenden Tabelle zusammengefasst:

Konfigurationsnr. Dateianzahl Verzeichnisanzahl Dateigröße Gesamtgröße rsync-Dauer rsync-Durchsatz fpsync-Dauer fpsync-Durchsatz Durchsatzsteigerung
1.1 (Baseline) 1 Mio. 1 0–32 KiB 18 GiB 837,06 Minuten 0,33 MiB/s 228,16 Minuten 1,20 MiB/s 267 Prozent
1.2 (inkrementell) 1 Mio. 1 0–32 KiB 18 GiB 84,02 Minuten 3,25 MiB/s 7,5 Minuten 36,41 MiB/s 1.020 Prozent
2 (Baseline) 191.345 3.906 0–32 KiB 3 GiB 191,86 Minuten 0,27 MiB/s 8,47 Minuten 6,04 MiB/s 2.164 Prozent
3 (Baseline) 5,000 1 10 MiB 50 GiB 8,12 Minuten 105,04 MiB/s 2,76 Minuten 308,90 MiB/s 194 %

Informationen zum Haftungsausschluss von Drittanbietern

Bei den in diesem Artikel erwähnten Open-Source-Tools handelt es sich um bekannte Drittanbieterlösungen. Sie werden weder direkt noch indirekt von Microsoft entwickelt oder unterstützt, und Microsoft ist weder direkt noch indirekt Besitzer dieser Tools. Es liegt in der Verantwortung des Kunden, die in der Dokumentation des Drittanbieters angegebenen Softwarelizenz- und Supportbestimmungen zu prüfen.

Nächste Schritte