Вы знаете, что Windows Phone использует NTFS? Почему большинство карт памяти и почти все USB-накопители по-прежнему используют старый-добрый FAT? Почему вы можете хранить полноразмерные HD-фильмы на некоторых флеш-накопителях и не можете на других? Почему некоторые устройства поддерживают только карты памяти SDHC до 32 ГБ, и что можно сделать, чтобы заставить их использовать 64 ГБ SDXC? Эти и многие другие вопросы связаны с типом файловой системы, используемой конкретным устройством хранения. Но как это связано с Windows?

В начале истории персональных компьютеров (думаю, в эпоху текстовых DOS-боксов и дискет) единственной используемой файловой системой была FAT12. С появлением жестких дисков, способных хранить несколько мегабайт данных (да, именно мегабайт, а не гигабайт!) была разработана новая версия FAT под названием FAT16. Под эту файловую систему и разрабатывался Windows 95, получив лишь «апгрейд» в виде поддержки более длинных имен файлов. В Windows 98 Microsoft добавили поддержку еще одной новой версии FAT под названием FAT32 для поддержки больших жестких дисков (да, к тому времени мы уже начали измерять дисковое пространство в гигабайтах).

В параллельной вселенной Windows NT Microsoft все время использовала файловую систему новых технологий, или NTFS. Windows NT 4, Windows 2000, а затем Windows XP, Vista, Windows 7, 8, 8.1 и новые Windows 10 используют NTFS.

В еще одной параллельной вселенной – вселенной съемного хранилища вы можете выбирать между универсальным FAT32 (при этом столкнувшись с его ограничением в размерах файлов в 4 ГБ) и более новым, но не так широко поддерживаемым (из-за ограничений по лицензированию) exFAT. Кстати, exFAT используется в качестве файловой системы по выбору на всех картах SDXC емкостью 64 ГБ и более.

Итак, в настоящее время у нас есть три различных семейства файловых систем: древняя, но все же широко применяемая FAT32, новая NTFS и свежеразработанная, оптимизированная на основе Solid ExFAT. Какую из этих файловых систем использовать, и когда? И каковы различия между ними?

FAT32: Очевидный выбор

FAT32 по-прежнему остается единственной файловой системой, используемой в Windows 98 или Windows ME. FAT32 фактически является файловой системой выбора для карт памяти SD до 32ГБ включительно. Наконец, FAT32 часто используется для форматирования USB-накопителей, в том числе емкостью 64ГБ и выше.

Старичок FAT32… Его основные ограничения хорошо известны. FAT32 поддерживает работу с файлами размером не более 4 ГБ. Если кажется, что для одного файла это много, вспомните о том, что один видеоролик в формате HD занимает от 4,5 до 10 ГБ, и сразу станет понятно, насколько данное ограничение существенно в современных реалиях. Его другие ограничения включают в себя отсутствие надежной поддержки, абсолютное отсутствие контроля доступа, отсутствия шифрования, сжатия или отказоустойчивости.

Иначе говоря, это совершенно простая и легкая файловая система, которая подходит практически для любой портативной электроники с низкой производительностью, такой как цифровые камеры и видеокамеры, простые смартфоны, MP3-плееры и аналогичные устройства. Из-за его почтенного возраста и широкой популярности в Windows с 1997 года FAT32 поддерживается практически всей техникой, включая холодильник и кофеварку. Другими словами, если вы хотите носить с собой одно съемное запоминающее устройство и быть уверенным, что его можно использовать с любым подключаемым модулем, FAT32 – то, что вам нужно.

NTFS: системный диск

Однако ограничения FAT32 не позволят эффективно использовать ее в современных вычислительных средах. Отсутствие контроля доступа – это одно, абсолютное отсутствие ведения журнала и каких-либо намеков на отказоустойчивость – это другое. Ограниченный размер файла также является огромным минусом. В результате Microsoft представила новую файловую систему, которую они назвали файловой системой новых технологий, или NTFS.

В NTFS есть все, чего не хватает FAT. Мощные параметры контроля доступа? Пожалуйста. Отказоустойчивость и ведение журнала? Получите. Мгновенное сжатие и шифрование отдельных файлов, папок и целых томов диска? Конечно. Альтернативные потоки данных, повышенные меры безопасности, резервное копирование самой файловой системы и важных системных файлов и многие другие функции… Начиная с его первоначального выпуска в 1994 году, NTFS получала все новые обновления, в том числе, повышающие ее совместимость. Ее великолепный дизайн и простая реализация по-прежнему не имеют аналогов среди других файловых систем даже сегодня. Она достаточно универсальна для использования даже на смартфонах начального уровня под управлением Windows Phone 8 и 8.1. Но, если это такая отличная файловая система, почему ее не используют все и везде?

Как вы могли ожидать, NTFS не лишена недостатков. Разработанная еще в 1994 году для серверных операций, эта файловая система всегда требовала большой вычислительной мощности для поддержания своих многочисленных структур. Ее системные записи быстро растут, занимают драгоценное пространство и добавляют дополнительную нагрузку на эти устройства хранения, использующие флэш-память NAND. Наконец, если использовать что-либо, кроме больших жестких дисков, ее накладные расходы окажутся слишком велики, поэтому всеобщее признание система пока так и не завоевала. И последнее, но не менее важное: NTFS запатентована Microsoft, которые не желают открывать лицензии на эту файловую систему конкурентам.

exFAT: лучшее, если поддерживается…

Чтобы преодолеть ограничения FAT32 и уменьшить дополнительную нагрузку, оказываемую NTFS на носители на основе NAND, Microsoft разработала еще одну файловую систему под названием Extended FAT или exFAT. Эта файловая система в значительной степени основана на той же концепции, что и оригинальный FAT, только теперь она является настоящей 64-битной файловой системой без ограничения размера файла, существующего в FAT32. Именно поэтому exFAT используется как стандарт для больших SD-карт (стандарт SDXC требует, чтобы все SD-карты размером 64 ГБ и более были отформатированы с помощью exFAT). Поэтому, если вы покупаете 64-гигабайтную карту microSDXC, она будет работать на основе exFAT … и по этой причине она может не распознаваться вашим смартфоном или планшетом.

Причина, по которой exFAT не заменила древний FAT32 повсюду – платное лицензирование. В отличие от FAT32, которая бесплатна для всех без роялти, с производителей, которые хотят использовать exFAT на своих устройствах Microsoft взимает плату за лицензирование. В результате создатели телефонов Android, низкоуровневых Android-планшетов и дешевых камеры предпочитают сэкономить несколько центов стоимости устройств (в пересчете на единицу выпущенной техники) на лицензировании, предпочитая исключить exFAT из списка поддерживаемых файловых систем. В результате, если вы вставляете новую 64-гигабайтную микро SD-карту в такое устройство, карта, скорее всего, не будет распознана.

Можете ли вы самолично преодолеть это ограничение? В большинстве случаев да, и довольно легко. Просто подключите свою SD-карту к ПК через устройство чтения карт и отформатируйте ее с помощью … вы догадались… FAT32! Таким образом, вы потеряете возможность хранить на ней файлы размером более 4 ГБ, но ваша карта памяти, скорее всего, будет распознана и будет бесперебойно работать на устройстве Android, которое по техническим характеристикам вроде как и не должно поддерживать SD-карты емкостью более 32 ГБ.

(Обратите внимание, что некоторые устройства могут быть слишком старыми, чтобы распознавать карты памяти SDXC чисто физически. Да, таковые не производятся вот уже несколько лет, но выпущенные ранее устройства могут по-прежнему не поддерживать карту SDXC независимо от того, с какой файловой системой она поставляются)

Однако минуточку… Windows Phone – это ОС Microsoft, так не будут ли устройства Windows Phone поддерживать exFAT по умолчанию? Так и есть! Windows Phone 8 и 8.1 действительно поставляются со встроенной поддержкой exFAT, бесплатной для производителей, которые хотят выпускать устройства для платформы Windows Phone. Microsoft предлагает бесплатную лицензию exFAT в рамках своего «пакета стимулирования», призванного побудить большее число производителей присоединиться к платформе Windows Phone.

Наконец, все или почти все планшеты с операционной системой Windows RT и полной версией Windows 8 или 8.1 поддерживают exFAT и распознают 64-ГБ и более крупные SD-карты без труда.

Восстановление файловых систем Windows

Практически каждый инструмент восстановления данных на базе Windows предлагает поддержку FAT32 и NTFS. Инструменты, поддерживающие exFAT, гораздо менее доступны из-за ограничений лицензирования Microsoft. Одним из инструментов поддержки всех трех файловых систем Windows является RS Partition Recovery .

Наконец, если вам нужна только поддержка одной из файловых систем, вы можете сэкономить, выбрав

Почему смартфон может не запускать программы с карты памяти? Чем ext4 принципиально отличается от ext3? Почему флешка проживет дольше, если отформатировать ее в NTFS, а не в FAT? В чем главная проблема F2FS? Ответы кроются в особенностях строения файловых систем. О них мы и поговорим.

Введение

Файловые системы определяют способ хранения данных. От них зависит, с какими ограничениями столкнется пользователь, насколько быстрыми будут операции чтения и записи и как долго накопитель проработает без сбоев. Особенно это касается бюджетных SSD и их младших братьев - флешек. Зная эти особенности, можно выжать из любой системы максимум и оптимизировать ее использование для конкретных задач.

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

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

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

Черный ящик

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

У поклонников Windows все просто: NTFS на всех дисковых разделах и FAT32 (или та же NTFS) на флешках. Если же стоит NAS и в нем используется какая-то другая файловая система, то для большинства это остается за гранью восприятия. К нему просто подключаются по сети и качают файлы, как из черного ящика.

На мобильных гаджетах с Android чаще всего встречается ext4 во внутренней памяти и FAT32 на карточках microSD. Яблочникам же и вовсе без разницы, что у них за файловая система: HFS+, HFSX, APFS, WTFS... для них существуют только красивые значки папок и файлов, нарисованные лучшими дизайнерами. Богаче всего выбор у линуксоидов, но прикрутить поддержку неродных для операционки файловых систем можно и в Windows, и в macOS - об этом чуть позже.

Общие корни

Различных файловых систем создано свыше сотни, но актуальными можно назвать чуть больше десятка. Хотя все они разрабатывались для своих специфических применений, многие в итоге оказались родственными на концептуальном уровне. Они похожи, поскольку используют однотипную структуру представления (мета)данных - B-деревья («би-деревья»).

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

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

Как и другие сбалансированные деревья, B-trees имеют одинаковую длину путей от корня до любого листа. Вместо роста ввысь они сильнее ветвятся и больше растут в ширину: все точки ветвления у B-дерева хранят множество ссылок на дочерние объекты, благодаря чему их легко отыскать за меньшее число обращений. Большое число указателей снижает количество самых длительных дисковых операций - позиционирования головок при чтении произвольных блоков.

Концепция B-деревьев была сформулирована еще в семидесятых годах и с тех пор подвергалась различным улучшениям. В том или ином виде она реализована в NTFS, BFS, XFS, JFS, ReiserFS и множестве СУБД. Все они - родственники с точки зрения базовых принципов организации данных. Отличия касаются деталей, зачастую довольно важных. Недостаток у родственных файловых систем тоже общий: все они создавались для работы именно с дисками еще до появления SSD.

Флеш-память как двигатель прогресса

Твердотельные накопители постепенно вытесняют дисковые, но пока вынуждены использовать чуждые им файловые системы, переданные по наследству. Они построены на массивах флеш-памяти, принципы работы которой отличаются от таковых у дисковых устройств. В частности, флеш-память должна стираться перед записью, а эта операция в чипах NAND не может выполняться на уровне отдельных ячеек. Она возможна только для крупных блоков целиком.

Связано это ограничение с тем, что в NAND-памяти все ячейки объединены в блоки, каждый из которых имеет только одно общее подключение к управляющей шине. Не будем вдаваться в детали страничной организации и расписывать полную иерархию. Важен сам принцип групповых операций с ячейками и тот факт, что размеры блоков флеш-памяти обычно больше, чем блоки, адресуемые в любой файловой системе. Поэтому все адреса и команды для накопителей с NAND flash надо транслировать через слой абстрагирования FTL (Flash Translation Layer).

Совместимость с логикой дисковых устройств и поддержку команд их нативных интерфейсов обеспечивают контроллеры флеш-памяти. Обычно FTL реализуется именно в их прошивке, но может (частично) выполняться и на хосте - например, компания Plextor пишет для своих SSD драйверы, ускоряющие запись.

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

Такой подход напоминает армейские будни: чтобы отдать приказ одному солдату, сержант делает общее построение, вызывает бедолагу из строя и командует остальным разойтись. В редкой ныне NOR-памяти организация была спецназовская: каждая ячейка управлялась независимо (у каждого транзистора был индивидуальный контакт).

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

Модули с одноуровневыми ячейками SLC имели заявленный ресурс в 100 тысяч циклов перезаписи и даже больше. Многие из них до сих пор работают в старых флешках и карточках CF. У MLC корпоративного класса (eMLC) ресурс заявлялся в пределах от 10 до 20 тысяч, в то время как у обычной MLC потребительского уровня он оценивается в 3–5 тысяч. Память этого типа активно теснит еще более дешевая TLC, у которой ресурс едва дотягивает до тысячи циклов. Удерживать срок жизни флеш-памяти на приемлемом уровне приходится за счет программных ухищрений, и новые файловые системы становятся одним из них.

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

В корпоративных SSD встроенный контроллер - это маленький компьютер. У него есть огромный буфер памяти (полгига и больше), и он поддерживает множество методов повышения эффективности работы с данными, что позволяет избегать лишних циклов перезаписи. Чип упорядочивает все блоки в кеше, выполняет отложенную запись, производит дедупликацию на лету, резервирует одни блоки и очищает в фоне другие. Все это волшебство происходит абсолютно незаметно для ОС, программ и пользователя. С таким SSD действительно непринципиально, какая файловая система используется. Внутренние оптимизации оказывают гораздо большее влияние на производительность и ресурс, чем внешние.

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

От JFFS к F2FS

Одной из первых попыток написать файловую систему, которая бы учитывала принципы организации флеш-памяти, была JFFS - Journaling Flash File System. Изначально эта разработка шведской фирмы Axis Communications была ориентирована на повышение эффективности памяти сетевых устройств, которые Axis выпускала в девяностых. Первая версия JFFS поддерживала только NOR-память, но уже во второй версии подружилась с NAND.

Сейчас JFFS2 имеет ограниченное применение. В основном она все так же используется в дистрибутивах Linux для встраиваемых систем. Ее можно найти в маршрутизаторах, IP-камерах, NAS и прочих завсегдатаях интернета вещей. В общем, везде, где требуется небольшой объем надежной памяти.

Дальнейшей попыткой развития JFFS2 стала LogFS, у которой индексные дескрипторы хранились в отдельном файле. Авторы этой идеи - сотрудник немецкого подразделения IBM Йорн Энгель и преподаватель Оснабрюкского университета Роберт Мертенс. Исходный код LogFS выложен на GitHub . Судя по тому, что последнее изменение в нем было сделано четыре года назад, LogFS так и не обрела популярность.

Зато эти попытки подстегнули появление другой специализированной файловой системы - F2FS. Ее разработали в корпорации Samsung, на долю которой приходится немалая часть производимой в мире флеш-памяти. В Samsung делают чипы NAND Flash для собственных устройств и по заказу других компаний, а также разрабатывают SSD с принципиально новыми интерфейсами вместо унаследованных дисковых. Создание специализированной файловой системы с оптимизацией для флеш-памяти было с точки зрения Samsung давно назревшей необходимостью.

Четыре года назад, в 2012 году, в Samsung создали F2FS (Flash Friendly File System). Ее идея хороша, но реализация оказалась сыроватой. Ключевая задача при создании F2FS была проста: снизить число операций перезаписи ячеек и распределить нагрузку на них максимально равномерно. Для этого требуется выполнять операции с несколькими ячейками в пределах того же блока одновременно, а не насиловать их по одной. Значит, нужна не мгновенная перезапись имеющихся блоков по первому запросу ОС, а кеширование команд и данных, дозапись новых блоков на свободное место и отложенное стирание ячеек.

Сегодня поддержка F2FS уже официально реализована в Linux (а значит, и в Android), но особых преимуществ на практике она пока не дает. Основная особенность этой файловой системы (отложенная перезапись) привела к преждевременным выводам о ее эффективности. Старый трюк с кешированием даже одурачивал ранние версии бенчмарков, где F2FS демонстрировала мнимое преимущество не на несколько процентов (как ожидалось) и даже не в разы, а на порядки. Просто драйвер F2FS рапортовал о выполнении операции, которую контроллер только планировал сделать. Впрочем, если реальный прирост производительности у F2FS и невелик, то износ ячеек определенно будет меньше, чем при использовании той же ext4. Те оптимизации, которые не сможет сделать дешевый контроллер, будут выполнены на уровне самой файловой системы.

Экстенты и битовые карты

Пока F2FS воспринимается как экзотика для гиков. Даже в собственных смартфонах Samsung все еще применяется ext4. Многие считают ее дальнейшим развитием ext3, но это не совсем так. Речь идет скорее о революции, чем о преодолении барьера в 2 Тбайт на файл и простом увеличении других количественных показателей.

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

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

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


Диета с ограничением FAT

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

Загадка

Отгадай загадку: в двенадцать она начала полнеть, к шестнадцати была глуповатой толстушкой, а к тридцати двум стала жирной, так и оставшись простушкой. Кто она?

Правильно, это история про файловую систему FAT. Требования совместимости обеспечили ей дурную наследственность. На дискетах она была 12-разрядной, на жестких дисках - поначалу 16-битной, а до наших дней дошла уже как 32-разрядная. В каждой следующей версии увеличивалось число адресуемых блоков, но в самой сути ничего не менялось.

Популярная до сих пор файловая система FAT32 появилась аж двадцать лет назад. Сегодня она все так же примитивна и не поддерживает ни списки управления доступом, ни дисковые квоты, ни фоновое сжатие, ни другие современные технологии оптимизации работы с данными.

Зачем же FAT32 нужна в наши дни? Все так же исключительно для обеспечения совместимости. Производители справедливо полагают, что раздел с FAT32 сможет прочитать любая ОС. Поэтому именно его они создают на внешних жестких дисках, USB Flash и картах памяти.

Как освободить флеш-память смартфона

Карточки microSD(HC), используемые в смартфонах, по умолчанию отформатированы в FAT32. Это основное препятствие для установки на них приложений и переноса данных из внутренней памяти. Чтобы его преодолеть, нужно создать на карточке раздел с ext3 или ext4. На него можно перенести все файловые атрибуты (включая владельца и права доступа), поэтому любое приложение сможет работать так, словно запустилось из внутренней памяти.

Windows не умеет делать на флешках больше одного раздела, но для этого можно запустить Linux (хотя бы в виртуалке) или продвинутую утилиту для работы с логической разметкой - например, MiniTool Partition Wizard Free . Обнаружив на карточке дополнительный первичный раздел с ext3/ext4, приложение Link2SD и аналогичные ему предложат куда больше вариантов, чем в случае с одним разделом FAT32.


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

Флешки и карты памяти как раз быстро умирают из-за того, что любое изменение в FAT32 вызывает перезапись одних и тех же секторов, где расположены две цепочки файловых таблиц. Сохранил веб-страничку целиком, и она перезаписалась раз сто - с каждым добавлением на флешку очередной мелкой гифки. Запустил портейбл-софт? Он насоздавал временных файлов и постоянно меняет их во время работы. Поэтому гораздо лучше использовать на флешках NTFS с ее устойчивой к сбоям таблицей $MFT. Мелкие файлы могут храниться прямо в главной файловой таблице, а ее расширения и копии записываются в разные области флеш-памяти. Вдобавок благодаря индексации на NTFS поиск выполняется быстрее.

INFO

Для FAT32 и NTFS теоретические ограничения по уровню вложенности не указаны, но на практике они одинаковые: в каталоге первого уровня можно создать только 7707 подкаталогов. Любители поиграть в матрешки оценят.

Другая проблема, с которой сталкивается большинство пользователей, - на раздел с FAT32 невозможно записать файл больше 4 Гбайт. Причина заключается в том, что в FAT32 размер файла описывается 32 битами в таблице размещения файлов, а 2^32 (минус единица, если быть точным) как раз дают четыре гига. Получается, что на свежекупленную флешку нельзя записать ни фильм в нормальном качестве, ни образ DVD.

Копирование больших файлов еще полбеды: при попытке сделать это ошибка хотя бы видна сразу. В других ситуациях FAT32 выступает в роли бомбы замедленного действия. Например, ты скопировал на флешку портейбл-софт и на первых порах пользуешься им без проблем. Спустя длительное время у одной из программ (допустим, бухгалтерской или почтовой) база данных раздувается, и... она просто перестает обновляться. Файл не может быть перезаписан, поскольку достиг лимита в 4 Гбайт.

Менее очевидная проблема заключается в том, что в FAT32 дата создания файла или каталога может быть задана с точностью до двух секунд. Этого недостаточно для многих криптографических приложений, использующих временные метки. Низкая точность атрибута «дата» - еще одна причина того, почему FAT32 не рассматривается как полноценная файловая система с точки зрения безопасности. Однако ее слабые стороны можно использовать и в своих целях. Например, если скопировать на том FAT32 любые файлы с раздела NTFS, то они очистятся от всех метаданных, а также унаследованных и специально заданных разрешений. FAT просто не поддерживает их.

exFAT

В отличие от FAT12/16/32, exFAT разрабатывалась специально для USB Flash и карт памяти большого (≥ 32 Гбайт) объема. Extended FAT устраняет упомянутый выше недостаток FAT32 - перезаписывание одних и тех же секторов при любом изменении. Как у 64-разрядной системы, у нее нет практически значимых лимитов на размер одного файла. Теоретически он может иметь длину в 2^64 байт (16 Эбайт), а карточки такого объема появятся нескоро.

Еще одно принципиальное отличие exFAT - поддержка списков контроля доступа (ACL). Это уже не та простушка из девяностых, однако внедрению exFAT мешает закрытость формата. Поддержка exFAT полноценно и легально реализована только в Windows (начиная с XP SP2) и OS X (начиная с 10.6.5). В Linux и *BSD она поддерживается либо с ограничениями, либо не вполне законно. Microsoft требует лицензировать использование exFAT, и в этой области много правовых споров.

Btrfs

Еще один яркий представитель файловых систем на основе B-деревьев называется Btrfs. Эта ФС появилась в 2007 году и изначально создавалась в Oracle с прицелом на работу с SSD и RAID. Например, ее можно динамически масштабировать: создавать новые индексные дескрипторы прямо в работающей системе или разделять том на подтома без выделения им свободного места.

Реализованный в Btrfs механизм копирования при записи и полная интеграция с модулем ядра Device mapper позволяют делать практически мгновенные снапшоты через виртуальные блочные устройства. Предварительное сжатие данных (zlib или lzo) и дедупликация ускоряют основные операции, заодно продлевая время жизни флеш-памяти. Особенно это заметно при работе с базами данных (достигается сжатие в 2–4 раза) и мелкими файлами (они записываются упорядоченно крупными блоками и могут храниться непосредственно в «листьях»).

Также Btrfs поддерживает режим полного журналирования (данных и метаданных), проверку тома без размонтирования и множество других современных фич. Код Btrfs опубликован под лицензией GPL. Эта файловая система поддерживается в Linux как стабильная начиная с версии ядра 4.3.1.

Бортовые журналы

Практически все более-менее современные файловые системы (ext3/ext4, NTFS, HFSX, Btrfs и другие) относят к общей группе журналируемых, поскольку они ведут учет вносимых изменений в отдельном логе (журнале) и сверяются с ним в случае сбоя при выполнении дисковых операций. Однако степень подробности ведения журналов и отказоустойчивость у этих файловых систем разные.

Еxt3 поддерживает три режима ведения журнала: с обратной связью, упорядоченный и полное журналирование. Первый режим подразумевает запись только общих изменений (метаданных), выполняемую асинхронно по отношению к изменениям самих данных. Во втором режиме выполняется та же запись метаданных, но строго перед внесением любых изменений. Третий режим эквивалентен полному журналированию (изменений как в метаданных, так и в самих файлах).

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

Журналирование в NTFS похоже на второй режим ведения лога в ext3. В журнал записываются только изменения в метаданных, а сами данные в случае сбоя могут быть утеряны. Такой метод ведения журнала в NTFS задумывался не как способ достижения максимальной надежности, а лишь как компромисс между быстродействием и отказоустойчивостью. Именно поэтому люди, привыкшие к работе с полностью журналируемыми системами, считают NTFS псевдожурналируемой.

Реализованный в NTFS подход в чем-то даже лучше используемого по умолчанию в ext3. В NTFS дополнительно периодически создаются контрольные точки, которые гарантируют выполнение всех отложенных ранее дисковых операций. Контрольные точки не имеют ничего общего с точками восстановления в \System Volume Infromation\ . Это просто служебные записи в логе.

Практика показывает, что такого частичного журналирования NTFS в большинстве случаев хватает для беспроблемной работы. Ведь даже при резком отключении питания дисковые устройства не обесточиваются мгновенно. Блок питания и многочисленные конденсаторы в самих накопителях обеспечивают как раз тот минимальный запас энергии, которого хватает на завершение текущей операции записи. Современным SSD при их быстродействии и экономичности такого же количества энергии обычно хватает и на выполнение отложенных операций. Попытка же перейти на полное журналирование снизила бы скорость большинства операций в разы.

Подключаем сторонние ФС в Windows

Использование файловых систем лимитировано их поддержкой на уровне ОС. Например, Windows не понимает ext2/3/4 и HFS+, а использовать их порой надо. Сделать это можно, добавив соответствующий драйвер.

WARNING

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

Открытый драйвер для чтения и записи на разделы ext2/3 с частичной поддержкой ext4. В последней версии поддерживаются экстенты и разделы объемом до 16 Тбайт. Не поддерживаются LVM, списки контроля доступа и расширенные атрибуты.


Существует бесплатный плагин для Total Commander. Поддерживает чтение разделов ext2/3/4.


coLinux - открытый и бесплатный порт ядра Linux. Вместе с 32-битным драйвером он позволяет запускать Linux в среде Windows с 2000 по 7 без использования технологий виртуализации. Поддерживает только 32-битные версии. Разработка 64-битной модификации была отменена. сoLinux позволяет в том числе организовать из Windows доступ к разделам ext2/3/4. Поддержка проекта приостановлена в 2014 году.

Возможно, в Windows 10 уже есть встроенная поддержка характерных для Linux файловых систем, просто она скрыта. На эти мысли наводит драйвер уровня ядра Lxcore.sys и сервис LxssManager, который загружается как библиотека процессом Svchost.exe. Подробнее об этом смотри в докладе Алекса Ионеску «Ядро Линукс, скрытое внутри Windows 10», с которым он выступил на Black Hat 2016.


ExtFS for Windows - платный драйвер, выпускаемый компанией Paragon. Он работает в Windows с 7 по 10, поддерживает доступ к томам ext2/3/4 в режиме чтения и записи. Обеспечивает почти полную поддержку ext4 в Windows.

HFS+ for Windows 10 - еще один проприетарный драйвер производства Paragon Software. Несмотря на название, работает во всех версиях Windows начиная с XP. Предоставляет полный доступ к файловым системам HFS+/HFSX на дисках с любой разметкой (MBR/GPT).

WinBtrfs - ранняя разработка драйвера Btrfs для Windows. Уже в версии 0.6 поддерживает доступ к томам Btrfs как на чтение, так и на запись. Умеет обрабатывать жесткие и символьные ссылки, поддерживает альтернативные потоки данных, ACL, два вида компрессии и режим асинхронного чтения/записи. Пока WinBtrfs не умеет использовать mkfs.btrfs, btrfs-balance и другие утилиты для обслуживания этой файловой системы.

Возможности и ограничения файловых систем: сводная таблица

Фай-ло-вая сис-те-ма Мак-си-маль-ный раз-мер тома Пре-дель-ный раз-мер одного файла Дли-на собст-вен-ного имени файла Дли-на пол-но-го имени файла (вклю-чая путь от корня) Пре-дель-ное число файлов и/или ката-ло-гов Точ-ность ука-за-ния даты файла/ката-ло-га Права дос-ту-па Жёсткие ссылки Сим-воль-ные ссылки Мгно-вен-ные снимки (snap-shots) Сжа-тие дан-ных в фоне Шиф-ро-ва-ние дан-ных в фоне Деду-пли-ка-ция дан-ных
FAT16 2 ГБ секторами по 512 байт или 4 ГБ кластерами по 64 КБ 2 ГБ 255 байт с LFN - - - - - - - - - -
FAT32 8 ТБ секторами по 2 КБ 4 ГБ (2^32 - 1 байт) 255 байт с LFN до 32 подкаталогов с CDS 65460 10 мс (создание) / 2 с (изменение) нет нет нет нет нет нет нет
exFAT ≈ 128 ПБ (2^32-1 кластеров по 2^25-1 байт) теоретически / 512 ТБ из-за сторонних ограничений 16 ЭБ (2^64 - 1 байт) 2796202 в каталоге 10 мс ACL нет нет нет нет нет нет
NTFS 256 ТБ кластерами по 64 КБ или 16 ТБ кластерами по 4 КБ 16 ТБ (Win 7) / 256 ТБ (Win 8) 255 символов Unicode (UTF-16) 32760 символов Unicode, но не более 255 символов в каждом элементе 2^32-1 100 нс ACL да да да да да да
HFS+ 8 ЭБ (2^63 байт) 8 ЭБ 255 символов Unicode (UTF-16) отдельно не ограничивается 2^32-1 1 с Unix, ACL да да нет да да нет
APFS 8 ЭБ (2^63 байт) 8 ЭБ 255 символов Unicode (UTF-16) отдельно не ограничивается 2^63 1 нс Unix, ACL да да да да да да
Ext3 32 ТБ (теоретически) / 16 ТБ кластерами по 4 КБ (из-за ограничений утилит e2fs programs) 2 ТБ (теоретически) / 16 ГБ у старых программ 255 символов Unicode (UTF-16) отдельно не ограничивается - 1 с Unix, ACL да да нет нет нет нет
Ext4 1 ЭБ (теоретически) / 16 ТБ кластерами по 4 КБ (из-за ограничений утилит e2fs programs) 16 ТБ 255 символов Unicode (UTF-16) отдельно не ограничивается 4 млрд. 1 нс POSIX да да нет нет да нет
F2FS 16 ТБ 3,94 ТБ 255 байт отдельно не ограничивается - 1 нс POSIX, ACL да да нет нет да нет
BTRFS 16 ЭБ (2^64 - 1 байт) 16 ЭБ 255 символов ASCII 2^17 байт - 1 нс POSIX, ACL да да да да да да

Общие сведения о файловых системах

Операционная система Windows 8, поддерживает несколько файловых систем: NTFS, FAT и FAT32 . Но работать может только на NTFS , то есть установлена может быть только на раздел жесткого дис­ка, отформатированного в данной файловой системе. Обусловлено это теми особенностями и инструментами безопасности, которые преду­смотрены в NTFS , но отсутствуют в файловых системах Windows предыдущего поколения: FAT16 и FAT32 . Далее мы остановим­ся на всей линейке файловых систем для Windows, чтобы понять, какую роль они играют в работе системы и как они развивались в про­цессе становления Windows плоть до Windows 8.

Преимущества NTFS касаются практически всего: производительности, надежности и эффективности работы с данными (файлами) на диске. Так, одной из основных целей создания NTFS было обеспечение ско­ростного выполнения операций над файлами (копирование, чтение, удаление, запись), а также предоставление дополнительных возможно­стей: сжатие данных, восстановление поврежденных файлов системы на больших дисках и т.д.

Другой основной целью создания NTFS была реализация повышенных требований безопасности, так как файловые системы FAT , FAT32 в этом отношении вообще никуда не годились. Именно в NTFS вы можете разрешить или запретить доступ к какому-либо файлу или папке (разграничить права доступа).


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

Файловая система FAT для современных жест­ких дисков просто не подходит (ввиду ее ограниченных возможностей). Что касается FAT32 , то ее еще можно использовать, но уже с натяжкой. Если купить жесткий диск на 1000 ГБ, то вам придется разбивать его как минимум на несколько разделов. А если вы собираетесь заниматься видеомонтажом, то вам будет очень мешать ограничение в 4 Гб как максимально возможный размер файла .

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

Файловая
система
Параметры
Размеры тома Максимальный размер файла
FAT От 1.44 МБ до 4 ГБ 2ГБ
FAT32 Теоретически возможен размер тома от 512 МБ до 2 Тбайт. Сжатие не поддерживается на уровне файловой системы 4ГБ
NTFS Минимальный рекомендуемый размер составляет 1,44 МБ, а максимальный - 2 Тбайт. Поддержка сжатия на уровне файловой системы для файлов, каталогов и томов. Максимальный размер ограничен лишь размером тома (Теоретически - 264 байт минус 1 килобайт. Практически - 244 байт минус 64 килобайта)

Вообще использование FAT32 может быть оправдано лишь в тех случаях, когда у вас на компьютере установлено несколько операционных систем, а какая-либо из них не поддерживает NTFS . Но на сегодняшний день таких практически нет. Разве что вы захотите установить у себя антиквариат типа Windows 98.

Файловая система FAT

Файловая система FAT (обычно под ней понимается FAT 16 ) была разработана достаточно давно и предназначалась для работы с небольшими дисковыми и файловыми объемами, простой структурой каталогов. Аббревиатура FAT расшифровывается как File Allocation Table (с англ. таблица размещения файлов). Эта таблица размещается в начале тома, причем хранятся две ее копии (в целях обеспечения большей устойчивости).
 Данная таблица используется операционной системой для поиска файла и определения его физического расположения на жестком диске. В случае повреждения таблицы (и ее копии) чтение файлов операционной системой становится невозможно. Она просто не может определить, где какой файл, где он начинается и где заканчивается. В таких случаях говорят, что файловая система «упала».
 Файловая система FAT изначально разрабатывалась компанией Microsoft для дискет. Только потом они стали ее применять для жестких дисков. Сначала это была FAT12 (для дискет и жестких дисков до 16 МБ), а потом она переросла в FAT16 , которая была введена в эксплуатацию с операционной системой MS-DOS 3.0.

Файловая система FAT32

Начиная с Windows 95 OSR2, компания Microsoft начинает активно ис­пользовать в своих операционных системах FAT32 - тридцатидвухраз­рядную версию FAT . Что поделать, технический прогресс не стоит на месте и возможностей FAT 16 стало явно недостаточно.
 По сравнению с ней FAT32 стала обеспечивать более оптимальный до­ступ к дискам, более высокую скорость выполнения операций ввода/вывода, а также поддержку больших файловых объемов (объем диска до 2 Тбайт).
 В FAT32 реализовано более эффективное расходование дискового пространства (путем использования более мелких кластеров). Выгода по сравнению с FAT16 составляет порядка 10...15%. То есть при использовании FAT32 на один и тот же диск может быть записано информации на 10... 15% больше, чем при использовании FAT16.
 Кроме того, необходимо отметить, что FAT32 обеспечивает более вы­сокую надежность работы и более высокую скорость запуска программ.
 Обусловлено это двумя существенными нововведениями:
  возможностью перемещения корневого каталога и резервной копии FAT (если основная копия получила повреждения)

Возможностью хранения резервной копии системных данных.

Файловая система NTFS

 Общие сведения
 Ни одна из версий FAT не обеспечивает хоть сколько-нибудь приемле­мого уровня безопасности. Это, а также необходимость в добавочных файловых механизмах (сжатия, шифрования) привело к необходимости создания принципиально новой файловой системы. И ею стала фай­ловая система NT (NTFS)
NTFS - от англ. New Technology File System - файловая система новой технологии
 Как уже упоминалось, основным ее достоинством является защищен­ность: для файлов и папок NTFS могут быть назначены права доступа (на чтение, на запись и т.д.). Благодаря этому существенно повысилась безопасность данных и устойчивость работы системы.  Назначение прав доступа позволяет запретить/разрешить каким-либо пользователям и программам проделывать какие-либо операции над файлами. Например, не обладая достаточными правами, посторонний пользователь не сможет изменить какой-либо файл. Или, опять же не обладая достаточными правами, вирус не сможет испортить файл.
 Кроме того, NTFS , как было сказано выше, обеспечивает лучшую про­изводительность и возможность работы с большими объемами данных.

Начиная с Windows 2000, используется версия NTFS 5.0 , которая, помимо стандартных, позволяет реализовывать следующие возможности:

Шифрование данных - эта возможность реализуется специальной надстройкой NTFS, которая называется Encrypting File System (EFS) - шифрующая файловая система. Благодаря этому механизму шифрованные данные могут быть прочитаны только на компьютере, на котором произошла шифровка.
Дисковые квоты - стало возможно назначать пользователям определенный (ограниченный) размер на диске, который они могут использовать.
Эффективное хранение разреженных файлов . Встречаются файлы, в которых содержится большое количество последовательных пустых байтов. Файловая система NTFS позволяет оптимизировать их хранение.

Использование журнала изменений - позволяет регистрировать все операции доступа к файлам и томам.

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

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

Устройство NTFS. Главная таблица файлов MFT.
 Как и любая другая файловая система, NTFS делит все полезное место на кластеры - минимальные блоки данных, на которые разбиваются файлы. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт. Однако общепринятым стандартом считается кластер размером 4 Кбайт. Именно он используется по умолчанию. Принцип существования кластеров можно проиллюстрировать следующим при­мером.
 Если у вас размер кластера составляет 4 Кбайт (что скорее всего), а вам нужно сохранить файл, размером 5 Кбайт, то реально под него будет вы­делено 8 Кбайт, так как в один кластер он не помещается, а под файл дисковое пространство выделяется только кластерами.
 Для каждого NTFS-диска имеется специальный файл - MFT (Master Allocation Table - главная таблица файлов) . В этом файле содержится централизованный каталог всех имеющихся на диске файлов. При создании файла NTFS создает и заполняет в MFT соответствующую запись, в которой содержится информация об атрибутах файла, содержимом файла, имя файла и т.п.

Помимо MFT , имеется еще 15 специальных файлов (вместе с MFT - 16), которые недоступны операционной системе и называются метафайлами . Имена всех метафайлов начинаются с символа $ , но стандартными средствами операционной системы просмотреть их и вообще увидеть не представляется возможным. Далее для примера представлены основные метафайлы:

SMFT - сам MFT.
$MFTmirr - копия первых 16 записей MFT, размещенная посе­редине диска (зеркало).
$LogFile - файл поддержки журналирования.
$Volume - служебная информация: метка тома, версия файловой системы, и т.д.
$AttrDef - список стандартных атрибутов файлов на томе.
$. - корневой каталог.
$Bitmap - карта свободного места тома.
$Boot - загрузочный сектор (если раздел загрузочный).
$Quota - файл, в котором записаны права пользователей на ис­пользование дискового пространства.
$Upcase - файл-таблица соответствия заглавных и прописных букв в именах файлов на текущем томе.
Нужен в основном потому, что в NTFS имена файлов записываются в кодировке Unicode , которую составляют 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.
 Что касается принципа организации данных на диске NTFS, то он условно делится на две части. Первые 12% диска отводятся под так называемую MFT-зону - пространство, в которое растет метафайл MFT.
 Запись каких-либо пользовательских данных в эту область невозможна. MFT-зона всегда держится пустой. Это делается для того, чтобы самый главный служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.
  Однако при нехватке дискового пространства MFT-зона может сама уменьшаться (если это возможно), так что никакого дискомфорта вы замечать не будете. При этом новые данные уже будут записываться в бывшую MFT-зону.
В случае последующего высвобождения дискового пространства MFT-зона снова будет увеличиваться, однако в дефрагментированном виде (то есть не единым блоком, а несколькими частями на диске). В этом нет ничего страшного, просто считается, что система более надежна, когда MFT-файл не дефрагментирован. Кроме того, при не дефрагментированном MFT-файле вся файловая система работает быстрее. Соответственно чем более дефрагментированным является MFT-файл, тем медленней работает файловая система.

Что касается размера MFT-файла, то он примерно вычисляется, исходя из 1 МБ на 1000 файлов.

Конвертирование разделов FAT32 в NTFS без потери данных. Утилита convert

Вы можете без особого труда конвертировать существующий FAT32-раздел в NTFS. Для этого в Windows 8, Windows 8.1 предусмотрена утилита командной строки convert

Параметры ее работы показаны на скриншоте

Таким образом, чтобы конвертировать в NTFS диск D:, в командную строку следует ввести следующую команду:

После этого от вас попросят ввести метку тома, если такая есть (метка тома указывается рядом с именем диска в окне Мой компьютер . Она служит для более подробного обозначения дисков и может использоваться, а может не использоваться. Например, это может быть Files Storage (D: ).
 Для конвертации флешки команда выглядит так:

convert e : /fs:ntfs /nosecurity /x

FAT16

Файловая система FAT16 начала свое существование еще во времена, предшествовавшие MS-DOS, и поддерживается всеми операционными системами Microsoft для обеспечения совместимости. Ее название File Allocation Table (таблица расположения файлов) отлично отражает физическую организацию файловой системы, к основным характеристикам которой можно отнести то, что максимальный размер поддерживаемого тома (жесткого диска или раздела на жестком диске) не превышает 4095 Мбайт. Во времена MS-DOS 4-гигабайтные жесткие диски казались несбыточной мечтой (роскошью были диски объемом 20-40 Мбайт), поэтому такой запас был вполне оправданным.

Том, отформатированный для использования FAT16, разделяется на кластеры. Размер кластера по умолчанию зависит от размера тома и может колебаться от 512 байт до 64 Кбайт. В табл. 2 показано, как размер кластера зависит от размера тома. Отметим, что размер кластера может отличаться от значения по умолчанию, но должен иметь одно из значений, указанных в табл. 2 .

Не рекомендуется задействовать файловую систему FAT16 на томах больше 511 Мбайт, так как для относительно небольших по объему файлов дисковое пространство будет использоваться крайне неэффективно (файл размером в 1 байт будет занимать 64 Кбайт). Независимо от размера кластера файловая система FAT16 не поддерживается для томов больше 4 Гбайт.

FAT32

Начиная с Microsoft Windows 95 OEM Service Release 2 (OSR2) в Windows появилась поддержка 32-битной FAT. Для систем на базе Windows NT эта файловая система впервые стала поддерживаться в Microsoft Windows 2000. Если FAT16 может поддерживать тома объемом до 4 Гбайт, то FAT32 способна обслуживать тома объемом до 2 Тбайт. Размер кластера в FAT32 может изменяться от 1 (512 байт) до 64 секторов (32 Кбайт). Для хранения значений кластеров FAT32 требуется 4 байт (32 бит, а не 16, как в FAT16). Это означает, в частности, что некоторые файловые утилиты, рассчитанные на FAT16, не могут работать с FAT32.

Основным отличием FAT32 от FAT16 является то, что изменился размер логического раздела диска. FAT32 поддерживает тома объемом до 127 Гбайт. При этом, если при использовании FAT16 с 2-гигабайтными дисками требовался кластер размером в 32 Кбайт, то в FAT32 кластер размером в 4 Кбайт подходит для дисков объемом от 512 Мбайт до 8 Гбайт (табл. 4).

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

При применении FAT32 максимальный размер файла может достигать 4 Гбайт минус 2 байта. Если при использовании FAT16 максимальное число вхождений в корневой каталог ограничивалось 512, то FAT32 позволяет увеличить это число до 65 535.

FAT32 накладывает ограничения на минимальный размер тома - он должен быть не менее 65 527 кластеров. При этом размер кластера не может быть таким, чтобы FAT занимала более 16 Мбайт–64 Кбайт / 4 или 4 млн. кластеров.

При использовании длинных имен файлов данные, необходимые для доступа из FAT16 и FAT32, не перекрываются. При создании файла с длинным именем Windows создает соответствующее имя в формате 8.3 и одно или более вхождений в каталог для хранения длинного имени (по 13 символов из длинного имени файла на каждое вхождение). Каждое последующее вхождение хранит соответствующую часть имени файла в формате Unicode. Такие вхождения имеют атрибуты «идентификатор тома», «только чтение», «системный» и «скрытый» - набор, который игнорируется MS-DOS; в этой операционной системе доступ к файлу осуществляется по его «псевдониму» в формате 8.3.

Файловая система NTFS

В состав Microsoft Windows 2000 входит поддержка новой версии файловой системы NTFS, которая, в частности, обеспечивает работу с сервисами каталогов Active Directory, точки пересчета (reparse points), средства защиты информации, контроль за доступом и ряд других возможностей.

Как и при использовании FAT, основной информационной единицей в NTFS является кластер. В табл. 5 показаны размеры кластеров по умолчанию для томов различной емкости.

При формировании файловой системы NTFS программа форматирования создает файл Master File Table (MTF) и другие области для хранения метаданных. Метаданные используются NTFS для реализации файловой структуры. Первые 16 записей в MFT зарезервированы самой NTFS. Местоположение файлов метаданных $Mft и $MftMirr записано в загрузочном секторе диска. Если первая запись в MFT повреждена, NTFS считывает вторую запись для нахождения копии первой. Полная копия загрузочного сектора располагается в конце тома. В табл. 6 перечислены основные метаданные, хранимые в MFT.

Остальные записи MFT содержат записи для каждого файла и каталога, расположенных на данном томе.

Обычно один файл использует одну запись в MFT, но если у файла большой набор атрибутов или он становится слишком фрагментированным, то для хранения информации о нем могут потребоваться дополнительные записи. В этом случае первая запись о файле, называемая базовой записью, хранит местоположение других записей. Данные о файлах и каталогах небольшого размера (до 1500 байт) полностью содержатся в первой записи.

Атрибуты файлов в NTFS

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

Если атрибуты файла вмещаются в файловую запись, они называются резидентными атрибутами. Такими атрибутами всегда являются имя файла и дата его создания. В тех случаях, когда информация о файле слишком велика, чтобы вместиться в одну MFT-запись, некоторые атрибуты файла становятся нерезидентными. Резидентные атрибуты хранятся в одном или более кластерах и представляют собой поток альтернативных данных для текущего тома (об этом - чуть ниже). Для описания местонахождения резидентных и нерезидентных атрибутов NTFS создает атрибут Attribute List.

В табл. 7 показаны основные атрибуты файлов, определенные в NTFS. В будущем этот список может быть расширен.

Файловая система CDFS

В Windows 2000 обеспечивается поддержка файловой системы CDFS, отвечающей стандарту ISO’9660, описывающему расположение информации на CD-ROM. Поддерживаются длинные имена файлов в соответствии с ISO’9660 Level 2.

При создании CD-ROM для использования под управлением Windows 2000 следует иметь в виду следующее:

  • все имена каталогов и файлов должны содержать менее 32 символов;
  • все имена каталогов и файлов должны состоять только из символов верхнего регистра;
  • глубина каталогов не должна превышать 8 уровней от корня;
  • использование расширений имен файлов не обязательно.

Сравнение файловых систем

Под управлением Microsoft Windows 2000 возможно использование файловых систем FAT16, FAT32, NTFS или их комбинаций. Выбор операционной системы зависит от следующих критериев:

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

Файловые системы FAT

Как вы уже могли заметить, цифры в названии файловых систем - FAT16 и FAT32 - указывают на число бит, необходимых для хранения информации о номерах кластеров, используемых файлом. Так, в FAT16 применяется 16-битная адресация и, соответственно, возможно использование до 2 16 адресов. В Windows 2000 первые четыре бита таблицы расположения файлов FAT32 необходимы для собственных нужд, поэтому в FAT32 число адресов достигает 2 28 .

В табл. 8 показаны размеры кластеров для файловых систем FAT16 и FAT32.

Помимо существенных отличий в размере кластера FAT32 также позволяет корневому каталогу расширяться (в FAT16 число вхождений ограничено 512 и может быть даже ниже при использовании длинных имен файлов).

Преимущества FAT16

Среди преимуществ FAT16 можно отметить следующие:

  • файловая система поддерживается операционными системами MS-DOS, Windows 95, Windows 98, Windows NT, Windows 2000, а также некоторыми операционными системами UNIX;
  • существует большое число программ, позволяющих исправлять ошибки в этой файловой системе и восстанавливать данные;
  • при возникновении проблем с загрузкой с жесткого диска система может быть загружена с флоппи-диска;
  • данная файловая система достаточно эффективна для томов объемом менее 256 Мбайт.
Недостатки FAT16

К основным недостаткам FAT16 относятся:

  • корневой каталог не может содержать более 512 элементов. Использование длинных имен файлов существенно сокращает число этих элементов;
  • FAT16 поддерживает не более 65 536 кластеров, а так как некоторые кластеры зарезервированы операционной системой, число доступных кластеров - 65 524. Каждый кластер имеет фиксированный размер для данного логического устройства. При достижении максимального числа кластеров при их максимальном размере (32 Кбайт) максимальный объем поддерживаемого тома ограничивается 4 Гбайт (под управлением Windows 2000). Для поддержания совместимости с MS-DOS, Windows 95 и Windows 98 объем тома под FAT16 не должен превышать 2 Гбайт;
  • в FAT16 не поддерживается встроенная защита файлов и их сжатие;
  • на дисках большого объема теряется много места за счет того, что используется максимальный размер кластера. Место под файл выделяется исходя из размера не файла, а кластера.
Преимущества FAT32

Среди преимуществ FAT32 можно отметить следующие:

  • выделение дискового пространства выполняется более эффективно, особенно для дисков большого объема;
  • корневой каталог в FAT32 представляет собой обычную цепочку кластеров и может находиться в любом месте диска. Благодаря этому FAT32 не накладывает никаких ограничений на число элементов в корневом каталоге;
  • за счет использования кластеров меньшего размера (4 Кбайт на дисках объемом до 8 Гбайт) занятое дисковое пространство обычно на 10-15% меньше, чем под FAT16;
  • FAT32 является более надежной файловой системой. В частности, она поддерживает возможность перемещения корневого каталога и использования резервной копии FAT. Помимо этого загрузочная запись содержит ряд критичных для файловой системы данных.
Недостатки FAT32

Основные недостатки FAT32:

  • размер тома при использовании FAT32 под Windows 2000 ограничен 32 Гбайт;
  • тома FAT32 недоступны из других операционных систем - только из Windows 95 OSR2 и Windows 98;
  • не поддерживается резервная копия загрузочного сектора;
  • в FAT32 не поддерживается встроенная защита файлов и их сжатие.

Файловая система NTFS

При работе в Windows 2000 Microsoft рекомендуется отформатировать все разделы жесткого диска под NTFS, за исключением тех конфигураций, когда используется несколько операционных систем (кроме Windows 2000 и Windows NT). Применение NTFS вместо FAT позволяет использовать функции, доступные в NTFS. К ним, в частности, относятся:

  • возможность восстановления. Эта возможность «встроена» в файловую систему. NTFS гарантирует сохранность данных за счет того, что использует протокол и некоторые алгоритмы восстановления информации. В случае системного сбоя NTFS использует протокол и дополнительную информацию для автоматического восстановления целостности файловой системы;
  • сжатие информации. Для томов NTFS Windows 2000 поддерживает сжатие отдельных файлов. Такие сжатые файлы могут использоваться Windows-приложениями без предварительной распаковки, которая происходит автоматически при чтении из файла. При закрытии и сохранении файл снова упаковывается;
  • помимо этого можно выделить следующие преимущества NTFS:

Некоторые функции операционной системы требуют наличия NTFS;

Скорость доступа намного выше - NTFS минимизирует число обращений к диску, требуемых для нахождения файла;

Защита файлов и каталогов. Только на томах NTFS возможно задание атрибутов доступа к файлам и папкам;

При использовании NTFS Windows 2000 поддерживает тома объемом до 2 Тбайт;

Файловая система поддерживает резервную копию загрузочного сектора - она располагается в конце тома;

NTFS поддерживает систему шифрования Encrypted File System (EFS), обеспечивающую защиту от неавторизованного доступа к содержимому файлов;

При использовании квот можно ограничить объем дискового пространства, занимаемого пользователями.

Недостатки NTFS

Говоря о недостатках файловой системы NTFS, следует отметить, что:

  • NTFS-тома недоступны в MS-DOS, Windows 95 и Windows 98. Помимо этого ряд функций, реализованных в NTFS под Windows 2000, недоступен в Windows 4.0 и более ранних версиях;
  • для томов небольшого объема, содержащих много файлов небольшого размера, возможно снижение производительности по сравнению с FAT.

Файловая система и скорость

Как мы уже выяснили, для томов небольшого объема FAT16 или FAT32 обеспечивает более быстрый доступ к файлам по сравнению с NTFS, так как:

  • FAT обладает более простой структурой;
  • размер каталогов меньше;
  • FAT не поддерживает защиту файлов от несанкционированного доступа - системе не нужно проверять права доступа к файлам.

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

Одно вхождение в FAT содержит номер кластера для первого кластера каталога. Для просмотра файла FAT требуется поиск по всей файловой структуре.

Сравнивая скорость операций, выполняемых для каталогов, содержащих короткие и длинные имена файлов, следует учитывать, что скорость операций для FAT зависит от самой операции и размера каталога. Если FAT ищет несуществующий файл, поиск выполняется по всему каталогу - эта операция занимает больше времени, чем поиск по структуре, основанной на B-деревьях, используемой в NTFS. Среднее время, необходимое для поиска файла, в FAT выражается как функция от N/2, в NTFS - как log N, где N - это число файлов.

Ряд следующих факторов влияет на скорость чтения и записи файлов под управлением Windows 2000:

  • фрагментация файла. Если файл сильно фрагментирован, NTFS обычно требуется меньше обращений к диску, чем FAT для нахождения всех фрагментов;
  • размер кластера. Для обеих файловых систем размер кластера по умолчанию зависит от объема тома и всегда выражается степенью числа 2. Адреса в FAT16 - 16-битные, в FAT32 - 32-битные, в NTFS - 64-битные;
  • размер кластера по умолчанию в FAT базируется на том факте, что таблица расположения файлов может иметь не более 65 535 вхождений - размер кластера представляет собой функцию от объема тома, деленного на 65 535. Таким образом, размер кластера по умолчанию для тома FAT всегда больше, чем размер кластера для тома NTFS того же объема. Отметим, что больший размер кластера для томов FAT означает, что тома FAT могут быть менее фрагментированными;
  • расположение файлов небольшого размера. При использовании NTFS файлы небольшого размера содержатся в MFT-записи. Размер файла, помещающегося в одну запись MFT, зависит от числа атрибутов этого файла.

Максимальный размер томов NTFS

Теоретически NTFS поддерживает тома с числом кластеров до 2 32 . Но тем не менее помимо отсутствия жестких дисков такого объема существуют и другие ограничения на максимальный размер тома.

Одним из таких ограничений является таблица разделов. Индустриальные стандарты ограничивают размер таблицы разделов 2 32 секторами. Другим ограничением является размер сектора, который обычно равен 512 байт. Поскольку размер сектора может измениться в будущем, текущий размер дает ограничение на размер одного тома - 2 Тбайт (2 32 x 512 байт = 2 41). Таким образом, 2 Тбайт является практическим пределом для физических и логических томов NTFS.

В табл. 11 показаны основные ограничения NTFS.

Управление доступом к файлам и каталогам

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

Под NTFS можно также устанавливать разрешения на удаленный доступ, объединяемые с разрешениями на доступ к файлам и каталогам. Помимо этого файловые атрибуты (только чтение, скрытый, системный) также ограничивают доступ к файлу.

Под управлением FAT16 и FAT32 тоже возможно устанавливать атрибуты файлов, но они не обеспечивают права доступа к файлам.

В версии NTFS, используемой в Windows 2000, появился новый тип разрешения на доступ - наследуемые разрешения. Вкладка Security содержит опцию Allow inheritable permissions from parent to propagate to this file object , которая по умолчанию находится в активном состоянии. Данная опция существенно сокращает время, требуемое на изменение прав доступа к файлам и подкаталогам. Например, для изменения прав доступа к дереву, содержащему сотни подкаталогов и файлов, достаточно включить эту опцию - в Windows NT 4 необходимо изменить атрибуты каждого отдельного файла и подкаталога.

На рис. 5 показаны диалоговая панель Properties и вкладка Security (раздел Advanced) - перечислены расширенные права доступа к файлу.

Напомним, что для томов FAT можно управлять доступом только на уровне томов и такой контроль возможен только при удаленном доступе.

Сжатие файлов и каталогов

В Windows 2000 поддерживается сжатие файлов и каталогов, расположенных на NTFS-томах. Сжатые файлы доступны для чтения и записи любыми Windows-приложениями. Для этого нет необходимости в их предварительной распаковке. Используемый алгоритм сжатия схож с тем, который используется в DoubleSpace (MS-DOS 6.0) и DriveSpace (MS-DOS 6.22), но имеет одно существенное отличие - под управлением MS-DOS выполняется сжатие целого первичного раздела или логического устройства, тогда как под NTFS можно упаковывать отдельные файлы и каталоги.

Алгоритм сжатия в NTFS разработан с учетом поддержки кластеров размером до 4 Кбайт. Если величина кластера больше 4 Кбайт, функции сжатия NTFS становятся недоступными.

Самовосстановление NTFS

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

NTFS рассматривает каждую операцию, модифицирующую системные файлы на NTFS-томах, как транзакцию и сохраняет информацию о такой транзакции в протоколе. Начатая транзакция может быть либо полностью завершена (commit), либо откатывается (rollback). В последнем случае NTFS-том возвращается в состояние, предшествующее началу транзакции. Для того чтобы управлять транзакциями, NTFS записывает все операции, входящие в транзакцию, в файл протокола, перед тем как осуществить запись на диск. После того как транзакция завершена, все операции выполняются. Таким образом, под управлением NTFS не может быть незавершенных операций. В случае дисковых сбоев незавершенные операции просто отменяются.

Под управлением NTFS также выполняются операции, позволяющие «на лету» определять дефектные кластеры и отводить новые кластеры для файловых операций. Этот механизм называется cluster remapping.

В данном обзоре мы рассмотрели различные файловые системы, поддерживаемые в Microsoft Windows 2000, обсудили устройство каждой из них, отметили их достоинства и недостатки. Наиболее перспективной является файловая система NTFS, которая обладает большим набором функций, недоступных в других файловых системах. Новая версия NTFS, поддерживаемая Microsoft Windows 2000, обладает еще большей функциональностью и поэтому рекомендуется для использования при установке операционной системы Win 2000.

КомпьютерПресс 7"2000

Мы привыкли к таким терминам, как “файл” и “папка” или “директория”. Но что это за механизм, который управляет файлами, проводит их аудит и контролирует их перемещение?

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

Разберемся, как работает файловая система, какие ее разновидности существуют и рассмотрим основные операции с файловой системой, влияющие на производительность системы.

принцип работы файловой системы windows

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

Когда какой-либо программе требуется файл, она отправляет операционной системе запрос, который обрабатывается файловой системой Windows. По полученному пути система получает адрес места хранения файла (физическое расположение) и передает его программе, отправившей запрос.

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

В файловых системах FAT32 и NTFS, такой базой данных является Главная Файловая Таблица (MFT – Master File Table).

Что на самом деле происходит при перемещении, копировании и удалении файлов?

Как бы это не казалось странным, но не все операции с файлами и папками ведут к физическим изменениям на жестком диске. Некоторые операции только вносят изменения в MFT, а сам файл остается на том же месте.

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

1. Перемещение файла : данная операция подразумевает смену одного пути на другой. Следовательно, необходимо изменить только запись в Главной Файловой Таблице, а сам файл физически перемещать нет необходимости. Он остается на прежнем месте в неизменном виде.

2. Копирование файла : данная операция подразумевает создание еще одной дополнительной реализации файла на новом месте. При этом происходит не только создание записи в MFT, но и появление еще одной реальной копии файла на новом месте.

3. Удаление файла : в данном случае файл сначала помещается в Корзину. После вызова функции “Очистить” Корзину, файловая система удаляет запись из MFT. При этом файл физически не удаляется, он остается на своем прежнем месте месте. И будет существовать, пока его не перезапишут. Эту особенность следует учитывать при удалении конфиденциальных файлов: лучше использовать для этого специальные программы.

Теперь становится понятно, почему операция перемещения происходит быстрее, чем операция копирования. Повторюсь, во втором случае требуется помимо внесения изменений в Главную Файловую Таблицу дополнительно создать еще и физическую копию файла.

Какие типы файловых систем существуют?

1. FAT16 (File Allocated Table 16) . Устаревшая файловая система, которая могла работать только с файлами размером не больше 2 Гб, поддерживала жесткие диски емкостью не более 4 Гб, и могла хранить и обрабатывать не более 65636 файлов. С развитием технологий и ростом потребностей пользователей данную файловую систему заменила NTFS.

2. FAT32 . С ростом объема данных, хранимых на носителях информации, была разработана и введена новая файловая система Windows, которая стала поддерживать файлы размером до 4 Гб и установила предельную емкость жесткого диска на планке 8 Тб. Как правило, в настоящее время FAT32 используется только на внешних носителях информации.

3. NTFS (New Technology File System) . Это стандартная файловая система, устанавливаемая на все современные компьютеры с операционной системой Windows. Максимальный размер файла, обрабатываемый данной файловой системой, 16 Тб; максимально поддерживаемый размер жесткого диска – 256 Тб.

Дополнительной функцией NTFS является журналирование своих действий. Первоначально все изменения заносятся в специально отведенную для это область, а лишь затем они прописываются в файловой таблице. Что позволяет предотвратить потерю данных, например при сбоях в питании.

4. HSF+ (Hierarchical File System+) . Стандартная файловая система для компьютеров с операционной системой MacOS. Аналогично NTFS, она поддерживает файлы большого объема и жесткие диски емкостью несколько сотен терабайт.

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

как узнать тип файловой системы?

Самый простой способ: откройте “Проводник файлов” –> выберите интересующий вас раздел жесткого диска –> кликните по нему правой кнопкой мыши –> в появившемся меню выберите пункт “Свойства” –> в открывшемся окошке выберите вкладку “Общие”.

Обслуживание файловой системы Windows

Следует отметить, что файловая система не следит за “порядком” на жестком диске. ОС Windows устроена таким образом, что она сохраняет новые файлы в первой попавшейся незанятой ячейке. При этом если файл не помещается целиком в эту ячейку, то он делится на несколько частей (фрагментируется). Соответственно время доступа и открытия такого файла увеличивается, что сказывается на общей производительности системы.

Чтобы этого не допустить, и “навести порядок” в файловой системе, необходимо регулярно производить дефрагментацию разделов жесткого диска.

Для этого опять зайдите в свойства интересующего вас раздела жесткого диска (как это описано выше), перейдите на вкладку “Сервис” и нажмите на кнопку “Выполнить дефрагментацию”.

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

Чтобы осуществить дефрагментацию самостоятельно, укажите раздел жесткого диска, нажмите кнопку “Анализировать диск” –> а затем “Дефрагментация диска”.

Дождитесь завершения операции и закройте окошко.