GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengganti disk yang belum gagal dengan aman dalam array Linux RAID5?

Menggunakan mdadm 3.3

Sejak mdadm 3.3 (dirilis 2013, Sep 3), jika Anda memiliki kernel 3.2+, Anda dapat melanjutkan sebagai berikut:

# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1

sdd1 adalah perangkat yang ingin Anda ganti, sdc1 adalah perangkat pilihan untuk melakukannya dan harus dinyatakan sebagai cadangan di array Anda.

--with opsi bersifat opsional, jika tidak ditentukan, suku cadang apa pun yang tersedia akan digunakan.

Versi mdadm lama

Catatan:Anda masih membutuhkan kernel 3.2+.

Pertama, tambahkan drive baru sebagai cadangan (ganti md0 dan sdc1 dengan RAID dan perangkat disk Anda masing-masing):

# mdadm /dev/md0 --add /dev/sdc1

Kemudian, mulai operasi salin-ganti seperti ini (sdd1 menjadi perangkat yang gagal):

# echo want_replacement > /sys/block/md0/md/dev-sdd1/state 

Hasil

Sistem akan menyalin semua blok yang dapat dibaca dari sdd1 ke sdc1 . Jika sampai pada blok yang tidak dapat dibaca, itu akan merekonstruksinya dari paritas. Setelah operasi selesai, bekas cadangan (di sini:sdc1 ) akan menjadi aktif, dan drive yang gagal akan ditandai sebagai gagal (F) sehingga Anda dapat menghapusnya.

Catatan: kredit masuk ke frostschutz dan Ansgar Esztermann yang menemukan solusi asli (lihat pertanyaan rangkap).

Kernel lama

Jawaban lain menyarankan:

  • Joni pendekatannya:ubah larik ke RAID6, "ganti" disk, lalu kembali ke RAID5,
  • Hauke ​​Laging pendekatannya:hapus sebentar disk dari larik RAID5, jadikan itu bagian dari RAID1 (mirror) dengan disk baru dan tambahkan drive cermin itu kembali ke larik RAID5 (teoretis)...

Jika Anda tidak keberatan menjalankan RAID-6 (2 disk paritas daripada 1), dan jika Anda menjalankan mdadmin 3.1.x atau lebih tinggi, Anda dapat mengonversi larik RAID-5 ke RAID-6 untuk menambahkan disk paritas tambahan . Ini akan menempatkan array di bawah tekanan selama pembangunan kembali. Dan ini memiliki beberapa implikasi kinerja karena ada lebih banyak disk paritas untuk diperbarui selama penulisan.

Tetapi jika berhasil diselesaikan, maka Anda dapat menyimpan disk Anda yang gagal dan ketika akhirnya gagal, Anda masih memiliki perlindungan paritas untuk larik. Saya rasa Anda dapat mengonversi larik dari RAID6 kembali ke RAID5 jika Anda tidak menunggu untuk menyimpannya sebagai RAID6.

Saya tidak tahu cara online untuk menyimpan array sebagai RAID-5 dan mengganti disk tanpa meletakkan array dalam mode terdegradasi, karena menurut saya Anda harus menandainya sebagai gagal menggantinya. Ide penyalinan dd Anda mungkin merupakan cara untuk melakukannya.


Ini mungkin memenuhi persyaratan

  1. online
  2. jangan menekankan disk apa pun kecuali disk yang akan diganti

Tetapi bahkan jika yang berikut ini berhasil, Anda mungkin tidak akan menemukan rekomendasi semacam itu "di buku"...

Ide:

  1. Keluarkan disk OLD dari array (sebentar):mdadm --manage /dev/raid5 --fail /dev/OLD
  2. Buat perangkat md baru (RAID-1) dari disk LAMA dan BARU:mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
  3. Masukkan kembali RAID-1 ke dalam larik (bukan /dev/OLD):mdadm --manage /dev/raid5 --re-add /dev/md42

Apa harus :-) terjadi:

  1. RAID-5 membuat /dev/md42 sinkron. Ini seharusnya tidak memakan waktu lama.
  2. RAID-5 biasanya beroperasi kembali (namun lebih lambat).
  3. /dev/NEW disinkronkan dengan /dev/OLD.

Perhatikan kemajuan sinkronisasi (cat /proc/mdstat atau mdadm --monitor ). Jika sinkronisasi selesai keluarkan RAID-1 dari RAID-5, hentikan RAID-1, tambahkan kembali /dev/NEW ke RAID-5. Jika semuanya baik-baik saja, timpa superblok mdraid di /dev/OLD untuk menghindari masalah:mdadm --zero-superblock

Peringatan: Sinkronisasi RAID-5 yang cepat hanya dapat berfungsi jika Anda menggunakan bitmap. Jika Anda tidak memilikinya, lebih baik lakukan pengujian dengan dummy RAID-5 (tanpa bitmap) terlebih dahulu. Atau tambahkan satu. Setidaknya menambahkan yang eksternal harus dimungkinkan. Jika tidak, mungkin perlu menghentikan RAID-5 sebelum mengganti perangkat. Namun, jika Anda mem-boot dari RAID-5, ini akan menjadi sedikit rumit.


Linux
  1. Cara menggunakan dd di Linux tanpa merusak disk Anda

  2. Cara mempartisi disk di Linux

  3. Cara Mengetahui Apakah Disk Adalah SSD Atau HDD Di Linux

  1. Bagaimana menemukan Disk adalah SSD atau HDD di Linux?

  2. Cara mengubah UID atau GID dengan aman di Linux

  3. Bagaimana cara memaksa mdadm untuk menghentikan array RAID5?

  1. Bagaimana cara mengganti hard drive di Linux

  2. Cara Memeriksa Ruang Disk di Linux

  3. Cara Menghapus Partisi di Linux