我的硬件机器中的所有磁盘设备都以 - sd 开头吗?

我的硬件机器中的所有磁盘设备都以 - sd 开头吗?

在我的 bash 脚本中我使用语法lsblk |正则表达式为了捕获我的硬件机器中的所有磁盘(不包括闪存卡或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

答案1

大多数磁盘驱动程序使用该sd前缀,但不是全部。历史上sd代表“SCSI 磁盘”,但大多数磁盘使用接近于的协议小型计算机系统接口,并且大多数Linux的磁盘驱动程序使用通用sd层加上特定于控制器的部分。但是,这不是义务,因此您需要检查您的硬件。例如,多媒体卡设备具有前缀mmcblk.某些硬件 RAID 驱动程序使用不同的前缀。虚拟机磁盘可能会也可能不会/dev/sd*取决于虚拟化技术。

请注意,其中sd还包括可移动驱动程序。例如,所有 USB 驱动器都有sd前缀,无论它们是硬盘、USB 密钥、SD 卡读卡器等。

另请注意,它grep sd非常脆弱,因为它与sd线路上的任何位置匹配,例如在磁盘或分区标签中。grep '^sd'会不那么脆弱。

总而言之,grep '^sd'做一些不太有用的事情,但可能恰好适合您,具体取决于您的硬件。如果您将安装迁移到不同的硬件,它可能会停止工作。所以你应该尝试寻找其他东西。还可以使用什么取决于您所说的“所有磁盘 (...)(不包括闪存卡或 ROM)”的含义。毕竟,闪存是一种磁盘技术,没有理由将其与旋转磁盘区分开来。依赖机器是否虚拟化这一事实通常是个坏主意。如果您开始使用 RAID,则不清楚您是对底层硬件感兴趣还是对软件可用的分区感兴趣。

如果您只想查看不可移动驱动器,请查看并检查文件中/sys/block/*包含哪些驱动器。这包括“非硬件”块设备,例如 RAID/LVM 持有者和循环设备。0removable

在Linux下,我推荐使用左心室容量对于不可移动媒体。它使管理变得更加容易。如果你使用LVM,那么或者pvdisplay或者lvdisplay可能会显示你想要的信息(但当然我不能确定,因为你没有告诉你你想要什么)。

答案2

至少 (P)ATA、SATA 和 USB 驱动器显示为.如果您有其他硬件,您可能需要检查它们的显示方式。应显示系统已检测到的所有大容量存储设备的人类可读列表。/dev/sdX/proc/partitions

/dev/sd*最初仅适用于 SCSI 驱动器,但其范围有所扩展。过去使用的 IDE/ATA 驱动程序将磁盘命名为磁盘/dev/hd*,但它“已经让开发者疯狂了”当前的驱动程序使它们像 SCSI 磁盘一样显示,如/dev/sd*.

某些硬件 RAID 控制器有自己的命名方案,例如/dev/cciss/c0d0p1HP RAID 控制器等,并且某些虚拟机上的磁盘可能显示为/dev/xvd*(Xen) 或/dev/vd*(KVM virtio 驱动器)。

除此之外,最常见的可能是 RAM 磁盘/dev/ram*;软盘/dev/fd*;和软件 RAID 设备(多设备磁盘),/dev/md*

答案3

只有由 psuedo scsi 系统管理的设备才会列为 sdX。较旧的块设备将显示为 /dev/hda、/dev/hdb 等。SD 卡显示为 /dev/mmcblk0、/dev/mmcblk1 等。

相关内容