我可以標記磁碟設備而不是分割區嗎?

我可以標記磁碟設備而不是分割區嗎?

我知道 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 中,您可以透過查看 / 來取得磁碟(和分割區,我們要排除的分割區)及其品牌、型號和序號的清單。 /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。,我相信這是你的意圖。如果我錯了,請糾正我。/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" 

相關內容