Bcachefs, Linux tabanlı işletim sistemleri için yazılan bir kopya dosya sistemidir.
Birkaç gün önce Kent Overstreet , veri yönetiminde ve kaynak kodunun mimarisinde önemli yapısal değişiklikler getiren dosya sisteminin yeni bir sürümü olan Bcachefs 1.33.0'ın yayınlandığını duyurdu .
Bu güncelleme, meta veri bütünlüğüne ve C kod tabanının modernizasyonuna odaklanmasıyla son iki yılın en önemli güncellemelerinden biri olmaya aday görünüyor.
"Uzlaştırma": Veri bütünlüğünde yeni bir dönem
Son iki yıldaki en önemli değişiklik olarak nitelendirilen en dikkat çekici yeni özellik, Uzlaştırma fonksiyonunun (rebalance_v2) getirilmesidir . Bu yeni mekanizma, eski "yeniden dengeleme" sisteminin yerini alıyor ve en büyük sınırlamalarından birini gideriyor: sistem artık yalnızca kullanıcı verilerini değil, dosya sistemi meta verilerini de yönetebiliyor ve taşıyabiliyor.
Rebalance_v2 proaktif ve otomatik olarak çalışır. Bir disk dizisine yeni bir disk eklendiğinde veya yedeklilik seçenekleri değiştirildiğinde, Bcachefs, kritik işlemleri önceliklendirmek için ayrı indeksler kullanarak, bozulmuş verileri veya meta verileri hemen kopyalamaya ve düzeltmeye başlar. Bu, yoğun bakım işlemleri sırasında bile sistem bütünlüğünün korunmasını sağlar.
Kod temizliği ve Rust hazırlığı
1.33.0 sürümü, arka planda C kodunda büyük bir yeniden yapılandırma getirerek, kodu daha güvenli hale getiriyor ve gelecekteki bir uygulamayla uyumlu olmasını sağlıyor. RustGeliştirici, kapsamlı bir temizlik yaparak ifade sayısını azalttı. goto 2.500'den sadece 600'e düşürülmesi, programın mantıksal akışını büyük ölçüde basitleştiriyor.
Ayrıca, aşağıdakiler gibi yeni makrolar da kullanıma sunulmuştur. DARRAY() y try()Bunlar, Rust ve C++'ın dinamik vektör davranışını ve hata işleme mekanizmalarını taklit etmek üzere tasarlanmıştır. Bu, mevcut kodu modernize etmekle kalmaz, aynı zamanda taşınabilirliği kolaylaştırır ve gelecekte bellek hatası yüzeyini azaltır.
Geliştirilmiş teşhis ve depolama esnekliği
Sistem yönetimi göz önünde bulundurularak, bu sürüm hata mesajlarının netliğini önemli ölçüde artırıyor . Bcachefs artık bir hatanın yazılım hatasından mı yoksa fiziksel donanım sorunundan mı kaynaklandığını ayırt edebiliyor ve iletebiliyor, hatta gerekli kurtarma adımlarını bile önerebiliyor. Bu, dosya sisteminin arızalı bir diskten sorumlu tutulduğu yanlış teşhislerden kaçınmak için hayati önem taşıyor.
Bu şeffaflık çeşitli düzeylere yayılıyor:
- Ayrıntılı G/Ç hataları: Blok katmanı bir hata bildirdiğinde, Bcachefs artık belirli kodu (örneğin) iletiyor.
BLK_STS_IOERRBu sayede fiziksel diskin sorunun kaynağı olup olmadığı belirlenebilir. - Derleme hataları: Bir birimi oluşturmak için gerekli cihazlar eksikse, sistem artık en son görüldüğü zamana göre adını ve modelini göstererek hangi birimin eksik olduğunu tam olarak belirtiyor.
- Hata oranı sınırları: "Yazılım" ve "donanım" hataları arasındaki sınırlar ayrılmış olup, küçük hataların birikerek kritik bir disk arızasını gizlemesi önlenmiştir.
Ek olarak, komut bcachefs fs top Gelişme kaydedildi. Dahili sayaçlar artık statik sayılar yerine veri aktarım hızlarını gösteriyor, bu da olayları (örneğin...) ilişkilendirmeyi çok daha kolay hale getiriyor. data_update_fail) gerçek zamanlı performans düşüşleriyle birlikte.
Btree'lerde optimizasyonlar ve yeni montaj seçenekleri
Arka planda, B-ağacı yönetimindeki değişiklikler sayesinde ağır yük performansı iyileştirildi. Boş düğümlerin birleştirilmesi artık eşzamansız olarak gerçekleşiyor ve yazma arabelleği darboğazlarını ortadan kaldırıyor. Ayrıca, isteğe bağlı bir kurtarma geçişi eklendi. merge_btree_nodesGerekirse ağaç yapısını manuel olarak optimize etmek için.
Son derece kullanışlı bir diğer ek özellik ise dosya sistemini yapılandırma ile önyükleme yeteneğidir. replicas=2 tek bir diskteBu, kullanıcıların sistemin mutlaka yedekliliğe sahip olması gerektiğini bilerek tek bir sürücüyle başlamalarına olanak tanır; ikinci bir sürücü bağlandığı anda, Bcachefs karmaşık manuel müdahaleye gerek kalmadan verileri otomatik olarak kopyalar.
Son olarak, Debian, Fedora, Arch Linux ve NixOS gibi dağıtımlar için halihazırda mevcut olan yeni sürümün, Linux çekirdeği 6.16 veya daha yüksek bir sürüm gerektirdiğini ve iki temel paket halinde dağıtıldığını belirtmekte fayda var : çekirdek modülü (bcachefs-kernel-dkms) ve kullanıcı araçları (bcachefs-tools).