ReFS
弹性文件系统(英語:,简称ReFS)[2],代号“Protogon”[3]。这是一个微软在Windows Server 2012中引入的专有文件系统,目的是成为NTFS之后的“下一代”文件系统。
开发者 | Microsoft |
---|---|
全称 | Resilient File System |
发布 | 2012年8月1日[1] (Windows Server 2012) |
限制 | |
最大文件尺寸 | 16 exabyte |
最大卷容量 | 1 yottabyte |
功能 | |
属性 | 是 |
透明压缩 | 否 |
寫入時複製 | 是 |
操作系统支持 | Microsoft Windows |
ReFS旨在克服NTFS被构想以来出现的重要问题,面向已改变的数据存储需求。ReFS的关键设计优势包括自动完整性检查和数据清理、避免需要运行chkdsk、防止数据衰落、内置硬盘驱动器故障和冗余的处理、集成RAID功能、数据和元数据更新切换到写时复制/分配、超长路径和文件名的处理,以及存储虚拟化和存储池、包括几乎任意大小的逻辑卷(与所用驱动器的物理大小无关)。
存储系统和使用情况的需求已发生改变——存储设备的大小(大容量或TB级存储阵列正日益常见)和持续可靠性需求。因此,该文件系统需要根据物理磁盘和逻辑卷之间的抽象层或虚拟化完成自我修复,避免介入缓慢或必须中断的磁盘检查)。
ReFS最初只被添加到Windows Server 2012,目标是逐步迁移到未来版本的消费者系统中(很快就有爱好者以修改方式解锁这点)。最初的版本中移除了一些NTFS功能,例如磁盘配额、备用数据流和扩展属性,因此引发了一定关注。以上部分功能已在更高版本的ReFS中重新实现。
在ReFS的早期版本(2012年-2013年)中,它在测试中类似或略高于NTFS的水平[4],但在完整性检查时远慢于NTFS,这是因为ReFS新采用了奇偶效验。[5][6]也有用户在预发布版本中提到了到存储空间,该存储系统旨在支撑ReFS,但据称它可能会导致ReFS自动恢复失败。[7][8][9]
相较NTFS的功能变化
重要新功能
- 改进磁盘结构可靠性
- ReFS对所有存储在磁盘上的结构使用B+树,包括所有元数据和文件数据。[10][11]元数据和文件数据被组成一个类似关系数据库的数据表。文件大小、文件夹内的文件数和卷总大小及卷中文件夹数量都采用64位数字;因此,ReFS支持最多16EB的文件大小,最多18.4 × 1018个目录和最大1YB(64 KB簇的卷),这允许较大的可扩展性,对文件和目录大小没有实际限制(硬件限制仍适用)。空闲空间是由一个分层分配器计算,其中包括三个单独的表,分别保存大、中、小块。
- 内置复原
- ReFS对元数据采用allocation-on-write更新策略[10],每次更新时分配新块并采用批次IO。所有ReFS元数据都采用独立存储的64位校验和。文件数据可以单独拥有可选的“完整性流”校验和,那种情况下文件更新策略也实现写时复制;新的“完整性”属性可应用到文件和目录。如果文件数据或元数据损坏,文件可以直接删除而无需脱机维护整个卷,并且文件可以从备份恢复。因为内置弹性设计,管理员不需要对ReFS定期运行错误检查工具,例如CHKDSK。
- 与现有API和技术兼容
- ReFS支持NTFS特性的一个子集,并且仅“广泛使用”的Win32 API支持它;但它不需要新的系统API,并且大多数文件系统筛选器可在ReFS卷工作。[10]ReFS支持许多现有的Windows和NTFS特性,例如BitLocker 加密、访问控制列表、USN日志、变更通知[12]、符号链接、junction点、挂载点、重解析点、卷快照、文件ID和操作锁定。ReFS与存储空间无缝集成[10],存储虚拟化层允许数据被镜像或条带化,以及作为机器之间的共享存储池。[13]ReFS的可恢复功能增强了存储空间提供的镜像功能,可以使用数据清理流程检测是否有任何文件的镜像副本已经损坏(可选启用) [11],它会定期读取所有副本并验证它们的校验和,然后使用良好副本替换损坏副本。
已移除功能
某些NTFS功能在ReFS的初始版本中已移除或不支持。这包括备用数据流、对象ID、8.3文件名、NTFS压缩、加密文件系统(EFS)、事务性NTFS、硬链接、扩展属性和磁盘配额。[10][3][14]ReFS最初不提供重复数据删除,[10]在随后的v3.2版本中实现。此外,Windows目前不能从ReFS卷引导启动。[10]镜像或条带化卷的动态磁盘已被“存储空间”提供的镜像或条带化存储池取代;自动纠错仅在镜像空间支持。
在后续实现的Windows 8.1 64位和Server 2012 R2的ReFS中,文件系统开始支持备用数据流,最大长度128K,以及完整性流在奇偶效验空间上自动纠正损坏数据。[15]ReFS在缺乏备用数据流的支持时不适合Microsoft SQL Server实例分配。[16]
稳定性和已知问题
一些ReFS与“存储空间”共同运行时的出现问题已被提出或建议[9],包括:
- 即使“存储空间”非自动精简配置,ReFS在某些情况下仍可能无法有把握的糾正所有文件错误。因为存储空间以块而非文件操作,如果存储空间的某些部分工作异常,某些文件可能会缺乏必要的块或恢复数据。因此,磁盘和数据的添加和删除可能会受损,以及冗余转换变得困难或不可能。[8]
与竞争对手的性能比较
2014年,一篇对ReFS的评论与准备在生产中使用的评估显示,ReFS在与它的两个主要竞争对手(文件系统)的比较中具有关键优势。ZFS(在Solaris和FreeBSD中使用)被广泛批评为使用数GB的内存用于联机重复数据消除,这影响了它在大量中小型系统上的使用。但是,在关闭ZFS的联机重复数据消除后(因为ReFS不支持此功能),ZFS只占用几百MB内存,与另外两个系统相对持平。Drobo等方案使用专有方法,这意味着如果故障且厂商也无法解决,没有其他解决方案。[17]
2012年,Phoronix撰写了一篇[18]ReFS对战Btrfs的分析(Btrfs是适用于Linux的一个写时复制文件系统)。两者具有类似的特性,都支持校验和、类RAID使用多块磁盘,以及错误检测与纠正。但是,当时的ReFS缺乏重复数据删除、写时快照和压缩,而Btrfs和ZFS支持上述技术。
参考资料
- Snover, Jeffrey. . Windows Server Blog. Microsoft Corporation. 2012-08-01 [2014-09-02]. (原始内容存档于2015-12-22).
- Lucas, Martin. . Ask Premier Field Engineering (PFE) Platforms. Microsoft. TechNet blogs. 2013-01-01 [2013-01-20]. (原始内容存档于2013-05-15).
- Foley, Mary Jo. . ZDNet. CBS Interactive. 2012-01-16 [2013-01-21]. (原始内容存档于2013-05-15).
- . firstever.eu. [2016-06-26]. (原始内容存档于2014-07-08).
- . Baris Eris's Blog. [2016-06-26]. (原始内容存档于2014-06-22).
- . [2016-06-26]. (原始内容存档于2014-06-17).
- Elena Pakhomova of ReclaiMe.com (2012-Aug-08, BEFORE the release of Win8!) http://www.smallnetbuilder.com/nas/nas-features/31836-data-recovery-tales-when-windows-storage-spaces-go-bad 页面存档备份,存于
- . helgeklein.com. [2016-06-26]. (原始内容存档于2016-06-18).
- . [2014-06-17]. (原始内容存档于2014-08-08).
- Verma, Surendra. Sinofsky, Steven , 编. . Building Windows 8. Microsoft. MSDN blogs. 2012-01-16 [2013-01-20]. (原始内容存档于2013-05-15).
- Meyer, David. . ZDNet. CBS Interactive. 2012-01-17 [2013-01-20]. (原始内容存档于2013-05-15).
- . MSDN Library. Microsoft. 2012-11-08 [2013-01-21]. (原始内容存档于2013-05-15).
- Nagar, Rajeev. Sinofsky, Steven , 编. . Building Windows 8. Microsoft. MSDN blogs. 2012-01-05 [2013-01-18]. (原始内容存档于2013-05-15).
- . [2016-06-26]. (原始内容存档于2013-05-15).
- . TechNet Library. Microsoft. 2012-02-29 [2013-12-25]. (原始内容存档于2017-02-01).
- Cherry, Denny. . Troubleshooting SQL Server Storage Problems. Penton Media. 2012-08-21 [2016-06-26]. (原始内容存档于2017-10-10).
- . BetaNews. [2016-06-26]. (原始内容存档于2014-01-31).
- . phoronix.com. [2016-06-26]. (原始内容存档于2016-09-08).