Unraid的cache使用btrfs或zfs?

Unraid的cache使用btrfs或zfs?

背景:由于在unraid中添加了多个docker和虚拟机,因此会一直访问硬盘。然而,单个硬盘实在难以让人放心。在阵列盘中,可以通过添加校验盘进行数据保护,在cache中无法使用xfs格式进行双盘位备份,其中btrfs或zfs格式是可选的方案。本文测试两种格式在部署、丢失盘位时的情况,从而判断出选择何种最为合适。

一、unraid缓存盘介绍

  1. unraid缓存盘可以用来中转数据,实现更高速的写入和读取。
  2. 缓存盘默认格式时xfs。
  3. 为了保护数据,可以通过设置其他格式入zfs或btrfs进行raid镜像来处理。

二、zfs测试

  1. 设置:在cache中添加两个盘位,设置格式为zfs,并且在第一个中设计为镜像,即可完成设置。
  2. 丢失任意一个盘:经测试,不论丢失第一个或者第二个,都可以直接以单盘启动unraid,无需额外的操作。
  3. 丢失盘后写入:经测试,当以单盘位运行后写入一些数据,然后再次插入之前的盘,新数据正常读取并写入到两个盘中。
  4. 总结:zfs果然很不错,基本满足了我对数据保护的需求,并且在单盘丢失后仍可以正常运行并读写数据。

三、btrfs测试

  1. 设置,同样在cache中添加两个盘位,设置格式为btrfs,设置为raid1模式,即备份处理。
  2. 丢失任意一个盘:和zfs一致。
  3. 丢失盘后写入:和zfs一致。
  4. 总结:btrfs和zfs基本一致。可能需要从别的方面判断出哪个更合适。
  5. bug发现:当丢失一个盘后,以单盘运行,再重新变为双盘位后,显示的文件类型为单盘而非raid1,虽然实际的是raid1.
    在这里插入图片描述

四、其他一些资料

  1. zfs相比于btrfs是比较新的格式,在网络上被认为是最后一种硬盘格式,其具备多个特性和raidz功能,虽然我们无法在cache中用到。
  2. btrfs在unraid中,之前有人在更新时出现问题,具体问题未知,应该是unraid对此支持在更新时出现了bug。目前6.12.13使用无问题。
  3. zfs在运行时会利用到更多ram,应该会进行缓存,这可能导致数据未正常写入硬盘,从而有一定几率出现丢失?
  4. zfs在读取时会从两个硬盘中并行读取,从而提高读取速度。不过,对于ssh的cache,不需要并行也可以有很高的速度。
  5. 总结:考虑到zfs是新的格式,并且unraid的支持也往zfs中偏移,因此考虑切换为zfs格式。

五、数据转移

  1. 由于之前的cache盘是xfs,需要转移到新的格式中,数据如何无损处理:
  2. 首先将所有数据转移到阵列中
  3. 然后对cache进行重置,并设置为新的格式。
  4. 最后将数据写回即可。
上一篇:[Linux] Linux 的进程如何调度——Linux的 O(1)进程调度算法


下一篇:深入理解 Solidity 修饰符(Modifier):功能、应用与最佳实践