Linux RAID5 dizisinde henüz başarısız olmayan bir diski nasıl güvenle değiştiririm?


26

4 diskte bir RAID5 dizisi (Linux md) yazılımım var.

Dizileri bozulmuş duruma getirmeden ve mümkünse çevrimiçi olmadan, disklerden birini yenisiyle değiştirmek istiyorum . Bu nasıl mümkün olabilir?

Bu önemlidir, çünkü ben istemem:

  • Diğer diskleri baskı altına alma riskini alın, böylece yeniden yapılanma sırasında bir kişi çökebilir,
  • “eşliksiz bir durumda” olma riskini aldığınız için bir süre güvenlik ağım yok.

Sanırım çevrimiçi olarak yapmak çok fazla soruyor ve ddeski diskin verilerini yenisine çevrimdışı olarak kopyalayıp değiştirmem gerekiyor, sonra değiştirmem gerekiyor, fakat teorik olarak mümkün olduğunu düşünüyorum ...

Bazı bağlamlar : Bu disklerin tümü 5.5 yıldan uzun bir süredir sürekli olarak dönüyor. Şu an için hala mükemmel çalışıyorlar ve hepsi (uzun) SMART kendi kendine testini geçiyorlar. Ancak, bu 4 diskten birinin çok daha uzun sürmeyeceğini düşünmek için nedenlerim var (öngörülen başarısızlık).

Yanıtlar:


36

Mdadm 3.3'ü kullanma

Yana mdadm3.3 Eğer bir varsa (3 Eylül 2013 yayınlandı), 3.2+ çekirdeği , başlayabilirsiniz olarak aşağıdaki gibidir:

# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1

sdd1değiştirmek istediğiniz cihaz sdc1, tercih edilen cihazdır ve dizinizde yedek olarak bildirilmesi gerekir.

Bu --withseçenek isteğe bağlıdır, belirtilmezse, mevcut yedekler kullanılacaktır.

Eski mdadm versiyonu

Not: Hala bir 3.2+ çekirdeğe ihtiyacınız var .

İlk olarak, (yerine bir yedek olarak yeni bir sürücü ekleyebilir md0ve sdc1sırasıyla RAID ve disk cihazı ile):

# mdadm /dev/md0 --add /dev/sdc1

Ardından, böyle bir kopya değiştirme işlemi sdd1başlatın ( başarısız olan cihaz):

# echo want_replacement > /sys/block/md0/md/dev-sdd1/state 

Sonuç

Sistem okunabilir tüm blokları 'dan' sdd1a kopyalayacaktır sdc1. Okunamayan bir bloğa gelirse, onu parite olarak yeniden yapılandırır. İşlem tamamlandığında, eski yedek (burada sdc1:) etkin hale gelir ve arızalanan sürücü başarısız olarak işaretlenir (F), böylece kaldırabilirsiniz.

Not: kredi , orijinal çözümü bulan frostschutz ve Ansgar Esztermann'a gider ( yinelenen soruya bakın ).

Eski çekirdekler

Diğer cevaplar şunu gösterir:

  • Johnny 'nin yaklaşımı : Raid6 dönüştürmek dizisi, ardından tekrar RAID5 diski, 'yerine'
  • Hauke Laging 'ın yaklaşımı : kısaca yeni disk bir raıd1 (ayna) bir parçası yapmak, RAID5 diziden diski çıkarın ve RAID5 dizisi (teorik) o ayna sürücü geri ekleyin ...

2
mdadm --add--replaceişe yaramadan önce hala gerekli . ( mdadm3.3, Ubuntu 15.10). Sonrasını yaparsanız , bir yedek eklendikten hemen --addsonra --replacekopyalama başlayacaktır. (Cihaz "değiştirme istiyor" olarak işaretli kalır).
Peter Cordes

3

Bu gereksinimlerin karşılanması mümkün olabilir

  1. internet üzerinden
  2. değiştirilecek disk haricinde herhangi bir diske baskı yapmayın

Ancak aşağıdakiler işe yarayabilse bile, muhtemelen "kitaplarda" bu tür bir öneri bulamazsınız ...

Fikir:

  1. OLD diskini diziden çıkarın (kısa bir süre için): mdadm --manage /dev/raid5 --fail /dev/OLD
  2. OLD ve NEW disklerinden yeni bir md cihazı (RAID-1) oluşturun: mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
  3. RAID-1'i tekrar diziye yerleştirin (/ dev / OLD yerine): mdadm --manage /dev/raid5 --re-add /dev/md42

:-) ne olmalı :

  1. RAID-5, / dev / md42'yi senkronize ediyor. Bu uzun sürmemeli.
  2. RAID-5 normalde tekrar çalışır durumdadır (ancak daha yavaştır).
  3. / dev / NEW, / dev / OLD ile senkronize edilir.

Senkronizasyon ilerlemesini izleyin ( cat /proc/mdstatveya mdadm --monitor). Eşitleme bittiğinde RAID-1'i RAID-5'ten çıkarın, RAID-1'i durdurun, / dev / NEW komutunu RAID-5'e yeniden ekleyin. Her şey yolunda giderse, sorunları önlemek için / dev / OLD üzerindeki mdraid süper bloklarının üzerine yazın:mdadm --zero-superblock

Uyarı: Hızlı RAID-5 senkronizasyonu yalnızca bir bitmap kullanıyorsanız işe yarayabilir. Eğer bir tane yoksa daha önce kukla bir RAID-5 (bitmap olmadan) ile bir test yapın. Veya bir tane ekleyin. En azından harici bir tane eklemek mümkün olmalı. Aksi takdirde, cihazları değiştirmeden önce RAID-5'i durdurmak gerekebilir. RAID-5'ten önyükleme yaparsanız, bu biraz karmaşık bir hal alacaktır.


3

RAID-6 (1 yerine 2 eşlik diski) çalıştırmayı sakıncası yoksa ve mdadmin 3.1.x veya üstünü kullanıyorsanız, ek bir eşlik diski eklemek için RAID-5 dizinizi RAID-6'ya dönüştürebilirsiniz. . Bununla birlikte, bu yeniden yapılanma sırasında diziyi stres altına sokacaktır. Yazma sırasında güncellenecek daha fazla eşlikli disk olduğundan, bazı performans etkileri vardır.

Ancak başarıyla tamamlanırsa, başarısız diskinizi yerinde tutabilirsiniz ve sonuçta başarısız olduğunda, dizi için eşlik korumasına sahip olursunuz. RAID6 olarak tutmak için beklemiyorsanız, diziyi RAID6'dan RAID5'e dönüştürebileceğinizi düşünüyorum.

Diziyi RAID-5 olarak tutmanın ve diziyi düşük moda getirmeden diski değiştirmenin çevrimiçi bir yolunu bilmiyorum, zira değiştirmeyi başarısız olarak işaretlemeniz gerektiğini düşünüyorum. DD kopya fikriniz, bunu yapmanın yolu olabilir.


@haukelaging FYI artık çekirdek 3.2'den beri mümkün, cevabımı görün .
Totor
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.