Pepijat Baki BTRFS dalam Kernel 5.14.x

Pepijat Baki Btrfs Dalam Kernel 5 14 X



Terdapat pepijat dalam kernel 5.14.x yang menyebabkan sistem fail btrfs pergi baca sahaja apabila menukar profil metadata daripada bujang kepada dup . Sistem fail masuk ke dalam keadaan baca sahaja. Menyelesaikan masalah ini memerlukan pembetulan yang tidak konvensional.

Mengenai Profil BTRFS

Salah satu ciri hebat btrfs ialah keupayaan untuk menggunakan profil serbuan yang berbeza. Memandangkan btrfs menyimpan data dan metadata secara berasingan, anda boleh mengosongkan data merentasi cakera sebagai raid0 dan mencerminkan semua metadata sebagai raid1. Lebihan dalam metadata ini mengambil sedikit ruang tambahan. Dan ini disyorkan dalam persediaan raid0 btrfs.

Ia sentiasa dicadangkan untuk menduplikasi metadata, walaupun pada satu cakera, kerana kehilangan metadata bermakna kehilangan data juga.







Btrfs dapat menukar profil serbuan pada sistem langsung, menukar data dan metadata untuk memberikan (atau mengalih keluar) lebihan. Ini berlaku dengan a seimbang . Baki btrfs menulis semula semua blok sistem fail dan melaraskan untuk memadankan profil baharu seperti yang berlaku.



Pepijat

Saya cuba menukar profil metadata pada cakera tunggal saya daripada bujang kepada dup untuk redundansi.



$ sudo baki btrfs bermula -mconvert =menipu / mnt





Sistem fail serta-merta masuk ke dalam keadaan baca sahaja. Sistem itu turun. Apabila ia but semula, saya tidak dapat melepasi initramfs pemulihan. Tiada data boleh ditulis ke cakera.

Apabila operasi baki terganggu pada sistem fail btrfs, ia disambung semula secara automatik apabila sistem fail dipasang seterusnya. Ini biasanya boleh dihentikan dengan:



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

Kemudian, batalkan jika perlu menggunakan arahan berikut:

$ sudo baki btrfs batal / mnt

Walau bagaimanapun, pepijat itu bukan sahaja menyebabkan baki terkunci tetapi pilihan pelekap untuk menghentikannya daripada terus diabaikan. Setiap kali sistem fail dipasang, baki cuba disambung semula. Ia gagal dan sistem fail diteruskan kepada baca sahaja. Jika anda menghadapi ini, anda mesti boot mana-mana distro menggunakan kernel yang lebih lama. Dalam kes saya, ia adalah Arch dengan 4.18.

Lekapkan sistem fail dengan kenel yang lebih lama:

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

Batalkan baki:

$ sudo baki btrfs batal / mnt

Lakukan baki semula:

$ sudo baki btrfs bermula -mconvert =menipu / mnt

Setelah baki selesai, anda boleh boot dengan selamat ke dalam kernel yang lebih baharu, kini dengan metadata pendua dalam sistem fail. Semak profil yang digunakan oleh sistem fail. Anda akan melihat bahawa anda mempunyai dua salinan metadata sistem fail dan hanya satu salinan data:

$ sudo btrfs jadilah penggunaan < titik lekap >

Kesimpulan

Btrfs ialah sistem fail yang menakjubkan yang mampu menghasilkan banyak pilihan lanjutan. Walau bagaimanapun, apabila menggunakan btrfs, anda sepatutnya mempunyai sandaran yang berfungsi serta kernel boleh boot daripada distro LTS untuk penyelamatan sistem. Walaupun baki boleh dijalankan pada sistem fail akar yang dipasang, ia tidak selalu dinasihatkan untuk melakukan ini. Masih terdapat banyak pepijat dalam sistem fail. Anda harus bersedia untuk penyelamatan sistem fail apabila modul btrfs belum diuji sepenuhnya terhadap kernel bleeding-edge.