Введение

Файловая система, используемая на компьютерах Amiga

Amiga Fast File System (сокращенно AFFS, или исторически чаще как FFS) — это файловая система, используемая на персональных компьютерах Amiga. Предыдущая файловая система Amiga никогда не имела официального названия и изначально была известна просто как "DOS" или AmigaDOS. С выходом FFS, оригинальная файловая система получила название Amiga Old File System (OFS). OFS, изначально разработанная в основном для работы с дискетами, не справлялась с возрастающей скоростью жестких дисков того времени. FFS была разработана как полная замена оригинальной файловой системы Amiga. FFS отличается от своего предшественника главным образом отсутствием избыточной информации. Блоки данных содержат только данные, что позволяет файловой системе напрямую управлять передачей больших объемов данных от хост-адаптера к месту назначения.

Характеристики

OFS был предшественником FFS. До выхода FFS у AmigaOS была единственная файловая система, просто называемая AmigaDOS: она использует 24 байта на сектор для избыточных данных, обеспечивая возможность восстановления структурных данных на менее надежных носителях, таких как дискеты. Когда более скоростные носители (т. е. жесткие диски) стали более доступными для Amiga, эти избыточные данные стали узким местом, поскольку все данные требовали выравнивания перед передачей в приложение. Избыточность была устранена в FFS, и данные, считываемые с носителей, передаются в приложение напрямую. Предыдущая файловая система, AmigaDOS, была переименована в OFS (Old File System), чтобы отличать ее от FFS. FFS была обратно совместима и могла получать доступ к устройствам, отформатированным в OFS. Благодаря этим преимуществам FFS быстро стала наиболее распространенной файловой системой, используемой почти всеми пользователями Amiga, хотя OFS продолжала широко использоваться на дискетах от сторонних поставщиков программного обеспечения. (Это было исключительно для совместимости с системами AmigaOS 2 в играх и приложениях, которые на самом деле не требовали AmigaOS 2+, поскольку машины, работающие с более ранними версиями ОС без FFS в ПЗУ, не могли загружаться с этих дискет, хотя они все еще могли читать их при установленном FFS.) Amiga FFS проста и эффективна, и при ее внедрении была более чем достаточной, имея множество преимуществ по сравнению с файловыми системами других платформ. Однако, как и OFS до нее, она устаревала; по мере увеличения размера дисков и количества файлов на них ее использование в качестве повседневной файловой системы становилось все более проблематичным с точки зрения сложности обслуживания и общей производительности. Несмотря на это, она все еще используется в системах AmigaOS и поставляется как с MorphOS, так и с AmigaOS 4. К последнему выпуску AmigaOS 3.1 от Commodore, FFS оставалась единственной файловой системой, поставляемой в комплекте с Amiga, но уже демонстрировала свою устарелость по мере развития технологий. FFS (и OFS) хранит "битовую карту" файловой системы в одном секторе. При записи она сначала помечается как недействительная, затем запись завершается, затем битовая карта обновляется и помечается как действительная. Если операция записи прерывается сбоем или извлечением диска, программа "валидатор диска" может отменить повреждения. Это напоминало простейшую форму журналирования файловой системы. Чтобы диск можно было использовать повторно с недействительной файловой системой OFS или FFS, весь диск должен быть полностью просканирован и битовая карта перестроена, при этом будут потеряны только данные, которые изменялись во время записи. Во время сканирования на диск нельзя записывать (за исключением валидатора диска, выполняющего свою функцию), а доступ для чтения очень медленный. AmigaOS изначально включала валидатор диска на каждом загрузочном диске, который был подвержен замене вирусами для распространения (например, вирус "Саддам Хусейн"). Позже он стал частью ПЗУ, начиная с Kickstart 2.x, что защищало его от злонамеренной замены. Валидатор диска пытался восстановить битовую карту на недействительном диске, защитив его от записи и просканировав; это могло занять много времени и значительно замедлить доступ к диску, особенно на более медленных носителях. По мере увеличения размера жестких дисков и количества файлов на них процесс валидации мог занимать много часов. Кроме того, файлы и каталоги могли быть потеряны (часто без уведомления пользователя или даже его ведома) во время процесса, если их контрольные суммы данных были повреждены. В некоторых случаях валидатор мог завершиться неудачей и оставить диск в невалидированном состоянии, требуя от пользователя использования стороннего инструмента диска, такого как DiskSalv, чтобы сделать том снова записываемым, или просто сохранить файлы, скопировав их на новый раздел — очень медленный процесс. FFS также изначально ограничивалась 32-битным адресованием и, следовательно, дисками объемом около 4 ГБ или, по крайней мере, первыми 4 ГБ на диске большего объема. Попытка использовать FFS-разделы сверх этого ограничения приводила к серьезному повреждению данных на всем диске. FFS получила некоторые сторонние 64-битные патчи, а затем официальные (но не от Commodore) обновления, чтобы обойти эти ограничения. Последние поставлялись с AmigaOS 3.5 и 3.9 от Haage & Partner. Первые часто поставлялись с сторонними контроллерами дисков, такими как контроллеры от Phase5, где возможность использования дисков большой емкости была конкурентным преимуществом. Обе системы были несовместимы друг с другом. Что касается инструментов поддержки, хотя Commodore сама поставляла только приложение под названием DiskDoctor (и позже удалила его с дисков AmigaOS), FFS имела небольшой набор сторонних инструментов — в первую очередь DiskSalv — для обслуживания файловой системы, ее восстановления и валидации, восстановления удаленных файлов или отмены "быстрого форматирования" (инициализации файловой системы). Для дефрагментации или преобразования в различные режимы FFS том OFS или FFS необходимо было заблокировать, чтобы предотвратить повреждение, что делало его недоступным для всего, кроме инструмента дефрагментации. Большинство этих инструментов не обновлялись, когда FFS стала поддерживать 64-битное адресование, и могли работать только с разделами размером менее 4 ГБ; они не могли читать разделы больше 4 ГБ и обычно повреждали разделы "за" границей 4 ГБ. Когда диски, используемые пользователями Amiga, достигали размера 4 ГБ, это стало проблемой. По всем этим причинам FFS часто заменялась пользователями в середине 1990-х годов на более современные альтернативы, такие как Smart File System (SFS) и Professional File System (PFS), которые не имели этих ограничений и считались более безопасными, быстрыми и эффективными. SFS в частности продолжала разрабатываться и теперь является файловой системой AmigaOS, максимально приближенной к FFS, и является файловой системой по умолчанию для AROS.

Другие варианты реализации

Было немного других реализаций, способных читать файловые системы FFS, для чего обычно требовался эмулятор Amiga и копия ROM операционной системы. Наиболее заметно, что поддержка affs (Amiga Fast File System) может быть скомпилирована в ядра Linux и обеспечивает полную поддержку чтения, записи и форматирования разделов FFS и OFS для всех типов DOS, за исключением DOS\6 и DOS\7 (которые, вероятно, крайне редки). На Amiga бесплатное приложение xfs могло читать и записывать на устройства, отформатированные в OFS или FFS, наряду со многими другими файловыми системами, и, вероятно, было единственной файловой системой Amiga, кроме самой FFS/FFS2, обладающей такой возможностью. Оно не поддерживало DOS\6 или DOS\7, которые появились позже, и не поддерживало форматирование устройств.