RAID bozulmuş, bölümler eksik


1

İş yerinde çok garip bir sorun yaşıyoruz. Ubuntu sunucumuzda RAID1 ile ayarlanan 6 sürücü vardır:

/dev/md0, consisting of:
/dev/sda1
/dev/sdb1

/dev/md1, consisting of:
/dev/sda2
/dev/sdb2

/dev/md2, consisting of:
/dev/sda3
/dev/sdb3

/dev/md3, consisting of:
/dev/sdc1
/dev/sdd1

/dev/md4, consisting of:
/dev/sde1
/dev/sdf1

Gördüğünüz gibi, md0, md1 ve md2'nin hepsi aynı 2 sürücüyü kullanır (3 bölüme ayrılır). Ayrıca bunun, donanım baskını değil, Ubuntu yazılım saldırısı üzerinden yapıldığını da not etmek gerekiyor.

Bugün /md0 RAID1 dizisi bozulmuş olarak görünüyor - eksik /dev/sdb1 sürücü. Ama o zamandan beri /dev/sdb1 sadece bir bölümdür (ve /dev/sdb2 ve /dev/sdb3 gayet iyi çalışıyorlar), açıkça AWOL’a giden sürücü değil, bölümün kendisi de kayıp.

Bu nasıl mümkün olabilir? Ve düzeltmek için ne yapabiliriz?

Benim kedi çıkışı /proc/mdstat:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md1 : active raid1 sda2[0] sdb2[1]
      24006528 blocks super 1.2 [2/2] [UU]


md2 : active raid1 sda3[0] sdb3[1]
      1441268544 blocks super 1.2 [2/2] [UU]


md0 : active raid1 sda1[0]
      1464710976 blocks super 1.2 [2/1] [U_]


md3 : active raid1 sdd1[1] sdc1[0]
      2930133824 blocks super 1.2 [2/2] [UU]


md4 : active raid1 sdf2[1] sde2[0]
      2929939264 blocks super 1.2 [2/2] [UU]


unused devices: <none>

Bilginize: Aşağıdakileri denedim:

mdadm /dev/md0 --add /dev/sdb1

Ancak bu hatayı aldım:

mdadm: add new device failed for /dev/sdb1 as 2: Invalid argument

Muhtemelen dizinin bir parçası olduğundan ve böylece zaten eklenmiş olduğundan 'geçersiz argüman' almışsınızdır. Bu nedenle Rob'ın aşağıdaki cevabı, tekrar eklemeden önce ilk önce bir kaldırmayı yapar.
Hennes

Yanıtlar:


1

İlk bakış /var/log/messages (yani, dmesg) neden / dev / sdb1'in RAID'den atıldığını görmek için. Muhtemelen, / dev / sdb1'e okunurken veya yazarken bir hata oluştu.

Eğer koşarsan smartctl -a /dev/sdb, Diskin sıfır olmayan bir değere sahip olduğunu göreceğinizi sanıyorum reallocated sectors veya current pending sectors. Yeniden tahsis edilmiş bir sektöre sahipse, disk bozulmaya başlar ve bu bir üretim sunucusuysa derhal değiştirilmelidir. Yapmana rağmen mdadm /dev/md0 -r /dev/sdb1 bunu takiben mdadm /dev/md0 -a /dev/sdb1 bölümü kaldırmak ve yeniden eklemek için, verilerinizi yedeklemekten ve / dev / sdb'yi hemen değiştirmekten daha iyidir.

Diski değiştirmek için aşağıdakileri yapın:

  1. Verilerinizi yedekleyin ve makineyi kapatın.
  2. Her sürücünün seri numarasını kaydedin (hangisinin değiştirilmesi gerektiğini bilirsiniz).
  3. Yeni sabit diskinizi takın, makineyi önyükleyin ve aygıt adlarının değişmediğini doğrulayın. Cihaz adları değiştiyse, bir parça kağıt alın ve hangi yeni cihaz adının her eski adı ve seri numarasına karşılık geldiğini not edin. Bunu zaten biliyor olabilirsiniz, ancak kullanabilirsiniz. cat /proc/mdstat hangi cihaz adlarının RAID’ler tarafından kullanıldığını görmek fdisk -l veya smartctl -a <device> Seri numaralarını kontrol etmek için.
  4. Yeni diski uygun şekilde bölümlere ayırın (diğer disklerle aynı bölüm boyutlarını kullanarak).
  5. Her RAID için, yeni diskten uygun bölümü mdadm <md device> -a <new disk partition> (Oh, ve siz soracak olursanız ... evet, RAID yazılımı olduğu Bu harika. Bir Linux RAID1 yazılımına istediğiniz kadar ayna ekleyebilirsiniz.)
  6. Yeniden oluşturma durumunu düzenli aralıklarla kontrol edin. cat /proc/mdstat.
  7. Yeniden oluşturma tamamlandığında, çalıştır mdadm -f <md device> -f <bad disk's partition> ardından kötü diski kullanan her RAID1 için mdadm -f -f komutunu kullanın. Bu, hatalı diskin bölümünü başarısız olarak işaretler, ardından RAID'den kaldırır.
  8. Makineyi kapatın ve bozuk diski çıkarın.
  9. 1'den fazla aynanın ilerlemesini istiyorsanız, bir veya daha fazla ek disk için 3-6. Adımları tekrarlayın. Aksi takdirde, RAID'leri yeniden 2 cihaza kadar yeniden boyutlandırmak için mdadm kullanmanız gerekir (aksi takdirde md sizi her yeniden başlattığınızda bozulmuş diziler hakkında uyarır).

NOT: SMART diag'leri / dev / sdb için kritik bir hata rapor etmezse, / dev / sdb1 / dev / md0 işlevinin zaman aşımı eşiğini aştığı için atılmış olabilir. Bu durumda, / dev / sdb tamamen iyi olabilir, ancak verilerinizi yedeklemek ve bir veya daha fazla ek ayna eklemek zarar vermez.


0

İlk önce, bu bölümü yedekleyin!

Ardından, önce bu sürücüyü diziden çıkarın, sonra yeniden ekleyin - ancak dmesg'i ilk önce kaldırılmasının nedeni olarak kontrol edin ...


Fakat bu bölüm (sdb1) sda1'deki içeriğini olduğu gibi değil mi? Aksi halde sistem çalışmayacaktır. Yoksa seni yanlış mı anladım? :)
reano

Haklısın, içerikleri de sda1'de. Ancak, beklendiği gibi davranmayan bir dosya sistemi üzerinde çalışacaksanız, güvenli yöntem ilk önce bir yedekleme yapmaktır. Her şey yolunda giderse, bu desteğe ihtiyacınız olmayacak.
Hennes

@ İlk önce yedekleme yapmayı denemeden yeniden oluşturma işlemindeki tehlikeyi geri kalan kalan diskin yeniden oluşturma işlemi sırasında başarısız olabileceğidir. Önce yedeklemeyi yaparsanız, kalan disk başarısız olmadan önce en azından okuyabileceğiniz dosyaları aldınız. Bu nedenle, daha fazla artıklık düzeyi eklemek iyi bir fikirdir (RAID1 yazılımında veya örneğin RAID5'ten RAID6'ya gitmek için ek aynalar).
rob
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.