Unlike Microsoft's exFAT file-system that's designed just for flash memory cards and external storage mediums, ReFS is designed to be a real successor to Microsoft's aging NTFS file-system that's been widespread since the Windows 2000/XP days. ReFS is short for a Resilient File System and will be introduced as a production-ready file-system with Windows Server 8. The non-server Windows 8 won't have ReFS support, but per typical Microsoft fashion, will come to the consumer operating system variants at a later date.
While for now Linux users can really care less about a new Microsoft file-system for Windows, eventually we will come across these new ReFS file-system whether it be a formatted external HDD / storage device or attempting to recover a Windows partition. For those interested in file-systems, it's also interesting to see how this NTFS successor compares to the popular Linux file-system choices. It will also be a question when/how the Microsoft Resilient File System support comes to Linux.
Below are a few notes I have about the Resilient File System after reading the MSDN blog post Building the next generation file system for Windows: ReFS.
- Unlike NTFS, Microsoft ReFS does share some common traits with Btrfs. ReFS is copy-on-write, provides integrity checksums / ECC, extended attributes, and B-trees. The Sun/Oracle ZFS file-system also shares most of the same features. The storage engine of ReFS is using B+ trees exclusively compared to normal B-trees in Btrfs, with the difference of the plus variant being records stored at the leaf-level of the tree and keys being within the interior nodes.
- ReFS has similar volume/file/directory size limits to EXT4 and Btrfs.
- At least for Windows 8, Microsoft is not providing any upgrade path from NTFS to ReFS, but requires re-formatting the drive and copying any data. Within Windows 8, ReFS is also not supported as a boot partition or for use on removable media/drives.
- Below are the official "key features of ReFS" as said by Microsoft.
- Metadata integrity with checksums
- Integrity streams providing optional user data integrity
- Allocate on write transactional model for robust disk updates (also known as copy on write)
- Large volume, file and directory sizes
- Storage pooling and virtualization makes file system creation and management easy
- Data striping for performance (bandwidth can be managed) and redundancy for fault tolerance
- Disk scrubbing for protection against latent disk errors
- Resiliency to corruptions with "salvage" for maximum volume availability in all cases
- Shared storage pools across machines for additional failure tolerance and load balancing
- ReFS does not support data de-duplication, copy-on-write snapshots (a ZFS and Btrfs feature, but ReFS snapshots can be done when paired with the Microsoft Storage Spaces), file-level encryption (dropped from NTFS), or compression (Btrfs can now do Gzip, LZO, and Snappy).
- In what may partially help supporting ReFS in Linux and other platforms, Steven Sinofsky of Microsoft says, "data stored on ReFS is accessible through the same file access APIs on clients that are used on any operating system that can access today’s NTFS volumes." The upper-layer engine is nearly the same as what's found in NTFS, but it's the underlying on-disk storage engine and format that's changed with ReFS.
Plus there's a lot more information in the aforelinked MSDN blog post for those interested. Btrfs and ZFS should prove to be good competition against ReFS, at least in terms of features, but it will be interesting to see how the actual file-system performance compares.
It will likely be a while before ReFS file-system support comes to Linux. Presumably the Microsoft Resilient File System will come encumbered by patents and other licensing restrictions, so the file-system read/write support will likely come in user-space via FUSE. Just as they've done for NTFS and exFAT, it would not be surprising to see Tuxera work on commercial ReFS file-system support for Linux -- they're the ones claiming their NTFS implementation is the fastest file-system for Linux.