Jak zmienić nazwę macierzy RAID?

23

Z jakiegoś powodu, gdy próbuję zmienić nazwę tablicy RAID mdadm na nazwę tekstową, zmiana nie jest możliwa.

Wypróbowałem porady z tego pytania o błąd serwera , ale bezskutecznie.

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

Jak widać, nazwa jest nadal zgłaszana jako omicron:0i nadal dostępna przez stary plik urządzenia. Próba sudo mdadm --detail /dev/md/alphazadziała i zgłoś tę samą, niepoprawną nazwę do następnego uruchomienia, kiedy przestanie działać.

Wygląda na to, że zastanawiając się, jaką nazwę wprowadzić, mdadm się myli i zamiast tego tworzy plik urządzenia.


NA BOK

Czy jest jakiś sposób, aby zmusić mdadm do wymuszenia aktualizacji części nazwy superbloku (tj. Jawnie ustaw nazwę, którą ma mieć tablica) bez konieczności ponownego tworzenia superbloku? (tj. sudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg])


Problem polega na tym, że po ponownym uruchomieniu, pomimo dodania ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...do mdadm.conf, plik o nazwie urządzenia znika i jest zastępowany jednym ze standardowych formatów. (/ dev / md125 lub podobny)

Jak sprawić, by tablica mdadm o zmienionej nazwie zachowała swoją nazwę? - Tj. - Jak mogę zmusić Ubuntu do przechowywania plików urządzeń między bootami?

Zaz
źródło

Odpowiedzi:

19

Musisz nadać mu nazwę tak --name=jak:

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

Aby zachować spójność podczas ponownego uruchamiania, musisz użyć tej samej nazwy w argumencie --name niż w ostatniej części urządzenia. Oto on: sudo mdadm --assemble / dev / md / alpha --name = alpha --update = name / dev / sd [gf]

Zobacz post Khassada poniżej, aby uzyskać pełne wyjaśnienie.

pille
źródło
1
Drobna aktualizacja tego wiersza poleceń, dla jasności, ponieważ jak boob wprowadzono pierwotną nazwę tablicy po '--update ='. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] Nadzieja, która ma sens lub sprawia, że ​​jest jaśniejsza ....
anastrof
Cześć, po wydaniu polecenia # sudo mdadm --assemble / dev / md127 --name = md0 --update = name / dev / sd [ab] Dostaję mdadm: / dev / sda jest zajęty - pomijam mdadm: / dev / sdb jest zajęty - pomijanie Jakieś myśli? Oczywiście najpierw odmontowałem tablicę!
razor7
2
@ razor7mdadm --stop --scan md127
Daniel Dinnyes
12

Sposobem na to, aby Ubuntu utrzymywał zmianę nazwy w obu butach, jest aktualizacja initramfs. Po zaktualizowaniu nazwy tablicy i pliku mdadm.conf należy wydać następujące polecenie:

sudo update-initramfs -u

Cały proces:

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

Trzecie polecenie powinno zwrócić coś takiego:

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

Wklej wynik do /etc/mdadm/mdadm.conf (zastępując starą linię). Lub wykonaj:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

Następny bieg:

sudo update-initramfs -u

Na koniec uruchom ponownie.

Ta dyskusja była przydatna .

Swoogan
źródło
8

Pierwsza odpowiedź pille i NN działa.

Sztuczka polega na tym, że gdy nie określisz tej --nameopcji, jedyną zmianą nazwy, którą wykonasz, mdadmjest przypisanie nazwy tablicy z przydzielonego numeru urządzenia. W tym pytaniu jest to 0, więc nowa nazwa tablicy to 0.

Ponieważ określisz nazwę urządzenia („alfa” tutaj) do użycia w komendzie assemble, utworzy ona i użyje tej nazwy urządzenia. Ale podczas autostartu mdadmtworzy urządzenie na podstawie nazwy, którą widzi w superbloku, czyli w tym przypadku 0, więc nazwa urządzenia podana w poleceniu asemblerze zostaje utracona.

Aby Twoja nazwa zmieniła się na lepką i spójną, musisz użyć tej samej nazwy w ostatniej części nazwy urządzenia i nowej nazwy tablicy. W takim przypadku dla urządzenia „alfa” należy użyć tego wiersza polecenia:

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

Możesz także zmienić nazwę hosta, aby to zrobić, musisz jawnie ją zadeklarować za pomocą -name=<hostname>:<array_name>składni.

Może to być przydatne na przykład po zmianie nazwy komputera.

Khassad
źródło
2

Wygląda na to, że odpowiedź, której szukasz, znajduje się na stronie podręcznika mdadm

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

i do montażu

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

Co wyjaśnia, dlaczego atrybut name nie jest lepki po ustawieniu. Jeśli udało ci się go uruchomić, prosimy o komentarz z odpowiedzią, która pomogła ci. Alternatywnie zawsze możesz utworzyć dowiązania symboliczne, używając reguły udev i UUID tablicy jako kotwicy.

Nie widzę sensu w dodawaniu fałszywej nazwy do /etc/mdadm.conf, już używasz UUID, który jest kanoniczną nazwą tablicy. Dodanie innej zmiennej, którą możesz zmienić, jest po prostu niepotrzebną konserwacją i proszeniem o problemy, np. Tablica nie uruchamia się.

Poza tymi spostrzeżeniami najlepszym miejscem, aby dowiedzieć się, dlaczego po prostu nie możesz zaktualizować nazwy w środowisku uruchomieniowym, jest wysłanie polecenia ping na listę mailingową linux-raid.

ppetraki
źródło
1

czy po zmianie nazwy próbowałeś zaktualizować swój mdadm.conf?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
maniat1k
źródło
0

mdadm ma błąd, gdy woluminy rajdowe zostały wewnętrznie utworzone ze spacją w nazwie. Woluminy te nie zostaną poprawnie zamontowane z powodu błędu formatu w wygenerowanym pliku /etc/mdadm/mdadm.conf. Musisz zmienić ich nazwę, ale to nie będzie trwałe. Dlatego zmiana nazwy wewnętrznych nazw jest konieczna ... ale nie jest obsługiwana we wszystkich kontrolerach RAID, które blokują ich metadane i nie obsługują opcji nazwy. Nie wiem, jak zmienić nazwę tych woluminów (nawet jeśli są wewnętrznie przywoływane przez UUID, nazwy są używane przez Linuksa; Windows po przeciwnej stronie nie ma takiego błędu i doskonale montuje woluminy RAID zawierające spacje w swoich nazwach)!

verdy_p
źródło