web-dev-qa-db-ja.com

SCSIデバイスが取り外し可能かどうかを見分ける方法は?

DMESGでは次のようになります。

[sdb] Attached SCSI removable disk

  1. Linuxは、リムーバブルとリムーバブルではないものをどのように決定しますか?
  2. デバイスが「リムーバブル」であるか、ログ以外ではないか、たとえば/ sysまたは/ procにあるかどうかを調べる方法はありますか?
6
Kyle Brandt

すべてのブロックデバイスには、とりわけremovable属性があります ブロックデバイス属性 。これらの属性は、 sysfs at /sys/block/DEVICE/ATTRIBUTEのユーザーランドから読み取ることができます。 /sys/block/sdb/removable

この属性は、ATTR{removable}=="0"またはATTR{removable}=="1"を使用してudevルールからクエリできます。

リムーバブル(デバイスは存在し続けますが、メディアがない場合があります)は、ホットプラグ可能(デバイスは出入りできます)と同じではないことに注意してください。たとえば、CDドライブは取り外し可能ですが、多くの場合、ホットプラグ可能ではありません。 USBフラッシュドライブは両方ですが、外部エンクロージャーのハードディスクは通常、ホットプラグ可能ですが、取り外しはできません。

デバイスがリムーバブルと見なされるタイミングの要点を知りたい場合は、 カーネルソース を掘り下げる必要があります。 removableを検索します—偽のヒットはそれほど多くありません。 SCSIデバイスの場合、removableビットは scsi_add_lun のデバイスから SCSI INQUIRYコマンド で読み取られます。

少しの努力で、2番目の質問に対する答えを見つけました。

cat /sys/block/sda/removable

2
Kyle Brandt