Dlaczego jest tyle konkurencyjnych projektów systemów plików? [Zamknięte]

27

Krótkie pytanie, ale dlaczego tak wiele systemów plików wciąż konkuruje i jest w użyciu? (NTFS, FAT32, EXT3 (FFS) itp.)

Wygląda na to, że projektanci systemów plików mogliby uzgodnić najlepsze aspekty każdego rodzaju systemu i wdrożyć „najlepszy” system plików, prawda? To tylko myśl, ponieważ te systemy plików istnieją już od jakiegoś czasu i powinno być przynajmniej nieco oczywiste, które z nich mają dobre cechy w stosunku do innych, i moglibyśmy po prostu połączyć w sobie dobre cechy i stworzyć ostateczny system, który jest znacznie lepszy

Mroczny Templariusz
źródło
39
Czy powinniśmy również spróbować połączyć Ferrari z koparko-ładowarki? Projektowanie opiera się na szeregu kompromisów; idealne nie istnieje.
Pubby
7
@ Pubby8 Poprowadzę jeden.
The Muffin Man
8
Prawdziwa odpowiedź na to pytanie to nie tylko dyskusja techniczna, ale także legalna.
detly
38
To pytanie przypomina mi xkcd.com/927
dan04 10.10.11
7
Zrobimy to mniej więcej w tym samym czasie, kiedy zrobimy aparat, który ma duży, długi obiektyw wysokiej jakości, jest naprawdę lekki i mieści się w kieszeni lub torebce, i jest bardzo tani. Pomysł, że możesz wziąć wszystkie dobre części i połączyć je w jedną najlepszą rzecz, nie sprawdza się w praktyce. Lista dobrych rzeczy jest niekompletna lub pełna przedmiotów, które są ze sobą sprzeczne .
Eric Lippert,

Odpowiedzi:

32

Zastanówmy się przez chwilę nad szczegółami, korzystając z przytoczonych przykładów:

  • NTFS - Zastrzeżone przez Microsoft. Każdy, kto nie jest Microsoftem, nie może tego użyć, dlatego musiałby użyć / stworzyć coś innego. Teraz, jeśli jesteś Microsoftem, chcesz użyć tego w FAT ze względu na problemy z następnym punktem.

  • fat32 - Niewystarczająco nowoczesny. Maksymalny rozmiar pliku to 4 GB. Wyszukiwanie pozycji katalogu to O (n). Tabela alokacji jest listą połączoną, a nie czymś bardziej wydajnym, jak mapa bitowa alokacji (gdzie bardzo szybko można znaleźć ciągłe wolne miejsce). Nie obsługuje uprawnień. Nie obsługuje dowiązań twardych ani dowiązań symbolicznych. Nie obsługuje kronikowania.

  • ext3 - To było rozszerzenie ext2 głównie do obsługi kronikowania.

Wygląda więc na kilka powodów:

  1. W wcześniejszym systemie plików czegoś brakuje. W przypadku FAT brakuje go bardzo: zarówno pod względem (1) funkcji, jak i (2) wydajności. W przypadku ext2 nie było w nim rejestrowanych aktualizacji, więc odzyskanie po awarii zajęło więcej czasu.

  2. Prawdopodobnie wystarczyłby istniejący system plików, ale nie jest on twój. (np. NTFS, jeśli nie jesteś Microsoftem). W takim przypadku nie masz tak naprawdę dużego wyboru, jak wymyślić własny.

asveikau
źródło
2
Nitpick: w rzeczywistości maksymalny rozmiar pliku (zgodnie z oficjalnymi specyfikacjami opublikowanymi przez samą firmę Microsoft) dla FAT32 to 2 GiByte, ale nikt, nawet Microsoft nie implementuje go tak głupio :-)
Jörg W Mittag
16
Nitpick 2: format pliku NTFS został wymyślony przez Microsoft, ale jest to format opublikowany i nie ma znanych ograniczeń patentowych. Różne systemy operacyjne inne niż Microsoft implementują NTFS, w tym Linux.
Stephen C,
6
Xfs - zaprojektowany w celu umożliwienia szybkiego przesyłania strumieniowego ogromnych plików (przeznaczony dla stacji roboczych wideo). ZFS - system plików XXI wieku. ReiserFS - próba stworzenia systemu plików „zabójcy”. Każdy system plików ma swoje mocne i słabe strony, każdy został stworzony, aby spełnić określone potrzeby.
Timothy Baldridge,
3
@Stephen C: NTFS nie został dokładnie „wymyślony” przez Microsoft. en.wikipedia.org/wiki/NTFS#History
Zabezpiecz
1
@StephenC Czy jesteś tego pewien? O ile wiem NTFS nie jest udokumentowany. Większość implementacji typu open source ostrzega, że ​​wystąpi poważne uszkodzenie, jeśli spróbujesz napisać do nich przy użyciu tego sterownika, gdy system Windows opuści dysk w pewnych stanach.
asveikau 10.10.11
24

Krótka odpowiedź: jeden rozmiar nie pasuje do wszystkich.

Są kompromisy. Na przykład, jeśli chcesz kronikować FS, płacisz za to (wydajność, złożoność itp.), Ale coś z tego zyskujesz. Niektórzy nie czują potrzeby kronikowanego FS i nie chcą za to płacić, inni tak. To samo z innymi „funkcjami” FS.

Łowca dżungli
źródło
Kiedy ostatni raz zdecydowałeś, który FS pasuje do twoich konkretnych potrzeb? Jestem bardziej po stronie kodowania niż operacji, ale nigdy nie widziałem takiej decyzji. Zwłaszcza, że ​​często nie ma prawdziwego wyboru: MS-> NTFS. Linux: Ext (najnowszy), może Reiser.
keppla,
@keppla: Projektanci często podejmują decyzje. Systemy plików nie są bałkanizowane przez użytkowników końcowych.
Zano,
2
@keppla: Za każdym razem, gdy decyduję się na sformatowanie dysku flash, wyłączam kronikowanie i decyduję, czy jest to wyłącznie do własnego użytku (następnie ext2, ponieważ ma uprawnienia do plików POSIX), czy też do udostępniania innym (potem fat32). Jednak w przypadku dysków twardych zwykle używam NTFS (w systemie Windows) lub ext4 (w systemie Linux) ...
liori 10.10.11
1
@keppla Prawie wszystkie systemy Linux mają możliwość korzystania z kilku różnych systemów plików, nie tylko ext [2..4]. Kiedy konfiguruję Linux-a, patrzę na jego przeznaczenie. Na przykład: mój komputer z rejestratorem Linux obsługuje JFS na napędzie Video Storage, ponieważ obsługuje duże pliki znacznie bardziej wdzięcznie niż ext3 i zużywa mniej obciążenia procesora niż XFS. Ale dla kont użytkowników i plików systemowych na tym samym komputerze uruchamiam EXT3, ponieważ mam do czynienia z mniejszymi rozmiarami plików.
jwernerny 10.10.11
@keppla: Dodatkowo, także w Mac OS X możesz wybierać między różnymi kombinacjami możliwości ich FS. Co więcej, pierwotnie zamierzałem, aby ton był kimś, kto projektuje FS. Ponieważ OP zapytał, dlaczego projektant nie zaprojektował FS, który ma wszystko, co najlepsze. To, co staram się wskazać, jest najlepsze w stosunku do tego, gdzie ma być użyte. W niektórych miejscach funkcja jest przydatna, aw innych miejscach ta sama funkcja jest niepotrzebnym kosztem.
Jungle Hunter
14

Nigdy nie może być jednego „najlepszego” czegokolwiek, ponieważ istnieje tak wiele opinii na temat tego, co jest „najlepsze”. Decyzja zależy od potrzeb i ograniczeń użytkownika. Projekty zawsze opierają się na ich zdolności dopasowania do ograniczeń.

Podstawowy telefon komórkowy musi przechowywać kilkaset kontaktów, historię wiadomości tekstowych i kilka małych aplikacji. Czy jego system plików musi obsługiwać hierarchiczną strukturę katalogów na dyskach wielotabajtowych w konfiguracji RAID? Czy na urządzeniu jest wystarczająca ilość pamięci RAM, aby uruchomić taki system plików? Czy system plików potrzebuje skomplikowanych list ACL? Prawdopodobnie nie - na wszystkie te pytania - wystarczyłby prosty system plików pochłaniający zasoby.

Firmy będą również opracowywać różne produkty w celu utrzymania przewagi konkurencyjnej. Na przykład Apple zachwala zdolność swojego systemu plików HFS + do śledzenia, które pliki zmieniły się ostatnio, dzięki czemu kopie zapasowe są szybkie. Z drugiej strony sterowniki systemu plików dyskietki (FAT) mogą zmieścić się w zaledwie kilku KB pamięci.

Barry Brown
źródło
1
Problemem nie jest to, że nikt nie może zgodzić się co to znaczy „najlepszy”. Problem polega na tym, że nie może być „najlepszego” ...
Stephen C
1
@Stephen: Oczywiście może być „najlepszy”. Najpierw musimy zdecydować o metodzie pomiaru.
Donal Fellows,
Tylko wtedy, gdy uda ci się wszystkich zgodzić .
Stephen C,
11

Zbyt wiele zależy od tego, co chcesz zoptymalizować.

Zastanówmy się przez chwilę nad FAT: obsługa długich nazw plików jest kludgy (mówiąc ładnie), a przeszukiwanie plików w katalogu jest liniowe, więc spowalnia bardzo szybko, jeśli katalog zawiera dużo plików. Jednocześnie ma absolutnie minimum metadanych, dlatego surowa prędkość zapisu jest bardzo dobra, a ponieważ jest to tak proste, kod do implementacji może być dość mały.

Coś takiego jak ext2 lub ext3 dodaje wiele funkcji i możliwości, których po prostu nie ma w FAT. Wyszukiwanie plików jest również znacznie szybsze. Jednocześnie szybkość zapisu surowego jest prawdopodobnie nieco wolniejsza, a kod do wdrożenia systemu plików jest niewątpliwie znacznie większy.

Jerry Coffin
źródło
9

Krótkie pytanie, ale dlaczego tak wiele systemów plików wciąż konkuruje i jest w użyciu? (NTFS, FAT32, EXT3 (FFS) itp.)

Wygląda na to, że projektanci systemów plików mogliby uzgodnić najlepsze aspekty każdego rodzaju systemu i wdrożyć „najlepszy” system plików, prawda?

Załóżmy, że nie było żadnych kompromisów, a projektanci systemów plików wdrożyli „najlepszy” system plików, wolny od problemów patentowych i wydany jako licencja BSD / GPL na dwie licencje, aby był możliwy do zaakceptowania zarówno przez MS, jak i Debiana. Co sprawia, że ​​myślisz, że inne systemy plików zniknęłyby z dnia na dzień?

Nie sądzę, aby ktokolwiek używał FAT32 na nowym dysku twardym od 10 lat, ale nadal jest on de facto standardem formatowania dysków USB, kart SD itp. Producenci aparatów i telefonów komórkowych wypróbowali i przetestowali oprogramowanie wewnętrzne do jego używania. Hobbyści Arduino mają stabilne biblioteki do korzystania z niego. Wszyscy będą potrzebować wielkich zachęt do zmiany.

A potem masz problemy z kompatybilnością wsteczną ze starszymi systemami operacyjnymi (zwłaszcza Windows, którego użytkownicy nie będą chcieli instalować nowych sterowników systemu plików).

Peter Taylor
źródło
5
fajnie jest mieć jakieś urządzenie zewnętrzne sformatowane w systemie FAT32, co umożliwia korzystanie z różnych platform. Dlatego zobaczysz wiele urządzeń zewnętrznych sformatowanych w FAT32.
Mat.10.10
@Matt, czy to nie jest podzbiór tego, co powiedziałem?
Peter Taylor
3
A w przypadku małych mikr, kod implementujący podstawową obsługę FAT mieści się w zaledwie kilku kilobajtach. Ma to znaczenie, gdy masz w sumie tylko kilka kilobajtów do gry.
szybko_niedz 10.10
2
@Peter Mówiłem o tym bardziej, ponieważ można go używać w różnych systemach operacyjnych bez żadnych problemów.
Mat.10.10
4

Jak to często bywa w obliczeniach, odpowiedź brzmi (a) z powodu okoliczności historycznych i potrzeby zachowania kompatybilności wstecznej oraz (b) ponieważ niektóre metody lepiej nadają się do niektórych zadań niż inne.

Na (a) musisz pamiętać, że „dysk Winchester” - jestem już wystarczająco duży, aby pamiętać, że tak się nazywają - (co reszta świata nazywa „dyskiem twardym”) istnieje już od około połowy czas obliczeń elektronicznych i nawet wtedy nie był dostępny dla większości użytkowników nawet tak długo ze względu na koszty. System plików FAT działał dobrze na dyskietkach, a także na oryginalnych małych dyskach twardych, ponieważ był dość wydajny i wymagał niewielkiego obciążenia. Gdy zaczęto go używać - a jego użycie rozprzestrzeniło się szeroko, ponieważ jest łatwe do wdrożenia - producenci nie mogli powiedzieć użytkownikom, że ich stare dane nagle stały się nieważne.

Podobnie, dla użytkowników Linuksa, powiedzmy, stabilny sterownik NTFS już dawno nadszedł, więc utrzymanie urządzeń sformatowanych w systemie FAT oznaczało, że można je czytać i zapisywać na wielu systemach.

Na (b) - pomyśl o różnicach między systemem, który, powiedzmy, przechowuje, miliardy tekstowych rekordów bazy danych a systemem, który przechowuje pliki multimedialne o długości DVD. W przypadku bazy danych każdy rekord może być bardzo mały - być może zaledwie 30 lub 40 bajtów, a na pewno system plików, który przydzielił cały „segment” (jakkolwiek chcesz to zdefiniować) dysku, prawdopodobnie marnuje miejsce na dysku. Nie jest tak w przypadku płyt DVD - większe „segmenty” (oczywiście w rozsądnych granicach) prawdopodobnie będą bardzo wydajne pod względem przestrzeni.

Różne systemy plików są zaprojektowane do różnych celów.

adrianmcmenamin
źródło
3

Kolejny przykład tego, dlaczego nigdy nie może istnieć idealny system plików dla wszystkich: dyski twarde i dyski SSD mają bardzo różne właściwości dostępu do odczytu / zapisu. System plików zoptymalizowany pod kątem SSD prawdopodobnie działałby najlepiej, dzieląc pliki jak szalone, ale z każdym fragmentem rozmiar strony samego dysku SSD; działałoby to strasznie na HDD. Zoptymalizowany pod kątem HDD system plików stara się utrzymywać pliki w jak największym stopniu niefragmentowane, a nawet umieszcza często używane pliki w „gorącym” obszarze szybszej wirującej zewnętrznej części talerza; cechy te w ogóle nie pomogłyby w odczytaniu prędkości dysków SSD i stanowią ogromne obciążenie dla sposobu ich zapisu.

puszysty
źródło
2

Myślę, że brakuje bardzo ważnego faktu. Przez większość czasu programiści myślą, że ich sposób robienia czegoś jest lepszy od wszystkich innych sposobów, dlatego patrzą na projekt systemu plików i wymyślają problemy i rozwiązania, które wydają się bardziej ogólne, eleganckie, szybkie, właściwe… A jeśli to uczucie jest wystarczająco silne, mogą zbudować własny system plików.

To wiąże się z konkurencją, fragmentacją, konfliktem i mam nadzieję, że w końcu lepsze rozwiązania i więcej opcji wyboru pasującego rozwiązania dla Ciebie.

Janusz
źródło
1

Oto kolejny konkretny przykład tego, dlaczego potrzebujesz osobnego systemu plików lub rozszerzenia funkcjonalności istniejącego FS.

  1. Załóżmy, że jesteś dostawcą bazy danych i chciałbyś zmniejszyć złożoność zarządzania rozkładaniem / tworzeniem kopii lustrzanych danych w celu poprawy IO. Poczujesz potrzebę rozszerzenia funkcjonalności podstawowych systemów plików, podobnie jak Oracle z ASM (Automated Storage Manager), który jest jak Logical Volume Manager.
RHT
źródło
1

Na liście wspominasz o starym systemie plików, ponieważ lepszy nie jest dostępny, ale jest szybki.

Istnieją inne systemy plików. Słyszałem, że system plików Google służy głównie do szybkiego powielania / redundancji, jeśli jeden dysk twardy lub serwer ulegnie awarii. Pamiętam, że słyszałem o innym systemie plików stworzonym dla wielu małych plików i używanym w systemie do wielu żądań dotyczących małych plików (miniatur).

Zasadniczo mają one różne cele i / lub mogą być odpowiednie w stosunku do open source.


źródło
0

Myślę, że ZFS (wykorzystanie przez Solaris w systemie Sun [teraz Oracle]) jest rozwiązaniem dla systemu plików.

Niestety Oracle zamyka OpenSolaris dla odkrywcy i testuje go.

ZFS jest oprogramowaniem typu open source, niektóre Linux próbuje go zintegrować, poszukaj więcej informacji w Wikipedii.

cl-r
źródło