私はディスクパーティションにラベルを付けるe2labelとその仲間のプログラムについて知っています。
e2label /dev/sda1 bla
私がやりたいことは別のことです。パーティションではなく、/dev/sda のハード ドライブのラベルを作成したいのです。
それは可能ですか?もし可能であれば、どのようにすればいいですか?
編集: 背景: 複数の HD ベイがあるケースでは、物理ベイのドアに (紙の) ラベルを貼り、そこに入れたディスクに論理的に同じラベルを貼りたいと思っています。
編集2: これはUbuntu Linux 12.04 サーバーに関するものです。
編集3: 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-*
SATA および SAS ドライブを含むすべての「SCSI のような」ドライブを検索します。SATA ドライブのみのシステムでもata-*
同様に機能します)
たとえば、私の ZFS サーバー システムの 1 つでは、次のような出力が生成されます。
# 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
。代わりに、手元にあった古い手動ラベル ライターを使用しました。印刷されたラベルには、ブランド/モデルなしでシリアル番号のみが記載されています (必要なときにドライブを識別するにはこれで十分です)。ドライブが故障して交換する必要がある場合、ラベルは非常に便利です。
答え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 を識別し、上記と同様の構文を使用して、たとえば のようなシンボリック リンクを追加することで、目的を達成できるはずです。/dev/bay1
記述ルールに関する次の記事がudev
役立つ場合があります。
注記
slm さんの回答のおかげで、このソリューションでは、ラベルが HDD ベイ内のディスクではなく、HDD ベイに固有のものになることに注意してください。したがって、ラベル/dev/bay1
と を使用し/dev/bay2
、ベイ 1 にハード ディスク A、ベイ 2 にハード ディスク B がある場合、 は/dev/bay1
ディスク A を参照し、 はディスク B を参照します。何らかの理由で A ディスクと B ディスクを入れ替えると、 はディスク B を参照し、はディスク A を参照するよう/dev/bay2
になります。ご質問から、これがあなたの意図であると私は信じています。間違っていたら訂正してください。/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 パーティションでは、パーティションに名前を付けることができるため、ディスクの識別に役立つ名前を付けた 1 セクターの大きなパーティションを作成できます。これは、 の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"