Unraid的cache使用btrfs或zfs?
背景:由于在unraid中添加了多个docker和虚拟机,因此会一直访问硬盘。然而,单个硬盘实在难以让人放心。在阵列盘中,可以通过添加校验盘进行数据保护,在cache中无法使用xfs格式进行双盘位备份,其中btrfs或zfs格式是可选的方案。本文测试两种格式在部署、丢失盘位时的情况,从而判断出选择何种最为合适。
一、unraid缓存盘介绍
- unraid缓存盘可以用来中转数据,实现更高速的写入和读取。
- 缓存盘默认格式时xfs。
- 为了保护数据,可以通过设置其他格式入zfs或btrfs进行raid镜像来处理。
二、zfs测试
- 设置:在cache中添加两个盘位,设置格式为zfs,并且在第一个中设计为镜像,即可完成设置。
- 丢失任意一个盘:经测试,不论丢失第一个或者第二个,都可以直接以单盘启动unraid,无需额外的操作。
- 丢失盘后写入:经测试,当以单盘位运行后写入一些数据,然后再次插入之前的盘,新数据正常读取并写入到两个盘中。
- 总结:zfs果然很不错,基本满足了我对数据保护的需求,并且在单盘丢失后仍可以正常运行并读写数据。
三、btrfs测试
- 设置,同样在cache中添加两个盘位,设置格式为btrfs,设置为raid1模式,即备份处理。
- 丢失任意一个盘:和zfs一致。
- 丢失盘后写入:和zfs一致。
- 总结:btrfs和zfs基本一致。可能需要从别的方面判断出哪个更合适。
- bug发现:当丢失一个盘后,以单盘运行,再重新变为双盘位后,显示的文件类型为单盘而非raid1,虽然实际的是raid1.
四、其他一些资料
- zfs相比于btrfs是比较新的格式,在网络上被认为是最后一种硬盘格式,其具备多个特性和raidz功能,虽然我们无法在cache中用到。
- btrfs在unraid中,之前有人在更新时出现问题,具体问题未知,应该是unraid对此支持在更新时出现了bug。目前6.12.13使用无问题。
- zfs在运行时会利用到更多ram,应该会进行缓存,这可能导致数据未正常写入硬盘,从而有一定几率出现丢失?
- zfs在读取时会从两个硬盘中并行读取,从而提高读取速度。不过,对于ssh的cache,不需要并行也可以有很高的速度。
- 总结:考虑到zfs是新的格式,并且unraid的支持也往zfs中偏移,因此考虑切换为zfs格式。
五、数据转移
- 由于之前的cache盘是xfs,需要转移到新的格式中,数据如何无损处理:
- 首先将所有数据转移到阵列中
- 然后对cache进行重置,并设置为新的格式。
- 最后将数据写回即可。