如何设置磁盘(不是分区)的LABEL?

Loc*_*ith 6 arch-linux udev lsblk

我一直在四处寻找,但找不到明确的答案,或者当我的系统向我显示其他情况时,我发现答案是“否”。

\n

我正在运行 Arch Linux,在将新 HDD 连接到 ZFS 池时,我注意到我的主 SSD 系统驱动器有一个LABEL属性/属性(不确定术语是什么)。

\n

注意:我说的是驱动器,而不是该驱动器内的分区。

\n

我真的很想让我的其他磁盘有一个LABEL这样的功能,但不知道如何完成。

\n

有人知道如何实现这一目标吗?

\n

下面是一个清理后的输出,lsblk以说明我正在寻找的内容。\n在我的系统中,<#LABEL1#>设置如输出中所示,我想设置/更改<#WANTTHIS#>

\n
NAME      SIZE TYPE LABEL        PTTYPE PTUUID                               MODEL                 SUBSYSTEMS\nloop0   ###.#M loop                                                                                block\nloop1   ###.#M loop                                                                                block\nloop2   ###.#M loop                                                                                block\nloop3   ###.#M loop                                                                                block\nsda     ###.#G disk <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa SomeModelString1      block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda1  ###.#M part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda2  ###.#M part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda3  ###.#M part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda4  ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda5  ###.#M part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda6  ###.#M part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda7  ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda8  ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda9  ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x9c\xe2\x94\x80sda10 ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n\xe2\x94\x94\xe2\x94\x80sda11 ###.#G part <#LABEL1#>   gpt    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa                       block:scsi:pci\n.\n.\n.\nsdg     ###.#G disk              dos    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx SomeModelString2      block:scsi:pci\n\xe2\x94\x94\xe2\x94\x80sdg1  ###.#G part <#LABEL2#>   dos    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                       block:scsi:pci\nsdh     ###.#T disk <#WANTTHIS#> gpt    bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb SomeModelString3      block:scsi:usb:pci\nsdi     ###.#T disk <#WANTTHIS#> gpt    cccccccc-cccc-cccc-cccc-cccccccccccc SomeModelString3      block:scsi:usb:pci\n\xe2\x94\x9c\xe2\x94\x80sdi1  ###.#T part some-part    gpt    cccccccc-cccc-cccc-cccc-cccccccccccc                       block:scsi:usb:pci\n\xe2\x94\x94\xe2\x94\x80sdi9  ###.#M part              gpt    cccccccc-cccc-cccc-cccc-cccccccccccc                       block:scsi:usb:pci\n.\n.\n.\n
Run Code Online (Sandbox Code Playgroud)\n
\n

编辑:接受答案后

\n

根据@frostschutz在我上面的例子中,FSTYPE在我的例子中是zfs_member,标签实际上是 zfs-pool 的名称(它的命名与我的系统名称完全相同,所以我想我过去可能手动命名它 - 我没有)。

\n

与物理磁盘相关的唯一标识符是WWN,与 GPT 分区表相关的唯一标识符是PTUUID

\n

因此,与我之前找到的所有其他答案一样,答案是否定的。
\n无法为磁盘设备指定名称。

\n

从现在起我的lsblk选择的用于列出相关 ID 的命令选项将是:

\n
$ lsblk --output=NAME,SIZE,RO,TYPE,WWN,PTTYPE,PTUUID,MODEL,SUBSYSTEMS,LABEL,PARTLABEL,PARTUUID,MOUNTPOINT\n
Run Code Online (Sandbox Code Playgroud)\n

fro*_*utz 5

这取决于设备的内容。更具体地说,这取决于是否存在提供标签的已知超级块。

这可以是文件系统超级块(如 ext4、xfs、fat、iso9660 等)、交换设备、raid 超级块 (mdadm),甚至是 crypt 容器 (LUKS2)。

因此,您可以在文件系统时指定标签mkfs,或者稍后使用文件系统特定工具(对于 ext4,这将是tune2fs -L)更改它,在 mdadm 的情况下,它是--name数组的标签,在 LUKS2 的情况下是cryptsetup --label选项。

据我所知,如果不将标签附加到某些文件系统或其他超级块提供程序,就无法任意设置标签。最接近的是 GPT 分区表 ( parted name ...) 中的 PARTLABEL,然后它附加到分区表本身,但是 PARTLABEL 不是 LABEL。它不会覆盖或替换文件系统标签。

标签没有通用标准,都是手工编织的,例如参见util-linux 中超级块格式的实现。如果你明天发明一个新的文件系统,即使它有标签,在添加支持之前它也不会显示。

在输出中lsblk,如果添加该FSTYPE列,您可能会了解什么可能提供了您所看到的标签。然后,如果您想以相同的方式在另一台设备上提供标签,您只需...也必须在该设备上放置相同的文件系统(或 raid 超级块,或无论它是什么...)。这样做自然会删除之前存在的任何其他内容(一台设备上不能有两个文件系统,除非先创建新设备)。