linux – 我的HW机器中的所有磁盘设备都以 – sd开头吗?

在我的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可能会显示您所追踪的信息(当然,由于您没有告诉您之后的信息,我无法确定.)

上一篇:教你使用 lsblk命令 列出系统中的块设备


下一篇:Linux基本了解