Veriler Nasıl Kurtarılır ve Arızalı Yazılım RAID'leri Yeniden Oluşturulur - Bölüm 8


Bu RAID serisinin önceki makalelerinde sıfırdan RAID kahramanına dönüştünüz. Çeşitli yazılım RAID yapılandırmalarını inceledik ve her birinin temellerini, özel senaryonuza bağlı olarak neden bunlardan birine veya diğerine yönelmenizin nedenleriyle birlikte açıkladık.

Bu kılavuzda, disk arızası durumunda veri kaybı olmadan bir yazılım RAID dizisinin nasıl yeniden oluşturulacağını tartışacağız. Kısaca anlatmak gerekirse, yalnızca RAID 1 kurulumunu ele alacağız; ancak kavramlar ve komutlar tüm durumlar için aynı şekilde geçerlidir.

RAID Test Senaryosu

Devam etmeden önce lütfen bu serinin 3. Bölümünde verilen talimatları izleyerek bir RAID 1 dizisi kurduğunuzdan emin olun: Linux'ta RAID 1 (Ayna) nasıl kurulur.

Mevcut durumumuzdaki tek değişiklikler şunlar olacaktır:

1) CentOS'un (v7) söz konusu makalede kullanılandan (v6.5) farklı bir sürümü ve
2) /dev/sdb ve /dev/sdc için farklı disk boyutları (her biri 8 GB).

Ayrıca, zorlama modunda SELinux etkinleştirildiyse, ilgili etiketleri RAID aygıtını bağlayacağınız dizine eklemeniz gerekecektir. Aksi takdirde, onu monte etmeye çalışırken bu uyarı mesajıyla karşılaşırsınız:

Bunu çalıştırarak düzeltebilirsiniz:


restorecon -R /mnt/raid1

RAID İzlemeyi Ayarlama

Bir depolama cihazının arızalanmasının çeşitli nedenleri vardır (Ancak SSD'ler bunun gerçekleşme olasılığını büyük ölçüde azaltmıştır), ancak nedenden bağımsız olarak sorunların her an ortaya çıkabileceğinden emin olabilirsiniz ve arızalı cihazı değiştirmeye hazırlıklı olmanız gerekir. ve verilerinizin kullanılabilirliğini ve bütünlüğünü sağlamak.

Önce bir tavsiye. RAID'lerinizin durumunu kontrol etmek için /proc/mdstat'ı inceleyebildiğinizde bile, monitör + taramada mdadm'i çalıştırmaktan oluşan daha iyi ve zaman kazandıran bir yöntem vardır. Uyarıları önceden tanımlanmış bir alıcıya e-posta yoluyla gönderecek olan mod.

Bunu ayarlamak için /etc/mdadm.conf dosyasına aşağıdaki satırı ekleyin:


MAILADDR user@<domain or localhost>

Benim durumumda:


MAILADDR gacanepa@localhost

mdadm'i monitör + tarama modunda çalıştırmak için aşağıdaki crontab girişini root olarak ekleyin:


@reboot /sbin/mdadm --monitor --scan --oneshot

Varsayılan olarak mdadm, RAID dizilerini her 60 saniyede bir kontrol edecek ve bir sorun bulması durumunda bir uyarı gönderecektir. Yukarıdaki crontab girişine saniye miktarıyla birlikte --delay seçeneğini ekleyerek bu davranışı değiştirebilirsiniz (örneğin, --delay 1800, 30 dakika anlamına gelir).

Son olarak mutt veya mailx gibi bir Posta Kullanıcı Aracısı'nın (MUA) kurulu olduğundan emin olun. Aksi takdirde herhangi bir uyarı almayacaksınız.

Bir dakika içinde mdadm tarafından gönderilen bir uyarının nasıl göründüğünü göreceğiz.

Arızalı bir RAID Depolama Aygıtını Simüle Etme ve Değiştirme

RAID dizisindeki depolama aygıtlarından biriyle ilgili bir sorunu simüle etmek için --manage ve --set-faulty seçeneklerini aşağıdaki gibi kullanacağız:


mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

Bu, /proc/mdstat'da görebileceğimiz gibi, /dev/sdc1'in hatalı olarak işaretlenmesiyle sonuçlanacaktır:

Daha da önemlisi, aynı uyarıyı içeren bir e-posta uyarısı alıp almadığımıza bir bakalım:

Bu durumda aygıtı yazılımsal RAID dizisinden kaldırmanız gerekecektir:


mdadm /dev/md0 --remove /dev/sdc1

Daha sonra bunu fiziksel olarak makineden çıkarabilir ve bir yedek parçayla değiştirebilirsiniz (/dev/sdd, burada fd türünde bir bölüm daha önce oluşturulmuştur):


mdadm --manage /dev/md0 --add /dev/sdd1

Şansımız var ki sistem, yeni eklediğimiz parçayla diziyi otomatik olarak yeniden oluşturmaya başlayacak. Bunu, /dev/sdb1'i hatalı olarak işaretleyerek, diziden kaldırarak ve tecmint.txt dosyasına / adresinden hâlâ erişilebildiğinden emin olarak test edebiliriz. mnt/raid1:


mdadm --detail /dev/md0
mount | grep raid1
ls -l /mnt/raid1 | grep tecmint
cat /mnt/raid1/tecmint.txt

Yukarıdaki resim, /dev/sdc1'in yerine diziye /dev/sdd1'i ekledikten sonra, verilerin yeniden oluşturulmasının sistem tarafından müdahaleye gerek kalmadan otomatik olarak gerçekleştirildiğini açıkça göstermektedir. bizim açımızdan.

Kesinlikle gerekli olmasa da, arızalı cihazı iyi bir sürücüyle değiştirme işleminin anında yapılabilmesi için yedek bir cihazın hazır bulundurulması harika bir fikirdir. Bunu yapmak için /dev/sdb1 ve /dev/sdc1'i yeniden ekleyelim:


mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md0 --add /dev/sdc1

Fazlalık Kaybından Kurtarma

Daha önce açıklandığı gibi mdadm, bir disk arızalandığında verileri otomatik olarak yeniden oluşturur. Peki dizideki 2 disk arızalanırsa ne olur? /dev/sdb1 ve /dev/sdd1'i hatalı olarak işaretleyerek bu senaryoyu simüle edelim:


umount /mnt/raid1
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm --stop /dev/md0
mdadm --manage --set-faulty /dev/md0 /dev/sdd1

Diziyi o anda oluşturulduğu şekilde (veya --assume-clean seçeneğini kullanarak) yeniden oluşturma girişimleri veri kaybına neden olabilir, bu nedenle son çare olarak bırakılmalıdır.

Verileri /dev/sdb1'den benzer bir disk bölümüne (/dev/sde1) kurtarmayı deneyelim; bunun için bir bölüm oluşturmanız gerektiğini unutmayın: Devam etmeden önce /dev/sde içine fd yazın) ddrescue'yu kullanarak:


ddrescue -r 2 /dev/sdb1 /dev/sde1

Lütfen bu noktaya kadar RAID dizisinin parçası olan /dev/sdb veya /dev/sdd bölümlerine dokunmadığımızı unutmayın.

Şimdi diziyi /dev/sde1 ve /dev/sdf1 kullanarak yeniden oluşturalım:


mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

Gerçek bir durumda, genellikle orijinal diziyle aynı cihaz adlarını (yani, diziden sonra /dev/sdb1 ve /dev/sdc1) kullanacağınızı lütfen unutmayın. Arızalı diskler yenileriyle değiştirildi.

Bu makalede, diziyi yepyeni disklerle yeniden oluşturmak ve orijinal arızalı sürücülerle karışıklığı önlemek için ekstra aygıtlar kullanmayı seçtim.

Dizi yazmaya devam edilip edilmeyeceği sorulduğunda Y yazın ve Enter'a basın. Dizi başlatılmalı ve ilerlemesini aşağıdakilerle izleyebilmelisiniz:


watch -n 1 cat /proc/mdstat

İşlem tamamlandığında RAID içeriğinize erişebilmeniz gerekir:

Özet

Bu makalede RAID hatalarından ve artıklık kayıplarından nasıl kurtulacağımızı inceledik. Ancak bu teknolojinin bir depolama çözümü olduğunu ve yedeklemelerin yerini OLMADIĞINI unutmamanız gerekir.

Bu kılavuzda açıklanan ilkeler, tüm RAID kurulumlarının yanı sıra bu serinin bir sonraki ve son kılavuzunda (RAID yönetimi) ele alacağımız kavramlar için de geçerlidir.

Bu makaleyle ilgili herhangi bir sorunuz varsa, aşağıdaki yorum formunu kullanarak bize bir not bırakmaktan çekinmeyin. Sizden haber almak için sabırsızlanıyoruz!