Beberapa waktu lalu saya punya sistem RAID5 di rumah. Salah satu dari 4 disk gagal tetapi setelah menghapus dan meletakkannya kembali sepertinya OK jadi saya memulai sinkronisasi ulang. Ketika selesai saya menyadari, betapa ngerinya saya, bahwa 3 dari 4 disk gagal. Namun saya tidak percaya itu mungkin. Ada beberapa partisi pada disk, masing-masing bagian dari array RAID yang berbeda.
- md0 adalah array RAID1 yang terdiri dari sda1, sdb1, sdc1 dan sdd1.
- md1 adalah array RAID5 yang terdiri dari sda2, sdb2, sdc2 dan sdd2.
- md2 adalah array RAID0 yang terdiri dari sda3, sdb3, sdc3 dan sdd3.
md0 dan md2 melaporkan semua disk sementara md1 melaporkan 3 gagal (sdb2, sdc2, sdd2). Kesalahpahaman saya bahwa ketika hard drive gagal semua partisi harus hilang bukan hanya yang tengah.
Pada saat itu saya mematikan komputer dan mencabut drive. Sejak itu saya menggunakan komputer itu dengan disk baru yang lebih kecil.
Apakah ada harapan memulihkan data? Bisakah saya meyakinkan mdadm bahwa disk saya sebenarnya berfungsi? Satu-satunya disk yang mungkin benar-benar memiliki masalah adalah sdc tetapi satu juga dilaporkan oleh array lainnya.
Memperbarui
Saya akhirnya mendapat kesempatan untuk menghubungkan disk lama dan mem-boot mesin ini dari SystemRescueCd. Segala sesuatu di atas ditulis dari memori. Sekarang saya punya beberapa data. Berikut ini adalah output darimdadm --examine /dev/sd*2
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:40:48 2010
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Checksum : 68b48835 - correct
Events : 53204
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 2 0 active sync /dev/sda2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdb2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Checksum : 68b4894a - correct
Events : 53205
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 18 1 active sync /dev/sdb2
0 0 0 0 0 removed
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdc2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48975 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 2 8 34 2 active sync /dev/sdc2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
/dev/sdd2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 1
Update Time : Mon Aug 23 11:44:54 2010
State : clean
Active Devices : 1
Working Devices : 2
Failed Devices : 2
Spare Devices : 1
Checksum : 68b48983 - correct
Events : 53210
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 4 8 50 4 spare /dev/sdd2
0 0 0 0 0 removed
1 1 0 0 1 faulty removed
2 2 8 34 2 active sync /dev/sdc2
3 3 0 0 3 faulty removed
4 4 8 50 4 spare /dev/sdd2
Tampaknya segala sesuatu telah berubah sejak boot terakhir. Jika saya membaca ini dengan benar sda2, sdb2 dan sdc2 berfungsi dan mengandung data yang disinkronkan dan sdd2 adalah cadangan. Saya ingat dengan jelas melihat 3 disk gagal tetapi ini adalah kabar baik. Namun array masih tidak berfungsi:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md125 : inactive sda2[0](S) sdb2[1](S) sdc2[2](S)
1875194880 blocks
md126 : inactive sdd2[4](S)
625064960 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
md0 tampaknya diubah namanya menjadi md127. md125 dan md126 sangat aneh. Mereka harus menjadi satu array bukan dua. Itu dulu disebut md1. md2 benar-benar hilang tapi itu swap saya jadi saya tidak peduli.
Saya dapat memahami nama-nama yang berbeda dan itu tidak terlalu penting. Tetapi mengapa sebuah array dengan 3 disk "sinkronisasi aktif" tidak dapat dibaca? Dan ada apa dengan sdd2 berada di array yang terpisah?
Memperbarui
Saya mencoba yang berikut setelah mencadangkan superblok:
root@sysresccd /root % mdadm --stop /dev/md125
mdadm: stopped /dev/md125
root@sysresccd /root % mdadm --stop /dev/md126
mdadm: stopped /dev/md126
Sejauh ini baik. Karena sdd2 adalah cadangan, saya belum ingin menambahkannya.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2 missing
mdadm: cannot open device missing: No such file or directory
mdadm: missing has no superblock - assembly aborted
Rupanya saya tidak bisa melakukan itu.
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdb2[1](S) sda2[0](S)
1875194880 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Itu juga tidak berhasil. Mari kita coba dengan semua disk.
mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c,d}2
mdadm: /dev/md1 assembled from 1 drive and 1 spare - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)
2500259840 blocks
md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
64128 blocks [4/4] [UUUU]
unused devices: <none>
Tidak berhasil Berdasarkan jawaban ini saya berencana untuk mencoba:
mdadm --create /dev/md1 --assume-clean --metadata=0.90 --bitmap=/root/bitmapfile --level=5 --raid-devices=4 /dev/sd{a,b,c}2 missing
mdadm --add /dev/md1 /dev/sdd2
Apakah ini aman?
Memperbarui
Saya menerbitkan skrip parser superblock yang saya gunakan untuk membuat tabel itu di komentar saya. Mungkin seseorang akan merasakan manfaatnya. Terima kasih atas seluruh bantuan Anda.
sumber
mdadm --re-add
bukan yang Anda cari. Apakah Anda melakukan tes memori baru-baru ini? Apakah Anda memiliki pesan log yang terkait dengan kegagalan array?mdadm -A /dev/md1 /dev/sd{b,c,d}2
(mungkin--force
)? (Jika Anda belum melakukannya, cadangkan superblock terlebih dahulu.)/dev/sdd2
bisa dalam array yang terpisah walaupun memiliki UUID yang sama dengansd{a,b,c}2
.Jawaban:
Pertama periksa disk, coba jalankan smart selftest
Mungkin perlu beberapa jam untuk menyelesaikannya, tetapi periksa status tes setiap drive setiap beberapa menit, misalnya
Jika status disk melaporkan tidak selesai karena kesalahan baca, maka disk ini harus dianggap tidak aman untuk pemasangan kembali md1. Setelah selesai selftest, Anda dapat mulai mencoba menyusun kembali array Anda. Secara opsional, jika Anda ingin ekstra hati-hati, pindahkan disk ke komputer lain sebelum melanjutkan (hanya untuk ram buruk / pengontrol / dll).
Baru-baru ini, saya punya kasus persis seperti ini. Satu drive gagal, saya menambahkan kembali dalam array tetapi selama membangun kembali 3 dari 4 drive gagal sama sekali. Isi / proc / mdadm sama dengan milik Anda (mungkin tidak dalam urutan yang sama)
Tapi saya beruntung dan memasang kembali susunan dengan ini
Dengan melihat --examine output yang Anda berikan, saya dapat memberitahu skenario berikut terjadi: sdd2 gagal, Anda menghapusnya dan menambahkannya kembali, Jadi itu menjadi drive cadangan yang mencoba untuk membangun kembali. Tetapi saat membangun kembali sda2 gagal dan kemudian sdb2 gagal. Jadi penghitung peristiwa lebih besar di sdc2 dan sdd2 yang merupakan drive aktif terakhir dalam array (meskipun sdd tidak memiliki kesempatan untuk membangun kembali dan itu adalah yang paling usang dari semua). Karena perbedaan dalam penghitung acara, --force akan diperlukan. Jadi, Anda juga bisa mencoba ini
Untuk menyimpulkan, saya pikir jika perintah di atas gagal, Anda harus mencoba membuat ulang array seperti ini:
Jika Anda melakukan itu
--create
,missing
bagian itu penting, jangan mencoba untuk menambahkan drive keempat dalam array, karena konstruksi akan dimulai dan Anda akan kehilangan data Anda . Membuat array dengan drive yang hilang, tidak akan mengubah kontennya dan Anda akan memiliki kesempatan untuk mendapatkan salinan di tempat lain (raid5 tidak bekerja dengan cara yang sama seperti raid1).Jika gagal memunculkan array, coba solusi ini (skrip perl) di sini Membuat array
Jika akhirnya Anda berhasil membawa array ke atas, sistem file akan menjadi najis dan mungkin rusak. Jika satu disk gagal selama pembangunan kembali, diharapkan array akan berhenti dan membeku tidak melakukan penulisan ke disk lain. Dalam hal ini dua disk gagal, mungkin sistem sedang melakukan permintaan tulis yang tidak dapat diselesaikan, jadi ada kemungkinan kecil Anda kehilangan beberapa data, tetapi juga kemungkinan Anda tidak akan pernah melihatnya :-)
sunting: beberapa klarifikasi ditambahkan.
sumber
mdadm --assemble /dev/md1 /dev/sd[abc]2 --force
bekerja. Terima kasih. Anda menyimpan data saya! :) Saya tidak akan mencoba untuk menambahkan disk keempat karena 3 pertama tidak sebaik yang saya pikir sebelumnya. Selftest yang terungkap masing-masing memiliki 10-20 blok yang tidak dapat dibaca. Saya merasa bodoh karena tidak memeriksa ini dulu.--assume-clean
(Anda melakukannya) itu tidak akan.Saya mengalami banyak masalah saat saya menggunakan
mdadm
, tetapi tidak pernah kehilangan data. Anda harus menghindari--force
opsi tersebut, atau menggunakannya dengan sangat hati-hati, karena Anda dapat kehilangan semua data Anda. Silakan posting Anda/etc/mdadm/mdadm.conf
sumber