Ich kenne das Programm e2label und Freunde zum Anbringen eines Labels an einer Festplattenpartition, z. B.
e2label /dev/sda1 bla
Ich möchte etwas anderes machen: Ich möchte eine Bezeichnung für eine Festplatte erstellen, also für /dev/sda, nicht für eine Partition.
Ist das möglich und wenn ja, wie?
BEARBEITEN: Hintergrund: In einem Gehäuse mit mehreren HD-Schächten möchte ich (Papier-)Etiketten an der Tür des physischen Schachts anbringen und dasselbe Etikett logisch auf der Festplatte anbringen, die ich dort eingelegt habe.
EDIT2: Hier geht es um den Ubuntu Linux 12.04-Server.
EDIT3: Auf GPT-Partitionen gibt es zusätzlich noch das Partlabel, welches man z.B. mit parted setzen kann. Siehehttps://serverfault.com/q/681088/76442
Antwort1
Auf Ihre ursprüngliche Frage gibt es bereits einige gute Antworten, daher werde ich mich auf den Hintergrund Ihrer Frage, nämlich das Beschriften von Datenträgern, konzentrieren.
Ich verwende die Seriennummer des Laufwerks, um Etiketten für Hot-Swap-Schächte zu drucken. Dies ist die beste Möglichkeit, das Laufwerk eindeutig und einheitlich zu identifizieren. Sie ändert sich nicht, egal in welchem Schacht oder an welchem Controller es eingesteckt ist.
Sie erwähnen nicht, ob Sie Linux oder ein anderes Unix verwenden, aber unter Linux können Sie eine Liste der Festplatten (und Partitionen, die wir ausschließen möchten) mit ihrer Marke, ihrem Modell und ihrer Seriennummer erhalten, indem Sie im Verzeichnis /dev/disk/by-id/ nachsehen. Ich finde den folgenden Bash-Alias hierfür nützlich:
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'
(Matching scsi-*
findet alle „SCSI-ähnlichen“ Laufwerke, einschließlich SATA- und SAS-Laufwerke. Auf Systemen mit ausschließlich SATA-Laufwerken ata-*
würde es auch funktionieren)
Auf einem meiner ZFS-Serversysteme wird beispielsweise eine Ausgabe wie diese erzeugt:
# Listendisketten | sortieren 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
Wie Sie sehen, enthält die Auflistung /dev/disk/by-id die Marke und Modellnummer jedes Laufwerks sowie die Seriennummer. Es handelt sich allesamt um SATA-Laufwerke, die entweder an SATA-Ports oder SAS-Ports eines LSI SAS-2008-Controllers angeschlossen sind.
Wenn ich einen Etikettendrucker angeschlossen hätte, wäre es ganz einfach, Etiketten auf der Grundlage der Ausgabe von zu drucken list_disks
. Ich habe stattdessen einen alten manuellen Etikettendrucker verwendet, weil ich den hatte. Die gedruckten Etiketten enthalten nur die Seriennummer ohne Marke/Modell (das reicht mir, um das Laufwerk zu identifizieren, wenn ich es brauche). Die Etiketten sind sehr praktisch, wenn ein Laufwerk ausfällt und ersetzt werden muss.
Antwort2
Wenn wir über Linux sprechen, können Sie meiner Meinung nach erreichen, was Sie möchten, indem Sie udev
einen symbolischen Link zu Ihren Geräten erstellen. Wenn Sie sich ansehen /etc/udev/rules.d
, finden Sie eine Datei namens , 70-persistent-cd.rules
deren Inhalt Zeilen wie die folgenden enthält:
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
Dadurch wird der symbolische Link /dev/cdrom
zu dem Gerät erstellt, das durch seine PCI-Busadresse identifiziert wird. Sie sollten das gewünschte Ergebnis erzielen, indem Sie die Festplatte anhand ihrer (Schachtnummer? Leider habe ich da keine Erfahrung) identifizieren und eine ähnliche Syntax wie oben verwenden, um einen symbolischen Link wie /dev/bay1
beispielsweise hinzuzufügen. Der folgende Artikel zum Schreiben von udev
Regeln kann hilfreich sein:
Notiz
Dank der Antwort von slm beachten Sie bitte, dass diese Lösung die Beschriftungen spezifisch auf die Festplattenschächte und nicht auf die darin enthaltenen Datenträger ausrichtet. Wenn Sie also die Beschriftungen /dev/bay1
und verwenden /dev/bay2
und Festplatte A in Schacht 1 und Festplatte B in Schacht 2 haben, dann /dev/bay1
bezieht sich auf Datenträger A und /dev/bay2
bezieht sich auf Datenträger B. Wenn Sie aus irgendeinem Grund die Datenträger A und B vertauschen, erhalten Sie „ /dev/bay1
bezieht sich auf Datenträger B und /dev/bay2
bezieht sich auf Datenträger A“. Aus Ihrer Frage schließe ich, dass dies Ihre Absicht ist. Bitte korrigieren Sie mich, wenn ich falsch liege.
Antwort3
Sie versehen keine Partitionen mit E2labels, sondern Dateisysteme mit E2labels. Diese Dateisysteme können sich auf Partitionen, auf Dateien, auf ganzen Festplatten, auf Netzwerkblockgeräten befinden ... das spielt keine Rolle.
Wenn sich also ein ext2/3/4-Dateisystem direkt auf befindet /dev/sda
, können Sie es genauso benennen wie eines, das sich auf befinden würde /dev/sda1
.
Wenn sich jedoch kein Dateisystem direkt darauf befindet /dev/sda
, sondern es beispielsweise /dev/sda
(mithilfe von GPT, MBR, LVM usw.) in mehrere Partitionen partitioniert ist, können Sie es offensichtlich nicht verwenden e2label /dev/sda
.
Bei der GPT-Partitionierung können Sie Partitionen Namen geben. So können Sie eine Partition mit einem Sektor erstellen und ihr einen Namen geben, der Ihre Festplatte leichter identifiziert. Sie können das mit dem c
Befehl in tun gdisk
.
Antwort4
Um Ihre Frage zu beantworten, ob es möglich ist, eine Festplatte statt einer Partition zu benennen, lautet die Antwort nein. Mir ist keine Methode bekannt, dies zu tun.
Sie können die von @JosephR beschriebene Methode verwenden, aber beachten Sie, dass diese Konfiguration systemabhängig ist. Wenn Sie also diese Festplatte in ein anderes System einbauen würden, ginge die von ihm vorgeschlagene „Beschriftung“ verloren. Sie ist in keiner sinnvollen Weise an die Festplatte gebunden.
Übrigens können Sie mit dem Befehl die für verschiedene Laufwerke festgelegten Labels und UUIDs sehen blkid
.
Beispiel
$ 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"