Ich kenne das Programm e2label and friends zum Anhängen eines Etiketts an eine Festplattenpartition, z
e2label /dev/sda1 bla
Was ich tun möchte, ist etwas anderes: Ich möchte eine Bezeichnung für eine Festplatte erstellen, dh für / dev / sda, nicht für eine Partition.
Ist das möglich und wenn ja, wie?
EDIT: Hintergrund: In einem Fall mit mehreren HD-Schächten möchte ich (Papier-) Etiketten an der Tür des physischen Schachts anbringen und logischerweise dasselbe Etikett auf der Festplatte anbringen, die ich dort eingelegt habe.
EDIT2: Hier geht es um Ubuntu Linux 12.04 Server.
EDIT3: Auf GPT-Partitionen gibt es auch das Partlabel, das mit zB parted gesetzt werden kann. Siehe /server//q/681088/76442
Antworten:
Ihre erste Frage hat bereits einige gute Antworten, daher werde ich mich auf den Hintergrund Ihrer Frage konzentrieren und die Datenträger beschriften.
Ich verwende die Seriennummer des Laufwerks, um Etiketten für Hot-Swap-Einschübe zu drucken. Dies ist die beste Methode, um das Laufwerk eindeutig und konsistent zu identifizieren. Es ändert sich nicht, unabhängig davon, an welcher Position oder an welchem Controller es angeschlossen 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 in / nachsehen. dev / disk / by-id / verzeichnis. Ich finde den folgenden Bash-Alias nützlich:
(
scsi-*
Wenn alle "SCSI-ähnlichen" Laufwerke, einschließlich SATA- und SAS-Laufwerke, gefunden werdenata-*
, funktioniert dies auch auf Systemen mit nur SATA-Laufwerken. )zB auf einem meiner ZFS-Server-Systeme erzeugt es eine Ausgabe wie diese:
Wie Sie sehen, enthält die Auflistung / dev / disk / by-id die Marke und Modellnummer jedes Laufwerks sowie die Seriennummer. Dies sind alles 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 einfach genug, Etiketten basierend auf der Ausgabe von zu drucken
list_disks
. Ich habe stattdessen einen alten manuellen Etikettendrucker verwendet, weil ich das hatte. Die gedruckten Etiketten enthalten nur die Seriennummer ohne Marke / Modell (das reicht mir, um das Laufwerk zu identifizieren, wenn ich es benötige). Die Etiketten sind sehr praktisch, wenn ein Laufwerk ausfällt und ausgetauscht werden muss.quelle
alias list_disks='find /dev/disk/by-id/ -iname scsi-* -o -iname usb-* | grep -v -- -part | while read disk ; do echo $(basename $(readlink $disk)) $(basename $disk); done | sed -re "s/(usb|scsi)-// ; s/(SATA|Generic)_//" | sort'
. es findet auch usb festplatten und entfernt fremde daten in der ausgabe.Wenn es sich um Linux handelt, können Sie meiner Meinung nach das erreichen, was Sie möchten
udev
, um einen Symlink zu Ihren Geräten zu erstellen. Wenn Sie sich das ansehen/etc/udev/rules.d
, gibt es eine Datei namens,70-persistent-cd.rules
deren Inhalt Zeilen wie folgt enthält:Dadurch wird der Symlink
/dev/cdrom
zu dem Gerät erstellt, das durch seine PCI- Busadresse identifiziert wird. Sie sollten in der Lage sein, das zu erreichen, was Sie möchten, indem Sie die Festplatte anhand ihrer (Einschubnummer? Entschuldigung, keine Erfahrung dort) identifizieren und eine ähnliche Syntax wie oben verwenden, um beispielsweise einen Symlink hinzuzufügen/dev/bay1
. Der folgende Artikel zu Schreibregelnudev
kann hilfreich sein:Udev-Regeln schreiben
Hinweis
Dank der Antwort von slm beachten Sie bitte, dass diese Lösung die Etiketten spezifisch für die Festplattenschächte und nicht für die darin enthaltenen Festplatten erstellt. Wenn Sie also die Beschriftungen verwenden
/dev/bay1
und/dev/bay2
die Festplatte A in Position 1 und die Festplatte B in Position 2 haben,/dev/bay1
bezieht sich dies auf die Festplatte A und/dev/bay2
auf die Festplatte B. Wenn Sie aus irgendeinem Grund die Festplatten A und B austauschen, Sie/dev/bay1
beziehen sich auf Datenträger B und/dev/bay2
auf Datenträger A. Aus Ihrer Frage glaube ich, dass dies Ihre Absicht ist. Bitte korrigieren Sie mich, falls ich falsch liege.quelle
Sie kennzeichnen Partitionen nicht mit e2label, Sie kennzeichnen Dateisysteme mit e2label. Diese Dateisysteme können sich auf Partitionen in Dateien, auf ganzen Festplatten, auf Netzwerkblockgeräten befinden ... das spielt keine Rolle.
Also ja, wenn ein ext2 / 3/4-Dateisystem direkt darauf installiert ist
/dev/sda
, können Sie es genauso kennzeichnen wie eines, das aktiviert ist/dev/sda1
.Nun, wenn es kein Dateisystem gibt, das direkt darauf installiert ist,
/dev/sda
sondern beispielsweise/dev/sda
in mehrere Partitionen unterteilt ist (mit GPT, MBR, LVM ...), können Sie offensichtlich kein Dateisystem verwendene2label /dev/sda
.Bei der GPT-Partitionierung können Sie Partitionen Namen geben, sodass Sie eine Partition mit einem Sektor und einem Namen erstellen können, um Ihre Festplatte zu identifizieren. Sie können dies mit dem
c
Befehl in tungdisk
.quelle
Um Ihre Frage zu beantworten, ob es möglich ist, eine Festplatte im Gegensatz zu einer Partition zu kennzeichnen, lautet die Antwort nein. Mir ist keine Methode dafür bekannt.
Sie können die von @JosephR beschriebene Methode verwenden. Beachten Sie jedoch, dass dieses Setup systemabhängig ist. Wenn Sie diese Festplatte also auf ein anderes System übertragen, geht die von ihm vorgeschlagene "Kennzeichnung" verloren. Es ist in keiner sinnvollen Weise an die Festplatte gebunden.
Übrigens können Sie mit dem
blkid
Befehl die Bezeichnungen und UUIDs für verschiedene Laufwerke anzeigen .Beispiel
quelle
blkid
nur Partitionen nicht Geräte aufzulisten , woran das OP nicht interessiert ist./dev/disk/by-id
und Sie können esudev
wie in dieser Antwort gezeigt tun .Ich gehe davon aus, dass Ihr Hauptziel darin besteht, eine physische Festplatte eindeutig zu identifizieren. Leider glaube ich nicht, dass es eine Standardmethode gibt, um eine Festplatte so zu kennzeichnen, wie Sie ein Dateisystem kennzeichnen können.
Eine Möglichkeit besteht darin, das Modell und die Seriennummer der Festplatte zu verwenden. Unter Linux können Sie diese Bezeichner mit abrufen
hdparm -i /dev/sdX
. Das Schöne an der Seriennummer ist, dass sie möglicherweise bereits auf dem Aufkleber des Herstellers aufgedruckt ist. (Ich nehme an, Sie interessieren sich hauptsächlich für Linux, da Siee2label
in Ihrer Frage darauf hingewiesen haben . Wenn ja, bearbeiten Sie Ihre Frage und fügen Sie den Linux- Tag hinzu.)Wenn Sie einen Hardware-RAID-Controller verwenden,
hdparm
funktioniert dieser möglicherweise nicht. In diesem Fall müssen Sie stattdessen die Befehlszeilentools Ihres RAID-Controllers zu Rate ziehen.Wenn Sie es anhand des Inhalts der Festplatte identifizieren möchten, können Sie die Festplatten-GUID verwenden, die im Header der GPT-Partitionstabelle ( Bytes 56-71 von LBA 1 ) gespeichert ist . Es ist eher eine willkürliche Zufallszeichenfolge als eine Beschriftung Ihrer Wahl, aber es ist insofern wie eine Beschriftung, als es persistent ist, bis Sie sich entscheiden, die Partitionstabelle zu löschen. Unter Linux können Sie die Festplatten-GUID mithilfe von anzeigen
gdisk -l /dev/sdX
.quelle
Basierend auf den Antworten, die ich bekommen habe (Danke Jungs!), Scheint es keine Möglichkeit zu geben, Festplatten zu beschriften, sondern nur Partitionen. Die Antwort lautet also wahrscheinlich "NEIN".
Ich gehe auf die Vorschläge von @cas und @ 200_success ein: Ich klebe die Seriennummern der Festplatten mit einem Aufkleber an die Schachttüren.
Das Erstellen einer kleinen Partition auf jeder Festplatte, um diese Partition kennzeichnen zu können (wie von @Stephane Chazelas vorgeschlagen), ist ebenfalls eine Option, aber ich denke, das wäre zu verwirrend für jemanden, der das System zu einem späteren Zeitpunkt warten muss .
quelle
Erstellen Sie eine
udev
Regel unter Verwendung des garantierten eindeutigen WWN des Datenträgers (sofern vorhanden), andernfalls unter Verwendung der kombinierten Anbieter- und Serien-IDs:Holen Sie sich die erforderlichen Werte:
Massieren Sie diese Werte
udev
rules
wie folgt :udevadm trigger
Um den Symlink automatisch mit den von angegebenen Werten zu benennen
udevadm info -q all /dev/<YOUR-DEVICE>
, können Sie Folgendes verwenden:Es ist auch möglich,
ENV
Variablen ausATTRS
Werten zu erstellen , um möglicherweise eine kürzere eindeutige ID zu erhalten.quelle
Wenn du
ls /dev/disk-by-path/pci*
...Sie werden auf jeden Fall einen PCI-Pfad für jeden Laufwerkschacht sehen. Sie müssen nur eine bekannte Festplatte verwenden, um sicherzustellen, dass die Beschriftungen richtig sind.
Verwenden
blkid /dev/disk-by-path/pci*
Sie diese Option, um festzustellen, welche Festplattenpartitionen sich im PCI-Pfad befinden.Sie können auch diesen Pfad verwenden.
quelle
Ich mag @cas Lösung, aber hier ist meine 2 ¢
quelle
Die Scheibe ist bereits markiert , wie
sda
,sdb
,sdc
... Die Partitionen dann beispielsweise markiert sind aufsda
:sda1
,sda2
...Mit können Sie alle Bezeichnungen für Festplatten und Partitionen auflisten
ls /dev/sd*
quelle