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

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

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

e2label /dev/sda1 bla

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

这可能吗?如果可以,怎么做?

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

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

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

答案1

您最初的问题已经有了一些很好的答案,因此我将重点介绍您的问题的背景,即标记磁盘。

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

您没有提及您使用的是 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'

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

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

# 磁盘列表 |种类
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。我使用了旧的手动标签打印机,因为这就是我所拥有的。打印的标签仅包含序列号,没有品牌/型号(这足以让我在需要时识别驱动器)。当驱动器出现故障并需要更换时,标签会非常方便。

答案2

如果这是我们谈论的 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"

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

编写 udev 规则

笔记

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

答案3

您不是对分区进行 e2label 标记,而是对文件系统进行 e2label 标记。这些文件系统可以位于文件的分区上、整个磁盘上、网络块设备上......这并不重要。

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

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

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

答案4

要回答您的问题是否可以标记磁盘而不是分区,答案是否定的。我不知道有什么方法可以做到这一点。

您可以使用@JosephR 概述的方法,但要意识到此设置取决于系统,因此如果您将该 HDD 带到另一个系统,他建议的“标签”将会丢失。它没有以任何有意义的方式与磁盘绑定。

顺便说一句,您可以使用该命令查看不同驱动器的标签和 UUID 设置blkid

例子

$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs" 
/dev/sda5: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4" 
/dev/sda6: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXfG93LA" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="swap" 
/dev/mapper/vg_grinchy-lv_home: UUID="XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXX" TYPE="ext4" 

相关内容