Bug sa Balanse ng BTRFS sa Kernel 5.14.x

Bug Sa Balanse Ng Btrfs Sa Kernel 5 14 X



Mayroong isang bug sa kernel 5.14.x na nagiging sanhi ng isang btrfs filesystem na maging read-only kapag nagko-convert ng metadata profile mula sa walang asawa sa dup . Ang filesystem ay napupunta sa isang read-only na estado. Ang paglutas ng problemang ito ay nangangailangan ng hindi kinaugalian na pag-aayos.

Tungkol sa BTRFS Profile

Ang isa sa mga magagandang tampok ng btrfs ay ang kakayahang gumamit ng iba't ibang mga profile ng raid. Dahil hiwalay na iniimbak ng btrfs ang data at metadata, maaari mong i-strike ang data sa mga disk bilang raid0 at i-mirror ang lahat ng metadata bilang raid1. Ang redundancy na ito sa metadata ay tumatagal ng kaunting dagdag na espasyo. At ito ay inirerekomenda sa btrfs raid0 setup.

Palaging iminumungkahi na i-duplicate ang metadata, kahit na sa isang disk, dahil ang pagkawala ng metadata ay nangangahulugan din ng pagkawala ng data.







Nagagawa ng Btrfs na baguhin ang isang profile ng raid sa isang live na system, na kino-convert ang data at metadata upang magbigay (o mag-alis) ng redundancy. Ito ay nangyayari sa a balanse . Ang balanse ng btrfs ay muling nagsusulat ng lahat ng mga bloke ng filesystem at nagsasaayos upang tumugma sa mga bagong profile tulad ng ginagawa nito.



Ang Bug

Sinubukan kong palitan ang metadata profile sa aking solong disk mula sa walang asawa sa dup para sa redundancy.



$ sudo start na ng balanse ng btrfs -mconvert =dup / mnt





Ang filesystem ay agad na napunta sa isang read-only na estado. Bumaba ang sistema. Noong nag-reboot ito, hindi ko nalampasan ang mga initramf sa pagbawi. Walang data na maisulat sa disk.

Kapag naantala ang operasyon ng balanse sa btrfs filesystem, awtomatiko itong magpapatuloy sa susunod na pag-mount ng filesystem. Ito ay kadalasang mapipigilan ng:



$ sudo bundok -O skip_balance,rw / dev / sdX / mnt

Pagkatapos, kanselahin kung kinakailangan gamit ang sumusunod na command:

$ sudo kanselahin ang balanse ng btrfs / mnt

Gayunpaman, ang bug ay hindi lamang naging sanhi ng balanse upang mai-lock up ngunit ang mga opsyon sa pag-mount upang pigilan ito sa pagpapatuloy ay hindi pinansin. Sa bawat oras na ang filesystem ay naka-mount, ang balanse ay sumusubok na ipagpatuloy. Nabigo ito at ang filesystem ay napunta sa read-only. Kung nakatagpo ka nito, dapat kang mag-boot ng anumang distro gamit ang isang mas lumang kernel. Sa aking kaso, ito ay Arch na may 4.18.

I-mount ang filesystem gamit ang mas lumang kenel:

$ sudo bundok -O skip_balance,rw / dev / sdX / mnt

Kanselahin ang balanse:

$ sudo kanselahin ang balanse ng btrfs / mnt

Gawin muli ang balanse:

$ sudo start na ng balanse ng btrfs -mconvert =dup / mnt

Kapag kumpleto na ang balanse, maaari kang ligtas na mag-boot sa isang mas bagong kernel, na ngayon ay may duplicate na metadata sa filesystem. Suriin ang mga profile na ginamit ng filesystem. Makikita mo na mayroon kang dalawang kopya ng metadata ng filesytem at isang kopya lang ng data:

$ sudo btrfs maging paggamit < Mount point >

Konklusyon

Ang Btrfs ay isang kamangha-manghang filesystem na may kakayahang maraming mga advanced na opsyon. Gayunpaman, kapag gumagamit ng btrfs, dapat ay mayroon kang mga gumaganang backup pati na rin ang isang bootable kernel mula sa isang LTS distro para sa system rescue. Kahit na ang isang balanse ay maaaring patakbuhin sa isang naka-mount na root filesystem, hindi palaging pinapayuhan na gawin ito. Marami pa ring mga bug sa filesystem. Dapat kang maging handa para sa isang filesystem rescue kapag ang btrfs module ay hindi pa ganap na nasubok laban sa bleeding-edge kernels.