Почему существует так много конкурирующих дизайнов файловых систем? [закрыто]

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). В этом случае у вас нет особого выбора, кроме как придумать свой собственный.

asveikau
источник
2
Придираться: на самом деле, то максимальный размер файла ( в соответствии с официальными спецификациями , опубликованным самой Microsoft) для FAT32 составляет 2 GiByte, но никто, даже Microsoft реализует его , что глупо :-)
Йорг W Mittag
16
Nitpick 2: формат файла NTFS был изобретен Microsoft, но это опубликованный формат, и нет никаких известных патентных ограничений. Различные операционные системы сторонних производителей поддерживают NTFS, включая Linux.
Стивен С
6
Xfs - разработан для быстрого потокового извлечения массивных файлов (предназначен для видео рабочих станций). ZFS - файловая система для 21 века. ReiserFS - попытка создать «убийственную» файловую систему. Каждая файловая система имеет свои сильные и слабые стороны, каждая была создана для удовлетворения определенной потребности.
Тимоти Болдридж
3
@ Стефан C: NTFS не была «изобретена» Microsoft. ru.wikipedia.org/wiki/NTFS#History
Защищено
1
@StephenC Ты уверен в этом? Насколько я знаю NTFS не документирована. Большинство реализаций с открытым исходным кодом предупреждают вас о серьезном повреждении, если вы попытаетесь записать их, используя этот драйвер, когда Windows покинула диск в определенных состояниях.
asveikau
24

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

Есть компромиссы. Например, если вы хотите записать в журнал FS, вы платите (эффективность, сложность и т. Д.), Но получаете что-то из этого. Некоторые не чувствуют необходимости в журнале FS и не хотят платить за это, некоторые делают. То же самое с другими «особенностями» ФС.

Охотник джунглей
источник
Когда вы в последний раз решали, какая ФС соответствует вашим конкретным потребностям? Я больше на стороне кодирования, чем на операциях, но я никогда не видел такого решения. Тем более, что зачастую нет реального выбора: MS-> Ntfs. Linux: Ext (последний), может быть, Reiser.
Кеппла
@keppla: Решения часто принимаются дизайнерами ОС. Конечные пользователи не блокируют файловые системы.
Зано
2
@keppla: Каждый раз, когда я решаю отформатировать флэш-накопитель, я отключаю ведение журнала и решаю, будет ли он только для моего собственного использования (тогда ext2, потому что у него есть разрешения для файлов POSIX) или для совместного использования с другими (затем fat32). Однако для жестких дисков я обычно использую NTFS (в Windows) или ext4 (в Linux) ...
liori 10.10.11
1
@keppla Почти все системы Linux имеют возможность использовать несколько различных файловых систем, а не только ext [2..4]. Когда я настраиваю коробку Linux, я смотрю на назначение коробки. Например: моя машина Linux DVR запускает JFS на диске Video Storage, потому что он обрабатывает большие файлы гораздо более изящно, чем ext3, и использует меньше ресурсов ЦП, чем XFS. Но для учетных записей пользователей и системных файлов на одном компьютере я использую EXT3, потому что имею дело с файлами меньшего размера.
jwernerny
@keppla: Кроме того, в Mac OS X вы также можете выбирать между различными комбинациями возможностей их FS. Более того, изначально я хотел, чтобы это был тон кого-то, кто разрабатывает FS. Потому что ОП спросил, почему дизайнер не разрабатывает ФС, в котором есть все самое лучшее. И то, что я пытаюсь указать, является лучшим относительно того, где это будет использоваться. В некоторых местах функция полезна, в некоторых других местах эта же функция является ненужной накладной.
Охотник на джунглей
14

Не может быть ни одного «лучшего» чего-либо, потому что существует множество мнений о том, что такое «лучший». Решение зависит от потребностей и ограничений пользователя. Проекты всегда основаны на их способности соответствовать ограничениям.

Базовый мобильный телефон должен хранить несколько сотен контактов, историю текстовых сообщений и несколько небольших приложений. Должна ли его файловая система поддерживать иерархическую структуру каталогов на многотерабайтных дисках в конфигурации RAID? Достаточно ли оперативной памяти на устройстве для запуска такой файловой системы? Нужна ли файловой системе сложные ACL? Вероятно, нет - для всех этих вопросов - так что достаточно простой, потягивающей ресурсы файловой системы.

Компании также будут разрабатывать различные продукты для поддержания конкурентного преимущества. Например, Apple рекламирует способность своей файловой системы HFS + отслеживать, какие файлы были недавно изменены, чтобы обеспечить быстрое резервное копирование. С другой стороны, драйверы для файловой системы дискеты (FAT) могут занимать всего несколько КБ памяти.

Барри Браун
источник
1
Проблема НЕ в том, что никто не может договориться о том, что означает «лучший». Проблема в том, что не может быть «лучшего» ...
Стивен С.
1
@ Стефан: Конечно, может быть «лучшее». Нам просто нужно сначала определить метрику измерения.
Донал Феллоуз
Только если вы можете заставить всех согласиться .
Стивен С
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
@ Петр, я больше говорил о том, что вы можете использовать его на разных ОС без проблем.
Мэтт
4

Как это часто бывает в вычислениях, ответом является (а) из-за исторических обстоятельств и необходимости поддерживать обратную совместимость и (б) потому что некоторые методы лучше подходят для некоторых задач, чем другие.

На (а) вы должны помнить, что «винчестерский диск» - я достаточно взрослый, чтобы помнить, что их так называют (то, что остальной мир называет «жестким диском»), существует только около половины время электронных вычислений, и даже тогда оно не было доступно большинству пользователей даже в течение столь длительного времени по причинам стоимости. Файловая система FAT хорошо работала на гибких дисках, а также на оригинальных маленьких жестких дисках, поскольку она была достаточно эффективной и требовала минимальных накладных расходов. Как только он начал использоваться - и его использование широко распространилось, потому что его легко внедрить - производители не могли сказать своим пользователям, что их старые данные внезапно оказались недействительными.

Точно так же, для пользователей Linux, скажем, долгое время требовался стабильный драйвер NTFS, поэтому сохранение устройств в формате FAT означало, что их можно было читать и записывать в нескольких системах.

На (б) - подумайте о различиях между системой, которая, скажем, хранит миллиарды текстовых записей базы данных, и системой, которая хранит медиафайлы DVD-длины. Для базы данных каждая запись может быть очень маленькой - возможно, всего 30 или 40 байт, и, конечно, файловая система, которая выделяет целый «сегмент» (как вы хотите это определить) диска, вероятно, будет растрачивать пространство на диске. С DVD это не так - большие «сегменты» (в разумных пределах, очевидно), вероятно, будут очень эффективными в космическом плане.

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

adrianmcmenamin
источник
3

Еще один пример того, почему никогда не может быть идеальной файловой системы для всех: жесткие диски и твердотельные накопители имеют очень разные характеристики доступа для чтения / записи. Оптимизированная для SSD файловая система, вероятно, будет работать лучше всего, фрагментируя файлы как сумасшедшие, но с каждым фрагментом размер страницы самого SSD; это будет ужасно работать на жестком диске. Файловая система, оптимизированная для жесткого диска, пытается сохранить файлы как можно более нефрагментированными и даже помещает часто используемые файлы в «горячую» область на быстро вращающейся внешней части диска; эти характеристики совсем не помогут скорости чтения SSD и создают огромные трудности для их записи.

пушистый
источник
2

Я думаю, что очень важный факт отсутствует. Большую часть времени программисты склонны считать, что их способ делать что-то превосходит все остальные, и поэтому они смотрят на дизайн файловой системы и находят проблемы и решения, которые кажутся более общими, элегантными, быстрыми, правильными .. И если это чувство достаточно сильное, они могут создать собственную файловую систему.

Это приводит к конкуренции, фрагментации, смущению, и я надеюсь, что в итоге получатся лучшие решения и больше возможностей выбрать подходящее решение для вас.

Януш
источник
1

Вот еще один конкретный пример того, почему вам нужна отдельная файловая система или расширение функциональности существующей ФС.

  1. Допустим, вы являетесь поставщиком базы данных и хотели бы уменьшить сложность управления чередованием / зеркалированием данных для улучшения ввода-вывода. Вы почувствуете необходимость расширить функциональность базовых файловых систем, как Oracle сделала с ASM (Automated Storage Manager), который похож на Менеджер логических томов.
RHT
источник
1

В своем списке вы упоминаете старую файловую систему, потому что лучшая из них недоступна, но она быстра.

Есть и другие файловые системы. Я слышал, файловая система Google в основном для быстрого дублирования / резервирования, если один жесткий диск или сервер выходит из строя. Я помню, как слышал о другой файловой системе, созданной для множества небольших файлов и используемой в системе для большого количества запросов на небольшие файлы (миниатюры).

По сути, они имеют разные цели и могут быть приличными по сравнению с открытым исходным кодом.


источник
0

Я думаю, что ZFS (используется Solaris в системе Sun [сейчас Oracle]) - это решение для файловой системы.

К сожалению, Oracle закрыл OpenSolaris для первооткрывателя и протестировал его.

ZFS с открытым исходным кодом, некоторые Linux пытаются интегрировать его, ищите в Википедии дополнительную информацию.

сл-р
источник