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. 我改用了旧的手动标签机,因为这就是我所拥有的。打印的标签只包含序列号,没有品牌/型号(这足以让我在需要时识别驱动器)。当驱动器出现故障并需要更换时,标签会派上用场。
如果这是我们正在谈论的 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规则的文章可能会有所帮助:
笔记
感谢 slm 的回答,请注意此解决方案使标签特定于 HDD 托架而不是其中的磁盘。因此,如果您使用标签/dev/bay1并且/dev/bay2您的硬盘 A 在托架 1 中,硬盘 B 在托架 2 中,则/dev/bay1指的是磁盘 A 和/dev/bay2磁盘 B。如果由于某种原因,您交换了 A 和 B 磁盘,你/dev/bay1指的是磁盘 B 和/dev/bay2磁盘 A。从你的问题来看,我相信这是你的意图。如果我错了,请纠正我。
你没有 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*
| 归档时间: |
|
| 查看次数: |
14222 次 |
| 最近记录: |