我可以标记磁盘设备而不是分区吗?

dum*_*uch 26 linux ubuntu hard-disk

我知道用于将标签附加到磁盘分区的 e2label 和朋友程序,例如

e2label /dev/sda1 bla
Run Code Online (Sandbox Code Playgroud)

我想做的是不同的事情:我想为硬盘创建一个标签,即 /dev/sda,而不是分区。

这是可能的,如果是,如何?

编辑:背景:在有多个 HD 托架的情况下,我想在物理托架的门上贴上(纸质)标签,并在逻辑上将相同的标签贴在我放在那里的磁盘上。

EDIT2:这是关于 Ubuntu Linux 12.04 服务器。

EDIT3:在 GPT 分区上还有 partlabel,可以用例如 parted 设置。见https://serverfault.com/q/681088/76442

cas*_*cas 12

您最初的问题已经有一些很好的答案,所以我将重点关注您问题的背景,标记磁盘。

我使用驱动器的序列号打印热插拔托架的标签 - 这是唯一且一致地识别驱动器的最佳方式。无论哪个托架或插入哪个控制器,它都不会改变。

您没有提到您使用的是 Linux 还是其他一些 Unix,但在 Linux 中,您可以通过查看 / dev/disk/by-id/ 目录。我发现以下 bash 别名对此很有用:

alias list_disks='find /dev/disk/by-id/ -iname 'scsi-*' | grep -v -- -part | while read disk ; do echo $(readlink $disk | sed -e s:../../:: ) $(basename $disk); done'
Run Code Online (Sandbox Code Playgroud)

(匹配scsi-*查找所有“类 scsi”驱动器,包括 SATA 和 SAS 驱动器。在只有 SATA 驱动器的系统上,ata-*也可以工作)

例如,在我的一个 ZFS 服务器系统上,它产生如下输出:

# list_disks | 种类
sdb scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2195141
sdc scsi-SATA_WDC_WD10EACS-00Z_WD-WCASJ2114122
sdd scsi-SATA_ST31000528AS_9VP4P4LN
sde scsi-SATA_ST31000528AS_6VP3FWAG
sdf scsi-SATA_ST31000528AS_9VP509T5
sdg scsi-SATA_ST31000528AS_9VP4RPXK
sdh scsi-SATA_OCZ-VECTOR_OCZ-0974C023I4P2G1B8
sdi scsi-SATA_OCZ-VECTOR_OCZ-8RL5XW08536INH7R
sdj scsi-SATA_ST31000528AS_9VP18CCV
sdk scsi-SATA_WDC_WD10EARS-00Y_WD-WMAV50933036

如您所见,/dev/disk/by-id 列表包括每个驱动器的品牌和型号,以及序列号。它们都是插入到 LSI SAS-2008 控制器上的 SATA 端口或 SAS 端口的 SATA 驱动器。

如果我连接了标签打印机,那么基于list_disks. 我改用了旧的手动标签机,因为这就是我所拥有的。打印的标签只包含序列号,没有品牌/型号(这足以让我在需要时识别驱动器)。当驱动器出现故障并需要更换时,标签会派上用场。


Jos*_* R. 7

如果这是我们正在谈论的 Linux,那么我认为您可以实现您想要udev用来创建设备符号链接的功能。如果您查看/etc/udev/rules.d,则有一个名为70-persistent-cd.rules的文件,其内容包含如下几行:

SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
Run Code Online (Sandbox Code Playgroud)

它的作用是创建/dev/cdrom指向由其 PCI 总线地址标识的设备的符号链接。您应该能够通过使用其(托架编号?抱歉没有经验)识别硬盘并使用与上述类似的语法添加符号链接来完成您想要的/dev/bay1,例如。以下有关编写udev规则的文章可能会有所帮助:

编写 udev 规则

笔记

感谢 slm 的回答,请注意此解决方案使标签特定于 HDD 托架而不是其中的磁盘。因此,如果您使用标签/dev/bay1并且/dev/bay2您的硬盘 A 在托架 1 中,硬盘 B 在托架 2 中,则/dev/bay1指的是磁盘 A 和/dev/bay2磁盘 B。如果由于某种原因,您交换了 A 和 B 磁盘,你/dev/bay1指的是磁盘 B 和/dev/bay2磁盘 A。从你的问题来看,我相信这是你的意图。如果我错了,请纠正我。


Sté*_*las 7

你没有 e2label 分区,你 e2label 文件系统。这些文件系统可以位于文件的分区上、整个磁盘上、网络块设备上……没关系。

所以是的,如果直接在 上有一个 ext2/3/4 文件系统/dev/sda,您可以将其标记为与/dev/sda1.

现在,如果没有直接在上面的文件系统,/dev/sda但是例如,/dev/sda被分区(使用 GPT、MBR、LVM...)成几个分区,那么显然没有你不能使用e2label /dev/sda.

在 GPT 分区中,您可以为分区命名,这样您就可以创建一个单扇区的大分区,并用一个名称来帮助识别您的磁盘。你可以做到这一点的c命令gdisk


Alk*_*lko -1

磁盘已标记为sda, sdb, sdc... 然后分区会标记为例如sda: sda1, sda2...

您可以列出磁盘和分区的所有标签ls /dev/sd*

  • 不幸的是,如果我将磁盘从一台计算机移动到另一台计算机或从一个控制器移动到另一个控制器,这些设备名称会发生​​变化。 (4认同)