Apakah ada cara di mana ZFS dapat diminta untuk mendistribusikan kembali sistem file yang diberikan ke semua disk di zpool?
Saya sedang memikirkan sebuah skenario di mana saya memiliki volume ZFS ukuran tetap yang diekspor sebagai LUN di atas FC. Zpool saat ini kecil, hanya dua disk mirror 1TB, dan zvol totalnya 750GB. Jika saya tiba-tiba memperluas ukuran zpool menjadi, katakanlah, 12 disk 1TB, saya yakin zvol masih akan secara efektif 'ditempati' pada dua spindel pertama saja.
Mengingat bahwa lebih banyak spindle = lebih banyak IOPS, metode apa yang dapat saya gunakan untuk 'mendistribusikan kembali' zvol ke semua 12 spindel untuk memanfaatkannya?
zfs send | zfs recv
Tidak ada alasan untuk zvol disimpan hanya pada perangkat awal. Jika Anda memperbesar kumpulan, ZFS akan merentangkan data yang diperbarui pada semua perangkat mendasar yang tersedia. Tidak ada partisi tetap dengan ZFS.
sumber
Ini adalah "kelanjutan" dari jawaban ewwhite:
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. Misalnyaphp 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
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).
sumber
Yah ini sedikit hack tetapi mengingat bahwa Anda telah menghentikan mesin menggunakan zvol, Anda bisa zfs mengirim sistem file ke file lokal di localhost bernama bar.zvol, dan kemudian Anda menerima sistem kembali file lagi. Itu harus menyeimbangkan kembali data untuk Anda.
sumber
solusi terbaik yang saya temukan adalah menggandakan setengah dari data Anda pada kumpulan yang diperluas dan kemudian menghapus data duplikat asli.
sumber