Etkin olmayan bir RAID cihazının tekrar çalışmasını nasıl sağlayabilirim?


30

Önyüklemeden sonra, RAID1 cihazım ( /dev/md_d0*) bazen çok komik bir duruma geliyor ve monte edemiyorum.

* Başlangıçta ben yarattım /dev/md0ama bir şekilde kendini değiştirdi /dev/md_d0.

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

RAID cihazı bir şekilde etkin değil gibi görünüyor :

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

Soru, cihazın tekrar aktif hale getirilmesidir (kullanma mdmadm, tahmin ediyorum).

(Diğer zamanlarda önyüklemeden sonra tamamdır (etkin) ve sorunsuz olarak elle monte edebilirim. Ancak içinde bulunduğum halde hala otomatik olarak monte edilmiyor /etc/fstab:

/dev/md_d0        /opt           ext4    defaults        0       0

Öyleyse bir bonus sorusu: RAID aygıtının /optönyükleme sırasında otomatik olarak takılmasını sağlamak için ne yapmalıyım ? )

Bu bir Ubuntu 9.10 iş istasyonu. Bu sorudaki RAID kurulumum hakkında geçmiş bilgiler .

Düzenleme : Benim /etc/mdadm/mdadm.confgibi görünüyor. Bu dosyaya hiç dokunmadım, en azından elden.

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

Gelen /proc/partitionsson girişi olan md_d0cihaz tekrar aktif olması gerçekleştiğinde, yeniden başlatıldıktan sonra, şimdi en azından. (Etkin değilken aynı olup olmayacağından emin değilim.)

Çözüm : Jimmy Hedman'ın önerdiği gibi , çıktılarını aldım mdadm --examine --scan:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

ve /etc/mdadm/mdadm.confana sorunu çözdüğü anlaşılan içine ekledi . Tekrar /etc/fstabkullanmak /dev/md0yerine değiştirdikten sonra (yerine /dev/md_d0), RAID cihazı da otomatik olarak monte edilir!

Yanıtlar:


25

Bonus sorunuz için:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

2
Tamam, mdadm --examine --scanüretilen ARRAY /dev/md0 level=raid1 num-devices=2 UUID=...(yerine md_d0 ait md0 Not!) Ben mdadm.conf dosyasında koymak (el, sudo ve bazı sorun olduğundan >>() "izin reddedildi" ve sudo edilir gerekli) ve aynı zamanda kullanım için fstab güncellenmiş tekrar md0 (md_d0 değil). Şimdi artık "etkin değil" sorunuyla karşılaşmış gibi görünmüyorum ve RAID cihazı önyükleme sırasında otomatik olarak / op üzerine monte ediliyor . Çok teşekkürler!
Jonik

3
Sorun yaşamanın nedeni sudo ... >> mdadm.conf, kabuğun sudo çalıştırılmadan önce yönlendirilen dosyaları açması. Komut su -c '.... >> mdadm.conf'çalışmalı.
Mei,

10

/etc/mdadm/mdadm.confLinux'un yeniden başlatmaya bağlayabilmesi için diziyi manuel olarak eklemem gerektiğini öğrendim . Aksi taktirde burada tam olarak neye sahipseniz elde edeceğim - md_d1etkin olmayan araçlar vs.

Conf-file aşağıdaki gibi görünmelidir - yani ARRAYher md cihazı için bir satır. Benim durumumda bu dosyada yeni diziler eksikti, ama eğer onları listelediyseniz, bu muhtemelen sorununuzu çözemez.

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Md aygıtı başına bir dizi ekleyin ve yukarıda verilen yorumdan sonra veya böyle bir yorum yoksa dosyanın sonuna ekleyin. UUID'leri aşağıdakileri yaparak elde edersiniz sudo mdadm -E --scan:

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Gördüğünüz gibi hemen hemen çıktıyı tarama sonucundan dosyaya kopyalayabilirsiniz.

Ubuntu masaüstü 10.04 LTS'yi çalıştırıyorum ve bu davranışı Ubuntu'nun sunucu sürümünden farklı olduğunu hatırladığım kadarıyla, çok uzun zaman önce sunucuda md aygıtlarımı yarattım yanlış olabilir. Belki de bazı seçenekleri kaçırmış olabilirim.

Neyse, diziyi conf-file içine eklemek hile yapmak gibi görünüyor. Yukarıdaki baskın 1'i yürüttüm ve 5 yıldır baskınım oldu.


1
Yani aslında şu anda kabul edilen cevapla aynı şeyi söylüyorsun, daha ayrıntılı bir şekilde? :) Yine de, +1, ilk gönderi hoş.
Jonik

7

Uyarı: Her şeyden önce, aşağıdakilerin ("--force" kullanımı nedeniyle) benim için riskli göründüğünü söylemeliyim ve telafi edilemez verileriniz varsa, herhangi birini denemeye başlamadan önce ilgili bölümlerin kopyalarını almanızı öneririm aşağıdaki şeyler. Ancak, bu benim için çalıştı.

Aynı problem vardı, bir dizi etkin değil gibi göründü ve burada diğerleri tarafından önerildiği gibi "mdadm --examine --scan> /etc/mdadm.conf" dahil hiçbir şey yapmadım.

Benim durumumda, bir sürücü değişiminden sonra RAID-5 dizisini başlatmaya çalıştığında, kirli olduğunu söylüyordu (via dmesg):

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

Etkin olmayan olarak görünmesini sağlamak /proc/mdstat:

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

Değiştirdiğim sürücü dışında tüm cihazların üzerlerinde aynı olayların olduğunu tespit ettim ( /dev/sdb4):

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

Bununla birlikte, dizi ayrıntıları mevcut 5 cihazdan 4'ünde olduğunu gösterdi:

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number   Major   Minor   RaidDevice State
       0       8        4        0      inactive dirty  /dev/sda4
       2       8       36        2      inactive dirty  /dev/sdc4
       3       8       52        3      inactive dirty  /dev/sdd4
       5       8       68        4      inactive dirty  /dev/sde4

(Yukarıdaki "Durum" sütunundaki bellekten geliyor, geri kaydırma arabamda bulamıyorum).

Diziyi durdurarak ve sonra tekrar birleştirerek bunu çözebildim:

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

Bu noktada, dizi 5 cihazdan 4'üyle çalışıyordu ve yeni cihazı ekleyebildim ve yeniden oluşturuluyordu. Dosya sistemine sorunsuzca erişebiliyorum.


4

FStab'daki bir hatanın sunucunun önyüklemesini engellediği Ubuntu 10.04 ile ilgili sorunlar yaşıyordum.

Bu komutu yukarıdaki çözümlerde belirtildiği gibi koştum:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Bu, sonuçları "mdadm --examine --scan" ila "/etc/mdadm/mdadm.conf" ye ekleyecektir.

Benim durumumda, bu:

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

Bu bir fakeraid 0'dır . Otomatik olarak montaj için / etc / fstab içindeki komutum :

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

Burada önemli olan, "beklemeden" ve "başarısız" olduğun. Nobootwait, önyüklemenizi engelleyen tüm sistem mesajlarını atlar. Benim durumumda, bu uzak bir sunucudaydı, bu yüzden gerekliydi.

Umarım bu bazı insanlara yardım eder.


Bu benim için yaptı. RAID disklerimi bir PCI express SATA kartıyla takılıyorum, bu nedenle açılışta sistemin henüz bu sürücüleri göremediğini tahmin ediyorum.
Michael Robinson

2

Md cihazınızı

mdadm -A /dev/md_d0

Bazı başlangıç ​​komut dosyalarının RAID üyelerinden biri keşfedilmeden ya da benzer bir sorundan önce çok erken başladığını varsayalım. Hızlı ve kirli bir geçici çözüm olarak, bu satırı /etc/rc.local dosyasına eklemelisiniz:

mdadm -A /dev/md_d0 && mount /dev/md_d0

Düzenleme: görünüşe göre /etc/mdadm/mdadm.conf dosyanız hala eski yapılandırma adını içeriyor. Bu dosyayı düzenleyin ve md0 oluşumlarını md_d0 ile değiştirin.


Tamam, bu vesilelerle cihaz zaman olduğu gibi, yeniden başlatıldıktan sonra aktif mount /dev/md_d0içinde /etc/rc.localçalışır cezası. mdadm -A /dev/md_d0diğer taraftan, her iki durumda da bu hata mesajıyla başarısız oluyor (bu yüzden bu &&operatörden önce kullanamadım ). Neyse, sorunun yarısı bunun için +1 olarak çözülmüş görünüyor.
Jonik

Aslında mdadm.conf, en azından doğrudan herhangi bir yapılandırma adı içermiyor (buna /proc/partitionsrağmen); düzenlenen soruyu görün. Ben asla mdadm.conf 'a dokunmadım - onu otomatikleştiren araç nedir?
Jonik

Kayıt için, kaldırıldı /etc/rc.local: ben her şeyin düzgün çalıştığını var göründüğü gibi geçici superuser.com/questions/117824/... :)
Jonik

2

Ben de benzer bir problem yaşamaya başladım ... sunucum md2'yi birleştirmemişti, aygıtlarla ilgili aygıtlar bölümleri büyüttükten sonra. Bu konuyu okurken md2 RAID aygıtının yeni bir UUID'ye sahip olduğunu ve makinenin eskisini kullanmaya çalıştığını gördüm.

Önerildiği gibi ... 'md2' çıktısını kullanarak

mdadm --examine --scan

Ben düzenlenmiş /etc/mdadm/mdadm.confve yukarıdaki komuta itibaren bir çıkış ile eski UUID hattını yerini ve sorunum gitti.


2

Bir şey yapıyormuş gibi yaptığın /dev/md[012346789}zaman gider /dev/md{126,127...}. /dev/md0takılı kalmaya devam ediyor /dev/md126ya da /dev/md127yapmanız gereken:

umount /dev/md127 veya umount /dev/md126.

Bu, sisteminizi durdurmadan komutları ve bazı uygulamaları yürütmenize izin vermek için geçicidir.


1

md_d0 : inactive sda4[0](S)RAID1 dizisi için yanlış görünüyor. Dizi etkin cihazları ve bir yedek cihaz var olduğunu göstermektedir görünüyor (, bir OK / aktif cihaz için başarısız bir cihaz ve hiçbir şey için) orada (F görürdünüz) (S ile gösterilir) bir RAID1 dizisi bu ISN için - bozulmuş çalışıyor olmamalıdır en az iki OK / aktif cihaz (ve bozulmuş bir dizi için, en az bir OK / aktif cihaz) ve hiç bir arızasız cihaz içermeyen bir RAID1 dizisini etkinleştiremezsiniz (yedek olarak) başka bir sürücü bozulduğunda etkin hale getirilinceye kadar verilerin bir kopyasını içermeyin). Bu /proc/mdstatçıktıyı doğru okuyorsam , diziyi şu anki durumunda etkinleştiremezsiniz.

Makinede dönmeyen motor sürücüleriniz var mı? Does ls /dev/sd*liste tüm sürücüler ve bölümleri normalde bu makinede görmeyi beklediğiniz o?


Görünüşe göre, Jimmy'nin cevabındaki tavsiyeyi uyguladıktan sonra (birkaç yeniden başlatmadan sonra yine de öyle görünüyor) tavsiyesini uyguladıktan sonra, aktif olmayan durumu tekrar üretemiyorum ... ... Güzel olan :) Her durumda teşekkürler!
Jonik

Bu durumla ilgili soruyu Linux RAID posta listesine getirdim ve şu cevabı aldım: spinics.net/lists/raid/msg61352.html
nh2

Sadece yazdığım gibi burada , echo active > /sys/block/md0/md/array_statebenim RAID yedek okunur ile yerine RAID0 tekrar diski eksik RAID1 olarak görünmesini sağlama getiren benim için çalıştı.
nh2

1

Dizinin donanım sorunu olmadığını varsayarak çalıştırmanın basit bir yolu ve diziyi başlatmak için yeterli sürücü / bölümünüz var:

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20  --run

Dizinin iyi olmasının sebebi ne olursa olsun, bir şey başlamasını ya da inşa etmesini engelliyor olabilir. Benim durumumda bunun nedeni, mdadm'in orijinal dizi adının md127 olduğunu bilmemesiydi ve tüm sürücüler bu dizi için çıkarıldı. Replugging yaparken manuel olarak bir araya gelmem gerekiyordu (muhtemelen mdadm dizinin zaten çevrimdışı eski dizi adı nedeniyle aktif olduğunu düşündüğü bir hatadır).

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.