Чому існує стільки конкуруючих конструкцій файлової системи? [зачинено]


27

Просто швидке запитання, але чому так багато файлових систем все ще конкурує і використовується сьогодні? (ntfs, fat32, ext3 (ffs) тощо)

Здається, що дизайнери файлових систем могли погодитися на найкращі аспекти кожного типу системи та реалізувати "найкращу" файлову систему, ні? Просто думка, оскільки ці файлові системи існують вже деякий час, і повинно бути хоча б дещо очевидно, які з них мають хороші якості над іншими, і ми могли просто поєднати добро в кожній і створити кращу систему, яка набагато краща


39
Чи варто спробувати поєднати Ferrari з екскаватором? Дизайн заснований на серії компромісів; ідеального не існує.
Паббі

7
@ Pubby8 Я заїжджаю.
Людина

8
Справжня відповідь на це не просто технічна дискусія, а й юридична.
детлет

38
Це запитання нагадує мені xkcd.com/927
dan04

7
Ми зробимо це приблизно в той самий час, коли зробимо камеру з великим, довгим якісним об'єктивом, і справді легким, і поміщається в кишеню чи гаманець, і коштує дуже недорого. Ідея про те, що ви можете взяти всі хороші частини та поєднати їх в одне найкраще, насправді не спрацьовує на практиці. Список хороших речей або неповний, або повний предметів, які суперечать один одному .
Ерік Ліпперт

Відповіді:


32

Давайте на мить подумаємо про специфіку, використовуючи приклади, які ви навели:

  • ntfs - власність Microsoft. Той, хто не є Microsoft, не може цим скористатися, тому доведеться використовувати / створювати щось інше. Тепер, якщо ви є Microsoft, ви хочете використовувати це через FAT через проблеми наступного пункту.

  • fat32 - Не достатньо сучасний. Максимальний розмір файлу - 4 Гб. Пошук в каталозі - O (n). Таблиця розподілу - це зв'язаний список, а не щось більш ефективне, як растровий файл розподілу (де дуже швидко знайти вільний простір). Не підтримує дозволи. Не підтримує жорсткі або символічні посилання. Не підтримує ведення журналу.

  • ext3 - Це розширення ext2 в основному для підтримки журналу.

Отож, мабуть, є кілька причин:

  1. Більш ранньої файлової системи чогось не вистачає. У випадку FAT цього не вистачає: і з точки зору (1) особливостей, і (2) продуктивності. У випадку ext2 у нього не було оновлених журналів, тому відновлення після аварії зайняло більше часу.

  2. Існуюча файлова система, мабуть, зробить, але це не ваша. (наприклад, NTFS, якщо ви не Microsoft). У цьому випадку у вас насправді немає великого вибору, але придумати свій власний.


2
Чіплятися: на самому ділі, то максимальний розмір файлу ( в відповідності з офіційними специфікаціями , опублікованими самої Microsoft) для FAT32 становить 2 GiByte, але ніхто, навіть Microsoft реалізує його , що нерозумно :-)
Йорг W Mittag

16
Nitpick 2: формат файлу NTFS був винайдений корпорацією Майкрософт, однак це опублікований формат і немає відомих обтяжень патентів. Різні операційні системи, що не належать Microsoft, реалізують NTFS, включаючи Linux.
Stephen C

6
Xfs - призначений для швидкого потокового пошуку масивних файлів (розроблених для відео робочих станцій). ZFS - файлова система 21 століття. ReiserFS - спроба створити файлову систему «вбивця». Кожна файлова система має свої сильні та слабкі сторони, кожна створена для задоволення певної потреби.
Тімоті Болдрідж

3
@Stephen C: Microsoft не була точно «винайдена» Microsoft. en.wikipedia.org/wiki/NTFS#History
Безпечний

1
@StephenC Ви впевнені в цьому? Наскільки мені відомо, NTFS не документально підтверджено. Більшість реалізацій з відкритим кодом попереджають, що буде серйозний збиток, якщо ви спробуєте записати їх за допомогою цього драйвера, коли Windows покинула диск у певних станах.
asveikau

24

Коротка відповідь: Один розмір підходить не всім.

Є компроміси. Наприклад, якщо ви хочете зафіксувати FS, ви платите за нього (ефективність, складність тощо), але отримуєте щось із нього. Деякі не відчувають необхідності в зафіксованому ФС і не хочуть платити за нього, деякі -. Те саме з іншими "особливостями" ФС.


Коли ви востаннє вирішили, який FS відповідає вашим конкретним потребам? Я більше на стороні кодування, ніж на операціях, але такого рішення я ніколи не бачив. Тим більше, оскільки реального вибору часто немає: MS-> Ntfs. Linux: Ext (остання), можливо, Райзер.
кеппла

@keppla: рішення часто приймають дизайнери ОС. Кінцеві користувачі файлових систем не балканізуються.
Зано

2
@keppla: Щоразу, коли я вирішу відформатувати флешку, я вимикаю журнал і вирішую, чи це для мого власного використання (тоді ext2, тому що він має дозволи на файл POSIX) або для обміну з іншими (тоді fat32). Але для жорстких дисків я, як правило, використовую NTFS (коли в Windows) або ext4 (коли в Linux) ...
liori

1
@keppla Майже всі системи Linux мають можливість використовувати декілька різних файлових систем, а не лише ext [2..4]. Коли я встановлюю вікно Linux, я дивлюся на призначення коробки. Наприклад: моя відеореєстратор Linux запускає JFS на накопичувачі відео, тому що він обробляє великі файли набагато витонченіше, ніж ext3 і використовує менше накладних процесорів, ніж XFS. Але для облікових записів користувачів та системних файлів на одній машині я запускаю EXT3, оскільки я маю справу з меншими розмірами файлів.
jwernerny

@keppla: Крім того, на Mac OS X теж можна мати вибір між різними комбінаціями можливостей їх FS. Більше того, спочатку я задумав тон бути таким, як той, хто проектує ФС. Тому що ОП запитала, чому дизайнер не проектує ФС, який має найкраще з усього. І те, що я намагаюся зазначити, найкраще - це відносно того, де воно буде використовуватися. У деяких місцях функція корисна, в інших місцях ця ж функція - непотрібні накладні витрати.
Мисливець за джунглями

14

Ніколи не може бути одного "найкращого" з нічого, тому що існує стільки думок про те, що таке "найкраще". Рішення є специфічним для потреб та обмежень користувача. Дизайн завжди базується на їх здатності вписуватися в обмеження.

Основний мобільний телефон повинен зберігати кілька сотень контактів, історію текстових повідомлень та кілька невеликих додатків. Чи потрібна його файлова система для підтримки ієрархічної структури каталогів на багато терабайтних накопичувачах у конфігурації RAID? Чи достатньо оперативної пам’яті на пристрої для роботи такої файлової системи? Чи потрібна файлова система складних ACL? Напевно, ні - для всіх цих питань - такої простої файлової системи, що розпитує ресурси, було б достатньо.

Компанії також розроблятимуть різні товари для підтримки конкурентної переваги. Наприклад, Apple рекламує можливість своєї файлової системи HFS + відслідковувати, які файли нещодавно змінилися, щоб зробити резервні копії швидкими. З іншого боку, драйвери файлової системи дискети (FAT) можуть вмістити лише кілька КБ пам'яті.


1
Проблема НЕ в тому, що ніхто не може домовитися про те, що означає "найкраще". Проблема в тому, що не може бути "кращого" ...
Стівен C

1
@Stephen: Звичайно, може бути "найкраще". Потрібно просто спершу визначити метрику вимірювання.
Стипендіати Дональ

Тільки якщо ви можете змусити всіх погодитися .
Стівен С

11

Занадто багато залежить від того, що ви хочете оптимізувати.

Поміркуйте FAT на мить: його підтримка довгих імен файлів є химерною (якщо сказати про це гарно), а пошук файлів у каталозі лінійний, тому він стає повільним дуже швидко, якщо каталог містить багато файлів. У той же час, у нього є мінімум метаданих, щоб швидкість запису в сирому режимі була дуже хорошою, і оскільки це все так просто, код для його реалізації може бути досить малим.

Щось на зразок ext2 або ext3 додає безліч функцій та можливостей, які просто відсутні у FAT. Пошук файлів також досить швидше. У той же час швидкість нераціонального запису, мабуть, трохи повільніше, а код для реалізації файлової системи, безперечно, набагато більший.


9

Просто швидке запитання, але чому так багато файлових систем все ще конкурує і використовується сьогодні? (ntfs, fat32, ext3 (ffs) тощо)

Здається, що дизайнери файлових систем могли погодитися на найкращі аспекти кожного типу системи та реалізувати "найкращу" файлову систему, ні?

Припустимо, що не було компромісів, і дизайнери файлової системи реалізували "найкращу" файлову систему, вільну від турбот про патенти, і випускали як подвійну ліцензію BSD / GPL, так що це було б прийнятно і для MS, і для Debian. Що змушує вас думати, що інші файлові системи зникнуть протягом ночі?

Я не думаю, що ніхто не використовував FAT32 на новому жорсткому диску протягом 10 років, але він все ще зберігається як фактичний стандарт для форматування USB-накопичувачів, SD-карт тощо. Виробники камер та мобільних телефонів перевірили прошивку для його використання. У любителів Arduino є стабільні бібліотеки для його використання. Всі вони потребують великих стимулів до змін.

І тоді у вас виникають проблеми зворотної сумісності зі старими ОС (особливо Windows, користувачі яких не хочуть встановлювати нові драйвери файлової системи).


5
приємно мати якийсь зовнішній пристрій, відформатований на FAT32 для можливості роботи між платформами. Ось чому ви побачите безліч зовнішніх пристроїв, відформатованих на FAT32.
Метт

@Matt, це не підмножина того, що я сказав?
Пітер Тейлор

3
А для невеликих мікросхем код для впровадження базової підтримки FAT вміщує лише кілька кбайт. Це важливо, якщо у вас всього лише кілька кбайт для гри.
quick_now

2
@Peter я більше заявив про те, що ви можете використовувати його на різних ОС без проблем.
Метт

4

Як це часто трапляється при обчисленні відповіді (а) через історичні обставини та необхідність підтримувати зворотну сумісність та (б) тому, що деякі методи краще підходять до деяких завдань, ніж інші.

На (а) вам потрібно пам’ятати, що «драйв Вінчестера» - я вже майже старий, щоб пам'ятати, як їх називають - (те, що решта світу називає «жорстким диском»), існувало лише близько половини час електронних обчислень і навіть тоді він не був доступний для більшості користувачів навіть настільки довго з міркувань витрат. Файлова система FAT добре працювала на дискетах, а також на оригінальних невеликих жорстких дисках, оскільки була досить ефективною і вимагала низьких витрат. Після того, як він почав використовуватись - і його використання широко розповсюдилось, оскільки це легко здійснити - виробники не могли сказати його користувачам, що їхні старі дані раптом недійсні.

Аналогічно, для користувачів Linux, скажімо, стабільний драйвер NTFS вже давно з'являється, тому зберігання пристроїв у форматі FAT означало, що вони можуть читатися та записуватися в різних системах.

On (b) - подумайте про відмінності між системою, яка, скажімо, зберігає, мільярдами текстових записів баз даних, та системою, що зберігає медіа-файли довжиною DVD. Для бази даних кожен запис може бути дуже малим - можливо, всього 30 або 40 байт, і, безумовно, файлова система, яка виділила цілий «сегмент» (проте ви хочете визначити це) диска, ймовірно, буде марно витрачає дисковий простір. Не так, як з DVD-дисками - більші "сегменти" (очевидно, в межах розуму), ймовірно, будуть дуже ефективними в космічному плані.

Так різні файлові системи розроблені для різних цілей.


3

Ще один приклад того, чому ніколи не може бути ідеальною файловою системою для всіх: жорсткі диски та SSD мають дуже різні характеристики доступу для читання / запису. Оптимізована до SSD файлова система, мабуть, найкраще працює, фрагментуючи файли як божевільні, але з кожним фрагментом розмір сторінки самого SSD; це буде жахливо працювати на жорсткому диску. Оптимізована до жорсткого диска файлова система намагається зберегти файли максимально нефрагментованими і навіть ставить часто використовувані файли у "гарячу" область на швидше обертову зовнішню частину блюда; ці характеристики взагалі не допоможуть швидкості зчитування SSD і поставлять величезну обтяжливість у тому, як вони записуються.


2

Думаю, дуже важливий факт відсутній. Більшу частину часу програмісти схильні вважати, що їх спосіб робити щось перевершує всі інші способи, і тому вони дивляться на дизайн файлової системи та придумують проблеми та рішення, які здаються більш загальними, елегантними, швидкими, правильними .. І якщо це почуття досить сильне, вони вільні створити власну файлову систему.

Це спричиняє конкуренцію, роздробленість, занепокоєння, і, сподіваюся, врешті-решт, кращі рішення та більше варіантів вибору відповідного рішення для вас.


1

Ось ще один конкретний приклад того, чому вам знадобиться окрема файлова система або розширити функціонал існуючої FS.

  1. Скажімо, ви продавець баз даних і хочете зменшити складність керування смугами / дзеркальним відображенням даних для поліпшення IO. Ви відчуєте необхідність розширити функціональність базових файлових систем, як це робив Oracle з ASM (Automated Storage Manager), що схоже на Logical Volume Manager.

1

У своєму списку ви згадуєте стару файлову систему, яка використовується, оскільки кращої немає, проте вона швидка.

Є й інші файлові системи. Я чув, що файлова система google в основному для швидкого дублювання / надмірності, якщо один жорсткий диск або сервер виходить з ладу. Я пам’ятаю, що чула про іншу файлову систему, створену для багатьох невеликих файлів, і вона повинна використовуватися в системі для великої кількості запитів на невеликих файлах (ескізів).

По суті вони мають різницькі цілі і можуть бути пристосованістю до відкритого коду.


0

Я думаю, що ZFS (використання Solaris в системі Sun [зараз Oracle]) є рішенням для файлової системи.

На жаль, Oracle закрив OpenSolaris для відкриття і перевіри його.

ZFS є відкритим кодом, деякі Linux намагаються інтегрувати його, шукайте додаткову інформацію у Вікіпедії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.