Migreren naar NFS Azure-bestandsshares

Dit artikel bevat informatie over de basisaspecten van het migreren van Linux-bestandsservers naar NFS Azure-bestandsshares, die alleen beschikbaar zijn als Premium-bestandsshares (FileStorage-accounttype). We vergelijken ook de opensource-hulpprogramma's voor het kopiëren van bestanden fpsync en rsync om te begrijpen hoe ze presteren bij het kopiëren van gegevens naar Azure-bestandsshares.

Notitie

Azure Files biedt geen ondersteuning voor NFS-toegangsbeheerlijsten (ACL's).

Van toepassing op

Bestands sharetype SMB NFS
Standaardbestandsshares (GPv2), LRS/ZRS No No
Standaardbestandsshares (GPv2), GRS/GZRS No No
Premium bestandsshares (FileStorage), LRS/ZRS No Yes

Vereisten

U hebt ten minste één NFS Azure-bestandsshare nodig die is gekoppeld aan een virtuele Linux-machine (VM). Zie Een NFS Azure-bestandsshare maken en koppelen op een Virtuele Linux-machine om er een te maken. U wordt aangeraden de share te koppelen aan nconnect om meerdere TCP-verbindingen te gebruiken. Zie Prestaties van NFS Azure-bestandsshares verbeteren voor meer informatie.

Hulpprogramma's voor migratie

Veel opensource-hulpprogramma's zijn beschikbaar om gegevens over te dragen naar NFS-bestandsshares. Niet alle zijn echter efficiënt bij het omgaan met een gedistribueerd bestandssysteem met verschillende prestatieoverwegingen vergeleken met on-premises setups. In een gedistribueerd bestandssysteem omvat elke netwerkoproep een retour naar een server die mogelijk niet lokaal is. Daarom is het optimaliseren van de tijd die wordt besteed aan netwerkoproepen cruciaal om optimale prestaties en efficiënte gegevensoverdracht via het netwerk te bereiken.

fpsync versus rsync gebruiken

Ondanks dat u één thread hebt, is rsync een veelzijdig hulpprogramma voor het kopiëren van opensource-bestanden. Het kan lokaal, naar/van een andere host kopiëren via een externe shell of van/naar een externe rsync-daemon. Het biedt veel opties en maakt flexibele specificatie mogelijk van de set bestanden die moeten worden gekopieerd. fpsync is echter een multithreaded-toepassing en biedt daarom enkele voordelen, waaronder de mogelijkheid om rsync-taken parallel uit te voeren.

In dit artikel gebruiken we fpsync om gegevens van een Linux-bestandsserver naar NFS Azure-bestandsshares te verplaatsen.

Als u de gegevens wilt kopiëren, gebruikt fpsync rsync (standaard), cpio of tar-hulpprogramma's. Het berekent subsets van de bronmap src_dir/ en spawns synchronisatietaken om ze te synchroniseren met de doelmap dst_dir/. Het voert synchronisatietaken on-the-fly uit tijdens het tegelijkertijd verkennen van het bestandssysteem, waardoor het een handig hulpmiddel is voor het efficiënt migreren van grote bestandssystemen en het kopiëren van grote gegevenssets met meerdere bestanden.

Notitie

Fpsync synchroniseert alleen de inhoud van de map, niet de bronmap zelf. In tegenstelling tot rsync dwingt fpsync de definitieve '/' af in de bronmap, wat betekent dat u na synchronisatie geen submap met de naam van de bronmap in de doelmap krijgt.

FPART installeren

Als u fpsync wilt gebruiken, moet u de partitiefunctie voor het fpart-bestandssysteem installeren. Installeer fpart op de Linux-distributie van uw keuze. Zodra deze is geïnstalleerd, ziet u fpsync onder /usr/bin/.

Gebruik op Ubuntu de apt-pakketbeheerder om fpart te installeren.

sudo apt-get install fpart

Gegevens kopiëren van bron naar doel

Zorg ervoor dat uw Azure-bestandsshare (doel) is gekoppeld aan een Virtuele Linux-machine. Zie Vereisten.

Als u een volledige migratie uitvoert, kopieert u uw gegevens in drie fasen:

  1. Basislijnkopie: Kopiëren van bron naar bestemming wanneer er geen gegevens op het doel aanwezig zijn. Voor het kopiëren van de basislijn raden we u aan om fpsync met cpio te gebruiken als het hulpprogramma voor kopiëren.
  2. Incrementeel kopiëren: kopieer alleen de incrementele wijzigingen van de bron naar het doel. Voor incrementele synchronisatie raden we u aan om fpsync te gebruiken met rsync als het hulpprogramma voor kopiëren. Dit moet meerdere keren worden gedaan om alle wijzigingen vast te leggen.
  3. Laatste pas: er is een laatste pas nodig om bestanden op de bestemming te verwijderen die niet aanwezig zijn in de bron.

Het kopiëren van gegevens met fpsync omvat altijd een versie van deze opdracht:

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

Basislijnkopie

Gebruik fpsync voor basislijnkopie met cpio.

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

Zie Cpio- en Tar-ondersteuning voor meer informatie.

Incrementele kopie

Voor incrementele synchronisatie gebruikt u fpsync met het standaardhulpprogramma voor kopiëren (rsync). Als u alle wijzigingen wilt vastleggen, raden we u aan dit meerdere keren uit te voeren.

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

Standaard geeft fpsync de volgende rsync-opties op: -lptgoD -v --numeric-ids. U kunt extra rsync-opties opgeven door deze toe te voegen aan -o option de fpsync-opdracht.

Laatste pas

Na verschillende incrementele synchronisaties moet u een laatste pas uitvoeren om bestanden op die bestemming te verwijderen die niet bij de bron aanwezig zijn. U kunt dit handmatig doen om rsync --delete extra bestanden uit de /data/dst/ map te verwijderen of u kunt fpsync gebruiken met de optie -E. Zie De laatste pas voor meer informatie.

rsync en fpsync vergelijken met verschillende gegevenssets

In deze sectie worden de prestaties van rsync en fpsync vergeleken met verschillende gegevenssets.

Gegevenssets en configuratie

De volgende tabel bevat de verschillende gegevenssets die we hebben gebruikt om de prestaties van het kopieerprogramma onder verschillende werkbelastingen te vergelijken.

Config # Kopieertype Aantal bestanden Aantal mappen Bestandsgrootte Totale grootte
1.1 Basislijnkopie 1 miljoen 1 0-32 KiB 18 GiB
1.2 Incrementeel (deltawijziging) 1 miljoen 1 0-32 KiB 18 GiB
2 Basislijnkopie 191,345 3,906 0-32 KiB 3 GiB
3 Basislijnkopie 5\.000 1 10 MiB 50 GiB

De tests zijn uitgevoerd op Azure Standard_D8s_v3-VM's met 8 vCPU's, 32 GiB aan geheugen en meer dan 1 TiB aan schijfruimte voor grote gegevenssets. Voor het doel hebben we NFS Azure-bestandsshares geconfigureerd met meer dan 1 TiB-ingerichte grootte.

Experimenten en resultaten: rsync versus fpsync

Op basis van onze experimenten met de bovenstaande configuraties hebben we vastgesteld dat fpsync het beste presteerde bij gebruik met 64 threads met rsync en 16 threads met cpio voor een Azure NFS-bestandsshare gekoppeld.nconnect=8 De werkelijke resultaten variëren op basis van uw configuratie en gegevenssets.

Notitie

Doorvoer voor Azure Files kan veel hoger zijn dan in de volgende grafieken wordt weergegeven. Sommige van de experimenten zijn opzettelijk uitgevoerd met kleine gegevenssets om het eenvoudig te maken.

Configuratie 1

Voor één map met 1 miljoen kleine bestanden in totaal 18 GiB hebben we deze test uitgevoerd als een basislijnkopie en incrementele kopie.

We hebben de volgende resultaten waargenomen die een basislijnkopie uitvoeren van de bron naar de bestemming.

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

We hebben de volgende resultaten waargenomen bij het uitvoeren van een incrementele kopie (deltawijziging).

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

Configuratie 2

We hebben de volgende resultaten waargenomen met een basislijnkopie van 191.345 kleine bestanden in 3.906 mappen met een totale grootte van 3 GiB.

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

Configuratie 3

We hebben de volgende resultaten waargenomen met een basislijnkopie van 5000 grote bestanden (10 MiB) in één map met een totale grootte van 50 GiB.

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

Samenvatting van resultaten

Het gebruik van toepassingen met meerdere threads, zoals fpsync, kan de doorvoer en IOPS verbeteren wanneer u migreert naar NFS Azure-bestandsshares in vergelijking met hulpprogramma's voor kopiëren met één thread, zoals rsync. Uit onze tests blijkt dat:

  • Het distribueren van gegevens in de directory helpt bij het parallelliseren van het migratieproces en levert zo betere prestaties op.
  • Het kopiëren van gegevens uit grotere bestandsgrootten levert betere prestaties op dan het kopiëren van gegevens uit kleinere bestandsgrootten.

De volgende tabel bevat een overzicht van de resultaten:

Config # Aantal bestanden Aantal mappen Bestandsgrootte Totale grootte rsync-duur rsync-doorvoer Duur van fpsync fpsync-doorvoer Doorvoerwinst
1.1 (basislijn) 1 miljoen 1 0-32 KiB 18 GiB 837,06 minuten 0.33 MiB/s 228,16 minuten 1.20 MiB/s 267%
1.2 (incrementeel) 1 miljoen 1 0-32 KiB 18 GiB 84,02 minuten 3.25 MiB/s 7,5 minuten 36.41 MiB/s 1,020%
2 (basislijn) 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%
3 (basislijn) 5\.000 1 10 MiB 50 GiB 8,12 minuten 105.04 MiB/s 2,76 minuten 308.90 MiB/s 194%

Disclaimerinformatie van derden

De opensource-hulpprogramma's die in dit artikel worden genoemd, zijn bekende oplossingen van derden. Ze worden niet direct of indirect ontwikkeld, eigendom of ondersteund door Microsoft. Het is de verantwoordelijkheid van de klant om de softwarelicentie en de ondersteuningsverklaring van de derde partij te onderzoeken.

Volgende stappen