unRAID 官方文档给出了文件系统的选择建议,列出了每种文件系统的优缺点和在 unRAID 系统上的默认行为,可以参考
https://docs.unraid.net/unraid-os/manual/storage-management/#selecting-a-file-system-type官方文档有一个比较重要的信息,就是尽量使用 unRAID 来格式化文件系统,因为它会根据它的产品技术原理来使用特定的参数格式化文件系统。
个人理解,unRAID 的设计是面向一定的使用场景的。
最初也是最核心的场景就是冷数据场景,即通常作为传统存储设备用来**存储**文件的,比如照片、录影、文档。在这个场景下通常不需要实时的数据检索和高 IOPS ,但对数据完整性、存储空间的可扩展性要求更高,unRAID 招牌的 Array 方案就是用来针对性满足这些需求的。
后来用户开始在 NAS 上跑服务和虚拟机了,那么对实时检索和 IOPS 的需求更高了,但 unRAID 原本的 Array 并不兼容这种需求场景,于是就提供了一个额外的 Cache Pool 机制,向当于是基于传统的 RAID 方案来做了另外一套存储体系来提供很高的 IO 性能,然后再将它与原有 Array 存储体系打通,让用户可以通过设置来确保热数据始终在 Cache Pool 中,而冷数据放在 Array 中。当然如果没多少冷数据,Cache Pool 就会成为最大和最主要的存储空间,只是这样就不局限在 unRAID 提供的方案,其他的 NAS 系统也可以或者更能胜任。
因为受限于 Btrfs 的 RAID 支持不完善,仅 RAID0 和 RAID1 是稳定可用的,而对于有较多热数据(单盘放不下)的人来说,用 RAID0 不安全、用 RAID1 成本太高。于是 unRAID 引入了 ZFS 来提供更完备的 RAID 支持。
基于对 unRAID 的设计应用场景的理解,我自己是将我的数据分为冷数据和热数据两部分,我的热数据的量级远小于冷数据,属于 unRAID 面向的使用场景,于是我的方案如下:
- 冷数据:多块机械硬盘,XFS 文件系统,unRAID Array
- 热数据:2NVMe ,Btrfs ,RAID1 Cache Pool
- 备份数据: 机械硬盘,Btrfs 文件系统,Unassigned Devices
容器和虚拟机本身以及需要经常访问的数据都放到 Cache Pool 中,其他绝大部分数据都在 Array 中,重要数据定时使用 rsync 备份到备份盘上并创建和保留最近 7 天的快照。
如果未来我的热数据量大到单盘放不下了,我就可以将 Cache Pool 改为 RAIDZ1 或 RAIDZ2 。
你可以评估一下你的使用需求场景是否与 unRAID 的设计使用场景匹配,如果不匹配就可以考虑其他系统方案,如果匹配就看是不是可以采用 unRAID 默认推荐的方案,特别是文件系统的选择。