GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara 'menyeimbangkan kembali' data di zfs? (Pastikan data tersebar di antara semua cermin bergaris)

Hanya data yang baru ditulis (ditambahkan) yang dipisahkan antara semua vdev yang sedang aktif, tidak ada operasi penyeimbangan ulang yang eksplisit di ZFS.

Dua kemungkinan solusi:

  1. Tunggu hingga semua data lama ditulis kembali (karena Kontrak Karya, ini bisa memakan waktu sangat lama, dalam kasus terburuk dua kali lipat waktu yang diperlukan untuk menulis disk sepenuhnya).
  2. Hapus semua data dan tulis lagi (zfs send/recv berguna untuk mengeluarkan semua data dari kumpulan dan kembali tanpa kehilangan apa pun). Ini tidak harus dilakukan sekaligus, dan dapat dilakukan di kolam yang sama.

Untuk lebih tepatnya, saya akan memilih solusi kedua dan mentransfer setiap sistem file secara terpisah pada saat beban sistem rendah (misalnya pada malam hari):

  • Ambil snapshot (zfs snapshot -r ) dari sistem file berukuran layak (dan sistem file turunan, secara rekursif)
  • Gunakan zfs send | zfs recv dengan opsi yang sesuai untuk mengirim snapshot ke sistem file sementara yang baru dibuat (dapat berada di kumpulan yang sama jika ruang memungkinkan); sistem file ini harus berada di lokasi yang sama dalam hierarki dengan yang lama
  • Setelah penyalinan selesai (mungkin membutuhkan waktu, karena disk harus membaca dan menulis), zfs destroy snapshot lama dan sistem file lama
  • zfs rename sistem sementara ke nama lama
  • Periksa dan ubah titik pemasangan dengan zfs mount , mengatur ulang situasi sebelumnya untuk sistem file yang Anda ganti
  • Ulangi hingga semua sistem file dipindahkan

kemungkinan solusi ke-3 (seperti yang disebutkan oleh SirMaster dalam posting forum FreeNAS ini):

  • tambahkan disk baru ke zpool
  • salin banyak file ke direktori /mnt/pool/temp/ baru lainnya
  • hapus file asli:rm -rf original/
  • ganti nama direktori kembali:mv temp/ original/

Ini berfungsi karena ZFS akan menempatkan penulisan secara proporsional ke vdev mana pun yang memiliki ruang kosong paling banyak, dalam hal ini drive baru yang kosong. (pada 0,7, zfs akan mendukung drive yang lebih cepat untuk penulisan, tetapi anggaplah 2 drive baru Anda memiliki kinerja yang sama atau lebih baik daripada drive asli)

Ini mungkin lebih lambat dari zfs send | zfs recv , tetapi lebih sederhana karena Anda tidak perlu membuat/menghancurkan snapshot.

Anda dapat menjalankan zpool list -v sebelum dan sesudah untuk melihat setiap penggunaan vdev.

Juga, temukan skrip php yang melakukan prosedur salin/hapus/ganti nama berdasarkan file-demi-file. Ini ditautkan dalam jawaban dari pertanyaan serupa (tetapi zvol) beberapa tahun lebih tua. (tidak menguji skrip ini secara pribadi)


Linux
  1. Cara menemukan sistem file CD/DVD untuk membuatnya terpasang secara otomatis :[Linux]

  2. Bagaimana cara menambahkan baris baru ke akhir file?

  3. Tampilkan Semua File Hingga Pertandingan?

  1. Bagaimana cara menambahkan output ke file?

  2. Bagaimana rm bekerja? Apa yang rm lakukan?

  3. Bagaimana cara membuat ssh masuk sebagai pengguna yang tepat?

  1. Bagaimana Cara Membuat Iconv Mengganti File Input Dengan Output yang Dikonversi?

  2. Bagaimana Memastikan Bahwa Direktori Atau File Sebenarnya Dihapus?

  3. Bagaimana cara memastikan sistem saya menggunakan file ~/.screenrc?