Outils pour utilisateurs

Outils du site


expert:identifier_les_partitions_par_uuid

Utilisation de "l'identifiant unique universel" (UUID)

Sur beaucoup de distributions l'UUID, pour “Universally Unique Identifier”, a remplacé la notation traditionnelle /dev/hd ou /dev/sd dans les fichiers de configuration. Ce changement induit par la généralisation de udev et de l'adressage dynamique des périphériques, a encore été accentué lors de la réunion des pilotes (p)ata et sata au sein de la “libata”, à partir du noyau 2.6.19. Ce changement de pilote a conduit tous les périphériques à adopter la nomenclature /dev/sdxy, y compris les disques (p)ata auparavant identifié par /dev/hdxy.

Un signe $ précède les commandes qui ne nécessitent pas des droits administrateurs, un signe # celles qui nécessitent des droits administrateurs. Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.

L'avantage principal de l'UUID est de procurer un mode d'identification unique d'une partition au sein du système. L'UUID est généré lors de l'installation, ou lors de la création d'une partition, et peut-être lu dans /dev/disk/by-uuid.

$ ls -l /dev/disk/by-uuid

Il y a également d'autres moyens d'obtenir l'uuid d'une partition, par exemple:

# vol_id /dev/sda1
# blkid /dev/sda1
# hwinfo --partition | grep /dev/sda1

La dernière commande nécessite l'installation du programme “hwinfo”.

Utilisation dans le fstab et le menu grub

Les deux fichiers de configuration où les UUID seront utiles sont le fichier listant les partitions à monter, soit /etc/fstab, et le menu grub.
Un exemple de transformation de “fstab” depuis la notation /dev/sdxy en UUID:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

#Système de fichier racine:
/dev/md0        /       ext3    errors=remount-ro,relatime      0       1

#Partition "/home":
/dev/md1        /home   ext3    defaults,relatime       0       2

#Swap
/dev/sdc3       none    swap    sw      0       0

#Lecteur/graveur dvd:
/dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0

sysfs   /sys    sysfs   defaults        0       0
proc    /proc   proc    defaults        0       0
none    /sys/bus/usb/drivers    usbfs   devgid=124,devmode=664  0       0

Devient:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

#Système de fichier racine:
UUID=e7b87294-e962-4804-80d6-51dfc639c021        /       ext3    errors=remount-ro,relatime      0       1

#Partition "/home":
UUID=6ee11d47-549b-41ac-b4de-789567b56398        /home   ext3    defaults,relatime       0       2

#Swap
UUID=f255c273-a009-4d0b-9a90-bbc40d647a83       none    swap    sw      0       0

#Lecteur/graveur dvd:
/dev/scd0       /media/cdrom0   udf,iso9660     user,noauto     0       0

sysfs   /sys    sysfs   defaults        0       0
proc    /proc   proc    defaults        0       0
none    /sys/bus/usb/drivers    usbfs   devgid=124,devmode=664  0       0

Vous constatez que les volumes raid (/dev/md*) peuvent utiliser les UUID, de même que les espaces d'échange “swap”, mais pas les lecteurs cd/dvd qui ne sont pas des périphériques “bloc”. Vous trouverez parfois la notation longue “UUID=/dev/disk/by-uuid/f255c273-a009-4d0b-9a90-bbc40d647a83”, d'après mon expérience ça n'apporte rien de particulier, sinon une plus grande difficulté de lecture.

Un exemple d'entrée de fichier grub /boot/grub/menu.lst:

title		Debian GNU/Linux, kernel 2.6.29.1-c2duo64
root		(hd0,0)
kernel		/boot/vmlinuz-2.6.29.1-c2duo64 root=/dev/sda1 ro quiet 
initrd		/boot/initrd.img-2.6.29.1-c2duo64

Devient:

title		Debian GNU/Linux, kernel 2.6.29.1-c2duo64
root		(hd0,0)
kernel		/boot/vmlinuz-2.6.29.1-c2duo64 root=UUID=e7b87294-e962-4804-80d6-51dfc639c021 ro quiet 
initrd		/boot/initrd.img-2.6.29.1-c2duo64

Un exemple d'utilisation avec le /boot/grub/grub.cfg de grub2:

menuentry "Debian GNU/Linux, linux 2.6.29.1-vanilla64" {
        insmod raid mdraid
        set root=(md0)
        linux   /boot/vmlinuz-2.6.29.1-vanilla64 root=/dev/md0 ro
        initrd  /boot/initrd.img-2.6.29.1-vanilla64
}

Devient:

menuentry "Debian GNU/Linux, linux 2.6.29.1-vanilla64" {
        insmod raid mdraid
        set root=(md0)
        search --fs-uuid --set e7b87294-e962-4804-80d6-51dfc639c021
        linux   /boot/vmlinuz-2.6.29.1-vanilla64 root=UUID=e7b87294-e962-4804-80d6-51dfc639c021 ro
        initrd  /boot/initrd.img-2.6.29.1-vanilla64
}

Grub2 possède deux façons d'utiliser les UUID, classiquement via la directive “root=” , et via la commande de recherche “search”. L'utilisation des UUID peut-être gérée globalement dans le fichier /etc/default/grub via la variable : “GRUB_DISABLE_LINUX_UUID=” qui peut prendre la valeur “true” ou “false”.
(voir les liens au sujet de grub2)

Cas particulier: la partition de "mise en veille"

Lors de l'utilisation de la mise en veille sur disque, l'initrd (pseudo-noyau de démarrage initial, ou “Initial Ram Disk”) doit savoir où chercher une éventuelle image de mise en veille afin de la restaurer. Cette image de mise en veille aura été créée sur une partition de swap (espace d'échange) dont l'emplacement est normalement spécifié dans le fichier /etc/fstab. Pour inclure la localisation de cet espace d'échange dans l'initrd la plupart des programmes utilisent le fichier “/etc/initramfs-tools/conf.d/resume” (Debian, Ubuntu et dérivés, à vérifier sur votre distribution).

Vous pouvez donc utiliser dans ce fichier également une identification par UUID.

Précautions, problèmes et désavantages liés aux UUID

Les UUID sont considérés comme “unique” de part la très faible probabilité de voir la même suite alphanumérique être générée sur un même système pour plusieurs partitions.

Cependant si vous faites des images de partitions/disque comme moyen de sauvegarde, par exemple avec “partimage”, “dd”, ou des logiciels utilisant ce type de programmes (“Clonezilla”, “Gparted”…), vous risquer de vous retrouver avec des partitions “clones” portant les mêmes UUID que l'original. Si les images sont stockées sur des disques internes, en particulier “sata” où la notion de priorité “maître/esclave” des disques (p)ata n'existe plus, vous ne pouvez pas maîtriser quelle partition sera utilisée par Grub, ou montée comme système de fichier racine.
Cela peut conduire à des situations très difficile à diagnostiquer, pouvant entraîner des pertes de données si une partition “de sauvegarde” est en faite utilisée par le système, mais que vous l'écrasez lors d'une sauvegarde future…

Pour parer à ce problème vous pouvez changer l'UUID d'une partition clonée. Pour générer un UUID vous pouvez utiliser:

$ uuidgen -t

La commande “uuidgen” génère un identifiant UUID, soit basé sur un générateur de nombres aléatoires (/dev/urandom par exemple) avec l'option “-r”, ou sur une combinaison de l'horloge système et de l'identifiant matériel de la carte ethernet du système (si disponible) avec l'option “-t”.

Cet UUID peut ensuite être appliqué à une partition avec:

# tune2fs -U e7b87294-e962-4804-80d6-51dfc639c021 /dev/sdb1

La commande ci-dessus attribue à la partition /dev/sdb1 l'UUID e7b87294-e962-4804-80d6-51dfc639c021 précédemment créée avec “uuidgen”.
On peut coupler les deux commandes avec :

# tune2fs /dev/sdb1 -U $(uuidgen -t)

ou plus simplement encore :

# tune2fs -U time /dev/sdb1

L'option “-U time” génère un UUID à partir de l'heure et de l'adresse MAC de la carte réseau (si présente), sinon l'option “-U random” génère un UUID aléatoirement à partir du générateur de nombres aléatoires /dev/random ou /dev/urandom.

La partition cible peut être montée ou non, il peut s'agir d'une partition “classique” ou d'un groupe raid. Le changement ne sera effectif qu'après démontage de la partition et redémarrage du démon “udevd” (/etc/init.d/udev restart, attention peut planter votre système), ou redémarrage du système.

Après changement de l'UUID, pensez à modifier le fstab et le menu grub de la partition “clone” affectée par le changement.

Autre situation où un changement d'UUID est souhaitable, c'est la restauration d'un système par copie des fichiers (“rsync”, “cp” …) depuis une sauvegarde sur une nouvelle partition. Dans ce cas plutôt que d'adapter le fstab et le menu grub, il est plus rapide de modifier l'UUID de la nouvelle partition.

En dehors des situations évoquées l'UUID ne présente pas vraiment de problème, son écriture est longue et abstraite, rendant la mémorisation difficile et augmentant le risque de faute de frappe en cas de modification manuelle d'un fichier. Pour palier à cet inconvénient tout en conservant la majorité des avantages de l'UUID il est possible D'utiliser un “label” de partition. Voir le lien à ce sujet.

Liens

expert/identifier_les_partitions_par_uuid.txt · Dernière modification: 2014/05/09 18:56 (modification externe)