FREENAS: Mengapa perintah mv tidak instan dalam volume RAIDZ1?

14

Saat ini saya sedang 'mengatur ulang' struktur file dalam volume RAIDZ1. Memindahkan direktori dari satu dataset ke yang lain, yang keduanya terkandung pada volume yang sama.

SSH masuk ke mesin dan melakukan gaya lama yang baik:

mv * tujuan

Bukankah ini harus instan? Saya mengerti ini tersebar di tiga drive, tetapi pada saat yang sama, file-file itu sendiri tidak benar-benar perlu dipindahkan - saya hanya berharap untuk mengubah pointer untuk file-file ini dan menjadi, yah, pada dasarnya instan. Jelas tidak. Saya memiliki sekitar 500G data untuk dipindahkan dan sudah berjalan sekitar setengah jam sekarang. oo

Mengapa tidak mendekati instan?

Spesifikasi: CPU: Intel G3220
MB: Gigabyte GA-B85-HD3
MEM: Kingston DDR3-1600 8GB
DISK: WD Hijau 3x2TB dalam volume RAIDZ1

Ryan
sumber
Punya snapshot?
MadHatter
Tidak ada snapshot, ini adalah instalasi baru yang saya setup kemarin dan kemudian menyalin file dari drive NTFS yang ada ke volume ini.
Ryan

Jawaban:

22

Anda sedang memikirkan hal-hal dari tingkat yang salah, itu saja.

Jika Anda memindahkan file dalam batas-batas dataset ZFS tunggal, itu akan bereaksi sama dengan apa yang Anda harapkan. Jika Anda memindahkan file dalam batas-batas kumpulan, tetapi di antara kumpulan data, itu adalah langkah nyata. Ya, secara teknis data baru saja berpindah dari titik A ke titik B dan kedua titik berada pada piringan yang sama - tetapi dari perspektif ZFS, ia memindahkan rumah.

Kumpulan data ZFS adalah sistem file yang terpisah. Sistem file nyata. Mereka dapat memiliki ukuran blok yang berbeda, pengaturan kompresi, dll. Memindahkan file antara dua sistem file ZFS, bahkan pada kumpulan yang sama, adalah langkah nyata - bit dibaca dan kemudian ditulis lagi, bukan hanya memperbarui pointer.

Secara fungsional itu hampir analog dengan memindahkan file antara dua filesystem ext4 yang secara teknis berasal dari 2 partisi hard disk yang sama - dua filesystem, meskipun berbagi perangkat keras yang mendasari, secara logis berbeda dan sehingga tidak ada perubahan 'pointer' yang dapat terjadi, itu harus pindahkan file secara fisik, meskipun sebenarnya hanya menyalin data dari satu lokasi ke lokasi lain di drive yang sama.

Nex7
sumber