感谢hdparm -B1 /dev/sdb
我的硬盘在启动时不再旋转。但在完成 BIOS POST 消息并启动 Ubuntu 后,硬盘通过 SATA 数据线收到信号并旋转。
保留数据线(但仍插入 SATA 电源线)让系统完全从我的 SSD 启动,而无需启动 HDD。
是什么导致 HDD 旋转起来?可能是 Grub2?
编辑:不,似乎不是 Grub2 启动了驱动器。我只是设置了 Grub 以显示其菜单而不使用计时器。直到我点击 Ubuntu 标准启动选项时才发生任何事情,然后几秒钟后驱动器开始旋转。
编辑:dmesg | grep sdb
:
[ 7.080043] ata2.00: qc timeout (cmd 0xef)
[ 7.080057] ata2.00: failed to IDENTIFY (SPINUP failed, err_mask=0x4)
[ 9.830035] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 9.836555] ata2.00: ATA-8: SAMSUNG HD105SI, 1AJ10001, max UDMA/133
[ 9.836564] ata2.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32)
[ 9.842364] ata2.00: configured for UDMA/133
[ 9.842644] scsi 1:0:0:0: Direct-Access ATA SAMSUNG HD105SI 1AJ1 PQ: 0 ANSI: 5
[ 9.843249] sd 1:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
[ 9.843270] sd 1:0:0:0: Attached scsi generic sg1 type 0
[ 9.843487] sd 1:0:0:0: [sdb] Write Protect is off
[ 9.843497] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 9.843590] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 9.844091] sdb:
[ 9.845127] scsi 2:0:0:0: CD-ROM ATAPI iHDS118 5 RL0C PQ: 0 ANSI: 5
[ 9.851182] sr0: scsi3-mmc drive: 48x/48x cd/rw xa/form2 cdda tray
[ 9.851191] Uniform CD-ROM driver Revision: 3.20
[ 9.851554] sr 2:0:0:0: Attached scsi CD-ROM sr0
[ 9.851802] sr 2:0:0:0: Attached scsi generic sg2 type 5
[ 9.942896] sdb1
[ 9.943773] sd 1:0:0:0: [sdb] Attached SCSI disk
答案1
我认为您的意思是hdparm -s
,而不是-B1
,它要求 APM 兼容硬盘(基本上只指笔记本电脑硬盘)在短暂不活动后自动待机。此外,Western Digital 磁盘似乎不接受-s
待机状态下开机的命令,但背面有一个跳线可用于启用它。
内核 sd(scsi 磁盘)驱动程序在第一次访问磁盘时启动磁盘,这在启动期间发生以扫描分区表。默认情况下,它还会在从挂起状态恢复后重新启动驱动器,但您可以通过写入0
来禁用此功能/sys/block/sda/device/scsi_disk/*/manage_start_stop
。
hdparm -y
我通常会这样做,然后在重新启动后手动暂停我不打算使用的驱动器。
我上一个主板的 BIOS 根本无法检测到待机状态下启动的驱动器,但我的新华硕 sandy bridge 显然足够“智能”,可以注意到驱动器处于待机状态并启动它。
答案2
很确定是控制器扫描磁盘的内核模块导致您的硬盘旋转。现在,如果我错了,它确实是您的硬盘模块,您可以在启动过程中阻止加载该模块。请查看黑名单/etc/modprobe.d/
。
答案3
我将查找 sdb(1) 的日志,从 dmesg 开始:
dmesg | grep /dev/sdb
答案4
Linux 会在启动时检查所有硬盘上的分区,因此会读取所有连接的硬盘上的分区表。仅此一项就会导致启动,但可能还有其他原因。
为了进行深入分析,据我所知,ureadahead 的后端工具会构建启动期间读取的设备块列表。您可以使用其日志来确定读取了哪些硬盘块,这是确定启动原因的第一步。