Biarkan saya mengakui terlebih dahulu bahwa saya telah membuat kesalahan, dan bahwa saya memiliki cadangan untuk sebagian besar tetapi tidak semua data pada RAID ini. Saya masih memiliki harapan untuk memulihkan sisa data. Saya tidak punya uang untuk membawa drive ke perusahaan ahli pemulihan.
Kesalahan # 0, tidak memiliki cadangan 100%. Aku tahu.
Saya memiliki mdadm
sistem RAID5 4x3TB. Drive / dev / sd, semua dengan satu partisi /dev/sd[b-e]1
. Saya sadar bahwa RAID5 pada drive yang sangat besar berisiko, namun saya tetap melakukannya.
Peristiwa terbaru
RAID menjadi menurun setelah dua drive gagal. Satu drive [/ dev / sdc] benar-benar hilang, yang lain [/ dev / sde] muncul kembali setelah siklus daya, tetapi tidak secara otomatis ditambahkan kembali ke RAID. Jadi saya dibiarkan dengan 4 perangkat RAID dengan hanya 2 drive aktif [/ dev / sdb dan / dev / sdd].
Kesalahan # 1, tidak menggunakan salinan dd drive untuk mengembalikan RAID. Saya tidak punya drive atau waktu. Kesalahan # 2, tidak membuat cadangan superblok dan mdadm -E
drive yang tersisa.
Upaya pemulihan
Saya memasang kembali RAID dalam mode terdegradasi dengan
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Saya kemudian dapat mengakses data saya. Saya diganti /dev/sdc
dengan cadangan; kosong; drive identik.
Saya menghapus yang lama /dev/sdc1
dari RAID
mdadm --fail /dev/md0 /dev/sdc1
Kesalahan # 3, tidak melakukan ini sebelum mengganti drive
Saya kemudian mempartisi yang baru /dev/sdc
dan menambahkannya ke RAID.
mdadm --add /dev/md0 /dev/sdc1
Kemudian mulai mengembalikan RAID. ETA 300 menit. Saya mengikuti proses /proc/mdstat
hingga 2% dan kemudian melakukan hal-hal lain.
Memeriksa hasilnya
Beberapa jam (tetapi kurang dari 300 menit) kemudian, saya memeriksa prosesnya. Itu telah berhenti karena kesalahan baca pada /dev/sde1
.
Di sinilah masalah sebenarnya dimulai
Saya kemudian dihapus /dev/sde1
dari RAID dan menambahkannya kembali. Saya tidak ingat mengapa saya melakukan ini; sudah terlambat.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Namun, /dev/sde1
sekarang ditandai sebagai cadangan. Jadi saya memutuskan untuk membuat ulang seluruh array menggunakan --assume-clean menggunakan apa yang saya pikir adalah urutan yang benar, dan dengan /dev/sdc1
hilang.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Itu berhasil, tetapi sistem file tidak dikenali saat mencoba me-mount. (Seharusnya EXT4).
Pesanan perangkat
Saya kemudian memeriksa cadangan yang saya miliki /proc/mdstat
, dan saya menemukan urutan drive.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Saya kemudian ingat bahwa RAID ini mengalami kehilangan drive sekitar setahun yang lalu, dan pulih darinya dengan mengganti drive yang rusak dengan yang cadangan. Itu mungkin sedikit mengacak urutan perangkat ... jadi tidak ada drive [3] tetapi hanya [0], [1], [2], dan [4].
Saya mencoba untuk menemukan urutan drive dengan skrip Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl tetapi itu tidak menemukan urutan yang benar.
Pertanyaan
Saya sekarang memiliki dua pertanyaan utama:
Saya mengacaukan semua superblok pada drive, tetapi hanya memberikan:
mdadm --create --assume-clean
perintah (jadi saya seharusnya tidak menimpa data itu sendiri
/dev/sd[bde]1
. Apakah saya benar bahwa secara teori RAID dapat dipulihkan [dengan asumsi untuk saat yang/dev/sde1
ok] jika saya hanya menemukan urutan perangkat yang tepat?Apakah penting
/dev/sde1
memberikan nomor perangkat [4] dalam RAID? Ketika saya membuatnya denganmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
itu diberi nomor [3]. Saya ingin tahu apakah itu relevan dengan perhitungan blok paritas. Jika ternyata penting, bagaimana saya bisa membuat ulang array dengan
/dev/sdb1[0]
hilang [1]/dev/sdd1[2]
/dev/sde1[4]
? Jika saya bisa membuatnya berfungsi, saya bisa memulainya dalam mode terdegradasi dan menambahkan drive baru/dev/sdc1
dan membiarkannya melakukan sinkronisasi ulang lagi.
Tidak apa-apa jika Anda ingin menunjukkan kepada saya bahwa ini mungkin bukan tindakan terbaik, tetapi Anda akan menemukan bahwa saya menyadari hal ini. Alangkah baiknya jika ada yang punya saran.