Utilisation des UUID des sytèmes de fichiers

L’UUID, pour Universal Unique IDentifier, est une séquence sur 128 bits du type « 993f1293-8beb-4342-a2db-c497e667cdef » permettant d’accéder sans ambiguïté à un disque ou à une partition par un identifiant unique.

Les outils permettant de gérer les UUID sous Linux sont principalement « blkid » (« /sbin/blkid ») et « vol_id » (« /sbin/vol_id »).

La liste de tous les UUID des périphériques de bloc d’une machine est retournée par la commande « blkid » :

mafalda ~ # blkid
/dev/sda1: UUID="271e73db-16c3-4f3c-82fd-189b15f68a3b" TYPE="ext3" LABEL="BOOT" SEC_TYPE="ext2"
/dev/sda2: UUID="a30ae101-971b-48e5-ac7b-b5ceac48dfe7" TYPE="ext3"
/dev/sda3: UUID="e2eeb81a-40dd-44f6-8090-7eca749efebe" TYPE="ext3"
/dev/sda5: UUID="089c34ac-46fa-48d0-908d-18b830b0d01e" TYPE="ext3"
/dev/sda6: TYPE="swap" UUID="52eae76e-a5a0-4cb8-b9f0-eeb07d98897f"
/dev/sda7: UUID="4d6b1b15-4546-4fbb-be64-fa5005b46528" SEC_TYPE="ext2" TYPE="ext3"
/dev/dm-0: UUID="993f1293-8beb-4342-a2db-c497e667cdef" TYPE="ext3"
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="3831-6431" TYPE="vfat"
/dev/loop0: UUID="35813f55-71de-463a-858a-0596b40258b1" TYPE="reiserfs"

Pour obtenir l’UUID d’un device en particulier, il suffit de le préciser à l’appel de « blkid », d’utiliser « vol_id » ou « tune2fs » :

mafalda ~ # blkid /dev/sda2
/dev/sda2: UUID="a30ae101-971b-48e5-ac7b-b5ceac48dfe7" TYPE="ext3"
mafalda ~ # vol_id --uuid /dev/sda2
a30ae101-971b-48e5-ac7b-b5ceac48dfe7
mafalda ~ # tune2fs -l /dev/sda2 | grep UUID
Filesystem UUID:          a30ae101-971b-48e5-ac7b-b5ceac48dfe7

Tout comme pour le montage d’un système de fichier en utilisant les labels (voir Utilisation des labels (e2label)) il est possible de monter une partition en utilisant son UUID mais le démontage ce fera en spécifiant le point de montage ou le device à démonter :

mafalda ~ # vol_id --uuid /dev/sda1
271e73db-16c3-4f3c-82fd-189b15f68a3b
mafalda ~ # mount UUID=271e73db-16c3-4f3c-82fd-189b15f68a3b /boot/
mafalda ~ # ls /boot/
boot                                 kernel-genkernel-x86_64-2.6.29.5-vs2.3.0.36.14
grub                                 lost+found
initramfs-2.6.29.5-vs2.3.0.36.14     System.map-genkernel-x86_64-2.6.29.5-vs2.3.0.36.14
kernel-2.6.22.19-vs2.2.0.7.20090719
mafalda ~ # umount UUID=271e73db-16c3-4f3c-82fd-189b15f68a3b
umount: UUID=271e73db-16c3-4f3c-82fd-189b15f68a3b: not found
mafalda ~ # umount /boot
mafalda ~ #

Dans « /etc/fstab », le device est précisé de la même façon que lors de l’utilisation de « mount », ainsi :

/dev/sda1               /boot           ext3            noatime,noauto     1 2

devient :

UUID=271e73db-16c3-4f3c-82fd-189b15f68a3b               /boot           ext3            noatime,noauto     1 2

Il en va de même pour le chargeur de démarrage, pour grub, nous obtiendrons :

kernel /kernel-2.6.22.19-vs2.2.0.7 root=UUID=a30ae101-971b-48e5-ac7b-b5ceac48dfe7 udev vga=0x376 console=tty1

L’identifiant unique d’un système de fichier peut être changé. En effet, bien que la probabilité que 2 systèmes de fichiers disposent du même UUID soit très faible, elle existe. Dans ce cas, il peut être remplacé par « tune2fs » :

mafalda ~ # blkid
/dev/sda1: UUID="271e73db-16c3-4f3c-82fd-189b15f68a3b" TYPE="ext3" LABEL="BOOT" SEC_TYPE="ext2"
/dev/sda2: UUID="a30ae101-971b-48e5-ac7b-b5ceac48dfe7" TYPE="ext3"
...
mafalda ~ # tune2fs -U a30ae101-971b-48e5-ac7b-b5ceac48dfe7 /dev/sda1
tune2fs 1.41.3 (12-Oct-2008)
mafalda ~ # blkid
/dev/sda1: UUID="a30ae101-971b-48e5-ac7b-b5ceac48dfe7" TYPE="ext3" LABEL="BOOT" SEC_TYPE="ext2"
/dev/sda2: UUID="a30ae101-971b-48e5-ac7b-b5ceac48dfe7" TYPE="ext3"
...

Il est possible de remplacer l’UUID courant par un autre aléatoire basé :

  • sur le temps :
mafalda ~ # tune2fs -U time /dev/sda1
tune2fs 1.41.3 (12-Oct-2008)
mafalda ~ # vol_id -u /dev/sda1
90b87bf6-a1fe-11de-a5a8-001708422436
  • sur la source aléatoire du système :
mafalda ~ # tune2fs -U random /dev/sda1
tune2fs 1.41.3 (12-Oct-2008)
mafalda ~ # vol_id -u /dev/sda1
be970ba9-31cd-4477-bd14-3fad1ea7fcdc
  • tout bonnement de supprimer l’UUID :
mafalda ~ # tune2fs -U clear /dev/sda1
tune2fs 1.41.3 (12-Oct-2008)
mafalda ~ # vol_id -u /dev/sda1
mafalda ~ #
  • ou enfin d’en spécifier un :
mafalda ~ # uuidgen
dd2ff2e0-9b64-487c-a6ab-c9b5dc1b18b6
mafalda ~ # tune2fs -U dd2ff2e0-9b64-487c-a6ab-c9b5dc1b18b6 /dev/sda1
mafalda ~ # vol_id -u /dev/sda1
dd2ff2e0-9b64-487c-a6ab-c9b5dc1b18b6

Comme « tune2fs », « uuidgen » génère un UUID aléatoire basé sur les contraintes de temps (options « -t ») ou sur la source aléatoire du système « /dev/random » (options « -r »).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *