如何判断 SCSI 设备是否可移动?

如何判断 SCSI 设备是否可移动?

在 DMESG 中我看到:

[sdb] Attached SCSI removable disk

  1. Linux 如何决定什么是可移动的,什么是不可移动的?
  2. 有没有办法可以查找设备是否是“可移动”的或除了日志之外的其他设备,例如位于 /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

相关内容