在我的bash脚本中,我使用语法lsblk | grep sd以捕获我的HW机器中的所有磁盘(不包括闪存卡或ROM)
我只是担心某些磁盘设备名称将来自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驱动器都有sd前缀,无论它们是硬盘,USB密钥,SD卡读卡器等.
另请注意,grep sd非常脆弱,因为它匹配行上任何位置的sd,例如在磁盘或分区标签中. grep’^ sd’会不那么脆弱.
总而言之,grep’^ sd’做了一些不太有用的东西,但可能适合你,取决于你的硬件.如果将安装迁移到其他硬件,则可能会停止工作.所以你应该尝试找别的东西.还有什么用,取决于你所说的“所有磁盘(…)(不包括闪存卡或ROM)”.毕竟,Flash是一种磁盘技术,没有理由将它与旋转磁盘区分开来.依靠机器是否虚拟化这一事实通常是一个坏主意.如果您开始使用RAID,则不清楚您是否对底层硬件或可用于软件的分区感兴趣.
如果只想查看不可移动的驱动器,请查看/ sys / block / *并检查可移动文件中哪些包含0.这包括“非硬件”块设备,例如RAID / LVM支架和循环设备.
在Linux下,我建议将LVM用于不可移动媒体.它使管理变得更容易.如果您使用LVM,那么pvdisplay或lvdisplay可能会显示您所追踪的信息(当然,由于您没有告诉您之后的信息,我无法确定.)