В предстоящем релизе Windows Server 2012 будет доступна новая файловая система – Resilient File System (ReFS). Ниже некоторое количество технических деталей относительно реализации ReFS.
Можно выделить следующие особенности ReFS:
- Целостность. Хранит данные, максимально защищая их от возможных ошибок, которые могут повлечь за собой их потерю. Метаданные файловой системы защищены всегда. Более того, проверочные суммы метаданных хранятся отдельно, что уменьшает вероятность повреждения и метаданных и проверочных сумм. При необходимости, так же можно защитить и пользовательские данные на уровне тома, папки или файла. При работе с файлами новые версии всегда записываются отдельно от старых, что позволяет в случае сбоя записи откатиться к предыдущей версии файла.
- Высокая доступность. Один из приоритетов при разработке ReFS. При обнаружении ошибок, которые не могут быть исправлены автоматически, специальный процесс локализует ошибку, не требуя при этом отключения тома. То есть том может находится в рабочем режиме достаточно долго. В сочетании со Storage Spaces, при обнаружении ошибок исправляет их.
- Расширяемость. Ещё один из приоритетов при разработке ReFS. Новая файловая система будет работать как с нынешними терабайтными объёмами, так и с теми, которые будут в будущем (петабайты-экзабайты-…)
- Совместимость с различными приложениями. ReFS поддерживает адаптированный набор функций файловой системы NTFS, а также Win32 API.
- Обнаружение ошибок “на лету”. Как уже выше указывалось, специальный процесс сканирует тома с ReFS и при обнаружении ошибок помимо локализации помечает их. Это позволяет в дальнейшем попробовать восстановить повреждённые данные.
- Эволюция в архитектуре (по сравнению с NTFS). Новая файловая система по сути является результатом развития старой файловой системы NTFS, а следовательно поддерживает большую часть функциональности NTFS (шифрование BitLocker, access-control lists, USN journal, change notifications, символические ссылки, junction points, mount points, reparse points, снимки тома, идентификаторы файлов, oplocks).
Совместимость с приложениями реализована за счёт включения в ReFS многих функций и API файловой системы NTFS. Дизайн NTFS включает в себя:
- верхний уровень, реализующий API/семантику
- нижний уровень, реализующий хранилище на уровне дисковой подсистемы
ReFS использует верхний уровень, реализуя таким образом совместимость API для приложений, предоставляя при этом новый механизм работы с дисковой подсистемой (Minstore), в котором имеются новые функции для работы с дисковой подсистемой.
Разница между NTFS и ReFS. ReFS не поддерживает часть функций NTFS. Часть из них не поддерживается временно, но поддержка будет реализована в дальнейшем. Часть из них не поддерживается и не будет поддерживаться в дальнейшем. Список не поддерживаемых на текущий момент функций:
- Hard Links
- Named Streams
- Extended Attributes (EA’s)
- Object ID’s
- Volume Shrink
- Short Names
- Fast MFT-like Enumeration
- NTFS Compression
- NTFS Encryption
- NTFS Quotas
- TxF
- Reparse Index
Список не поддерживаемых на текущий момент API:
- AddUsersToEncryptedFile
- CloseEncryptedFileRaw
- CopyFileTransacted
- CreateFileTransacted
- CreateHardLink
- CreateHardLinkTransacted
- CreateSymbolicLinkTransacted
- DecryptFile
- DeleteFileTransacted
- DuplicateEncryptionInfoFile
- EncryptFile
- EncryptionDisable
- FindFirstFileNameTransactedW
- FindFirstFileTransacted
- FindFirstStreamTransactedW
- FindNextFileNameW
- FindNextStreamW
- FreeEncryptionCertificateHashList
- GetCompressedFileSizeTransacted
- GetFileAttributesTransacted
- GetFullPathNameTransacted
- GetLongPathNameTransacted
- MoveFileTransacted
- OpenEncryptedFileRaw
- QueryRecoveryAgentsOnEncryptedFile
- QueryUsersOnEncryptedFile
- ReadEncryptedFileRaw
- RemoveUsersFromEncryptedFile
- SetFileAttributesTransacted
- SetFileShortName
- SetUserFileEncryptionKey
- WriteEncryptedFileRaw
Новые API:
- FSCTL_GET_INTEGRITY_INFORMATION. Позволяет получить информацию о целостности файла или папки.
- FSCTL_SET_INTEGRITY_INFORMATION. Позволяет задать информацию о целостности файла или папки.
- FSCTL_REPAIR_COPIES. Используется процессом, проверяющим целостность данных на томах ReFS.
- MARK_HANDLE_READ_COPY/MARK_HANDLE_NOT_READ_COPY.
Новые параметры файлов, расположенных на томах ReFS:
- FILE_ATTRIBUTE_INTEGRITY_STREAM. Поток пользовательских данных использует проверку целостности.
- FILE_ATTRIBUTE_NO_SCRUB_DATA. Помечает файлы, которые необходимо исключить из процесса проверки целостности.
Salvage. Специальный механизм, обеспечивающий максимальную доступность данных на томе ReFS. Удаляет повреждённые данные из пространства имён в случае, если они не могут быть автоматически восстановлены. Ориентирован на то, чтобы минимизировать влияние повреждённых данных на неповреждённые. В случае повреждения данных и дальнейшей их изоляции администратор должен будет повреждённые данные восстановить из резервной копии или пересоздать. Необходимо помнить, что тома ReFS не нужно проверять утилитой chkdsk, она не сможет их проверить.
File System Recognition. Используется для распознавания томов ReFS операционными системами Windows 7/Windows Server 2008 R2.
Прочее.
- Поведение метаданных ReFS. Метаданные ReFS отличаются от метаданных NTFS. Какие-то метаданные или структуры, существующие в NTFS, могут не существовать в ReFS. Приложения зависящие от конкретных метаданных NTFS, которых нет в ReFS, могут не работать. Необходимо помнить, что метаданные ReFS не предназначены для открытия или перемещения. ReFS не предоставляет индексирования на уровне тома.
- Обычные потоки и потоки с проверкой целостности. Обычные потоки не осуществляют проверку целостности данных, по сути являются идентичными потокам в NTFS. Необходимо помнить, что метаданные файловой системы, сопоставленные с этим потоком, тем не менее будут проверяться на целостность, обеспечивая дополнительную надёжность файловой системы. Потоки с проверкой целостности обеспечивают вычисления проверочных сумм для данных, обеспечивая таким образом, возможность обнаружения повреждения данных. В случае использования Storage Space’ов такие повреждения будут автоматически исправляться. Для некоторых приложений потоки с проверкой целостности использовать не рекомендуется, так как приложения сами отвечают за целостность данных (например, файлы баз данных).
- 128-битные идентификаторы файлов. Предназначены для поддержки больших файловых хранилищ с милиардами файлов. Для обратной совместимости ReFS поддерживает 64-битную идентификацию файлов.
Внедрение. ReFS доступна только для серверных операционных систем (Windows Server 2012 Standard/Datacenter) и только для томов с данными. ReFS не может быть использован для установки на него операционной системы или загрузки.
Настройка. Том может быть отформатирован в ReFS через Disk Management. Однако дополнительные параметры (включение проверки целостности) доступны только при использовании командной строки:
D:>format /fs:refs /q /i:enable <volume> D:>format /fs:refs /q /i:disable <volume>
Ключ /i с параметром enable включает на томе проверку целостности, disable – выключает. Отключение проверки целостности без форматирования выполняется следующей командой:
D:>integrity /disable /s d:*
Ограничения файловой системы ReFS:
Максимальный размер файла: 2^64-1 bytes
Максимальный размер тома: 2^78 bytes при использовании кластеров размером 16KB (2^64 * 16 * 2^10)
Максимальное количество файлов в папке: 2^64
Максимальное количество папок в томе: 2^64
Максимальная длина имени файла: 32K (при использовании unicode)
Максимальная длина пути: 32K
Максимальный размер пула: 4 PB
Максимальное количество пулов в системе: без ограничений
Исходные документы:
Building the next generation file system for Windows: ReFS
Application Compatibility and API Support for SMB 3.0, CSVFS, and ReFS
Квоты-то поддерживает?
NTFS нет.
А свои?
Про свои квоты информации пока нет. Скорее всего их не будет, то есть пока эта функциональность будет отдана на поддержку сторонним разработчкам.
Я пока вышедший на днях RTM на наличие квот для ReFS томов не смотрел, и скорее всего, посмотрю не скоро.