Dobře, přišel jsem na to pomocí tohoto odkazu Trello. Pro případ, že by to chtěl udělat někdo jiný, zde je postup.
Postup
Z pole RAID1 dvou disků, jeden /dev/sda
který je vadný a další /dev/sdc
známý-dobrý:
- Zakažte automatické připojování tohoto pole v
/etc/fstab
, restartujte . V zásadě chceme, aby btrfs zapomnělo, že toto pole existuje, protože existuje chyba, kdy se bude stále snažit použít jeden z disků, pokud bude odpojen. -
Nyní, když je vaše pole odpojeno, spusťte:
echo 1 | sudo tee /sys/block/sda/device/delete
nahrazující
sda
s vadným názvem zařízení. To způsobí, že se disk roztočí (měli byste si to ověřit v dmesg) a stane se nepřístupným pro jádro.Alternativně :Před spuštěním vyjměte disk z počítače! Rozhodl jsem se nezvolit tuto metodu, protože výše uvedená metoda pro mě funguje dobře.
- Připojte pole pomocí
-o degraded
režimu. - Začněte operaci opětovného vyvažování s
sudo btrfs balance start -f -mconvert=single -dconvert=single /mountpoint
. Tím dojde k reorganizaci oblastí na disku, o kterém se ví, že je dobrý, a převede je nasingle
(bez RAID). Toto bude trvat téměř den, v závislosti na rychlosti vašeho disku a velikosti vašeho pole. (Ten můj měl ~700 GiB a vyvažován rychlostí 1 1GiB za minutu) Naštěstí lze tuto operaci pozastavit a pole zůstane online, dokud k ní dojde. - Jakmile to provedete, můžete vydat
sudo btrfs device remove missing /mountpoint
k odstranění „chybějícího“ vadného zařízení. - Začněte druhou rebalanci s
sudo btrfs balance start -mconvert=dup /mountpoint
obnovit redundanci metadat. V mém systému to trvá několik minut. - Jste hotovi! Vaše pole je nyní
single
režimu s odstraněnou veškerou redundancí. - Vyneste svůj vadný disk ven a utlučte ho kladivem.
Odstraňování problémů
- Pomoc, btrfs se pokusil zapisovat na můj vadný disk, došlo k chybě a vynutil jej pouze pro čtení!
- Postupovali jste podle kroku 1 a před pokračováním jste restartovali? Je pravděpodobné, že btrfs si stále myslí, že disk, který jste roztočili, je přítomen. Restartování způsobí, že btrfs zapomene na všechny chyby a umožní vám pokračovat.
Děkuji za příspěvek. Měl jsem nápad, že bych mohl vyzkoušet raid, vytáhnout disk z mé hotswap pozice, použít jiný disk a pak zasunout raid disk zpět. Zpětně to byl špatný nápad a teď potřebuji svou hotswap pozici.
Zde je to, co jsem našel. Jako root:
# sudo btrfs fi show
Label: 'disk' uuid: 12817aeb-d303-4815-8bba-a3440e36c62c
Total devices 2 FS bytes used 803.10GiB
devid 1 size 931.51GiB used 805.03GiB path /dev/sda1
devid 2 size 931.51GiB used 805.03GiB path /dev/sdb1
Poznamenejte si rozdělení uvedené pro každý disk. Man for brtrfs balance mě přivedl k možnosti devid, párkrát se pokusil zjistit, jak filtry fungují (zpočátku zkoušel devid=/dev/sdb1). Takže váš první pokus bude vypadat nějak takto.
# btrfs balance start -dconvert=single,devid=2 -mconvert=single,devid=2 /mnt
Což mi způsobilo chybu.
ERROR: error during balancing '/media/.media': Invalid argument
There may be more info in syslog - try dmesg | tail
Zde je chyba z dmesg:
BTRFS error (device sdb1): balance will reduce metadata integrity, use force if you want this
Takže toto je finále, které se povedlo:
# btrfs balance start -f -dconvert=single,devid=2 -mconvert=single,devid=2 /mnt
Snad to pomůže někomu dalšímu.