Mempromosikan Bcachef ke Kernel Linux

Kent Overstreet, penulis sistem caching perangkat blok BCache SSD, yang merupakan bagian dari kernel Linux, merangkum hasil pekerjaan mempromosikan sistem file Bcachefs dalam pidatonya di konferensi LSFMM 2023 (Penyimpanan Linux, Sistem File, Manajemen Memori & BPF Summit) ke dalam komposisi utama kernel Linux dan berbicara tentang rencana pengembangan lebih lanjut dari FS ini. Pada bulan Mei, satu set tambalan yang diperbarui dengan implementasi Bcachefs FS diusulkan untuk ditinjau dan dimasukkan ke dalam komposisi utama kernel Linux. FS Bcachefs telah berkembang selama kurang lebih 10 tahun. Kesiapan untuk meninjau implementasi Bcachefs sebelum dimasukkan ke dalam inti diumumkan pada akhir tahun 2020, dan versi tambalan saat ini memperhitungkan komentar dan kekurangan yang teridentifikasi selama tinjauan sebelumnya.

Tujuan pengembangan Bcachefs adalah untuk mencapai tingkat XFS dalam kinerja, keandalan, dan skalabilitas, sambil menyediakan fitur tambahan yang melekat pada Btrfs dan ZFS, seperti menyertakan beberapa perangkat dalam satu partisi, tata letak penyimpanan multi-lapisan, replikasi (RAID 1/10), caching, kompresi data transparan (mode LZ4, gzip dan ZSTD), state slice (snapshot), verifikasi integritas dengan checksum, kemampuan untuk menyimpan kode koreksi kesalahan Reed-Solomon (RAID 5/6), penyimpanan informasi terenkripsi (ChaCha20 dan Poly1305 digunakan). Dalam hal performa, Bcachefs berada di depan Btrfs dan sistem file lainnya berdasarkan mekanisme Copy-on-Write, dan menunjukkan performa yang mendekati Ext4 dan XFS.

Dari pencapaian terbaru dalam pengembangan Bcachefs, dicatat stabilisasi penerapan snapshot yang tersedia untuk ditulis. Dibandingkan dengan Btrfs, snapshot di Bcachefs sekarang jauh lebih terukur dan bebas dari masalah yang ada di Btrfs. Dalam praktiknya, snapshot diuji saat mengatur cadangan MySQL. Bcachefs juga telah melakukan banyak pekerjaan untuk meningkatkan skalabilitas - sistem file telah bekerja dengan baik dalam pengujian di penyimpanan 100 TB, dan Bcachefs diharapkan dapat diimplementasikan dalam penyimpanan 1 PB dalam waktu dekat. Mode nocow baru telah ditambahkan untuk menonaktifkan mekanisme "copy-on-write" (nocow). Selama musim panas, mereka berencana untuk menerapkan kode koreksi kesalahan dan RAIDZ ke kondisi stabil, serta menyelesaikan masalah dengan konsumsi memori yang tinggi saat memulihkan dan memeriksa sistem file dengan utilitas fsck.

Dari rencana ke depan, disebutkan keinginan untuk menggunakan bahasa Rust dalam pengembangan Bcachefs. Menurut penulis Bcachefs, dia suka membuat kode, bukan men-debug kode, dan sekarang gila menulis kode di C ketika ada opsi yang lebih baik. Rust sudah terlibat dalam Bcachefs dalam penerapan beberapa utilitas ruang pengguna. Selain itu, ide sedang ditetaskan untuk secara bertahap menulis ulang Bcachefs di Rust, karena menggunakan bahasa ini secara signifikan menghemat waktu debug.

Sedangkan untuk memindahkan Bcachef ke arus utama kernel Linux, proses adopsi mungkin tertunda karena besarnya perubahan (2500 tambalan dan sekitar 90 ribu baris kode), yang sulit untuk ditinjau. Untuk mempercepat peninjauan, beberapa pengembang menyarankan untuk memecah seri tambalan menjadi bagian-bagian yang lebih kecil dan terpisah secara logis. Selama diskusi, beberapa peserta juga memperhatikan pengembangan proyek oleh satu pengembang dan bahaya kode dapat dibiarkan tidak terpelihara jika terjadi sesuatu pada pengembangnya (dua karyawan Red Hat tertarik dengan proyek tersebut, tetapi pekerjaan mereka masih perbaikan bug terbatas).

Bcachefs dikembangkan menggunakan teknologi yang telah diuji dalam pengembangan perangkat blok Bcache, yang dirancang untuk akses cache untuk memperlambat hard drive pada drive SSD cepat (termasuk dalam kernel sejak rilis 3.10). Bcachefs menggunakan mekanisme Copy-on-Write (COW), di mana perubahan tidak menyebabkan penimpaan data - status baru ditulis ke lokasi baru, setelah itu indikator status saat ini berubah.

Fitur Bcachefs adalah dukungan untuk koneksi multi-layer drive, di mana penyimpanan terdiri dari beberapa lapisan - drive tercepat (SSD) terhubung ke lapisan bawah, yang digunakan untuk menyimpan data yang sering digunakan, dan bentuk lapisan atas disk yang lebih luas dan lebih murah yang menyimpan data yang lebih sedikit diminta. Caching writeback dapat digunakan antar lapisan. Drive dapat ditambahkan dan dilepas secara dinamis dari partisi tanpa mengganggu penggunaan sistem file (data bermigrasi secara otomatis).

Sumber: opennet.ru

Tambah komentar