Btrfs ("better FS",[8] "butter FS",[11] "b-tree FS",[12] veya basitçe yazılarak telaffuz edilir) bir birlikte geliştirilen mantıksal bir birim yöneticisiyle (Linux'un LVM'si ile karıştırılmamalıdır) copy-on-write (COW) ilkesine dayalı olan dosya sistemini birleştiren bir bilgisayar depolama biçimidir. Başlangıçta Oracle Corporation'da 2007'de Linux'ta kullanılmak üzere tasarlandı ve Kasım 2013'ten bu yana dosya sisteminin disk üzerindeki biçimi Linux çekirdeğinde kararlı olarak ilan edildi.[13] Oracle'a göre, Btrfs "gerçek bir kısaltma değildir".[14]
Btrfs, Linux dosya sistemlerinde havuz oluşturma, anlık görüntüler, sağlama toplamları ve tümleşik çoklu cihaz kapsamı eksikliğini gidermeyi amaçlamaktadır. Btrfs'in baş yazarı Chris Mason, amacının "Linux'un mevcut olacak depolama için ölçeklenmesine izin vermek olduğunu belirtti. Ölçekleme, yalnızca depolamayı ele almakla ilgili değildir, aynı zamanda, insanların ne kullanıldığını görmelerini sağlayan ve onu daha güvenilir hale getiren temiz bir arabirimle yönetebilmek ve yönetebilmek anlamına gelir." olduğunu dile getirmiştir[15]
Tarihçe
Btrfs -the copy-on-write B-tree 'nin temel veri yapısı ilk olarak IBM araştırmacısı Ohad Rodeh tarafından USENIX 2007'deki bir sunumda önerildi. O zamanlar SUSE için ReiserFS üzerinde çalışan bir mühendis olan Chris Mason, o yıl Oracle'a katıldı ve B-trees'e dayalı yeni bir dosya sistemi üzerinde çalışmaya başladı.
2008 yılında, ext3 ve ext4 dosya sistemlerinin baş geliştiricisi Theodore Ts'o, ext4'ün gelişmiş özelliklere sahip olmasına rağmen bunun büyük bir ilerleme olmadığını eski teknolojiyi kullandığını ve bir durak noktası olduğunu belirtti; . Ts'o, Btrfs'nin "ölçeklenebilirlik, güvenilirlik ve yönetim kolaylığı konularında iyileştirmeler sunduğu" için daha iyi bir yönü olduğunu söyledi.[16] Btrfs ayrıca " reiser3/4" sahip olduğu aynı tasarım fikirlerine" sahiptir.
Temmuz 2011'de, Btrfs otomatik birleştirme ve temizleme özellikleri, Linux çekirdek ana hattının 3.0 sürümünde birleştirildi. Oracle'da Mason'ın yanı sıra Fujitsu'da Miao Xie performans iyileştirmelerine katkıda bulundu.[21] Haziran 2012'de Chris Mason, bir yıl sonra Josef Bacik ile Facebook'a katılmak için ayrıldığı Fusion-io için Oracle'dan ayrıldı. Her iki şirkette de Mason, Btrfs üzerindeki çalışmalarına devam etti.[22]
2012'de iki Linux dağıtımı, Btrfs'yi deneyselden üretime veya desteklenen duruma taşıdı: Mart'ta Oracle Linux,[23] ardından Ağustos'ta SUSE Linux Enterprise geçiş yapmıştır.[24]
Ağustos 2017'de Red Hat, Red Hat Enterprise Linux (RHEL) 7.4 sürüm notlarında Btrfs'yi artık tam olarak desteklenen bir özelliğe taşımayı planlamadığını (RHEL 6 beta'dan bu yana bir "teknoloji önizlemesi" olarak dahil edilmiştir) duyurdu. RHEL 7 sürüm serisinde mevcut kalacaktır.[26] Btrfs, Mayıs 2019'da RHEL 8'den kaldırıldı.[27] RHEL, RHEL 6'daki ext4'ten RHEL 7'deki XFS'ye taşındı.[28]
2020'de masaüstü varyantları için Fedora 33 için varsayılan dosya sistemi olarak Btrfs seçildi.[29]
Özellikler
Özellikler listesi
Uygulanan
Linux çekirdeğinin 5.0 sürümünden itibaren Btrfs aşağıdaki özellikleri uygular:[30]
Yazma üzerine kopyalamanın doğası gereği bazı konfigürasyonlarda çoğunlukla kendi kendini onaran
Çevrimiçi birleştirme ve otomatik birleştirme bağlama seçeneği
Çevrimiçi hacim büyümesi ve küçülmesi
Çevrimiçi blok cihaz ekleme ve kaldırma
Çevrimiçi dengeleme (yükü dengelemek için nesnelerin blok cihazlar arasında hareketi)
zlib, LZO ve (4.14'ten beri) ZSTD aracılığıyla şeffaf sıkıştırma, dosya veya birim başına yapılandırılabilir [33][34]
Atomik yazılabilir (yazma üzerine kopyalama yoluyla) veya salt okunur [35] Alt hacimlerin anlık görüntüleri
cp --reflink < source file > < destination file >[36] aracılığıyla dosya klonlama (reflink, yazma üzerine kopyalama)
Veriler ve meta veriler üzerinde sağlama toplamları (CRC-32C[37] ). 5.5'ten beri yeni hash fonksiyonları uygulanmaktadır:[38] xxHash, SHA256, BLAKE2B .
Ext3/4'ten Btrfs'ye yerinde dönüştürme (geri alma ile). Bu özellik, 4.6'da sıfırdan yeniden yazılan btrfs-progs sürüm 4.0 civarında geriledi.[39]
Dosya sistemi tohumlama (yazılabilir bir Btrfs için yazma üzerine kopyalama desteği olarak kullanılan salt okunur depolama) olarak bilinen salt okunur depolamanın birleşik montajı [40]
Atmayı engelle (bazı sanallaştırılmış kurulumlarda yer kaplar ve TRIM ile SSD'lerde aşınma düzeyini iyileştirir)
Gönder/al (anlık görüntüler arasındaki farkları ikili akışa kaydetme)
Kalıcı okuma ve yazma önbelleği (L2ARC + ZIL, lvmcache vb.)
2009'da Btrfs'in Sun Microsystems tarafından geliştirilen ZFS ile karşılaştırılabilir bir özellik seti sunması bekleniyordu. Oracle'ın 2009'da Sun'ı satın almasının ardından Mason ve Oracle, Btrfs geliştirmeye devam etmeye karar verdi.[46]
^Hilzinger, Marcel (22 Nisan 2009). "Future of Btrfs Secured". Linux Magazine. 8 Mart 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Kasım 2011.
^"Cloud Station White Paper"(PDF). Synology.com. Synology. s. 11. 11 Kasım 2020 tarihinde kaynağından(PDF) arşivlendi. Erişim tarihi: 2 Nisan 2021. Starting from DSM 6.0, data volumes can be formatted as Btrfs
^"File Systems". ReactOS.org. 16 Eylül 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Şubat 2021.
Kaynak hatası:<references> üzerinde tanımlanan "defragandscrubbing" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "joinfb" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "btrfs-features-list" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "corbet-jul2011" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "jansen-oct2011" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "corbet-nov2011" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "project ideas" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "aurora-1" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "btrfs-usecases" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "oracle-reflinks" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "oracle-btrfs-subvolumes" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "btrfs-sysadmin-guide" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "oracle-btrfs-send-receive" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "ext3_conversion" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "mason-apr2012" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "btrfs-check" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "rodeh-1" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "hard_link_limit" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme) Kaynak hatası:<references> üzerinde tanımlanan "oracle-advanced-btrfs" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme)
Kaynak hatası:<references> üzerinde tanımlanan "add-fscrypt-2022" adındaki <ref> etiketi önceki metinde kullanılmıyor. (Bkz: Kaynak gösterme)