Migrasi ke berbagi file NFS Azure

Artikel ini membahas aspek dasar migrasi dari server file Linux ke berbagi file NFS Azure, yang hanya tersedia sebagai berbagi file Premium (jenis akun FileStorage). Kami juga akan membandingkan alat salinan file sumber terbuka fpsync dan rsync untuk memahami performanya saat menyalin data ke berbagi file Azure.

Catatan

Azure Files tidak mendukung daftar kontrol akses (ACL) NFS.

Berlaku untuk

Jenis berbagi File SMB NFS
Berbagi file standar (GPv2), LRS/ZRS No No
Berbagi file standar (GPv2), GRS/GZRS No No
Berbagi file premium (FileStorage), LRS/ZRS No Yes

Prasyarat

Anda akan memerlukan setidaknya satu berbagi file NFS Azure yang dipasang ke komputer virtual (VM) Linux. Untuk membuatnya, lihat Membuat berbagi file NFS Azure dan memasangnya di VM Linux. Sebaiknya pasang berbagi dengan nconnect untuk menggunakan beberapa koneksi TCP. Untuk informasi selengkapnya, lihat Meningkatkan performa berbagi file NFS Azure.

Alat migrasi

Banyak alat sumber terbuka tersedia untuk mentransfer data ke berbagi file NFS. Namun, tidak semuanya efisien saat berhadapan dengan sistem file terdistribusi dengan pertimbangan performa yang berbeda dibandingkan dengan pengaturan lokal. Dalam sistem file terdistribusi, setiap panggilan jaringan melibatkan perjalanan pulang pergi ke server yang mungkin tidak lokal. Oleh karena itu, mengoptimalkan waktu yang dihabiskan untuk panggilan jaringan sangat penting untuk mencapai performa optimal dan transfer data yang efisien melalui jaringan.

Menggunakan fpsync vs. rsync

Meskipun berutas tunggal, rsync adalah alat salinan file yang serbaguna dan sumber terbuka. Ini dapat menyalin secara lokal, ke/dari host lain melalui shell jarak jauh, atau ke/dari daemon rsync jarak jauh. Ini menawarkan banyak opsi dan memungkinkan spesifikasi fleksibel dari set file yang akan disalin. Namun, fpsync adalah aplikasi multithreaded dan oleh karena itu menawarkan beberapa keuntungan, termasuk kemampuan untuk menjalankan pekerjaan rsync secara paralel.

Dalam artikel ini, kita akan menggunakan fpsync untuk memindahkan data dari server file Linux ke berbagi file NFS Azure.

Untuk menyalin data, fpsync menggunakan alat rsync (default), cpio, atau tar. Ini menghitung subset direktori src_dir/ sumber dan menelurkan pekerjaan sinkronisasi untuk menyinkronkannya ke direktori dst_dir/tujuan . Ini menjalankan pekerjaan sinkronisasi secara on-the-fly sambil secara bersamaan merayapi sistem file, menjadikannya alat yang berguna untuk memigrasikan sistem file besar secara efisien dan menyalin himpunan data besar dengan beberapa file.

Catatan

Fpsync hanya menyinkronkan konten direktori, bukan direktori sumber itu sendiri. Tidak seperti rsync, fpsync memberlakukan '/' akhir pada direktori sumber, yang berarti Anda tidak akan mendapatkan subdirektori dengan nama direktori sumber di direktori target setelah sinkronisasi.

Pasang fpart

Untuk menggunakan fpsync, Anda harus menginstal partisi sistem file fpart. Instal fpart pada distribusi Linux pilihan Anda. Setelah diinstal, Anda akan melihat fpsync di bawah /usr/bin/.

Di Ubuntu, gunakan manajer paket apt untuk menginstal fpart.

sudo apt-get install fpart

Menyalin data dari sumber ke tujuan

Pastikan tujuan (target) berbagi file Azure Anda dipasang ke VM Linux. Lihat Prasyarat.

Jika Anda melakukan migrasi penuh, Anda akan menyalin data dalam tiga fase:

  1. Salinan garis besar: Salin dari sumber ke tujuan saat tidak ada data di tujuan. Untuk salinan dasar, sebaiknya gunakan fpsync dengan cpio sebagai alat salin.
  2. Salinan bertahap: Salin hanya perubahan bertahap dari sumber ke tujuan. Untuk sinkronisasi bertahap, sebaiknya gunakan fpsync dengan rsync sebagai alat salin. Ini harus dilakukan beberapa kali untuk menangkap semua perubahan.
  3. Lulus akhir: Lulus akhir diperlukan untuk menghapus file apa pun di tujuan yang tidak ada di sumbernya.

Menyalin data dengan fpsync selalu melibatkan beberapa versi perintah ini:

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

Salinan garis besar

Untuk salinan garis besar, gunakan fpsync dengan cpio.

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

Untuk informasi selengkapnya, lihat dukungan Cpio dan Tar.

Salinan bertambah bertahap

Untuk sinkronisasi bertahap, gunakan fpsync dengan alat salin default (rsync). Untuk menangkap semua perubahan, sebaiknya jalankan ini beberapa kali.

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

Secara default, fpsync akan menentukan opsi rsync berikut: -lptgoD -v --numeric-ids. Anda dapat menentukan opsi rsync tambahan dengan menambahkan -o option ke perintah fpsync.

Lulus akhir

Setelah beberapa sinkronisasi inkremental, Anda perlu melakukan pass akhir untuk menghapus file apa pun di tujuan yang tidak ada di sumbernya. Anda dapat melakukan ini secara manual dengan rsync --delete untuk menghapus file tambahan dari /data/dst/ direktori, atau Anda dapat menggunakan fpsync dengan opsi -E. Untuk detailnya, lihat Pass Akhir.

Membandingkan rsync dan fpsync dengan himpunan data yang berbeda

Bagian ini membandingkan performa rsync dan fpsync dengan himpunan data yang berbeda.

Himpunan data dan konfigurasi

Tabel berikut mencantumkan berbagai himpunan data yang kami gunakan untuk membandingkan performa alat salin di bawah beban kerja yang berbeda.

Config # Jenis salin Jumlah file Jumlah direktori Ukuran file Ukuran total
1.1 Salinan garis besar 1 juta 1 0-32 KiB 18 GiB
1.2 Inkremental (perubahan delta) 1 juta 1 0-32 KiB 18 GiB
2 Salinan garis besar 191,345 3,906 0-32 KiB 3 GiB
3 Salinan garis besar 5\.000 1 10 MiB 50 GiB

Pengujian dilakukan pada Azure Standard_D8s_v3 VM dengan 8 vCPU, memori 32 GiB, dan lebih dari 1 TiB ruang disk untuk himpunan data besar. Untuk target, kami mengonfigurasi berbagi File Azure NFS dengan ukuran lebih dari 1 TiB yang disediakan.

Eksperimen dan hasil: rsync vs. fpsync

Berdasarkan eksperimen kami dengan konfigurasi di atas, kami mengamati bahwa fpsync memiliki performa terbaik saat digunakan dengan 64 utas dengan rsync dan 16 utas dengan cpio untuk berbagi file Azure NFS yang dipasang dengan nconnect=8. Hasil aktual akan bervariasi berdasarkan konfigurasi dan himpunan data Anda.

Catatan

Throughput untuk Azure Files bisa jauh lebih tinggi daripada yang diwakili dalam bagan berikut. Beberapa eksperimen sengaja dilakukan dengan himpunan data kecil untuk kesederhanaan.

Konfigurasi 1

Untuk satu direktori dengan 1 juta file kecil yang berjumlah 18 GiB, kami menjalankan pengujian ini sebagai salinan dasar dan salinan bertahap.

Kami mengamati hasil berikut melakukan salinan garis besar dari sumber ke tujuan.

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

Kami mengamati hasil berikut melakukan salinan bertahap (perubahan delta).

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

Konfigurasi 2

Kami mengamati hasil berikut melakukan salinan dasar 191.345 file kecil dalam 3.906 direktori dengan ukuran total 3 GiB.

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

Konfigurasi 3

Kami mengamati hasil berikut melakukan salinan dasar 5.000 file besar (10 MiB) dalam satu direktori dengan ukuran total 50 GiB.

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

Ringkasan hasil

Menggunakan aplikasi multi-utas seperti fpsync dapat meningkatkan throughput dan IOPS saat bermigrasi ke berbagi file NFS Azure dibandingkan dengan alat salin berulir tunggal seperti rsync. Tes kami menunjukkan bahwa:

  • Mendistribusikan data di seluruh direktori membantu paralelisasi proses migrasi dan dengan demikian mencapai performa yang lebih baik.
  • Menyalin data dari ukuran file yang lebih besar menghasilkan performa yang lebih baik daripada menyalin data dari ukuran file yang lebih kecil.

Tabel berikut ini meringkas hasilnya:

Config # Jumlah file Jumlah direktori Ukuran file Ukuran total durasi rsync throughput rsync durasi fpsync throughput fpsync Perolehan throughput
1.1 (garis besar) 1 juta 1 0-32 KiB 18 GiB 837,06 menit 0,33 MiB/dtk 228,16 menit 1.20 MiB/dtk 267%
1.2 (inkremental) 1 juta 1 0-32 KiB 18 GiB 84,02 menit 3,25 MiB/dtk 7,5 menit 36,41 MiB/dtk 1,020%
2 (garis besar) 191,345 3,906 0-32 KiB 3 GiB 191,86 menit 0,27 MiB/dtk 8,47 menit 6,04 MiB/dtk 2,164%
3 (garis besar) 5\.000 1 10 MiB 50 GiB 8,12 menit 105,04 MiB/dtk 2,76 menit 308,90 MiB/dtk 194%

Pengelakan informasi pihak ketiga

Alat sumber terbuka yang disebutkan dalam artikel ini adalah solusi pihak ketiga yang terkenal. Mereka tidak dikembangkan, dimiliki, atau didukung oleh Microsoft, baik secara langsung maupun tidak langsung. Pelanggan bertanggung jawab untuk memeriksa lisensi perangkat lunak dan pernyataan dukungan yang disediakan dalam dokumentasi pihak ketiga.

Langkah berikutnya