UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

2024-10-04 10:35:12 5点赞 53收藏 16评论

本人新装了一台UNRAID的nas,主要功能是做媒体服务器,存大量的电影视频,而UNRAID的扩容模式和校验模式,很符合这种需求!

问题

但是还没正式服役,就让我遇到一些糟心的事情,不知道大家有没有遇到

1、下载/拷贝文件时CPU占用高,这个主要CPU等待IO的时间过长,内存不够,磁盘速率低的情况下会爆红CPU;I/O wait (I/O 等待)过高而导致了 CPU 看起来处于“高负荷”状态;

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

2、我的磁盘速率明明可以跑到200MB/s,怎么加了校验盘之后,60MB/s之下雷打不动;

刚组好的UNRAID,做好了cache和阵列,等着迁移数据进去,结果却遇到这种缓慢的速率,看着蛋疼。因为有好几个其他系统的影视数据等着迁移,这种速率,我得等到猴年马月啊UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

经过一番高强度检索,找到几个有效方案:

解决方案

1、增加物理内存

氪金,买一堆内存塞满插槽

可以通过命令看看主板支持的最大内存:dmidecode -t 16

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

2、绕过 /mnt/user 路径进行写入操作,unRAID 的 SHFS 文件系统是挂载在 /mnt/user 目录下的,所以如果我们绕过了 /mnt/user 路径去执行 I/O 操作,那么就可以避免因 shfs 进程而出现的高 I/O wait 情况;

避免向 /mnt/user/xxx 路径写入文件

尽可能向/mnt/cache/xxx 路径写入文件

3、将硬盘设置中的 md_write_method 修改为“重建写入(reconstruct write)”来缓解这一问题

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

效果是显而易见的,不过所有加入该阵列的磁盘都会唤醒;

他们之间的差异在于:

read/modify/write” 方法,需要:

* 读取奇偶校验块和读取现有数据块(可以同时进行)

* 比较数据块,然后使用差值更改奇偶校验块以生成新的奇偶校验块(非常短)

* 等待盘片旋转(非常长!)

* 写出奇偶校验块和数据块(可以同时进行)

reconstruct write” 方法,需要:

* 写出数据块,同时读入所有其他数据驱动器的数据块

* 从所有数据块中计算新的奇偶校验块,包括新的数据块(非常短)

* 写出奇偶校验块

具体可以看看社区的这篇文章,了解下md_write_method

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题

4、创建ZFS阵列,该方式具体请看 新手教程:阵列与缓存池

我没有使用该方案,因为我的unRAID的功能很单一,不会多开虚拟机,docker等服务,就是存储电影。如果是主力unRAID,这位作者的存储结构值得参考。

以下为摘抄内容:

UNRAID加了校验盘后速率慢,速度下降,爆IO的问题
  • 阵列:一个校验盘,一个存储盘,阵列总可用空间为 16T 。

  • 缓存池:这里作者组建了两个缓存池。

    • 缓存池 - 1 (名为 cache):2 x 1T NVME 固态组成 Raid1 阵列,来作为下载盘使用。

    • 缓存池 - 2 (名为 zpool):3 x 4T 机械硬盘组成 ZFS Raiz1 阵列,可用空间为 8T(另外一个 4T 作为冗余盘),来为重要数据、服务运行配置文件、虚拟机虚拟硬盘等提供存储(当然也可以作为下载盘使用,具体怎么用都随用户定义),因为可以使用 ZFS 的快照、压缩、ROW 等功能,所以可以为数据提供更好的安全保证。

总结

以上就是一个刚刚踏入unRAID的小白摸索之路,多检索,多交流

参考

为什么unRAID下载/拷贝文件时CPU占用高:详解FUSE-SHFS、I/O问题和解决办法 | JackieWu

新手教程:阵列与缓存池

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
16评论

  • 精彩
  • 最新
  • 处理器性能不行?导致IO端口慢?UNRAID内存大提速快。我用的Dell R730xd性能还不错。

    校验提示文案

    提交
    处理器性能应该是够的,主要是内存,让IO的缓冲区尽可能的大

    校验提示文案

    提交
    收起所有回复
  • 现在可以直接建zfs池而不建原来的unraid阵列池,速度就上去了。不过我是老用户,还是老实缓存盘吧

    校验提示文案

    提交
    zfs适合不同需求的人,扩容也有点麻烦

    校验提示文案

    提交
    收起所有回复
  • 很简单啊,用两硬盘创建一个zfs池,做主存储东西全部考进去,校验盘阵列做副存储,定时mover慢慢考回阵列。弄完不想保存zfs阵列直接使用新配置删掉zfs,想把删掉的硬盘加入校验盘的阵列直接格式化添加进去选择新盘数据已经同步,就能直接添加到阵列里面了还不用重新跑一遍检验 [高兴]

    校验提示文案

    提交
  • 一开始移动拷贝大数据时候不用校验盘,等数据都拷贝完后再添加检验盘,以后写所有数据都写缓存盘,定期把缓存盘东西玩阵列盘里面搬。

    校验提示文案

    提交
  • 不用校验盘一年了。现在是两块氦气组raid1/zfs,放个人数据。6块氦气组raid0/zfs,下电影。再用两块固态,放app,docker,虚拟机等等系统服务文件。

    校验提示文案

    提交
  • 讲那么多 却没提到最见效的使用插件烦人方法

    校验提示文案

    提交
    这个我不懂啊,您有高见的话,可以分享一下

    校验提示文案

    提交
    收起所有回复
  • 所以我用unraid就完全放弃校验盘。数据自己手动备份

    校验提示文案

    提交
  • unraid 的io性能一直是问题

    校验提示文案

    提交
  • 存电影也很费硬盘啊

    校验提示文案

    提交
  • 先迁移数据,再加校验盘,加固态硬盘做缓存

    校验提示文案

    提交
  • 校验慢是因为HDD。直接用缓存池组阵列实现备份的目的就行了。

    缓存池+单盘模式的磁盘结构。unraid的优势就是不用考虑各种阵列对磁盘的要求,灵活的加、取。

    也不建议用/mnt/cache,/mnt/user/或者直接disk之类。倒不是系统有啥问题,而是目录多了,不好维护,因为自己都不记得了。。。

    校验提示文案

    提交
  • 只有存储需求,为啥不直接黑群?

    校验提示文案

    提交
    更喜欢unraid的阵列

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
53
扫一下,分享更方便,购买更轻松