Oprava číslování md127 na md0

Oprava číslování md127 na md0
« kdy: 13. 02. 2025, 21:29:35 »
Dobry vecer,
dnes jsem na jednom domacim zalohovacim serveru (Ubuntu 24.04.2 LTS) aktualizoval mj. kernel na 6.11.0-17-generic a "diky" nekonecne dlouho trvajicimu restartu a chvilkovemu zobrazeni "enter root password for maintenance" kvuli neplatnemu fstab zaznamu zjistil, ze je zjevne opravena letita chyba cislovani RAID - misto md127 je pole opet autodetekovano jako md0

Nicmene nikde jsem nenasel, ze to tak ma byt. Muzete pls potvrdit?

Dik

MP



k3dAR

  • *****
  • 3 149
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Oprava cislovani md127->md0
« Odpověď #1 kdy: 13. 02. 2025, 21:40:29 »
BTW: md127 nebude uplne genericky misto md0 s <6.11 ;-)

Xubuntu 24.04 s 6.8.0-52-generic:
Kód: [Vybrat]
grep ^md /proc/mdstat
md0 : active raid1 sdb2[1] sda2[0]


Re:Oprava cislovani md127->md0
« Odpověď #2 kdy: 13. 02. 2025, 22:04:20 »
Je to 10 let stary problem.
Samozrejme netvrdim, ze kdyz jsem na nej narazil ja, ze na nej narazili vsichni. Jen mnozi :)

MP

Re:Oprava cislovani md127->md0
« Odpověď #3 kdy: 13. 02. 2025, 22:10:58 »
Je to víceméně jedno, můžete použít jakékoliv číslo (0-127) zařízení md, které se vám bude líbit.
Akorát samozřejmě pokud se k tomu konkrétnímu zařízení někde dál přímo odkazujete např. ve fstabu, nemělo by se dál měnit.

Ve fstabu můžete místo devnodu konkrétního zařízení s oddílem použít jeho UUID, který zajistí že se oddíl připojí i když by se někdy změnilo zařízení.

Tzn. pokud máte teď ve fstabu např. podobný řádek jako
/dev/md0 /data xfs default 0 0
tak si zjistíte UUID, třeba přes "sudo blkid /dev/md0"
A následně změníte řádek, např.
UUID=8cd373b3-f161-41aa-b3b4-5726523b6a6f  /data xfs default  0 0

Jinak ještě k tomu md, ta čísla zařízení by se rozhodně neměla jen tak sama od sebe měnit.
Jsou v podstatě dvě místa, kde to může být zapsané.

Buď v souboru /etc/mdadm.conf, kde bývá řádek s popisem každého konkrétního RAIDu (pozor jeho interní UUID je jiné, než toho oddílu s filesystémem, co se uvádí ve fstabu).
Takže např. tohle by mělo zajistit, že se konkrétní RAID složí jako /dev/md0 (resp. /dev/md/0, což je jen alias)

ARRAY /dev/md/0 metadata=1.2 UUID=7f444db2:4dcba828:5dbd2f88:d466a6a7

Tenhle soubor nemusíte nutně v systému mít. Pokud tam není, používá se autodetekce RAIDu a případně se číslo zařízení vezme z metadat v superbloku.
Ta se vypíšou příkazem:
sudo mdadm --detail /dev/md0
Výstup pak může obsahovat např. řádek:
Preferred Minor: 0
Což pak udělá víceméně totéž a zařízení bude opět /dev/md0

V případě potřeby se dá změnit jak superblok (raid se musí stopnout přes mdadm a ručně složit s updatem superbloku), tak vygenerovat /etc/mdadm.conf (v podstatě jen výstup z: sudo mdadm --detail --scan), nebo obojí.




Re:Oprava číslování md127 na md0
« Odpověď #4 kdy: 13. 02. 2025, 22:20:04 »
Jinak ještě jestli je na tom RAIDu root oddíl (já uváděl příklady s nějaký dalším datovým oddílem), tak po případné změně, nebo vytvoření /etc/mdadm.conf je typicky ještě nutné vygenerovat nový initird.
Tzn. na Ubuntu/Debianu by to bylo přes update-initramfs.




Re:Oprava číslování md127 na md0
« Odpověď #5 kdy: 13. 02. 2025, 23:12:08 »
To samozrejme vim.

Popisuju letity stav ponekud obskurniho cislovani md zarizeni pri AUTOMATICKE detekci a zajimam se o to, zda zmenu nekdo potvrdi.

MP

Re:Oprava číslování md127 na md0
« Odpověď #6 kdy: 13. 02. 2025, 23:36:41 »
O.K. nepochopil jsem původní otázku a nevěděl, že víte :).
Já na serverech, kde mám md RAIDy, většinou nepoužívám Ubuntu, abych vám to potvrdil nebo vyvrátil. Na ostatních distribucích (RHEL, CentOS, Oracle, SUSE) v různých verzích se mi nic podobného nedělo, zařízení z vytvořených RAIDů se číslovaly rovnou od nuly a většinou jsem tam následně ukládal i mdadm.conf.
U vás tedy není ani config a ani ta zmíněná metadata v 0.9 superbloku?

RDa

  • *****
  • 2 902
    • Zobrazit profil
    • E-mail
Re:Oprava číslování md127 na md0
« Odpověď #7 kdy: 14. 02. 2025, 02:57:39 »
https://www.pslib.cz/milan.kerslager/RAID_v_Linuxu#Zm.C4.9Bna_preferovan.C3.A9ho_minor_number

Jestli to dobre chapu, tak --update=super-minor bude fungovat jen pri rucnim sestaveni pole, takze musite udelat --stop, a pak --assemble a pokud nemate mdadm.conf, tak vylistovat komponenty pole (uvidite v cat /proc/mdstat pred stopem), a pak uz hura do nastaveni.

Pote bych to rebootnul a cekal zazrak, dejte vedet zda to zafungovalo.

Re:Oprava číslování md127 na md0
« Odpověď #8 kdy: 14. 02. 2025, 08:54:41 »
Co si matně pamatuji, tak tenhle problém mi vždycky vyřešilo pole umístit do /etc/mdadm/mdadm.conf + nezapomenout přebuildovat initramfs, aby se ten zaktualizovaný konfigurák dostal i do startovacího systému.

Re:Oprava číslování md127 na md0
« Odpověď #9 kdy: 14. 02. 2025, 09:50:30 »
Tak jsem si to otestoval sám, měl jsem shodou okolností jeden zkušební virtuál s Ubuntu 24.04.

Výchozí stav je s jádrem 6.8.0-51-generic, co tam bylo nainstalované se systémem 24.04.1

Pokus 1

- vytvořil jsem klasicky raid-1 a počkal, až se syncuje
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/vdb /dev/vdc
- zkontroloval jsem /etc/mdadm/mdadm.conf, nejsou v něm žádné direktivy, jen komentovaný po instalaci z balíčku
- po rebootu se zařízení skutečně složilo jako /dev/md127

- přidal jsem řádek array do mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf a ruční úprava řádku se zařízením na /dev/md0
- po rebootu se zařízení složilo správně jako /dev/md0


Pokus 2

- zruším předchozí RAID
- vytvořím znovu totéž, ale se superblokem v 0.9, abych mohl naspecifikovat preferred minor (funguje jen se starým superblokem, přidávám parametr --auto)
sudo mdadm --create /dev/md0 --level=1 --auto=md0 --metadata=0.90 --raid-devices=2 /dev/vdb /dev/vdc
- kontrola madam --detail /dev/md0 ukazuje opravdu preferred minor 0
- po rebootu je to zas na /dev/md127  :)
- kontrola madam --detail /dev/md127 teď ukazuje preferred minor 127 (WTF!!!, jak je tohle možné)

Pokus 3

- po zrušení RAIDu, vytvořím nanovo, zpátky s výchozím superblokem v 1.2 jako u prvního pokusu.
- po rebootu se opět chytí jako /dev/md127
- apt update, apt install linux-generic-hwe-24.04 (poslední HW jádro 6.11.x)
- nainstaluje se 6.11.0-17-generic a přímé závislosti (headery, moduly, image), žádné jiné balíčky neaktualizuji
- po rebootu se RAID chytí jako /dev/md0 :)


Závěr.
Potvrzuji zmíněné chování, resp. změnu s 6.11.x.
Jediné, co vypadá, že to spolehlivě řeší i pro předchozí jádra na Ubuntu, je vytvoření řádku s odpovídající direktivou v /etc/mdadm/mdadm.conf (a případný, zmíněný update initrd, jestliže jde o RAID s root oddílem)

Jinak jsem si totéž ještě zběžně otestoval na virtuálu s Oracle Linuxem 9 (jádro 5.15). Tam se nic takového neděje, když se RAID vytvoří jako /dev/md0, tak to drží i bez explicitního záznamu v mdadm.conf.

Re:Oprava číslování md127 na md0
« Odpověď #10 kdy: 14. 02. 2025, 10:11:56 »
Ještě v
https://changelogs.ubuntu.com/changelogs/pool/main/l/linux/linux_6.11.0-17.17/changelog
Tam byly nějaké patche ohledně md v 6.8.2 a 6.8.3, podle rychlého prolítnutí jejich popisu mi nepřijde, že by to mělo přímo řešit zmíněné chování, ale nevylučuji že z toho něco mohlo mít i pozitivní vedlejší efekt.
Ubuntu - Linux pro lidi, ale bisectovat už se mi to nechce :)

jjrsk

  • *****
  • 714
    • Zobrazit profil
Re:Oprava číslování md127 na md0
« Odpověď #11 kdy: 14. 02. 2025, 10:13:58 »
Hele ale to podle toho tvyho popisu rozhodne nevypada jako oprava ... za tohle dodavatelum normalne vyhrozuju vypovedma smluv. Myslim tim prave to, ze nejaky chovani ktery ta vec ma roky znicehoz nic zmenej.

Minimalne po nich vzdycky chci aby zaplaili vsechny upravy ktery kvuli tomu budou treba ... a ono je to prejde.

Protoze mi je jedno jestli je politicky spravne chovani A nebo B, me predevsim zajima, ze mi v tomhle pripade ten stroj jeste priste ... nenastartuje.



Re:Oprava číslování md127 na md0
« Odpověď #12 kdy: 14. 02. 2025, 11:13:00 »
Njn. chápu přístup a taky by se mi to nelíbilo, kdyby mi po rebootu zůstal viset třeba nějaký server, co nemá out-of-band přístup a musel se k němu fyzicky dostavit.

Canonical má samozřejmě i podporu, myslím, že v té variantě za $1800/rok/server se jim dá zavolat nebo vytvořit "výhružný" ticket ( Mažu Tě, vole! :)) )

Ale samozřejmě nevylučuju, že jsem si něčeho dalšího nevšiml, tohle byl takový rychlý půlhodinový test, protože jsem byl zvědavý a předtím se mi nic podobného nedělo. Určitě by se dalo dohledat víc, ale chtělo by to mnohem víc času - procházení změn od Canonicalu, upstream Debianu, upstream jádra, kontrola těch superbloků hexdumpem, pak třeba i potvrzení s maintainerem. Navíc tam může být i interakce s dalšími věcmi okolo (udev, systemd, inicializační skripty v initrd).
Jak jsem zmiňoval, používám primárně jiné distribuce, co tím úplně netrpěly, a i tam mám většinou RAIDy uvedené v mdadm.conf, který nastavuji i kvůli monitoringu, mailu s notifikacemi atp. Stejně tak se ve fstabu odkazuju spíš na UUID nebo label oddílu, přesně kvůli tomu, kdyby se změnil devnode. Pokud by to bylo takhle nastavené od začátku, tak se nejspíš ani na Ubuntu nic nehne, resp. nezastaví start systému.

k3dAR

  • *****
  • 3 149
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Oprava číslování md127 na md0
« Odpověď #13 kdy: 14. 02. 2025, 13:21:11 »
[...] většinou RAIDy uvedené v mdadm.conf [...] ve fstabu odkazuju spíš na UUID nebo label oddílu [...] Pokud by to bylo takhle nastavené od začátku, tak se nejspíš ani na Ubuntu nic nehne, resp. nezastaví start systému.

jeste sem se koukal a /etc/mdadm/mdadm.conf mam a v nem definovane md0 a nevzpominam si ze bych ho pripravil,
tak sem to chtel otestovat bez, smazal, pregeneroval initramfs, rebootnul a koukam /etc/mdadm/mdadm.conf mam opet a znovu s definovanym md0 a na konci si vsiml: "This configuration was auto-generated [...] by mkconf"


[...] za tohle dodavatelum normalne vyhrozuju vypovedma smluv. Myslim tim prave to, ze nejaky chovani ktery ta vec ma roky znicehoz nic zmenej.

[...] me predevsim zajima, ze mi v tomhle pripade ten stroj jeste priste ... nenastartuje.

Trochu se hod do klidu ;-) uvedom si ze reagujes na Ubuntu kde ocividne tazatel podporu neplati, nema s zadnym dodavatelem zadnou smlouvu, nikomu ani za ten "SW" nic neplati, atd...

Druha vec je ze zmena mdX = nenabootuje je velmi omezena moznost a to velmi omezeneho admina:
predpokladam ze kdyz nad tim bude LUKS a/nebo LVM, tak jim zmena vadit nebude,
takze jedina situace kdy by mohl nastart nefunkci reboot, je kdyz by v fstab bylo uvedeno /dev/md127, ale proc by to kdokoliv pricetnej delal, kdyz uz snad od minuleho tisicileti je pravidlo blokova zarizeni do fstab (ci cmdline) uvadet pres UUID ktere se samozrejme pri zmene blokoveho nazvu nezmeni... (v pripade lvm pak klidne misto UUID /dev/mapper/vgname-lvname ci /dev/vgname/lvname)

Wasper

  • ***
  • 159
    • Zobrazit profil
    • E-mail
Re:Oprava číslování md127 na md0
« Odpověď #14 kdy: 14. 02. 2025, 13:33:12 »
jeste sem se koukal a /etc/mdadm/mdadm.conf mam a v nem definovane md0 a nevzpominam si ze bych ho pripravil,
Tak ja na tohle kdysi narazil u vanilla kernelu s autodetekovanym mdraidem (cti: bez initrd == ciste problem mezi diskem (superblokem) a kernelem) taky - tehdy ten problem, jestli si vzpominam, byl ten, ze se nejak divne rozpadl mirror pri HW padu, a superblok na jednom disku obsahoval neco, co nemel. Nakonec tehdy fungujicim resenim bylo (uz si nepamatuju presnej postup bez ztraty dat, prosim nezkousejte to bez zalohy...) trochu drsne --zero-superblock a znovu ten mirror znovu vyrobit.