Jak mogę automatycznie zmontować RAID mdadm po każdym uruchomieniu?

43

Udało mi się utworzyć macierz RAID (dublowanie) przy użyciu mdadm. Jednak po każdym uruchomieniu muszę uruchomić następujące polecenia:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

Co robię źle / dlaczego muszę uruchamiać te polecenia podczas rozruchu? Jaki jest właściwy sposób automatycznego uruchamiania RAID przy każdym (ponownym) rozruchu?

BreakPhreak
źródło

Odpowiedzi:

36

Uwaga: Musisz być zalogowany jako root lub użyć sudo, aby zrobić to wszystko ...

  • Użyj ulubionego edytora, aby utworzyć lub edytować plik /etc/mdadm/mdadm.conf w następujący sposób:

Jeśli plik nawet nie istnieje, wklej następujące elementy do nowego, pustego pliku:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

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 root

# definitions of existing MD arrays
  • Zapisz plik

  • Uruchom następującą komendę, aby dodać odwołanie do konfiguracji tablicy na końcu pliku:

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

Powinno to dodać wiersz na końcu mdadm.conf:

ARRAY / dev / md0 level = raid5 num-devices = 3 metadane = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Jeśli polecenie mdadm dodało inne elementy powyżej linii ARRAY, usuń je. Na przykład na jednym z moich komputerów polecenie zwraca „mdadm: format metadanych 00.90 nieznany, zignorowany”. przed linią ARRAY.

Twoja tablica powinna teraz automatycznie budować się przy starcie systemu, dlatego możesz dodać wpis do / etc / fstab, aby go zamontować (jeśli jeszcze go nie ma)

Linker3000
źródło
6
Chciałbym dodać: powinieneś także zaktualizować swoje initramfsupdate-initramfs -u
Pablo Montepagano,
1
mdadm --detail --scan nie drukuje niczego w moim systemie, chociaż wiem na pewno, że mam dwie partycje, które są częścią raid0 (mirror). Wszelkie ogólne porady na ten temat są mile widziane.
Lennart Rolland
1
@LennartRolland - spróbuj mdadm -Eszamiast tego.
slm
to nie działało dla mnie, musiałem zrobić, grub-install /dev/sdaaby to działało (zamień sda na wszystko, co jest dla ciebie odpowiednie)
gorn
Alternatywnie możesz po prostu użyć opcji jądra: md.auto=1... Właściwie nie przetestowałem tego dokładnie, ale podobno wykrywa je i składa (lub przynajmniej próbuje to zrobić). Ale kernel.org/doc/html/v4.15/admin-guide/md.html jest nieco niejednoznaczny w tym: kiedy md jest wkompilowany w jądro (nie jako moduł), partycje typu 0xfd są skanowane i automatycznie składane w macierze RAID. [...] Od jądra 2.6.9 tylko dyski z superblokiem typu 0 mogą być automatycznie wykrywane i uruchamiane w czasie uruchamiania. I to nie odnosi się do md.auto (czy cokolwiek to było), więc teraz nie jestem pewien.
Pryftan
7

Zdaję sobie sprawę, że to starsze pytanie, ale miałem frustrujący czas w 32-bitowej wersji Ubuntu Server 12.04.

Uruchomienie mdadm --detail --scan >> /etc/mdadm/mdadm.confdopisało linię

ARRAY / dev / md0 metadane = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

Po ponownym uruchomieniu nigdy nie widziałem / dev / md0. Uruchomię mdadm --detail --scanponownie (bez umieszczania wyniku w pliku)

ARRAY / dev / md / ubuntu: 0 metadane = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

i ręczne montowanie /dev/md/ubuntu:0działałoby. W końcu tak też umieściłem w pliku fstab.

Nie jestem pewien, co popełniłem źle, czy tak działa Ubuntu 12.04, czy też jest to zła praktyka. Chciałem tylko podzielić się tym, co dla mnie zadziałało.

Deplikator
źródło
Mam ten sam problem. Nie jestem jednak pewien, czy to problem…
Christophe De Troyer
3

Na Debian wheezy wymagany jest jeszcze jeden krok: w /etc/default/mdadmustawieniu autostart od false do true

#AUTOMATYCZNY START:
# powinien mdadm automatycznie uruchamiał tablice wymienione w /etc/mdadm/mdadm.conf
# podczas uruchamiania?
AUTOSTART = true

Musiałem także użyć mdadm -Es >>/etc/mdadm/mdadm.confzamiast --scanopcji, ponieważ to nie działało dla mnie.

Bogdan Hlevca
źródło
3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Teraz edytuj linie dodane do /etc/mdadm/mdadm.conf w następujący sposób. Usuń wszystko, ale podstawowe części. Powinno to wyglądać

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Uwaga: możesz wybrać X w mdX dla swojej wygody.

Teraz uruchom ponownie

sudo update-initramfs -u
sudo reboot

EDYCJA: komenda poprawiona.

gorn
źródło
Napisałem to, ponieważ odpowiedź Linker3000 nie zadziałała dla mnie.
Gorn
3

Miałem ten problem na moim Raspberry Pi 2 z systemem Raspbian GNU / Linux 8 (jessie). Miałem na macierz RAID /dev/sda1, a /dev/sdb1które udało się zebrać podczas startu. W moim /etc/mdadm/mdadm.confpliku był wpis

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(Twoje liczby będą się różnić; zobacz inne odpowiedzi, jak to uzyskać).

W moim /etc/fstabpliku był wpis

/dev/md0        /data           ext4    defaults          0       0

(i oczywiście /dataistniały)

Podobnie jak OP, mogłem ręcznie zmontować i zamontować macierz RAID po rozruchu, ale nie udało mi się, aby nastąpiło to automatycznie podczas rozruchu, mimo że najwyraźniej poprawnie go skonfigurowałem.

Byłem w stanie rozwiązać problem w następujący sposób. Sprawdziłem skrypt /etc/init.d/mdadm-raidi wstawiłem wiersz kodu debugowania

ls /dev > /home/pi/devices.txt

Zrestartowałem i sprawdziłem ten plik Dowiedziałem się, że urządzenia /dev/sdai /dev/sdbistniały w momencie mdadm-raidinicjalizacji, ale brakowało partycji /dev/sda1i /dev/sdb1. Zredagowałem /etc/init.d/mdadm-raidplik i wstawiłem wiersz

partprobe

po nagłówku (tj. po, ### END INIT INFOale przed rozpoczęciem skryptu). Spowodowało to wykrycie partycji, dzięki czemu mdadm-raidskrypt mógł złożyć macierz RAID, rozwiązując problem. Mam nadzieję, że to komuś pomoże!

Shaun Harker
źródło
0

Walczyłem z tym na Raspbian, używając kilku zewnętrznych dysków twardych USB na Raspberry Pi. Musiałem zadzierać z kolejnością uruchamiania usług, aby upewnić się, że mdadm-raid zaczął się po tym, jak dyski USB zostały rozpoznane przez udev, ale przed checkfs.sh (który sprawdza systemy plików podczas rozruchu). Jeśli mdadm-raid uruchomi się zbyt wcześnie, dyski nie będą dostępne, a zatem tablica nie zostanie zmontowana. Oznaczało to, że fsck następnie nie powiodło się, a proces rozruchu zakończył się monitem konserwacyjnym (ponieważ tablica rajdowa jest wymagana dla innych usług).

Zmodyfikowanie zależności rozruchowych w celu uruchomienia mdadm-raid po checkroot.sh, ale przed checkfs.sh i uruchomieniem update-rc.d mdadm-raid defaults, a następnie update-initramfs -uv -k `uname -r`(zauważenie odwrotnych ruchów uname) naprawiono (w końcu). W każdym razie dla mnie YMMV.

Rodney
źródło
Zauważ, że uname -r w powyższym opisie ma być w tykaniu, ale nie mogę wymyślić, jak ich uciec, więc są tutaj wydrukowane ...
Rodney
Która to wersja raspbian? Miałem dobrze działającą na Wheezy, ale przejście do Jessie zepsuło cały zestaw przy starcie.
nwaltham
0

Próbowałem z

mdadm --create /dev/md/abcdef ...

Widzę, że softlink /dev/md/abcdefutrzymuje się po ponownym uruchomieniu i w razie potrzeby można uzyskać dostęp do urządzenia poprzez soft link.

Czy to akceptowalne rozwiązanie?

zatkać
źródło
0

Posiadanie Raspberry Pi 3, dodanie rootdelay=5do /boot/cmdline.txtrozwiązanego tego problemu dla mnie.

Kredyt trafia tutaj .

Petr Újezdský
źródło