最近搞了一台TrueNAS,使用刷成IT模式的阵列卡,但是出现了在TrueNAS上软关机时磁头不会自动复位,发出“喀”的一声磁头缩回声音并导致硬盘SMART信息的C0、C1增加。
在网上查找相关解决方案,网上给出的解答是
在/sys/class/scsi_disk/目录下,磁盘有一项属性叫做manage_start_stop。普通SATA硬盘的这项属性的值默认为1,关机时磁头会复位。但在硬盘接上HBA卡后,这项属性的值被HBA卡修改成了0,关机时磁头就不复位。
在我尝试使用该篇文章给出的命令并加在系统的启动项中时,发现并无任何效果(下为具体命令)
1 | for i in /sys/class/scsi_disk/*/manage_start_stop; do echo 1 > $i; done |
遂登录TrueNas命令行,查看我的硬盘的manage_start_stop属性,发现此属性仍然为0,尝试手动修改,系统报错permission denied
查看硬盘属性的权限,发现此属性的读写权限为只读,且发现了其他3个相似的属性manage_system_start_stop、manage_runtime_start_stop、manage_shutdown
在搜索其关联性时发现,manage_start_stop似乎在Linux6.x时被改动过,在Linux内核的提交记录上,似乎有manage_shutdown、manage_system_start_stop替代此属性的意思(没仔细看,是猜测)
为了探究正常情况下这四个属性的值应为什么,我在主板自带的SATA控制器下插入了一块SATA硬盘,并观察manage_system_start_stop、manage_runtime_start_stop、manage_shutdown、manage_start_stop的值,发现manage_system_start_stop、manage_start_stop为0;manage_runtime_start_stop、manage_shutdown为1。并且将HBA卡下的硬盘的manage_runtime_start_stop、manage_shutdown属性修改为1后,HBA卡下的SATA硬盘也能正常复位磁头了。
由此可见,manage_runtime_start_stop、manage_shutdown属性似乎是管理硬盘启停的关键属性,将上方命令改成命令,并再次加入TrueNas启动项,发现TrueNas关机时硬盘磁头也能正常复位了
1 | for i in /sys/class/scsi_disk/*/manage_runtime_start_stop; do echo 1 > $i; done |