哪个命令可以强制驱动器旋转?

哪个命令可以强制驱动器旋转?

我翻阅了手册hdparmsdparm .我知道有争论向下驱动器,与-y-Y。我还知道有一些参数可以控制省电功能,例如-S-B。然而我想要的是启动电机并旋转向上驱动器。

sdparm

我懂了sdparm 的手册页loadstart参数。可以使用其中任何一个吗?它看起来更像是适合磁带驱动器,或者至少是光盘驱动器?

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 上玩。

相关内容