Bcachefs 1.33: Diagnostik tingkat lanjut, metrik waktu nyata, dan optimasi Btree

Poin kunci:
  • Pesan kesalahan terperinci: jelaskan penyebab, jenis (hard/soft) dan solusinya.
  • Perintah bcachefs fs top sekarang menampilkan kecepatan transfer secara real-time.
  • Penggabungan asinkron node Btree untuk meningkatkan kinerja di bawah beban.
  • Opsi baru mount_trusts_udev dan writeback_timeout.
  • Pengurangan besar-besaran penggunaan perintah goto dalam kode (dari 2500 menjadi 600) sebagai persiapan untuk kedatangan Rust.
bcachef

Bcachefs adalah sistem file copy-on-write untuk sistem operasi berbasis Linux.

Beberapa hari yang lalu Kent Overstreet mengumumkan perilisan Bcachefs 1.33.0 , versi baru dari sistem file yang memperkenalkan perubahan struktural mendalam dalam manajemen data dan arsitektur kode sumbernya.

Pembaruan ini tampaknya akan menjadi salah satu yang paling signifikan dalam dua tahun terakhir, dengan fokus pada integritas metadata dan modernisasi basis kode C.

"Rekonsiliasi": Era baru untuk integritas data

Fitur baru yang paling menonjol, yang digambarkan sebagai perubahan paling signifikan dalam dua tahun terakhir, adalah pengenalan fungsi Rekonsiliasi (rebalance_v2) . Mekanisme baru ini menggantikan sistem "penyeimbangan ulang" lama dan mengatasi salah satu keterbatasan utamanya: sistem sekarang dapat mengelola dan memindahkan tidak hanya data pengguna tetapi juga metadata sistem file.

Rebalance_v2 bertindak secara proaktif dan otomatis. Jika disk baru ditambahkan ke array atau opsi redundansi diubah, Bcachefs akan segera mulai mereplikasi dan memperbaiki data atau metadata yang rusak, menggunakan indeks terpisah untuk memprioritaskan operasi penting. Hal ini memastikan bahwa integritas sistem tetap terjaga bahkan selama operasi pemeliharaan intensif.

Pembersihan kode dan persiapan Rust

Secara internal, versi 1.33.0 menghadirkan restrukturisasi besar-besaran pada kode C untuk membuatnya lebih aman dan kompatibel dengan implementasi di masa mendatang. KaratPengembang telah melakukan pembersihan menyeluruh, mengurangi jumlah pernyataan. goto dari 2.500 menjadi hanya 600, yang sangat menyederhanakan alur logika program.

Selain itu, makro baru telah diperkenalkan seperti DARRAY() y try()Ini dirancang untuk meniru perilaku vektor dinamis dan penanganan kesalahan Rust dan C++. Hal ini tidak hanya memodernisasi kode yang ada tetapi juga akan memfasilitasi portabilitas dan mengurangi potensi kesalahan memori di masa mendatang.

Peningkatan diagnostik dan fleksibilitas penyimpanan.

Dengan mempertimbangkan administrasi sistem, versi ini secara drastis meningkatkan kejelasan pesan kesalahan . Bcachefs sekarang dapat membedakan dan mengkomunikasikan apakah kegagalan disebabkan oleh bug perangkat lunak atau masalah perangkat keras fisik, bahkan menyarankan langkah-langkah pemulihan yang diperlukan. Ini sangat penting untuk menghindari kesalahan diagnosis di mana sistem file disalahkan atas kegagalan disk.

Transparansi ini mencakup beberapa tingkatan:

  • Kesalahan I/O terperinci: Ketika lapisan blok melaporkan kegagalan, Bcachefs sekarang mengirimkan kode spesifik (seperti BLK_STS_IOERR), membantu mengidentifikasi apakah disk fisik adalah penyebab masalahnya.
  • Kesalahan perakitan: Jika ada komponen yang hilang untuk merakit suatu volume, sistem sekarang akan menunjukkan dengan tepat unit mana yang hilang, menampilkan nama dan modelnya berdasarkan terakhir kali komponen tersebut terdeteksi.
  • Batasan tingkat kesalahan: Batasan untuk kesalahan "lunak" (perangkat lunak) dan "keras" (perangkat keras) telah dipisahkan, memastikan bahwa banyaknya kesalahan kecil tidak menutupi kegagalan disk yang kritis.

Selain itu, perintah tersebut bcachefs fs top Ini telah ditingkatkan. Penghitung internal sekarang menampilkan kecepatan transfer data, bukan hanya angka statis, sehingga jauh lebih mudah untuk mengkorelasikan peristiwa (seperti data_update_fail) dengan penurunan kinerja secara real-time.

Optimalisasi pada Btree dan opsi pemasangan baru

Di balik layar, performa beban berat ditingkatkan berkat perubahan dalam manajemen B-tree. Penggabungan node kosong sekarang terjadi secara asinkron, menghilangkan hambatan buffer tulis. Selain itu, telah ditambahkan pass pemulihan opsional. merge_btree_nodes, untuk mengoptimalkan struktur pohon secara manual jika diperlukan.

Fitur tambahan lain yang sangat praktis adalah kemampuan untuk melakukan booting sistem file dengan konfigurasi tersebut. replicas=2 pada satu cakramHal ini memungkinkan pengguna untuk memulai dengan satu drive saja dengan mengetahui bahwa sistem "harus" memiliki redundansi; segera setelah drive kedua terhubung, Bcachefs secara otomatis mereplikasi data tanpa memerlukan intervensi manual yang rumit.

Terakhir, perlu disebutkan bahwa versi baru ini, yang sudah tersedia untuk distribusi seperti Debian, Fedora, Arch Linux, dan NixOS, membutuhkan kernel Linux 6.16 atau lebih tinggi dan didistribusikan dalam dua paket fundamental: modul kernel (bcachefs-kernel-dkms) dan alat pengguna (bcachefs-tools).


Tambahkan sebagai sumber pilihan di Google