Bagaimana cara memindahkan file dari satu sistem file zfs ke sistem file zfs yang berbeda di kumpulan yang sama?

17

Saya memiliki dua filesystem di kumpulan zfs yang sama, /mnt/fs_adan /mnt/fs_b. Saya ingin memindahkan sekitar 1TB data dari fs_amenjadi fs_b. Tetapi ketika saya:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

yang mengejutkan saya itu mulai menyalin file blok demi blok. Mengingat waktu yang dibutuhkan untuk memindahkan file 2GB, sepertinya operasi ini akan memakan waktu berhari-hari untuk menyelesaikan banyak.

Harus ada cara yang jauh lebih cerdas dan lebih cepat untuk melakukan ini, kan?

Fred Hamilton
sumber

Jawaban:

22

(ini dimulai sebagai komentar tetapi menjadi terlalu lama sehingga sekarang menjadi jawaban)

Sayangnya, jawabannya adalah "Tidak". Tidak ada cara yang lebih cepat atau lebih pintar untuk melakukan ini.

Sistem file ZFS (meskipun mereka berada di kelompok yang sama) adalah sistem file yang terpisah. Baik mvalat lain maupun apa pun tidak bisa hanya memindahkan pointer blok atau apa pun sehingga file yang fs_aada sekarang aktif fs_b.

(BTW, beberapa partisi yang diformat atau volume LVM pada disk atau raid array yang sama juga merupakan sistem file yang terpisah dan mvberpindah untuk menyalin dan menghapusnya juga)

Masalah ini telah muncul beberapa kali selama bertahun-tahun (dengan beberapa pembicaraan tentang menciptakan alat untuk melakukan apa yang Anda inginkan) dan seperti yang saya pahami, kesulitan utama yang menempatkannya dalam keranjang yang terlalu sulit adalah pertanyaan tentang bagaimana menangani snapshot - jika ada snapshot fs_a, blok akan berada di kedua sistem file pada saat yang sama. Hal yang sama berlaku untuk file yang memiliki tautan keras.

Saya telah mengalami sendiri berkali-kali (misalnya ketika memindahkan file antara dataset seperti yang Anda lakukan, atau ketika saya perlu mengkonversi subdirektori ke fs), dan baru saja belajar untuk menerima ketidaknyamanan. Ini bisa menjadi PITA utama.

jika fs_bkosong atau belum ada dan Anda ingin memindahkan seluruh isi fs_ake fs_b(dan bukan hanya beberapa atau bahkan sebagian besar file & direktori) Anda dapat menggunakan zfs renameuntuk mengubah nama fs_ake fs_b. Saya curiga ini tidak relevan dengan situasi Anda.

Ada masalah terbuka untuk ini untuk ZFSOnLinux di https://github.com/zfsonlinux/zfs/issues/2991

Saya belum mencari tetapi saya berharap OpenZFS hulu dan bahkan Sun / Oracle ZFS mungkin memiliki bug-laporan / fitur-permintaan yang serupa.

BTW, lihat juga /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume

cas
sumber
3
Terima kasih atas tanggapannya. Saya menghargai saran ganti nama, tetapi karena Anda curiga saya memiliki lebih banyak data tentang yang tidak saya inginkan pada b. Setidaknya saya bisa melanjutkan sekarang, dan menyalin file melalui disk buffer untuk setidaknya menghilangkan labrakan.
Fred Hamilton