Je connais le programme e2label et ses amis pour attacher une étiquette à une partition de disque, par exemple
e2label /dev/sda1 bla
Ce que je veux faire est quelque chose de différent: je veux créer une étiquette pour un disque dur, c'est-à-dire pour / dev / sda, pas pour une partition.
Est-ce possible et si oui, comment?
EDIT: Contexte: Dans un cas avec plusieurs baies HD, je voudrais mettre des étiquettes (en papier) sur la porte de la baie physique et mettre logiquement la même étiquette sur le disque que j'y ai inséré.
EDIT2: Il s'agit du serveur Ubuntu Linux 12.04.
EDIT3: Sur les partitions GPT, il y a aussi le partlabel, qui peut être défini avec par exemple parted. Voir /server//q/681088/76442
Réponses:
Votre question initiale contient déjà quelques bonnes réponses, je vais donc me concentrer sur l'arrière-plan de votre question, l'étiquetage des disques.
J'utilise le numéro de série du lecteur pour imprimer des étiquettes pour les baies remplaçables à chaud - c'est le meilleur moyen d'identifier le lecteur de manière unique et cohérente. Il ne changera pas quelle que soit la baie ou le contrôleur auquel il est branché.
Vous ne mentionnez pas si vous utilisez Linux ou un autre Unix, mais sous Linux, vous pouvez obtenir une liste de disques (et de partitions, que nous voulons exclure) avec leur marque, modèle et numéro de série en regardant dans le / répertoire dev / disk / by-id /. Je trouve l'alias bash suivant utile pour cela:
(la correspondance pour
scsi-*
trouver tous les disques de type "scsi", y compris les disques SATA et SAS. sur les systèmes avec uniquement des disques SATA,ata-*
fonctionnerait également)par exemple sur l'un de mes systèmes de serveur ZFS, il produit une sortie comme celle-ci:
Comme vous pouvez le voir, la liste / dev / disk / by-id inclut la marque et le numéro de modèle de chaque lecteur, ainsi que le numéro de série. Ce sont tous des disques SATA branchés sur des ports SATA ou SAS sur un contrôleur LSI SAS-2008.
Si j'avais une imprimante d'étiquettes connectée, il serait assez facile d'imprimer des étiquettes en fonction de la sortie de
list_disks
. J'ai plutôt utilisé un ancien étiqueteur manuel parce que c'est ce que j'avais. Les étiquettes imprimées ne contiennent que le numéro de série sans la marque / le modèle (cela me suffit pour identifier le lecteur lorsque j'en ai besoin). Les étiquettes sont très utiles lorsqu'un disque tombe en panne et doit être remplacé.la source
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'
. il trouve également les disques usb et se débarrasse des données superflues dans la sortie.Si c'est Linux dont nous parlons, alors je pense que vous pouvez réaliser ce que vous voulez en utilisant
udev
pour créer un lien symbolique vers vos appareils. Si vous regardez/etc/udev/rules.d
, il y a un fichier appelé70-persistent-cd.rules
dont le contenu a des lignes comme:Cela crée un lien symbolique
/dev/cdrom
vers le périphérique identifié par son adresse de bus PCI. Vous devriez être en mesure d'accomplir ce que vous voulez en identifiant le disque dur en utilisant son (numéro de baie? Désolé aucune expérience là-bas) et en utilisant une syntaxe similaire à celle ci-dessus pour ajouter un lien symbolique comme/dev/bay1
, par exemple. L'article suivant sur l'écriture deudev
règles peut être utile:Écrire des règles udev
Remarque
Merci à la réponse de slm, veuillez noter que cette solution rend les étiquettes spécifiques aux baies de disques durs plutôt qu'aux disques à l'intérieur. Ainsi, si vous utilisez les étiquettes
/dev/bay1
et/dev/bay2
que vous avez le disque dur A dans la baie 1 et le disque dur B dans la baie 2 , faites/dev/bay1
référence au disque A et/dev/bay2
au disque B. Si, pour une raison quelconque, vous échangez les disques A et B, vous vous/dev/bay1
référez au disque B et/dev/bay2
au disque A. D'après votre question, je crois que c'est votre intention. Corrigez-moi si j'ai tort, s'il-vous plait.la source
Vous n'avez pas de partitions e2label, vous les systèmes de fichiers e2label. Ces systèmes de fichiers peuvent être sur des partitions sur des fichiers, sur des disques entiers, sur des périphériques de bloc réseau ... peu importe.
Donc oui, s'il y a un système de fichiers ext2 / 3/4 directement sur
/dev/sda
, vous pouvez l'étiqueter exactement comme celui qui serait sur/dev/sda1
.Maintenant, s'il n'y a pas de système de fichiers directement
/dev/sda
mais, par exemple,/dev/sda
est partitionné (en utilisant GPT, MBR, LVM ...) en plusieurs partitions, alors évidemment vous ne pouvez pas l'utilisere2label /dev/sda
.Dans le partitionnement GPT, vous pouvez donner des noms aux partitions, vous pouvez donc créer une grande partition à un secteur avec un nom pour aider à identifier votre disque. Vous pouvez le faire avec la
c
commande dansgdisk
.la source
Pour répondre à votre question s'il est possible d'étiqueter un disque par opposition à une partition, la réponse est non. Je ne connais aucune méthode pour le faire.
Vous pouvez utiliser la méthode décrite par @JosephR, mais sachez que cette configuration dépend du système, donc si vous deviez transférer ce disque dur vers un autre système, "l'étiquetage" qu'il a proposé serait perdu. Il n'est pas lié au disque de manière significative.
Soit dit en passant, vous pouvez voir les étiquettes et les UUID définis pour différents lecteurs à l'aide de la
blkid
commande.Exemple
la source
blkid
semble ne lister que les partitions et non les périphériques, ce qui n'est pas ce qui intéresse le PO./dev/disk/by-id
et vous pouvez le faireudev
-style comme indiqué dans cette réponse .Je suppose que votre objectif principal est d'identifier sans ambiguïté un disque physique. Malheureusement, je ne crois pas qu'il existe un moyen standard d'étiqueter un disque de la même manière que vous pouvez étiqueter un système de fichiers.
Une façon consiste à utiliser le modèle et le numéro de série du disque. Sous Linux, vous pouvez récupérer ces identifiants avec
hdparm -i /dev/sdX
. La bonne chose à propos du numéro de série est qu'il pourrait déjà être imprimé sur l'autocollant du fabricant. (Je suppose que vous vous souciez principalement de Linux depuis que vous l'avez mentionnée2label
dans votre question. Si oui, veuillez modifier votre question et ajouter la balise linux .)Si vous utilisez un contrôleur RAID matériel, cela
hdparm
peut ne pas fonctionner pour vous, auquel cas vous devrez plutôt consulter les outils de ligne de commande de votre contrôleur RAID.Si vous voulez l'identifier par quelque chose dans le contenu du disque, vous pouvez utiliser le GUID du disque, qui est stocké dans l'en-tête de la table de partition GPT ( octets 56-71 de LBA 1 ). C'est une chaîne aléatoire arbitraire plutôt qu'une étiquette de votre choix, mais c'est comme une étiquette en ce sens qu'elle est persistante jusqu'à ce que vous décidiez d'encombrer la table de partition. Sous Linux, vous pouvez voir le GUID du disque à l'aide
gdisk -l /dev/sdX
.la source
Sur la base des réponses que j'ai obtenues (merci les gars!), Il semble qu'il n'y ait aucun moyen d'étiqueter les disques mais uniquement les partitions. La réponse est donc probablement "NON".
Je vais suivre les suggestions proposées par @cas et @ 200_success: je vais coller les numéros de série des disques avec un autocollant sur les portes de la baie.
Créer une petite partition sur chaque disque juste pour pouvoir étiqueter cette partition (comme suggéré par @Stephane Chazelas) est également une option, mais je pense que ce serait trop déroutant pour quelqu'un d'autre qui pourrait avoir à maintenir le système plus tard .
la source
Créez une
udev
règle en utilisant le WWN unique garanti du disque (s'il en a un), sinon en utilisant les ID de fournisseur et de série combinés:Obtenez les valeurs requises:
Massez ces valeurs
udev
rules
en:udevadm trigger
Pour nommer automatiquement le lien symbolique à l'aide des valeurs données par
udevadm info -q all /dev/<YOUR-DEVICE>
, vous pouvez utiliser:Il est également possible de créer des
ENV
variables à partir deATTRS
valeurs pour éventuellement obtenir un ID unique plus court.la source
Si vous
ls /dev/disk-by-path/pci*
...Vous verrez certainement un chemin PCI pour chaque baie de lecteur. Il vous suffit d'utiliser 1 disque connu pour vous assurer d'obtenir les bonnes étiquettes.
Utilisez
blkid /dev/disk-by-path/pci*
pour voir quelles partitions de disque se trouvent sur le chemin PCI.Vous pouvez également monter en utilisant ce chemin.
la source
J'aime la solution @cas, mais voici mon 2 ¢
la source
Le disque est déjà étiqueté comme
sda
,sdb
,sdc
... Les partitions sont ensuite marquées par exemple sursda
:sda1
,sda2
...Vous pouvez répertorier toutes les étiquettes des disques et des partitions avec
ls /dev/sd*
la source