这是我的第一个问题;经过广泛的研究,我不得不寻求帮助。
我已经构建了一个基于 Arch Linux 的家庭服务器。它基本上有两个主要目的:运行 Plex 媒体服务器并为 Time Machine 备份和远程媒体组织提供一些 AFP 共享。一切都很好,我对表现非常满意。除了 Avahi、Netatalk 和 PMS 之外,没有太多进程在运行。我可以就此保留,但有一点困扰我——电源管理:
我想要实现的是,节省一些电量,并在不使用时让我的硬盘得到一些休息。 Raid5 配置中有 8 个 WD Red 4TB 磁盘,使用 BTRFS 作为文件系统(数据和元数据都是 Raid5)。磁盘阵列上没有保存系统文件或日志文件;它们位于单独的 SSD 上。只有两股,媒体和时光机器。因此,任何与系统相关的进程都不应中断磁盘的睡眠状态。
到目前为止我所做的:
高清参数
- 使用 –y 选项查看磁盘是否可以降速 ✓
- 查看是否支持 APM -> 磁盘自行处理 ✓
系统
- 编写一个小服务来在系统启动后设置硬盘旋转 ✓
- 使用状态命令检查是否正确执行 ✓
磁盘旋转速度一切正常,但它们就是无法进入待机模式。当强制所有磁盘进入待机状态并随后尝试从共享读取文件时,磁盘按预期开始旋转,但系统冻结并无响应......
我不确定是什么导致了这种行为:BTRFS 不适合 HDD 备用吗?由于每个磁盘都在另一个磁盘之后旋转,唤醒时间是否太长?
我的目标是:我想在 2 小时后将驱动器设置为待机状态,并在 BTRFS Raid 上访问文件时立即将它们全部启动。有人可以帮帮我吗?!
提前谢谢了
更新
关于这个问题有一些进展需要报告,我认为有人可能会感兴趣。
我能够找到系统频繁死机的主要原因。幸运的是,这与 BTRFS 无关。由于八个驱动器不会一起旋转,因此它们需要超过 中指定的默认 30 秒超时/sys/block/sda/device/timeout
。这会导致内核错误,甚至可能挂起整个系统。驱动程序或内核存在驱动器旋转速度缓慢的问题。顺便说一句,我的 Adaptec HBA 1000 8i 控制器使用 aacraid 驱动程序。
设置超时值即可/sys/block/sd[x]/device/timeout
解决120
问题。驱动器现在甚至进入睡眠状态。更多内容可以在这里阅读:http://ask.adaptec.com/app/answers/detail/a_id/15357/~/error%3A-aacraid%3A-host-adapter-abort-request
但新的问题出现了。现在驱动器进入睡眠状态,某些进程无法足够快地访问文件系统。这就是我得到的:INFO: task xyz blocked for more than 120 seconds.
这很糟糕吗?
现在需要解决的是如何让所有八个驱动器同时旋转。功耗不应该有任何问题,因为重新启动机器时,所有驱动器也会立即旋转,并且 PSU 可以很好地处理这个问题。我也想知道是什么原因导致新的错误消息。
再次感谢您的任何意见!
更新2
经过进一步观察和测试,消息的问题似乎aacraid: Host adapter abort request
仍然存在。尽管系统不再冻结,因为将timeout
值设置为120
内核日志仍然充满了这些请求。我有时会看到这样的条目:INFO: task btrfs-transacti:1351 blocked for more than 120 seconds.
据我所知,这两个问题仅在驱动器处于待机模式时才会发生。这可能意味着上述所有问题的主要原因与驱动器在待机时无响应有关。
我还注意到驱动器容量在0
和之间跳跃4000787030016
。该条目为sd(x): detected capacity change from 0 to 4000787030016’
和sd(x): detected capacity change from 4000787030016 to 0’
。我不确定这是否也与驱动器电源状态有关。但这很奇怪。
由于我尝试了在互联网上找到的许多建议,但仍然无法正常工作,因此我正在考虑更改存储控制器。据我了解,LSI 控制器在 Linux 下得到了很好的支持。真的吗?例如,有人有使用 LSI SAS 9217-8i 的经验吗?如果能获得有关该控制器如何与 BTRFS 和 HDD 待机模式配合使用的反馈,那就太好了。我非常希望新的控制器能有所帮助。
非常感谢您对此的想法。