Jak přimět kernel aby akceptoval změny na blokovém zařízení bez restartu
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ů