Часть 2
(Продолжение. Начало в №38)
Защищенность ReFS
С точки зрения архитектуры файловой системы ReFS имеет все требуемые инструменты для безопасного восстановления файлов даже после серьезного сбоя оборудования. Главный минус системы журналов в файловой системе NTFS и ей подобных - то, что обновление диска может повредить записанные ранее метаданные при сбое питания во время записи - т.н. "оборванная запись".
Для предотвращения оборванных записей, разработчики из Microsoft избрали подход, при котором части структур метаданных содержат собственные идентификаторы, что позволяет проверить принадлежность структур; ссылки на метаданные содержат 64-бит контрольные суммы блоков, на которые производится ссылка.
Всякое изменение структуры метаданных происходит в два этапа. Сперва создается новая (измененная) копия метаданных в свободном дисковом пространстве, и только после этого, в случае успеха, атомарной операцией обновления ссылка переводится со старой (неизмененной) на новую (измененную) область метаданных. Это позволяет обойтись без журналирования, автоматически сохраняя целостность данных.
Впрочем, описанная схема не применяется к пользовательским данным, так что любые изменения содержимого файла пишутся непосредственно в файл. Удаление файла производится перестроением структуры метаданных, что сохраняет предыдущую версию блока метаданных на диске. Такой подход позволяет восстанавливать удаленные файлы вплоть до их перезаписи новыми пользовательскими данными.
Отдельная тема - отказоустойчивость ReFS при повреждении диска. Система способна выявить все формы повреждений диска, включая потерянные или сохраненные не в том месте записи, а так же т. н. битовый распад (ухудшение состояния данных на носителе).
Когда включена опция "целостные потоки", ReFS проверяет по контрольным суммам также и содержимое файлов и всегда записывает изменения файлов в стороннем месте. Это дает уверенность в том, что существовавшие ранее данные не будут потеряны при перезаписи. Обновление контрольных сумм происходит автоматически при записи данных, так что если в ходе записи произойдет сбой, у пользователя останется доступная для проверки версия файла.
Еще одна интересная тема в вопросе безопасности ReFS - взаимодействие со Storage Spaces. ReFS и Storage Spaces разработаны так, чтобы взаимодополнять друг друга как два компонента единой системы хранения данных. Помимо улучшения производительности Storage Spaces защищают данные от частичных и полных сбоев диска за счет хранения копий на нескольких дисках. Во время сбоев при чтении Storage Spaces могут считывать копии, а при сбоях записи (даже при полной потере данных носителя при чтении/записи) возможно "прозрачно" перераспределять данные. Как показывает практика, чаще всего подобный сбой не имеет отношения к носителю - он происходит из-за повреждения данных, либо из-за потери данных или сохранения их не в том месте.
Как раз эти виды сбоев ReFS может обнаружить, используя контрольные суммы. Выявив сбой, ReFS связывается с Storage Spaces для того, чтобы считать все возможные копии данных, и выбирает нужную копию, основываясь на проверке контрольных сумм. После этого система дает Storage Spaces команду на восстановление поврежденных копий на основе верных копий. Все это происходит прозрачно с прикладной точки зрения.
Как указывается на сайте Microsoft, посвященном Windows Server 8, контрольные суммы всегда включены для метаданных ReFS, и при условии, что том размещен на зеркальных Storage Spaces, включается также автоматическое исправление. Все целостные потоки защищены тем же способом. Это создает сквозное решение с высокой степенью целостности для пользователя, благодаря которому относительно ненадежное хранилище можно сделать весьма надежным.
Упомянутые целостные потоки защищают содержимое файла от всех видов повреждений данных. Впрочем, эта характеристика в некоторых случаях неприменима. К примеру, для некоторых приложений предпочтительнее аккуратное управление хранением файлов с определенной сортировкой файлов на диске. Поскольку целостные потоки перераспределяют блоки каждый раз, когда содержимое файла изменяется, компоновка файлов для этих приложений слишком непредсказуема. Системы баз данных являются ярким тому примером. Как правило, такие приложения самостоятельно ведут учёт контрольных сумм содержимого файлов и имеют возможность проверять и исправлять данные путём прямого взаимодействия с интерфейсами API.
Как ReFS действует в случае повреждения диска или сбоя хранения, думаю, понятно. Сложнее бывает выявить и преодолеть потери данных, связанные с "битовым распадом", когда необнаруженные вовремя повреждения редко читаемых частей диска начинают интенсивно расти. К тому времени, как такие повреждения будут считаны и обнаружены, они могут уже затронуть копии, либо данные могут быть утрачены из-за прочих сбоев.
Чтобы преодолеть процесс битового распада, в Microsoft добавили системную задачу, которая периодически очищает метаданные и данные целостных потоков на томе ReFS, находящемся на зеркальном пространстве хранения. Очистка происходит посредством считывания всех лишних копий и проверки их на правильность с помощью контрольных сумм ReFS. Если контрольные суммы не сходятся, копии с ошибками исправляются с помощью годных копий.
Остается угроза, которую можно назвать "страшный сон сисадмина". Бывают случаи, хоть редкие, когда может быть поврежден даже том на зеркальном пространстве. Например, память неисправной системы может повредить данные, которые затем могут оказаться на диске и повредить избыточные копии. Кроме того, многие пользователи могут решить не применять зеркальные пространства хранения под ReFS.
Для таких случаев, когда том повреждается, ReFS выполняет "восстановление" - функцию, которая удаляет данные с пространства имен в рабочем томе. Ее задача - предотвратить неисправимые повреждения, которые могли бы оказать влияние на доступность верных данных. Например, если единственный файл в директории получил повреждение и не может быть автоматически восстановлен, ReFS удалит этот файл из пространства имен файловой системы, восстановив оставшуюся часть тома.
Мы привыкли к тому, что файловая система не может открыть или удалить поврежденный файл, и администратор не может ничего с этим поделать. Но поскольку ReFS может восстанавливать поврежденные данные, администратор сможет восстановить этот файл из резервной копии, или при помощи приложения создать его заново, избежав необходимости выключить систему. Это означает, что пользователю или администратору больше не потребуется проводить процедуру проверки и исправления диска в автономном режиме. Для серверов это дает возможность развертывать обширные тома данных без риска долгих периодов автономной работы из-за повреждений.
ReFS на практике
Конечно, о практичности и удобстве (или обратных качествах) ReFS можно будет судить только после того, как компьютеры с Windows 8 получат широкое распространение и пройдет не менее полугода активной работы с ними. Пока же у потенциальных пользователей "восьмерки" больше вопросов, чем ответов на них.
Например, такой: можно ли будет в Windows 8 легко и просто конвертировать данные из системы NTFS в ReFS и наоборот? Представители Microsoft заявляют, что никакой встроенной функции для преобразования форматов не предполагается, но информацию все же можно будет копировать. Область применения ReFS очевидна: поначалу она может использоваться лишь как крупный диспетчер данных для сервера (собственно, уже используется). Внешних накопителей с ReFS пока не будет - только внутренние. Очевидно, со временем ReFS будет оснащена большим количеством функций и сможет заменить устаревшую систему. Вероятнее всего, это произойдет уже с выходом первого пакета обновлений для Windows 8.
Также в Microsoft утверждают, что протестировали ReFS, "используя сложный обширный набор десятков тысяч тестов, которые создавались для NTFS в течение более чем двух десятилетий. Эти тесты воссоздают условия развертывания в усложненном виде, с которыми, как мы думаем, система может столкнуться, например, при сбое питания, при проблемах, связанных с масштабируемостью и производительностью. Следовательно, можно сказать, что система ReFS готова к тестовому развертыванию в управляемой среде".
При этом, правда, разработчики признают, что будучи первой версией крупной файловой системы, вероятно ReFS потребует осторожности в обращении. "Мы не характеризуем ReFS для Windows 8 как бета-версию. Новая файловая система будет готова к выпуску, когда Windows 8 выйдет из стадии "бета", потому что нет ничего важнее, чем надежность данных. Итак, в отличие от любого другого аспекта системы, здесь необходим консервативный подход к первоначальному использованию и тестированию", - пишут представители Microsoft.
Во многом именно по этой причине вводиться в обиход ReFS будет согласно поэтапному плану. Сперва - в качестве хранилищной системы для Windows Server, затем - как хранилище для пользователей, и уже в итоге - как загрузочный том. Аналогичный подход при выпуске новых файловых систем использовался и раньше.
Виктор ДЕМИДОВ
Горячие темы