在 DMESG 中我看到:
[sdb] Attached SCSI removable disk
- Linux 如何决定什么是可移动的,什么是不可移动的?
- 有没有办法可以查找设备是否是“可移动”的或除了日志之外的其他设备,例如位于 /sys 或 /proc 中的某个设备?
答案1
除其他外,所有块设备都有一个removable
属性块设备属性。这些属性可以从 userland 中读取系统文件系统在,例如。/sys/block/DEVICE/ATTRIBUTE
/sys/block/sdb/removable
ATTR{removable}=="0"
您可以使用或从 udev 规则查询此属性ATTR{removable}=="1"
。
请注意,可移动(设备保持现有状态,但可能没有介质)与热插拔(设备可以来来去去)不同。例如,CD 驱动器是可拆卸的,但通常不可热插拔。 USB 闪存驱动器两者都是,但外部外壳中的硬盘通常是可热插拔的,但不可拆卸。
如果您想了解设备何时被视为可移动的具体细节,您必须深入研究内核源代码。搜索removable
——没有太多虚假点击。对于 SCSI 设备,该removable
位是从设备中读取的scsi_add_lun
与一个SCSI 查询命令。
答案2
经过一番努力,我找到了第二个问题的答案:
cat /sys/block/sda/removable