Memindahkan sistem file ZFS dari satu kumpulan ke kumpulan lainnya

18

Saya memperluas server Solaris 10 U8 dengan kumpulan penyimpanan tambahan selain root rpool.

Apa cara paling efektif / sederhana / dapat diandalkan untuk memindahkan sistem file ZFS tertentu dari rpool ke kumpulan penyimpanan baru ini?

Bisakah itu dilakukan secara online atau haruskah saya mematikan layanan menggunakan kolam ini terlebih dahulu?

Asgeir S. Nilsen
sumber

Jawaban:

15

Pertanyaan tentang menonaktifkan layanan pada dasarnya tergantung pada layanan itu sendiri:

  • Apakah mereka aktif menulis ke sistem file yang Anda rencanakan untuk dipindahkan?
  • Apakah mereka menyimpan data persisten yang ingin Anda simpan.

Bagaimanapun, mengirim sistem file ZFS mungkin membutuhkan waktu lama. Dimungkinkan untuk meminimalkan tidak tersedianya layanan dengan menjaga mereka online sebagian besar waktu seperti itu:

  • buat snapshot
  • mengirim snapshot itu dengan cara yang disarankan sebelumnya tetapi tetap menjaga semua layanan aktif
  • ketika fs diterima di kumpulan lain, nonaktifkan batas layanan kritis ke sistem file itu. Pastikan sistem file baru pada kumpulan tujuan tidak diubah karena perubahan akan dibuang kemudian.
  • buat snapshot kedua (mis. snapshot2)
  • kirim snapshot kedua itu secara bertahap, itu akan jauh lebih cepat daripada transfer sebelumnya. misalnya:

    zfs mengirim -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs menerima -F destinationpool / filesystem

  • ketika selesai, pindahkan titik mount sistem file dari dataset lama ke yang baru. misalnya:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs mengatur mountpoint = / application / directory destination / filesystem

Anda perlu memastikan tidak ada proses terikat /application/filesystem(misalnya: mengakses file atau menjadikannya sebagai direktori saat ini) untuk mencapai itu.

  • aktifkan kembali layanan dan Anda selesai.
Jlliagre
sumber
10

Saya tidak berpikir ini bisa dilakukan secara online, tetapi proses saya adalah untuk mematikan layanan yang diperlukan, mengambil snapshot dan menggunakan zfs kirim / terima untuk melakukan migrasi. Sesuatu seperti:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Edit:

Jika Anda menginstal perintah "tampilan pipa" (pv), Anda dapat memantau status transfer dengan:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem
putih
sumber
10

Saya mengulangi banyak dari apa yang dikatakan jlliagre, tetapi dengan tambahan untuk sistem file keturunan. (Kebanyakan jadi saya punya referensi ketika saya lupa.)

Jika Anda memiliki sub-filesystem Anda akan ingin menggunakan -rbendera pada ZFS snapshot perintah, dan -ratau -Rbendera pada zfs sendperintah. Huruf besar -Rmemindahkan semua properti , foto, dan klon.

Untuk memindahkan seluruh kumpulan:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

kemudian untuk menyinkronkan perubahan untuk periode migrasi yang lebih singkat mematikan aplikasi, shutdown samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Jika Anda membuat beberapa snapshot perantara untuk migrasi, baca halaman manual tentang zfs send -Isakelar.

Dan Buhler
sumber
3
Dalam percobaan saya, perintah yang tepat tampaknya: zfs send -R Pool0 @ moving | zfs menerima -dF Pool1
TinkerTank
4

Anda juga akan menemukan beberapa manfaat dalam menggunakan alat seperti "mbuffer" di dalam pipa; rupanya kinerja pengiriman / penerimaan ZFS meningkat secara dramatis jika kedua ujungnya sebagian besar dapat mengalirkan data secara terus-menerus, dan tanpa mbuffer (atau yang serupa) Anda mendapatkan efek ping-pong di mana salah satu terus memblokir di sisi lainnya.

Adam Thompson
sumber
Harap perhatikan bahwa ini adalah pertanyaan yang sangat lama (lebih dari 5 tahun) dan jawaban Anda kemungkinan tidak akan menambahkan apa pun ke pertanyaan yang lama.
Catherine MacInnes
1
Ini adalah saran yang bagus dan saya menggunakannya untuk gerakan biliar juga.
Dan Buhler