Entendendo o UUID, o rótulo de partições e o fstab

A nomeação persistente de dispositivos tornou-se possível com a introdução do ‘udev’ e possui algumas vantagens sobre o método anterior, baseado no ‘bus’.

Enquanto as distribuições Linux e o udev evoluem e a detecção de hardware tem se tornado mais confiável, há um novo número de problemas e mudanças:
1) Se você tiver mais de um controlador de discos SATA/SCSI ou IDE, eles são adicionados em ordem aleatória. Isso pode resultar em nomes como hdX e hdY fazendo rodízio a cada boot. O mesmo vale para sdX e sdY. A nomeação persistente permite que você nunca mais se preocupe com isso.
2) Com a introdução do suporte à nova biblioteca libata pata, todos os seus dispositivos IDE ‘hdX’ tornar-se-ão ‘sdX’ num futuro próximo. Por causa da nomeação persistente, você nem vai notar.
3) Máquinas com controladores tanto IDE quanto SATA são bastante comuns hoje em dia. Com as mudanças na libata mencionadas acima, o primeiro problema irá tornar-se ainda mais comum, porque tanto os HDs de um como do outro serão chamados de sdX.

O padrão do Ubuntu, ao ser instalado, é usar UUID na fstab

Há outros motivos, mas esses são os principais hoje e no futuro próximo. Por isso, o Ubuntu encoraja-o a usar a persistência em suas configurações.
Os quatro diferentes esquemas de nomeação persistente:
1. Pelo UUID

UUID significa Universally Unique Identifier (Identificador Único Universal) e é um mecanismo para dar a cada sistema de arquivos um identificador único. Ele foi planejado para que colisões sejam improváveis. Todos os sistemas de arquivos Linux, inclusive a swap, aceitam UUID. Já NTFS e FAT não aceitam; porém, ainda assim, elas são listadas na fstab no formato UUID, ou seja “by-uuid”, com um identificador único, caracteristicamente com menos caracteres:

$ ls -lF /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Oct 16 10:27 2d781b26-0285-421a-b9d0-d4a0d3b55680 -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 31f8eb0d-612b-4805-835e-0e6d8b8c5591 -> ../../sda7
lrwxrwxrwx 1 root root 10 Oct 16 10:27 3FC2-3DDB -> ../../sda6
lrwxrwxrwx 1 root root 10 Oct 16 10:27 5090093f-e023-4a93-b2b6-8a9568dd23dc -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 912c7844-5430-4eea-b55c-e23f8959a8ee -> ../../sda5
lrwxrwxrwx 1 root root 10 Oct 16 10:27 B0DC1977DC193954 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 bae98338-ec29-4beb-aacf-107e44599b2e -> ../../sdb2

Como se pode ver, as partições FAT e NTFS possuem nomes menores (sda6 e sdb1), mas ainda assim são listadas pelo uuid.
2. Pelo rótulo (LABEL)

Praticamente todo tipo de sistema de arquivos pode ter um rótulo. Todas as suas partições que possuem um são listadas no diretório /dev/disk/by-label directory:

$ ls -lF /dev/disk/by-label
total 0
lrwxrwxrwx 1 root root 10 Oct 16 10:27 data -> ../../sdb2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 data2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 16 10:27 fat -> ../../sda6
lrwxrwxrwx 1 root root 10 Oct 16 10:27 home -> ../../sda7
lrwxrwxrwx 1 root root 10 Oct 16 10:27 root -> ../../sda1
lrwxrwxrwx 1 root root 10 Oct 16 10:27 swap -> ../../sda5
lrwxrwxrwx 1 root root 10 Oct 16 10:27 windows -> ../../sdb1

Ainda que os rótulos sejam formados por nomes reconhecíveis, você precisa ser bastante cauteloso para impedir colisões.

Os rótulos podem ser mudados usando-se estes comandos:

* swap: Crie uma nova partição swap com: mkswap -L  /dev/XXX
* ext2/ext3: e2label /dev/XXX
* reiserfs: reiserfstune -l /dev/XXX
* jfs: jfs_tune -L /dev/XXX
* xfs: xfs_admin -L /dev/XXX
* fat/vfat: Ainda não há aplicativo que faça isso no Linux...
mas quando criar o sistema de arquivos, use mkdosfs -n .
Você também pode mudar o rótulo no Windows.
* ntfs: ntfslabel /dev/XXX ou mude pelo Windows.

Tenha cuidado: para que isso funcione corretamente, os rótulos têm de ser únicos! Isso vale ao mesmo tempo para dispositivos USB/firewire, como pendrives, e para discos rígidos. A sintaxe LABEL=/ UUID= é preferível sobre /dev/disk/by-*/ para partições UN*X.
3. Pelo id

‘by-id’ cria um nome único baseado no número serial do hardware.
4. Pelo path

‘by-path’ cria um nome único baseado na rota física mais curta (de acordo com o sysfs). Tanto “by-id” quanto “by-path” contêm strings que indicam a qual subsistema eles pertencem e assim não estão habilitados para resolver os problemas mencionados no início deste tópico. Não trataremos mais deles aqui.

Como ativar a nomeação persistente:
Tendo escolhido o método de nomeação que você deseja usar, vamos agora ativar a persistência em seu sistema:
Na fstab

Habilitar persistência no arquivo /etc/fstab é fácil; simplesmente substitua o nome do dispositivo na primeira coluna pelo nome persistente. No exemplo abaixo, vamos substituir /dev/sda7 por um dos seguintes:

/dev/disk/by-label/home ou
/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591

Faça deste mesmo jeito para todas as partições em sua fstab.

Ao invés de citar o dispositivo explicitamente, pode-se indicar o sistema de arquivos a ser montado por UUID ou pelo seu rótulo do volume, escrevendo LABEL= ou UUID=. Por exemplo:

LABEL=Boot

ou

UUID=3e6be9de-8139-11d1-9106-a43f08d823a6

Persistência no Gerenciador de Boot

Para usar nomes persistentes no gerenciador de boot, são necessários todos estes pré-requisitos:
1) estar utilizando uma imagem mkinitcpio initramfs
2) ter udev ativado em /etc/mkinitcpio.conf
3) quando a imagem initramfs é gerada, a versão 101-3 ou superior da klibc-udev é instalada (persistência em quaisquer das versões anteriores não funciona). Se você estiver atualizando a klibc-udev a partir de uma versão anterior e quiser usar nomeação persistente, gere novamente a imagem do initramfs antes de reinicializar seu computador.

No exemplo acima, /dev/sda1 é a partição root. No arquivo /boot/grub/menu.lst, a linha referente ao kernel é parecida com esta:

kernel /boot/vmlinuz26 root=/dev/sda1 vga=0x318 ro

Dependendo do esquema de nomeação que você preferir, mude-a para uma das seguintes:

kernel /boot/vmlinuz26 root=/dev/disk/by-label/root vga=0x318 ro

ou

kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/2d781b26-0285-421a-b9d0-d4a0d3b55680 vga=0x318 ro

Há uma maneira alternativa de usar o rótulo incorporado ao sistema de arquivos. Por exemplo, se o sistema de arquivos em /dev/sda1 for rotulado “root”, a linha no arquivo ‘menu.lst’ fica assim:

kernel /boot/vmlinuz26 root=LABEL=root vga=0x318 ro

Este texto foi escrito no intuito de ajudar ou leve aprendizado a alguém. Sugestões, dicas e críticas são bem-vindas. Sucesso a todos.

Greyson escreveu 102 artigos

Tecnólogo em Análise e desenvolvimento de sistemas, gosta muito de telecom, redes de computadores, jogos, entusiasta de tecnologias livres, mais precisamente do GNU/Linux.

Deixe um comentário

Seu endereço de email não será publicado. Os campos com * são obrigatórios

Você pode usar estes tags e atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>