2010-03-09 09:55:18 +0000 2010-03-09 09:55:18 +0000
31
31

Jak przywrócić do pracy nieaktywne urządzenie RAID?

Po uruchomieniu systemu, moje urządzenie RAID1 (/dev/md_d0 *) czasami przechodzi w jakiś śmieszny stan i nie mogę go zamontować.

* Pierwotnie utworzyłem /dev/md0, ale w jakiś sposób zmieniło się ono w /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

Urządzenie RAID wydaje się być w jakiś sposób nieaktywne:

# 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.

Pytanie brzmi, jak sprawić, aby urządzenie było ponownie aktywne (używając mdmadm, jak przypuszczam)?

(W innych przypadkach urządzenie jest w porządku (aktywne) po starcie, i mogę je zamontować ręcznie bez problemów. Ale nadal nie montuje się automatycznie, nawet jeśli mam go w /etc/fstab:

/dev/md_d0 /opt ext4 defaults 0 0

Więc pytanie bonusowe: *co powinienem zrobić, aby urządzenie RAID automatycznie montowało się w /opt podczas startu systemu? * )

To jest stacja robocza Ubuntu 9.10. Podstawowe informacje o mojej konfiguracji RAID w tym pytaniu ](https://superuser.com/questions/101630/creating-a-raid1-partition-with-mdadm-on-ubuntu).

Edit : Moje /etc/mdadm/mdadm.conf wygląda tak. Nigdy nie dotykałem tego pliku, przynajmniej ręcznie.

# 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

W /proc/partitions ostatnim wpisem jest md_d0 przynajmniej teraz, po restarcie, kiedy urządzenie jest znowu aktywne. (Nie jestem pewien, czy tak samo będzie, gdy urządzenie będzie nieaktywne.)

Rozwiązanie : zgodnie z sugestią Jimmy Hedman , wziąłem wyjście z mdadm --examine --scan:

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

i dodałem go w /etc/mdadm/mdadm.conf, co wydaje się, że naprawiło główny problem. Po zmianie /etc/fstab, aby ponownie używać /dev/md0 (zamiast /dev/md_d0), urządzenie RAID jest również automatycznie montowane!

Odpowiedzi (9)

25
25
25
2010-03-10 12:34:08 +0000

Na pytanie bonusowe:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf
11
11
11
2011-08-01 02:41:23 +0000

Odkryłem, że muszę dodać tablicę ręcznie w /etc/mdadm/mdadm.conf, aby Linux zamontował ją przy ponownym uruchomieniu. W przeciwnym razie dostaję dokładnie to co masz tutaj - md_d1-urządzenia, które są nieaktywne itp.

Plik conf powinien wyglądać jak poniżej - tzn. jedna linia ARRAY dla każdego urządzenia md. W moim przypadku brakowało nowych tablic w tym pliku, ale jeśli masz je wymienione, to prawdopodobnie nie jest to rozwiązanie twojego problemu.

# 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

Dodaj jedną tablicę na każde urządzenie md, i dodaj je po komentarzu zawartym powyżej, lub jeśli taki komentarz nie istnieje, na końcu pliku. Identyfikatory UUID uzyskasz wykonując operację 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

Jak widzisz, możesz po prostu skopiować dane wyjściowe ze scan-result do pliku.

I uruchomić ubuntu desktop 10.04 LTS, i o ile pamiętam to zachowanie różni się od wersji serwerowej Ubuntu, jednak było to tak dawno temu stworzyłem moje md-devices na serwerze, że mogę się mylić. Może być też tak, że po prostu przegapiłem jakąś opcję.

W każdym razie, dodanie tablicy w pliku conf wydaje się załatwiać sprawę. Używam powyższego raid 1 i raid 5 od lat bez żadnych problemów.

7
7
7
2012-03-21 22:21:47 +0000

Ostrzeżenie: Po pierwsze pozwól mi powiedzieć, że poniższe rozwiązanie (ze względu na użycie “–force”) wydaje mi się ryzykowne i jeśli masz nieodwracalne dane, zalecałbym wykonanie kopii partycji zanim zaczniesz próbować którejkolwiek z poniższych rzeczy. Jednakże, to zadziałało dla mnie.

Miałem ten sam problem, z tablicą pokazującą się jako nieaktywna, i nic co zrobiłem, włączając “mdadm –examine –scan >/etc/mdadm.conf”, jak sugerowali inni tutaj, nie pomogło w ogóle.

W moim przypadku, kiedy próbował uruchomić macierz RAID-5 po wymianie dysku, mówił, że jest brudna (przez 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.

Powodując, że pokazywała się jako nieaktywna w /proc/mdstat:

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

Zauważyłem, że wszystkie urządzenia miały te same zdarzenia na nich, z wyjątkiem dysku, który wymieniłem (/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

Jednak szczegóły macierzy pokazały, że miała ona 4 z 5 dostępnych urządzeń:

[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

(Powyższe jest z pamięci na kolumnie “State”, nie mogę jej znaleźć w moim buforze przewijania wstecz).

Udało mi się to rozwiązać poprzez zatrzymanie tablicy, a następnie ponowne jej złożenie:

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

W tym momencie tablica była w górze, działała z 4 z 5 urządzeń, a ja byłem w stanie dodać urządzenie zastępcze i jest ona odbudowywana. Mam dostęp do systemu plików bez problemu.

5
5
5
2012-04-24 01:29:43 +0000

Miałem problemy z Ubuntu 10.04, gdzie błąd w FStab uniemożliwiał uruchomienie serwera.

Uruchomiłem tę komendę, jak wspomniano w powyższych rozwiązaniach:

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

Spowoduje to dołączenie wyników z “mdadm –examine –scan” do “/etc/mdadm/mdadm.conf”

W moim przypadku było to:

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

To jest fakeraid 0. Moje polecenie w /etc/fstab do automatycznego montowania to:

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

Ważną rzeczą jest to, że masz “nobootwait” i “nofail”. Nobootwait pominie wszelkie komunikaty systemowe, które uniemożliwiają uruchomienie systemu. W moim przypadku było to na zdalnym serwerze, więc było to niezbędne.

Mam nadzieję, że to pomoże niektórym ludziom.

2
2
2
2010-03-09 10:46:27 +0000

Możesz aktywować swoje urządzenie md za pomocą

mdadm -A /dev/md_d0

Przypuszczam, że jakiś skrypt startowy uruchamia się zbyt wcześnie, zanim jeden z członków RAID został wykryty lub jakiś podobny problem. Jako szybkie i brudne obejście, powinieneś być w stanie dodać tę linię do /etc/rc.local :

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

Edycja: najwyraźniej twój plik /etc/mdadm/mdadm.conf nadal zawiera starą nazwę konfiguracji. Edytuj ten plik i zastąp występowanie md0 przez md0.

2
2
2
2011-08-15 01:56:27 +0000

Miałem podobny problem… mój serwer nie chciał zamontować md2 po tym, jak powiększyłem partycje urządzeń towarzyszących. Po przeczytaniu tego wątku stwierdziłem, że urządzenie RAID md2 miało nowy UUID, a maszyna próbowała używać starego.

Zgodnie z sugestią… używając wyjścia ‘md2’ z

mdadm --examine --scan

edytowałem /etc/mdadm/mdadm.conf i zastąpiłem starą linijkę UUID linijką z powyższego polecenia i mój problem zniknął.

2
2
2
2010-03-10 13:14:14 +0000

md_d0 : inactive sda4[0](S) wygląda źle dla macierzy RAID1. Wydaje się, że sugeruje, iż macierz nie ma żadnych aktywnych urządzeń i jedno urządzenie zapasowe (wskazywane przez (S), w przypadku uszkodzonego urządzenia zobaczyłbyś (F), a w przypadku urządzenia OK/aktywnego nie zobaczyłbyś nic) - w przypadku macierzy RAID1, która nie jest zdegradowana, powinny być co najmniej dwa urządzenia OK/aktywne (a w przypadku macierzy zdegradowanej co najmniej jedno urządzenie OK/aktywne) i nie można uaktywnić macierzy RAID1 bez żadnych nieuszkodzonych urządzeń zapasowych (ponieważ urządzenia zapasowe nie zawierają kopii danych, dopóki nie zostaną uaktywnione w przypadku awarii innego dysku). Jeśli dobrze odczytuję wyjście /proc/mdstat, nie będzie można aktywować macierzy w jej obecnym stanie.

Czy masz jakieś fizyczne dyski w maszynie, które nie zdążyły się rozkręcić? Czy na liście ls /dev/sd* są wszystkie dyski i partycje, których normalnie można by się spodziewać na tej maszynie?

2
2
2
2012-11-26 21:43:18 +0000

Kiedy udajesz, że chcesz coś zrobić z /dev/md[012346789}, przechodzi on na /dev/md{126,127...}./dev/md0 jest nadal montowany na /dev/md126 lub /dev/md127 musisz:

umount /dev/md127 lub umount /dev/md126.

Jest to tymczasowe, aby umożliwić wykonywanie poleceń i niektórych aplikacji bez zatrzymywania systemu.

2
2
2
2017-02-14 23:24:17 +0000

Prostym sposobem na uruchomienie macierzy, zakładając, że nie ma problemu sprzętowego i masz wystarczająco dużo dysków/partycji, aby uruchomić macierz, jest wykonanie następujących czynności:

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

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

Może być tak, że z jakiegokolwiek powodu macierz jest w porządku, ale coś uniemożliwiło jej uruchomienie lub zbudowanie. W moim przypadku było to spowodowane tym, że mdadm nie wiedział, że oryginalna nazwa macierzy to md127 i wszystkie dyski były odłączone od tej macierzy. Podczas ponownego podłączania musiałem ręcznie złożyć (prawdopodobnie błąd, w którym mdadm myślał, że macierz jest już aktywna ze względu na starą nazwę macierzy offline).