(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 mv
alat lain maupun apa pun tidak bisa hanya memindahkan pointer blok atau apa pun sehingga file yang fs_a
ada 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 mv
berpindah 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_b
kosong atau belum ada dan Anda ingin memindahkan seluruh isi fs_a
ke fs_b
(dan bukan hanya beberapa atau bahkan sebagian besar file & direktori) Anda dapat menggunakan zfs rename
untuk mengubah nama fs_a
ke 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