Часть 1
В динамичном мире софта есть нечто, что не меняется порой десятилетиями. Я говорю про файловые системы. Актуальная сейчас NTFS (New Technology File System) появилась почти 20 лет назад, в 1993-м, вместе с принципиально новой ОС - Windows NT 3.1. И с тех пор NTFS добросовестно трудится на сотнях миллионов Windows-ПК по всему миру. Но теперь для нее появилась замена: ReFS.
20 лет спустя
Однако у всего есть предел, и у возможностей файловых систем - тоже. Сегодня возможности NTFS подошли к своим границам: проверка ёмких носителей данных занимает слишком много времени, "Журнал" тормозит доступ, а максимальный размер файлов уже практически достигнут. Понимая это, Microsoft реализовала в Windows 8 новую файловую систему - ReFS (Resilient File System - отказоустойчивая файловая система). Считается, что ReFS обеспечивает лучшую защиту данных на ёмких и быстрых жестких дисках. Наверняка у нее есть и свои недостатки, но до начала по-настоящему массового использования в Windows 8 говорить о них трудно. Так что пока попробуем разобраться во внутреннем устройстве и преимуществах ReFS.
Изначально ReFS была известна под кодовым названием "Protogon". Впервые о ней широкой публике примерно год назад рассказал Стивен Синофски - президент подразделения Windows в Microsoft, отвечающий за разработку и маркетинг Windows и Internet Explorer.
Рассказал такими словами: "Сегодня система NTFS является наиболее широко используемой, передовой и функционально богатой файловой системой. Но переосмысливая Windows, а мы в данный момент разрабатываем Windows 8, - мы не останавливаемся на достигнутом. Поэтому вместе с Windows 8 мы также внедряем совершенно новую файловую систему. ReFS создана на основе NTFS, поэтому в ней сохранились важнейшие возможности совместимости, в то же время она разработана и спроектирована с учетом нужд нового поколения технологий и сценариев хранения данных. В Windows 8, ReFS будет введена только как часть Windows Server 8, такой же подход мы использовали для внедрения всех предыдущих файловых систем. Конечно же, на прикладном уровне клиентам будет предоставляться доступ к данным ReFS такой же, как к данным NTFS. Нельзя забывать о том, что NTFS все еще является ведущей технологией в индустрии среди файловых систем для ПК".
Действительно, впервые ReFS мы увидели в серверной ОС Windows Server 8. Новая файловая система разработана все же не с нуля. Например для открытия, закрытия, чтения и записи файлов ReFS использует те же интерфейсы доступа API, что и NTFS. Также из NTFS перекочевали многие хорошо знакомые возможности - например, шифрование диска Bitlocker и символьные ссылки для библиотек. Зато исчезло, например, сжатие данных и ряд прочих функций.
Основные инновации ReFS сосредоточены в области создания структур файлов и папок, а также управления ими. Их задача - обеспечить автоматическое исправление ошибок, максимальное масштабирование и работу в режиме постоянной подключенности (Always Online).
Архитектура ReFS
Дисковая реализация структур ReFS кардинально отличается от других файловых систем Microsoft. Реализовать свои идеи разработчики Microsoft смогли, применив в ReFS концепцию B+-деревьев, знакомую по базам данных. Папки в файловой системе структурированы в виде таблиц с файлами в качестве записей. Они, в свою очередь, получают определенные атрибуты, добавляемые в качестве подтаблиц, создавая иерархическую древовидную структуру. Даже свободное место на диске организовано в виде таблиц.
Наряду с реальной 64-битной нумерацией всех элементов системы это исключает появление "узких мест" при дальнейшем ее масштабировании.
Как результат, ядром системы в ReFS стала таблица объектов - центральный каталог, в котором перечислены все таблицы в системе. Есть у такого подхода важное преимущество: ReFS отказалась от сложного управления журналом и фиксирует новую информацию о файле в свободном месте - это предотвращает ее перезаписывание.
"Листьями Каталога" являются типизированные записи. Для объекта-папки существуют три основных типа записей: описатель каталога, индексная запись и описатель вложенного объекта. Все такие записи упакованы в виде отдельного B+-дерева, имеющего идентификатор папки; корень этого дерева является листом B+-дерева "Каталога", что позволяет упаковать в папку практически любое количество записей. На нижнем уровне в листах B+-дерева папки находится в первую очередь запись описателя каталога, содержащая основные данные о папке (имя, "стандартная информация", атрибут имени файла и т.д.).
Далее в каталоге помещены индексные записи: короткие структуры, содержащие данные об элементах, содержащихся в папке. Эти записи значительно короче, чем в NTFS, - это в меньшей степени перегружает том метаданными.
В конце помещены записи элементов каталога. Для папок эти элементы содержат имя паки, идентификатор папки в "Каталоге" и структуру "стандартной информации". Для файлов идентификатор отсутствует - вместо этого структура содержит все основные данные о файле, включая корень B+-дерева фрагментов файла. Соответственно, файл может состоять практически из любого числа фрагментов.
Подобно NTFS, в ReFS принципиально различается информация о файле (метаданные) и содержимое файла (пользовательские данные). Однако защитные функции предоставляются и тем, и другим одинаково. Метаданные по умолчанию предохраняются с помощью контрольных сумм - такую же защиту (по желанию) можно дать и пользовательским данным. Эти контрольные суммы располагаются на диске на безопасном удалении друг от друга - так будет проще восстановить данные в случае возникновения ошибки.
Размер метаданных пустой файловой системы составляет порядка 0.1% от размера самой файловой системы (т.е. около 2 Гб на том 2 Тб). Некоторые основные метаданные дублируются для большей устойчивости от сбоев.
Вариант ReFS, который мы увидели в Windows Server 8 Beta, имеет поддержку кластеров данных размером только 64 Кб и кластеров метаданных размером 16 Кб. Пока параметр "Размер кластера" при создании тома ReFS игнорируется и всегда принимается умалчиваемым. При форматировании файловой системы единственным доступным вариантом для выбора размера кластера также является 64 Кб.
Признаем: такого размера кластера более чем хватит для организации файловых систем любого размера. Побочным эффектом, правда, становится ощутимая избыточность при хранении данных (файл размером в 1 байт на диске займет полный блок 64 Кб).
Во второй части статьи мы рассмотрим защищенность файловой системы ReFS от сбоев (включая сбои оборудования) и преднамеренных атак.
Виктор ДЕМИДОВ
![Версия для печати Версия для печати](https://www.kv.by/sites/all/modules/print/icons/print_icon.png)
Комментарии
А ещё нужно регулярно дефрагментировать?
А фигвам ответит этот автор. Не в его правилах отвечать за базар и на комменты.
О, нашёл, наконец, набросок заметки "Немного о Windows, или вечное "почему". Валялся в облаках. Вендоводам посвящаю. Coming soon.