Öncelikle hata yaptığımı ve bu RAID'deki verilerin çoğu için olmasa da çoğu için bir yedeğim olduğunu kabul edeyim . Verilerin geri kalanını kurtarma umudum hala var. Diskleri bir kurtarma uzmanı şirketine götürecek param yok.
Hata # 0,% 100 yedek almıyor. Biliyorum.
mdadm
4x3 TB'lık bir RAID5 sistemim var . Sürücüler / dev / sd [be], hepsi bir bölümlü /dev/sd[b-e]1
. Çok büyük sürücülerdeki RAID5'in riskli olduğunu biliyorum, ama yine de yaptım.
Son olaylar
RAID, iki sürücü arızasından sonra bozulur. Bir sürücü [/ dev / sdc] gerçekten kayboldu, diğeri [/ dev / sde] bir güç çevriminden sonra geri döndü, ancak RAID'e otomatik olarak yeniden eklenmedi. Bu yüzden sadece 2 aktif sürücüyle [/ dev / sdb ve / dev / sdd] 4 aygıtlı bir RAID kaldı.
Hata # 1, RAID'i geri yüklemek için sürücülerin dd kopyalarını kullanmıyor. Sürücüler ya da zamanım yoktu. Hata # 2, süper bloğun ve mdadm -E
kalan sürücülerin yedeğini almıyor .
Kurtarma girişimi
RAID'i bozulmuş modda yeniden monte ettim
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Sonra verilerime erişebildim. /dev/sdc
Bir yedek ile değiştirdim ; boş; özdeş sürücü.
Ben eski kaldırıldı /dev/sdc1
RAID dan
mdadm --fail /dev/md0 /dev/sdc1
Hata # 3, sürücüyü değiştirmeden önce bunu yapmayın
Daha sonra yeni bölümü /dev/sdc
böldüm ve RAID'e ekledim.
mdadm --add /dev/md0 /dev/sdc1
Daha sonra RAID'i geri yüklemeye başladı. ETA 300 dk. Süreci /proc/mdstat
% 2'ye kadar takip ettim ve sonra başka şeyler yapmaya gittim.
Sonucu kontrol etme
Birkaç saat sonra (ancak 300 dakikadan az), süreci kontrol ettim. Bir okuma hatası nedeniyle durmuştu /dev/sde1
.
Sorun gerçekten başladığı yer
Daha sonra RAID'den kaldırdım /dev/sde1
ve yeniden ekledim. Bunu neden yaptığımı hatırlayamıyorum; geç olmuştu.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Ancak /dev/sde1
artık yedek olarak işaretlendi. Bu yüzden doğru diziyi ve /dev/sdc1
eksik olduğunu düşündüğüm şeyi kullanarak --assume-clean kullanarak tüm diziyi yeniden oluşturmaya karar verdim .
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Bu işe yaradı, ancak bağlanmaya çalışırken dosya sistemi tanınmadı. (EXT4 olmalı).
Cihaz sırası
Daha sonra sahip olduğum bir yedeği kontrol /proc/mdstat
ettim ve sürücü siparişini buldum.
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]
Daha sonra bu RAID'in yaklaşık bir yıl önce bir sürücü kaybına uğradığını ve hatalı sürücüyü yedek bir sürücüyle değiştirerek ondan kurtulduğumu hatırladım. Bu, cihaz sırasını biraz karıştırmış olabilir ... bu nedenle sürücü [3] değil, yalnızca [0], [1], [2] ve [4].
Permute_array betiği ile sürücü siparişi bulmaya çalıştım: https://raid.wiki.kernel.org/index.php/Permute_array.pl ama bu doğru siparişi bulamadı.
Sorular
Şimdi iki ana sorum var:
Sürücülerdeki tüm süper blokları berbat ettim, ama sadece verdim:
mdadm --create --assume-clean
komutlar (bu yüzden verilerin üzerine yazmamalıydım
/dev/sd[bde]1
. Teorik olarak RAID'in/dev/sde1
doğru bir cihaz siparişi bulursam geri yüklenebileceğini doğru mu?RAID'de
/dev/sde1
[4] cihaz numarasının verilmesi önemli mi? İle oluşturduğumdamdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
[3] numarasına atanmıştır. Bunun parite bloklarının hesaplanmasıyla ilgili olup olmadığını merak ediyorum. Önemli olduğu ortaya çıkarsa, diziyi
/dev/sdb1[0]
eksik [1] ile nasıl yeniden oluşturabilirim/dev/sdd1[2]
/dev/sde1[4]
? Eğer işe yarayabilirsem bozulmuş modda başlatabilir ve yeni sürücüyü ekleyebilir/dev/sdc1
ve tekrar senkronize etmesine izin verebilirim .
Bana bunun en iyi eylem yolu olmayabileceğini belirtmek isterseniz sorun değil, ama bunu fark ettiğimi göreceksiniz. Herhangi bir öneriniz varsa harika olurdu.