Jak přimět kernel aby akceptoval změny na blokovém zařízení bez restartu

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Občas se nám může stát, že se dostaneme do situace, kdy potřebujeme zrušit nějaké blokové zařízení a ono to ne a nejde. Nejčastěji se do takové prekérní situace dostaneme během instalace.

Nic pak nepomůže že z tabulky na disku už jsou diskové oddíly odstraněny, protože parted kernel k tomu aby akceptovat novou tabulku rozdělení disku donutit neumí.

Umí to však nástroj hdparm, ten ovšem nepatří do standardní systémové výbavy instalačního CD Debianu a tak ho nejspíš bude nutné v případě potřeby doinstalovat na nějakém jiném stroji. A pak ho překopírovat skrz scp, nebo prostřednictvím HTTP pokud máme přístup k síti a webovému serveru.

Závisí pouze na systémové libc6 knihovně, takže je třeba dát pozor abychom si tam dotlačili verzi zkompilovanou vůči stejné verzi.

~ # ./hdparm -z /dev/sda

/dev/sda:
 re-reading partition table

Jenže ouha! Tohle nelze udělat, pokud se disk používá. A ne vždy to musí být spojeno s tím, že některý z jeho diskových oddílů namountovaný.

Když zůstane viset logický disk

K tomu může dojít, když je nabouráno LVM. Logické disky pak sice lze i nadále připojit, nebo odpojit ale jinak s nimi pracovat nelze. Abychom mohli znovu načíst tabulku rozdělení disku je tedy nutné kernel donutit aby na existenci logického disku zapoměl.

Logické disky LVM jsou dm zařízení a tak lze s nimi pracovat také přes nástroj dmsetup. Nejde-li tedy znovunačíst tabulka rozdělení disku, zkontrolujeme zdali náhodou na něm nevisí nějaké takové zařízení

~ # dmsetup info

Pokud ano a jsme si jisti, že ho nikde nemáme namountované, tak ho můžeme zrušit

~ # dmsetup remove_all --force

Případně, pokud je zařízení namountované a nelze ho odstranit po dobrém, můžeme přidat parametr --force

Že došlo k jeho zrušení zjistíme z výpisu..

cat /proc/partitions

..odkud by mělo zmizet.

Po zrušení dm zařízení by už příkaz hdparm měl načíst novou verzi tabulky bez protestů