Neden bu kadar çok rakip dosya sistemi tasarımı var? [kapalı]


27

Sadece hızlı bir soru, ama neden hala rekabet halinde ve kullanımda olan bu kadar çok dosya sistemi var? (ntfs, fat32, ext3 (ffs), vb.)

Dosya sistemi tasarımcılarının her tür sistemin en iyi yönleri üzerinde hemfikir olabilecekleri ve "en iyi" bir dosya sistemi uygulayabilecekleri, değil mi? Sadece bir düşünce, çünkü bu dosya sistemleri bir süredir buralardaydı ve en azından birisinin diğerleri üzerinde iyi nitelikleri olduğu açıkça görülmeli ve her birinin iyiliğini birleştirip çok daha iyi bir nihai sistem yaratabildik.


39
Ferrari'yi de beko ile birleştirmeyi denemeli miyiz? Tasarım bir dizi değiş tokuşa dayanıyor; mükemmel yok.
Pubby

7
@ Pubby8 Ben süreceğim.
Muffin Man

8
Bunun doğru cevabı sadece teknik bir tartışma değil, aynı zamanda yasal bir cevaptır.
saat

38
Bu soru bana xkcd.com/927
dan04

7
Bunu büyük, uzun ve yüksek kaliteli lensi olan ve gerçekten hafif olan ve cebe veya kese sığan ve çok ucuz bir kamera hazırladığımız zaman yapacağız. Tüm iyi parçaları alıp bunları en iyi şekilde birleştirebileceğiniz fikri aslında pratikte işe yaramaz. İyi şeyler listesi eksik veya birbiriyle çelişen öğelerle doludur .
Eric Lippert

Yanıtlar:


32

Belirtilen örnekleri kullanarak, bir an için burada bulunan özellikleri düşünelim:

  • ntfs - Microsoft'a özel. Microsoft olmayan herkes bunu kullanamaz, bu nedenle farklı bir şeyler kullanmak / oluşturmak zorunda kalır. Şimdi, eğer Microsoft iseniz, bir sonraki madde işaretinin sorunları nedeniyle bunu FAT üzerinden kullanmak istiyorsunuz.

  • fat32 - Yeterince modern değil. Maksimum dosya boyutu 4 GB'dir. Dizin giriş araması O (n). Tahsisat tablosu, tahsis bitmap (daha bitişik boş alan bulmak için gerçekten hızlı olan) gibi daha verimli bir şey yerine, bağlantılı bir listedir. İzinleri desteklemiyor. Sabit bağlantıları veya sembolik bağları desteklemez. Günlük kaydını desteklemiyor.

  • ext3 - Bu, esas olarak günlük kaydını desteklemek için ext2'nin bir uzantısıydı.

Öyleyse, bunun birkaç nedeni var gibi görünüyor:

  1. Daha eski bir dosya sistemi bir şeyden yoksundur. FAT durumunda çok fazla şey yoktur: hem (1) özellikler ve (2) performans açısından. Ext2 söz konusu olduğunda, güncellemeleri yayınlanmadı, bu nedenle bir çökmeden kurtarma daha uzun sürdü.

  2. Mevcut bir dosya sistemi muhtemelen yapardı, ancak sizin değil. (örneğin, Microsoft değilseniz NTFS). Bu durumda, kendi seçiminizi yapmaktan başka çareniz yok.


2
Nitpick: Aslında FAT32 için (Microsoft kendisi tarafından yayınlanan resmi özelliklerine göre), maksimum dosya boyutu 2 GiByte olduğunu, ama kimse bile, Microsoft uygular bunu o aptalca :-)
Jörg W Mittag

16
Nitpick 2: NTFS dosya biçimi Microsoft tarafından keşfedilmiştir, ancak yayımlanmış bir biçimdir ve bilinen hiçbir patent birikimi yoktur. Çeşitli Microsoft dışı işletim sistemleri, Linux da dahil olmak üzere NTFS'yi uygular.
Stephen C

6
Xfs - büyük dosyaların (video iş istasyonları için tasarlanmıştır) hızlı bir şekilde aktarılmasını sağlamak için tasarlanmıştır. ZFS - 21. yüzyıl için bir dosya sistemi. ReiserFS - Bir "katil" dosya sistemi yaratma denemesi. Her dosya sisteminin güçlü ve zayıf yönleri vardır, her biri belirli bir ihtiyacı karşılamak için yaratılmıştır.
Timothy Baldridge 10:11

3
@Stephen C: NTFS, Microsoft tarafından tam olarak "icat edilmedi". en.wikipedia.org/wiki/NTFS#History
Güvenli

1
@StephenC Bundan emin misiniz? Bildiğim kadarıyla NTFS belgelenmemiş. Çoğu açık kaynaklı uygulama , Windows diski belirli durumlarda bıraktığında, bu sürücüyü kullanarak onlara yazmaya çalıştığınızda, ciddi hasar olacağı konusunda sizi uyarır .
asveikau

24

Kısa cevap: Bir beden herkese uymuyor.

Değişimler var. Örneğin, günlüklü bir FS istiyorsanız, bunun için para ödersiniz (verimlilik, karmaşıklık, vb.) Ama ondan bir şey alın. Bazıları günlüklü bir FS'ye ihtiyaç duymuyor ve bunun için para ödemek istemiyor. FS'nin diğer "özellikleri" ile aynı.


En son ne zaman hangi FS'nin özel ihtiyaçlarınızı karşıladığına karar verdiniz? Kodlama tarafında operasyonlardan ziyade daha fazla, ancak böyle bir karar görmedim. Özellikle, çoğu zaman gerçek bir seçenek olmadığından: MS-> Ntfs. Linux: Ext (en son), belki Reiser.
keppla

@keppla: Karar genellikle işletim sistemi tasarımcıları tarafından yapılır. Dosya sistemleri son kullanıcılar tarafından balkanize edilmemiştir.
Zano

2
@keppla: Bir flash sürücüyü biçimlendirmeye karar verdiğimde, günlüğe kaydetmeyi kapatıp yalnızca kendi kullanımım için (sonra ext2, çünkü POSIX dosya izinlerine sahip olduğundan) veya başkalarıyla paylaşmak için karar verdim (sonra fat32). Yine de sabit diskler için NTFS (Windows'tayken) veya ext4 (Linux'tayken) kullanma eğilimindeyim ...
liori

1
@keppla Neredeyse tüm Linux sistemleri sadece ext değil, birçok farklı dosya sistemini kullanma özelliğine sahiptir. Bir Linux kutusu kurduğumda kutunun amacına bakarım. Örneğin: Linux DVR makinem Video Depolama sürücüsünde JFS kullanıyor, çünkü büyük dosyaları ext3'ten daha zarif bir şekilde kullanıyor ve XFS'den daha az CPU yükü kullanıyor. Ancak aynı makinedeki kullanıcı hesapları ve sistem dosyaları için EXT3 kullanıyorum çünkü daha küçük dosya boyutları ile uğraşıyorum.
jwernerny

@keppla: Ek olarak, Mac OS X'te, FS'lerinin çeşitli yeteneklerinin kombinasyonları arasında seçim yapabilirsiniz. Dahası, başlangıçta tonu FS'yi tasarlayan birininki olmasını amaçlamıştım. Çünkü OP neden bir tasarımcının her şeyin en iyisini alabilecek bir FS tasarlamadığını sordu. Ve işaret etmeye çalıştığım, en iyisi nerede kullanılacağına bağlı. Bazı yerlerde bir özellik yararlıdır, bazı yerlerde de aynı özellik gereksiz bir ek yüktür.
Orman Avcısı

14

Hiçbir zaman bir "en iyi" olamaz, çünkü "en iyi" nin ne olduğu hakkında çok fazla fikir vardır. Karar, kullanıcının ihtiyaçlarına ve sınırlamalarına özeldir. Tasarımlar her zaman kısıtlamalara uyma yeteneklerine dayanır.

Temel bir cep telefonunun birkaç yüz kişiyi, kısa mesaj geçmişini ve birkaç küçük uygulamayı kaydetmesi gerekir. Dosya sisteminin RAID yapılandırmasında çok terabaytlı sürücülerdeki hiyerarşik bir dizin yapısını desteklemesi gerekiyor mu? Bu tür bir dosya sistemini çalıştırmak için cihazda yeterli RAM var mı? Dosya sisteminin karmaşık ACL'lere ihtiyacı var mı? Muhtemelen hayır - bütün bu sorular için - bu yüzden basit, kaynak yudumlayan bir dosya sistemi yeterli olacaktır.

Şirketler ayrıca rekabet avantajını korumak için farklı ürünler geliştireceklerdir. Örneğin, Apple, HFS + dosya sisteminin, hangi dosyaların son zamanlarda değiştiğini, böylece yedeklemelerin hızlı olması için izleyebilme özelliğini kullanmaktadır. Kapak tarafında, bir disket dosya sisteminin (FAT) sürücüleri yalnızca birkaç KB belleğe sığabilir.


1
Sorun, kimsenin "en iyi" nin ne anlama geldiğine karar verememesidir. Sorun şu ki , "en iyisi" olamaz ...
Stephen C

1
@Stephen: Elbette bir "en iyi" olabilir. İlk önce ölçüm metrikine karar vermemiz gerekiyor.
Donal Fellows

Sadece herkesin hemfikir olmasını sağlayabilirseniz .
Stephen C

11

Çok ne optimize etmek istediğinize bağlıdır.

Bir an için FAT düşünün: uzun dosya adları için desteği çok ağır (güzel bir şekilde koymak için) ve bir dizindeki dosyaları aramak doğrusaldır, bu nedenle bir dizinde çok sayıda dosya varsa çok hızlı bir şekilde yavaşlar . Aynı zamanda, ham yazma hızının çok düşük bir metadata sahip olması çok iyidir ve her şey için çok basit olduğu için uygulanması gereken kod oldukça küçük olabilir.

Ext2 veya ext3 gibi bir şey, yalnızca FAT'te bulunmayan birçok özellik ve yetenek ekler. Dosyaları aramak da çok daha hızlı. Aynı zamanda, ham yazma hızı muhtemelen biraz daha yavaştır ve dosya sistemini uygulamak için kod şüphesiz oldukça büyüktür.


9

Sadece hızlı bir soru, ama neden hala rekabet halinde ve kullanımda olan bu kadar çok dosya sistemi var? (ntfs, fat32, ext3 (ffs), vb.)

Dosya sistemi tasarımcılarının her tür sistemin en iyi yönleri üzerinde hemfikir olabilecekleri ve "en iyi" bir dosya sistemi uygulayabilecekleri, değil mi?

Farz edelim ki, bir değişme olmadı ve dosya sistemi tasarımcıları, patent kaygısı içermeyen ve "MS" ve Debian için de kabul edilebilir olacak şekilde çift lisanslı BSD / GPL olarak yayınlanan "en iyi" bir dosya sistemi uyguladılar. Diğer dosya sistemlerinin bir gecede ortadan kalkacağını düşündüren nedir?

Hiç kimsenin FAT32'yi 10 yıldan beri yeni bir sabit sürücüde kullandığını sanmıyorum, ancak USB sürücüleri, SD kartları, vb. Biçimlendirmek için fiili standart olarak hala devam ediyor. Arduino hobileri onu kullanmak için sağlam kütüphanelere sahiptir. Hepsinin değişmesi için büyük teşviklere ihtiyacı olacak.

Daha sonra, eski işletim sistemleriyle geriye dönük uyumluluk sorunlarınız var (özellikle kullanıcıları yeni dosya sistemi sürücüleri yüklemek istemeyen Windows).


5
Çapraz platform özelliği için bir çeşit harici cihazın FAT32'ye biçimlendirilmiş olması çok hoş. Bu nedenle FAT32'ye biçimlendirilmiş birçok harici cihaz göreceksiniz.
Matt

@Matt, bu söylediklerimin bir alt kümesi değil mi?
Peter Taylor

3
Ve küçük mikroskoplar için, temel FAT desteğini uygulama kodu sadece birkaç kbit'e uyar. Oynamak için sadece birkaç
kbaytınız

2
@Peter, farklı işletim sistemlerinde sorunsuzca kullanabildiğiniz için bunu belirtiyordu.
Matt

4

Sıklıkla olduğu gibi, cevabı hesaplamada durum (a) tarihsel durum ve geriye dönük uyumluluk sağlama gereği ve (b) bazı metotların diğerlerine göre daha iyi olması nedeniyledir.

On (a) "Winchester sürücüsü" nü hatırlamanız gerekiyor - onların adlarını hatırlamak için yeterince yaşlıyım - (dünyanın geri kalanının bir "sabit sürücüyü" dediği şey) sadece yarısı civarındaydı. elektronik bilişim zamanı ve hatta o zaman bile çoğu kullanıcı için maliyet nedenlerinden dolayı bu kadar uzun süre erişilebilir değildi. FAT dosya sistemi, disketlerde ve ayrıca orijinal küçük sabit sürücülerde iyi çalıştı; Bir kere kullanılmaya başlandı ve kullanımı yaygınlaştığından kullanımı yaygınlaştı - üreticiler kullanıcılarına eski verilerinin aniden geçersiz olduğunu söyleyemediler.

Benzer şekilde, Linux kullanıcıları için, kararlı bir NTFS sürücüsü uzun zamandır geldiğinden, aygıtları FAT olarak biçimlendirmek, birçok sistemde okunup yazılabildiği anlamına geliyordu.

Açık (b) - milyarlarca metin tabanlı veritabanı kaydını depolayan, DVD uzunlukta medya dosyalarını depolayan bir sistem arasındaki farkları düşünün. Veritabanına göre, her kayıt çok küçük olabilir - belki de sadece 30 veya 40 bayt ve kesinlikle bütün bir “segment” (ancak bunu tanımlamak istediğiniz) tahsis eden bir disk sistemi disk boşuna zarar verebilir. DVD'lerde öyle değil - daha büyük 'bölümler' (nedense açıkçası) alan açısından yüksek verimli olmaları muhtemeldir.

Bu yüzden farklı dosya sistemleri farklı amaçlar için tasarlanmıştır.


3

Neden herkes için mükemmel bir dosya sistemi olamayacağına dair bir başka örnek: HDD'ler ve SSD'ler çok farklı okuma / yazma erişim özelliklerine sahiptir. SSD ile optimize edilmiş bir dosya sistemi muhtemelen deliler gibi dosyaları parçalayarak en iyi şekilde çalışır, ancak her parçada SSD'nin kendisinin sayfa boyutu vardır; bu bir HDD üzerinde çok iyi bir performans sergiliyor. Bir HDD-optimize edilmiş dosya sistemi, dosyaları mümkün olduğu kadar parçalanmamış tutmaya çalışır ve hatta sık kullanılan dosyaları tabağın daha hızlı dönen dış kısmındaki "sıcak" alana koyar; Bu özellikler SSD'nin hızları okumasına yardımcı olmaz ve nasıl yazıldığına büyük bir engel koyar.


2

Bence çok önemli bir gerçek eksik. Programcıların çoğu, bir şey yapma biçimlerinin diğer tüm yollardan daha üstün olduğunu düşünme eğilimindedir ve bu nedenle bir Dosya Sistemi tasarımına bakarlar ve daha genel, zarif, hızlı, doğru görünen problemler ve çözümler bulurlar. Ve eğer bu duygu yeterince güçlüyse, kendi dosya sistemlerini oluşturmada serbesttirler.

Bu rekabet, parçalanma, kafa karışıklığı ve sonunda sizin için uygun bir çözüm seçmek için daha iyi çözümler ve daha fazla seçenek olacağını umuyorum.


1

İşte neden ayrı bir dosya sistemine ihtiyaç duyacağınıza ya da mevcut bir FS'nin işlevselliğini genişleteceğinize dair başka bir somut örnek.

  1. Bir veritabanı satıcısı olduğunuzu ve GÇ'yi iyileştirmek için verilerin şeritlenmesini / yansıtılmasını yönetme karmaşıklığını azaltmak istediğinizi varsayalım. Temel dosya sistemlerinin işlevselliğini Oracle gibi bir Mantıksal Birim Yöneticisi gibi ASM'de (Otomatik Depolama Yöneticisi) olduğu gibi genişletme ihtiyacı hissedeceksiniz.

1

Listenizde kullanılan eski bir dosya sisteminden bahsediyorsunuz çünkü daha iyi bir sistem mevcut değil ancak hızlı.

Başka dosya sistemleri var. Google dosya sistemini duydum veya sunucu çökerse çoğunlukla hızlı çoğaltma / yedekleme için . Birçok küçük dosya için yapılan başka bir dosya sistemini duyduğumu ve küçük dosyalarda (küçük resimler) çok fazla talep için bir sistemde kullanıldığını hatırlıyorum.

Temel olarak, farklı hedefleri var ve veya açık kaynak gibi mülkiyeti olabilir.


0

ZFS'nin (Solaris tarafından Sun sisteminde [şimdi Oracle] kullanımında) dosya sisteminin çözümü olduğunu düşünüyorum.

Maalesef Oracle, keşif ve test için OpenSolaris'i kapattı.

ZFS açık kaynak kodlu, bazı Linux'lar entegre etmeye çalışıyor, daha fazla bilgi için Wikipedia'ya bakın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.