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

Kyl*_*ndt 6 linux scsi block-device removable-storage

在 DMESG 我看到:

[sdb] Attached SCSI removable disk

  1. Linux 如何决定什么是可移动的,什么是不可移动的?
  2. 有没有一种方法可以查找设备是否“可移动”或不是日志以外的其他设备,例如 /sys 或 /proc 中的某个设备?

Gil*_*il' 9

所有块设备都有一个removable属性,以及其他块设备属性。这些属性可以从sysfs中的userland 读取,例如。/sys/block/DEVICE/ATTRIBUTE/sys/block/sdb/removable

您可以从 udev 规则中查询此属性,使用ATTR{removable}=="0"ATTR{removable}=="1"

请注意,可移动(设备保持存在但可能没有媒体)与可热插拔(设备可以来来去去)不同。例如,CD 驱动器是可移动的,但通常不可热插拔。USB 闪存驱动器两者兼而有之,但外部机箱中的硬盘通常可热插拔但不可移动。

如果您想了解设备何时被视为可移动设备的细节,则必须深入研究内核源代码。搜索removable- 没有太多虚假点击。对于 SCSI 设备,使用SCSI INQUIRY 命令removable从设备中读取该位。scsi_add_lun