私のbashスクリプトでは、HWマシン(フラッシュカードやROMを含まない)のすべてのディスクをキャプチャするために、構文lsblk | grep sdを使用します。
一部のディスクデバイス名がSDと異なるのではないかと心配しているだけで、これらのディスクを見逃してしまいます
出来ますか ?
lsblk | grep sd
sda 8:0 0 150G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 149.5G 0 part
sdb 8:16 0 20G 0 disk /id/sdb
sdc 8:32 0 20G 0 disk /id/sdc
sdd 8:48 0 20G 0 disk /id/sdd
sde 8:64 0 20G 0 disk /id/sde
sdf 8:80 0 20G 0 disk /id/sdf
sdg 8:96 0 20G 0 disk
sdh 8:112 0 20G 0 disk
sdi 8:128 0 20G 0 disk
sdj 8:144 0 20G 0 disk
sdk 8:160 0 20G 0 disk
ほとんどのディスクドライバはsd
プレフィックスを使用しますが、すべてではありません。歴史的にsd
は「SCSIディスク」の略でしたが、ほとんどのディスクは [〜#〜] scsi [〜#〜] に近いプロトコルを使用し、Linuxのディスクドライバーのほとんどは汎用のsd
レイヤーとコントローラー固有の部分。ただし、これは義務ではないため、ハードウェアに確認する必要があります。たとえば、 eMMC デバイスのプレフィックスはmmcblk
です。一部のハードウェアRAIDドライバーは、異なるプレフィックスを使用します。仮想マシンディスクは、仮想化テクノロジに応じて/dev/sd*
である場合とそうでない場合があります。
sd
にはリムーバブルドライバーも含まれていることに注意してください。たとえば、すべてのUSBドライブには、ハードディスク、USBキー、SDカードリーダーなどであるかどうかに関係なく、sd
プレフィックスが付いています。
grep sd
は、ディスクやパーティションのラベルなど、行のどこでもsd
と一致するため、非常に壊れやすいことにも注意してください。 grep '^sd'
は壊れにくくなります。
全体として、grep '^sd'
はあまり役に立たないことをしますが、ハードウェアによってはうまくいく場合があります。インストールを別のハードウェアに移行すると、機能しなくなる場合があります。だからあなたは何か他のものを見つけようとするべきです。他に何を使用するかは、「すべてのディスク(…)(フラッシュカードやROMを含まない)」の意味によって異なります。結局のところ、フラッシュはディスクテクノロジーであり、回転ディスクと区別する理由はありません。また、マシンが仮想化されているかどうかに依存することは、通常は悪い考えです。また、RAIDの使用を開始した場合、基盤となるハードウェアに関心があるのか、ソフトウェアで使用可能なパーティションに関心があるのかは明確ではありません。
リムーバブルではないドライブのみを表示する場合は、/sys/block/*
を調べて、removable
ファイルに0
が含まれているドライブを確認します。これには、RAID/LVMホルダーやループデバイスなどの「非ハードウェア」ブロックデバイスが含まれます。
Linuxでは、リムーバブルメディアには [〜#〜] lvm [〜#〜] を使用することをお勧めします。管理がはるかに簡単になります。 LVMを使用している場合は、pvdisplay
またはlvdisplay
のいずれかで、おそらくあなたが求めている情報が表示されます(ただし、もちろん、あなたが何を求めているのかわからなかったため、はっきりとはわかりません)。 。
Psuedoscsiシステムによって管理されているデバイスのみがsdXとしてリストされます。古いブロックデバイスは/ dev/hda、/ dev/hdbなどとして表示されます。SDカードは/ dev/mmcblk0、/ dev/mmcblk1などとして表示されます。