我翻阅了手册hdparm
,sdparm
.我知道有争论向下驱动器,与-y
和-Y
。我还知道有一些参数可以控制省电功能,例如-S
和-B
。然而我想要的是启动电机并旋转向上驱动器。
sdparm
我懂了sdparm 的手册页有load
和start
参数。可以使用其中任何一个吗?它看起来更像是适合磁带驱动器,或者至少是光盘驱动器?
DD
dd if=/dev/hdX of=/dev/null count=512
似乎是最好的答案我可以使用什么命令来启动“待机状态下通电”驱动器?
但是,当它已经在缓存中时,驱动器将不会旋转。
似乎很奇怪,没有命令明确告诉设备启动电机/旋转。
在 GNU/Linux 中启动 SATA HDD 的最佳方法是什么?
答案1
从原始磁盘设备而不是块设备读取。这会绕过内核缓冲区高速缓存并保证驱动器将旋转。
答案2
dd 的direct
标志应该绕过(主机)缓存,并强制将 I/O 发送到驱动器:
dd if=/dev/sda bs=4096 count=1 of=/dev/null iflag=direct
^^^^^^^^^^^^
在我的机器上进行测试,这肯定会使磁盘活动指示灯闪烁。如果没有iflag
.它不会闪烁(至少第二次) 。
答案3
1)首先,如果你可以轻松做到这一点,我建议按照凯尔·琼斯所说的那样:直接从原始设备读取。
2) 如果无法做到这一点,请从驱动器的随机选择位置读取(fe:dd if=/dev/diskdev of=/dev/null seek=$[173<<30] bs=1048576 count=1024
将从磁盘的 173.giga 读取 1giga)。这使得实际读取的数据很可能不在实际的读取缓存中,因此需要旋转驱动器来填充读取操作。
如果您想确定,您可以多次读取随机选择的数据。
3) 作为替代方案,您可以使用相同的 dd 命令从固定位置(例如:从磁盘的开头)读取数据,但始终至少与您拥有的 RAM 数量相同。这保证了会有一些磁盘区域需要读取,这些区域肯定不在实际的磁盘读取缓存中,因此需要旋转磁盘来读取它们。
在你的地方(如果 1 不可用)我做了(3)如果我需要非常精确和(2)如果我只在我的家庭 Linux 上玩。