Raid1 dengan partisi aktif dan cadangan

8

Saya mengalami masalah berikut dengan partisi serangan perangkat lunak RAID1 pada sistem Ubuntu saya (10,04 LTS, 2.6.32-24-server jika itu penting).

Salah satu disk saya (sdb5) melaporkan kesalahan I / O dan karena itu ditandai salah dalam array. Array kemudian diturunkan dengan satu perangkat aktif. Oleh karena itu, saya mengganti harddisk, mengkloning tabel partisi dan menambahkan semua partisi baru ke array serangan saya. Setelah menyinkronkan semua partisi berakhir dengan baik, memiliki 2 perangkat aktif - kecuali salah satunya. Partisi yang melaporkan disk yang rusak sebelumnya, bagaimanapun, tidak termasuk partisi baru sebagai perangkat aktif tetapi sebagai disk cadangan:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

Tampilan terperinci mengungkapkan:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

Jadi, inilah pertanyaannya: Bagaimana saya memberi tahu serangan saya untuk mengubah disk cadangan menjadi yang aktif? Dan mengapa itu ditambahkan sebagai perangkat cadangan? Menciptakan atau memasang kembali array bukanlah pilihan, karena itu adalah partisi root saya. Dan saya tidak dapat menemukan petunjuk untuk subjek itu di HOWTO Raid Perangkat Lunak.

Bantuan apa pun akan dihargai.

Solusi Saat Ini

Saya menemukan solusi untuk masalah saya, tetapi saya tidak yakin bahwa ini adalah cara aktual untuk melakukannya. Setelah melihat lebih dekat pada serangan saya, saya menemukan bahwa sdb5 selalu terdaftar sebagai perangkat cadangan:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

jadi membaca perangkat sdb5 ke array md3 selalu berakhir dengan menambahkan perangkat sebagai cadangan.

Akhirnya saya baru saja membuat ulang array

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

yang berhasil.

Tetapi pertanyaannya tetap terbuka bagi saya: Apakah ada cara yang lebih baik untuk memanipulasi ringkasan di superblock dan untuk memberitahu array untuk mengubah sdb5 dari disk cadangan ke disk aktif? Saya masih penasaran untuk jawabannya.

Daniel Baron
sumber
Apa yang ditampilkan "cat / proc / mdstat"? Bukankah itu hanya pembangunan kembali dan "cadangan" hanya akan menghilang ketika pembangunan kembali selesai? Apa yang ditampilkan "mdadm --version"? Ada bug lama ... lihat mail-archive.com/[email protected]/msg09818.html .
rem
Tidak, itu masalahnya. Cuplikan pertama dalam pertanyaan menunjukkan output dari / proc / mdstat untuk array. Perangkat sudah disinkronkan, tetapi seperti yang Anda lihat setelah proses sinkronisasi berhasil perangkat tetap sebagai cadangan dan tidak berubah menjadi yang aktif.
Daniel Baron
mdadm - v2.6.7.1
Daniel Baron

Jawaban:

1

Daniel: Awalnya, periksa untuk melihat apakah cadangan sedang diintegrasikan ke dalam array dengan melakukan:

cat / proc / mdstat

yang harus melaporkan jika ada proses pembangunan yang sedang berlangsung, dan berapa lama untuk mengharapkannya.

Jika tidak ada bangunan yang terjadi, cobalah yang berikut ini

mdadm / dev / md3 --hapus / dev / sdb5

mdadm / dev / md3 --add / dev / sdb5

Dan laporkan kembali cara kerjanya untuk Anda. Lihat http://linux.die.net/man/8/mdadm untuk lebih jelasnya.

Rolnik
sumber
Terima kasih atas bantuan Anda, Rolnik. Seperti yang Anda lihat dari snippet / proc / mdstat pertama saya menunjukkan kedua perangkat dalam array. Perangkat sudah disinkronkan sebelumnya (tidak ditampilkan di sini) tanpa masalah. Tetapi setelah menyelesaikan proses sinkronisasi, perangkat tidak berubah menjadi perangkat yang aktif. Menghapus dan menambahkan lagi tidak mengubah perilaku ini.
Daniel Baron
1

Cukup terlambat, tetapi melakukan ini hanya akan mengaktifkan drive cadangan:

mdadm --grow /dev/md3 -n 2

Seperti yang dikatakan halaman manual:

Untuk membuat, membangun, atau menumbuhkan: -n, --raid-devices = Tentukan jumlah perangkat aktif dalam array. Ini, ditambah jumlah perangkat cadangan (lihat di bawah) harus sama dengan jumlah perangkat komponen-(termasuk perangkat "hilang") yang terdaftar pada baris perintah untuk --create. Menetapkan nilai 1 mungkin merupakan kesalahan dan mengharuskan - memaksa ditentukan terlebih dahulu. Nilai 1 kemudian akan diizinkan untuk linier, multipath, RAID0 dan RAID1. Tidak pernah diizinkan untuk RAID4, RAID5 atau RAID6. Jumlah ini hanya dapat diubah menggunakan --grow untuk RAID1, RAID4, RAID5 dan RAID6 array, dan hanya pada kernel yang menyediakan dukungan yang diperlukan.

Pablo Montepagano
sumber
0

Dari apa yang saya ingat, ketika saya memiliki masalah itu (untuk alasan yang berbeda) saya harus menggunakan --grow untuk menambahkan kembali drive cadangan "dengan benar" (juga membersihkan kondisi kesalahan.)

Sesuatu seperti ini (verifikasi dengan dokumentasi Anda!):

mdadm --grow --level = rusak --layout = flush / dev / sdb5

Kemudian Anda dapat menambahkan perangkat dan itu harus dikenali.

Masalahnya adalah bahwa driver md menyimpan status setiap partisi dalam data boot drive. Jadi, bahkan setelah reboot, ia mengetahui status dan menghindari partisi yang ditandai sebagai salah.

Alexis Wilke
sumber