ТЕХНОЛОГИИ: Фатальные проблемы
Автор: Андрей Васильков
С 60-х годов прошлого века и по наши дни изобретательное человечество придумало почти две сотни разных файловых систем. Большая часть из них представляет лишь исторический интерес или используется в специфических устройствах. Однако и простые пользователи нет-нет да и натыкаются на файловые системы, накладывающие на оборудование те или иные ограничения. Не зная о них, можно порой попасть в затруднительную ситуацию.
Сам факт наличия практически значимых лимитов в файловых системах уходит корнями в 16-битную эпоху вычислений и отчасти связан с реализацией поддержки FAT16 в MS-DOS1. В то время как FAT16 теоретически позволяет создавать дисковые разделы до 4 Гбайт (216 кластеров по 64 Кбайт), DOS ограничивает предельный размер раздела двумя гигабайтами из-за использования кластеров размером 32 Кбайт. Поскольку Windows 95/98 были основаны на MS-DOS, а от NT-версий требовалась обратная совместимость, лимит в 2 Гбайт на FAT16 актуален до сих пор.
![Журнал](https://litlife.club/books/98558/read/images/_769-31.jpg)
Аналогичная ситуация и с другими файловыми системами. Особенности их поддержки в конкретной версии ОС существенно ограничивают максимально допустимый размер дискового раздела; размера, количества и взаимного расположения файлов на нем и допустимый вид присваиваемых имен. Прошло уже двадцать лет, а пользователи до сих пор наступают на "грабли"образца 1988 года.
До сих пор для переноса данных кое-где пользуются дискетами. Применяемая на них FAT12 не даст соскучиться любителям длинных имен. Если при соблюдении формата имен "8.3"2 на дискету теоретически можно записать четыре с лишним тысячи файлов, то использование длинных имен резко сокращает адресуемое пространство. В моем тесте на чистую дискету без битых блоков удалось записать только двадцать файлов объемом по 2 байта, но с длиной имени у каждого по 128 символов. Двадцать первый уже не записывался - появлялось сообщение об ошибке и просьба снять защиту от записи, которой, естественно, не было.
Часто доводилось видеть, как при достаточном количестве свободного места файл не копировался и на куда более современные носители - например, на флэшку. Дело в том, что флэш-накопители емкостью до 2 Гбайт включительно обычно используют FAT16. В цепочках FAT16 может храниться информация не более чем о 512 записях, относящихся к корню раздела. Если вы попытаетесь записать 513-й файл или создать каталог при уже имеющихся 512 записях, то получите сообщение об ошибке.
В смоделированной и отображенной на скриншотах ситуации использовалась карта памяти SD емкостью 2 Гбайт, на которой цифровой фотоаппарат создал раздел FAT16. Записанные 512 файлов хоть и занимали суммарно всего 16 Мбайт, не позволяли записать следующий файл или создать пустую папку.
![Журнал](https://litlife.club/books/98558/read/images/_769-32.jpg)
Если же записывать файлы не в корень раздела, а в созданный там каталог, то ограничение в 512 файлов уже не действует и устанавливается общий предел в 65536 файлов/каталогов. Именно поэтому ЦФК при форматировании карт памяти создают собственную папку и сохраняют фотографии в ней, а не прямо в корне раздела.
Разочарование может постигнуть и желающих создать мультизагрузочную флэшку. BIOS некоторых материнок и операционные системы с 16-битными компонентами ядра (включая, кстати, не только клоны MS-DOS, но и Windows NT до 4.0 включительно) не поддерживают загрузку с томов FAT32. Корректно работать они могут только с разделом FAT 16 объемом не более 2 Гбайт. Поэтому если вы хотите создать гарантированно загрузочную флэшку, нет смысла покупать экземпляр на 4 Гбайт - лучше возьмите две по 2 Гбайт и разместите на них весь желаемый набор ОС с утилитами, помня о пределе элементов в корне раздела.
Флэшки и мобильные винчестеры емкостью от 4 Гбайт обычно размечаются производителями как один раздел FAT 32. Считается, что с этой файловой системой у пользователя возникает меньше проблем. Мол, ее все операционки видят, права доступа она не записывает и вообще - самая простая. Из приводимой таблицы понятно, почему образ полного DVD-5 на раздел FAT32 не запишется в принципе. Будь то хоть флэшка на 8 Гбайт, хоть винчестер на 80 гигов, при попытке записать любой файл объемом больше 4 Гбайт на раздел FAT32 появится сообщение об ошибке.
Решается проблема двумя способами. Если большой файл нужно записать один-единственный раз, проще разбить его на части. Это встроенная функция файловых менеджеров (например, Total Commander) и опция создания многотомных архивов (WinRAR, 7-ZIP). Если же потребность переписывать большие файлы возникает часто, лучше переформатировать сменный носитель под другую файловую систему (как вариант - под NTFS). На винчестере это можно сделать массой программ, включая встроенный в Windows XP диспетчер дисков, а переформатировать флэшку поможет утилита Hewlett-Packard USB Disk Storage Format Tool.
![Журнал](https://litlife.club/books/98558/read/images/_769-33.jpg)
Сам я впервые столкнулся с ограничением на максимальный размер файла много лет назад во время конвертирования видео на разделе FAT 32. Недавно же отметил, что по аналогичной причине у любителей портейбл-софта, использующего базы данных, со временем перестают добавляться новые записи.
На оптических дисках используются другие файловые системы (ISO 9660, UDF), однако принципиальные ограничения на них сходны с рассмотренными выше.
Самым частым препятствием является невозможность записать на DVD в режиме ISO файл размером больше 2 Гбайт. Обычно программы записи предупреждают о необходимости использовать для таких целей UDF, вот только редко кто читает (а еще реже - понимает) подобные сообщения.
Если все файлы заведомо меньше 2 Гбайт, а DVD-ISO-проект все равно не желает записываться, проверьте формат имен. Мне доводилось видеть (чаще, чем хотелось бы), насколько сильна бывает тяга к длинным именам файлов. Сохранит человек веб-страницу с названием по умолчанию (вроде "СНиП 2-04-01-85 (2000). Внутренний водопровод и канализация зданий.html"), а потом тщетно пытается прожечь его на болванку. Даже либеральный формат Joliet отказывается воспринимать семь лишних знаков в этом имени. Особый шарм ситуации придают такие файлы, лежащие среди тысяч других в разных подкаталогах. Кстати, если подкаталоги созданы друг в друге "матрешкой"в количестве больше восьми или их названия тоже избыточно длинные, DVD вновь не запишется. Полный путь для каждого файла на диске во всех используемых ныне вариантах ISO 9660 должен укладываться в 255 знаков.