Ini adalah "kelanjutan" dari jawaban ewwhite:
Anda perlu menulis ulang data Anda ke zpool yang diperluas untuk menyeimbangkannya
Saya menulis skrip PHP ( tersedia di github ) untuk mengotomatisasi ini pada host Ubuntu 14.04 saya.
Satu hanya perlu menginstal alat PHP CLI dengan sudo apt-get install php5-cli
dan menjalankan skrip, melewati jalur ke data kumpulan Anda sebagai argumen pertama. Misalnya
php main.php /path/to/my/files
Idealnya, Anda harus menjalankan skrip dua kali di semua data di kumpulan. Proses pertama akan menyeimbangkan pemanfaatan drive, tetapi masing-masing file akan dialokasikan terlalu besar ke drive yang ditambahkan terakhir. Jalankan kedua akan memastikan bahwa setiap file "cukup" didistribusikan di seluruh drive. Saya katakan secara adil alih-alih secara merata karena hanya akan didistribusikan secara merata jika Anda tidak mencampurkan kapasitas drive seperti saya dengan serangan saya 10 pasangan ukuran yang berbeda (cermin 4 TB + cermin 3TB + cermin 3TB).
Alasan untuk Menggunakan Skrip
- Saya harus memperbaiki masalah "di tempat". Misalnya saya tidak bisa menulis data ke sistem lain, hapus di sini dan tulis kembali semua.
- Saya mengisi kumpulan saya lebih dari 50%, jadi saya tidak bisa hanya menyalin seluruh sistem file sekaligus sebelum menghapus yang asli.
- Jika hanya ada file tertentu yang perlu berkinerja baik, maka orang bisa menjalankan skrip dua kali dari file-file itu. Namun, jalankan kedua hanya efektif jika dijalankan pertama berhasil berhasil menyeimbangkan pemanfaatan drive.
- Saya memiliki banyak data dan ingin dapat melihat indikasi kemajuan yang dibuat.
Bagaimana Saya Dapat Mengetahui jika Penggunaan Drive Sekalipun Dicapai?
Gunakan alat iostat selama periode waktu tertentu (misalnya iostat -m 5
) dan periksa tulisan. Jika mereka sama, maka Anda telah mencapai spread yang merata. Mereka bahkan tidak sempurna dalam screenshot di bawah ini karena saya menjalankan sepasang 4TB dengan 2 pasang drive 3TB di RAID 10, sehingga kedua 4 ini akan ditulis lebih sedikit.
Jika penggunaan drive Anda "tidak seimbang", maka iostat akan menampilkan sesuatu yang lebih seperti tangkapan layar di bawah di mana drive baru sedang ditulis secara tidak proporsional. Anda juga dapat mengatakan bahwa itu adalah drive baru karena bacaannya 0 karena mereka tidak memiliki data.
Skripnya tidak sempurna, hanya solusi, tetapi sementara itu saya bekerja sampai ZFS mengimplementasikan fitur penyeimbangan seperti yang dimiliki BTRFS (semoga saja).