
Quando você trabalha com sistemas Linux, é importante entender os diferentes tipos de rótulos que podem ser usados para identificar dispositivos como HD e SSD. Esses dispositivos são conhecidos como dispositivos de bloco. Dentre esses rótulos, temos
- sda, sdb….
- by-uuid
- by-id
- by-path
- by-label
Vamos falar sobre cada um esses tipos de rotulamento ou nomenclatura de dispositivos em sistemas Linux.
Qual a Pasta de Localização para Cada Rótulo?
Dentro de /dev/disk há uma pasta para cada tipo de rótulo,
[root@oraclelinux92 ~]# ls -l /dev/disk/ total 0 drwxr-xr-x 2 root root 100 ago 7 14:03 by-diskseq drwxr-xr-x 2 root root 440 ago 7 14:03 by-id drwxr-xr-x 2 root root 80 ago 7 14:03 by-partuuid drwxr-xr-x 2 root root 240 ago 7 14:03 by-path drwxr-xr-x 2 root root 80 ago 7 14:03 by-uuid
O resultado na distro que você está usando pode variar levemente.
Os diretórios em /dev/disk/ são criados e destruídos dinamicamente, dependendo se há dispositivos neles.
Se executarmos um ls -l dentro de by-uuid veremos que são links para /dev/sdx…
[root@oraclelinux92 ~]# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 ago 7 14:03 16c8ae8a-86cb-4aec-9037-4214edc23847 -> ../../dm-0 lrwxrwxrwx 1 root root 10 ago 7 14:03 224133b2-043e-4f7a-8fb8-6db362279397 -> ../../sda1
veja o mesmo resultado para by-id
[root@oraclelinux92 ~]# ls -l /dev/disk/by-id/ total 0 lrwxrwxrwx 1 root root 9 ago 7 14:03 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0 lrwxrwxrwx 1 root root 9 ago 7 14:03 ata-VBOX_HARDDISK_VB6dcdc7ef-ef73c783 -> ../../sdb lrwxrwxrwx 1 root root 9 ago 7 14:03 ata-VBOX_HARDDISK_VBf628c82b-3adc9aec -> ../../sda lrwxrwxrwx 1 root root 10 ago 7 14:03 ata-VBOX_HARDDISK_VBf628c82b-3adc9aec-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 ago 7 14:03 ata-VBOX_HARDDISK_VBf628c82b-3adc9aec-part2 -> ../../sda2
O comando lsblk pode ser usado para visualizar graficamente os primeiros esquemas persistentes:
[root@oraclelinux92 ~]# lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sda ├─sda1 xfs 224133b2-043e-4f7a-8fb8-6db362279397 696,3M 31% /boot └─sda2 LVM2_member LVM2 001 jQONxu-fXNk-dXeT-9ZNG-YiGa-nbnf-ZHJ8Oc └─ol-root xfs 16c8ae8a-86cb-4aec-9037-4214edc23847 35,9G 8% / sdb sr0
Para aqueles que usam GPT, use o comando blkid. O último é mais conveniente para scripts, mas mais difícil de ler.
[root@oraclelinux92 ~]# blkid /dev/mapper/ol-root: UUID="16c8ae8a-86cb-4aec-9037-4214edc23847" TYPE="xfs" /dev/sda2: UUID="jQONxu-fXNk-dXeT-9ZNG-YiGa-nbnf-ZHJ8Oc" TYPE="LVM2_member" PARTUUID="75c4aa06-02" /dev/sda1: UUID="224133b2-043e-4f7a-8fb8-6db362279397" TYPE="xfs" PARTUUID="75c4aa06-01"
Qual o Significado de Cada Sistema de Rótulo dos Discos?
Existem quatro esquemas diferentes para nomeação persistente: by-label, by-uuid, by-id e by-path. Para aqueles que usam discos com GUID Partition Table (GPT), dois esquemas adicionais podem ser usados por partlabel e por partuuid. Você também pode usar nomes de dispositivos estáticos usando Udev.
Vamos falar um pouco sobre cada um deles.
by-label
Quase todo tipo de sistema de arquivos pode ter um rótulo. Todos os seus volumes que possuem um estão listados no diretório /dev/disk/by-label.
Se você não atribuiu nenhum label para um sistema de arquivos então esse diretório estará vazio
by-uuid
UUID é um mecanismo para dar a cada sistema de arquivos um identificador exclusivo. Esses identificadores são gerados por utilitários do sistema de arquivos (por exemplo, mkfs.*) quando o dispositivo é formatado e são projetados para que as colisões sejam improváveis. Todos os sistemas de arquivos GNU/Linux (incluindo swap e cabeçalhos LUKS de dispositivos criptografados brutos) suportam UUID. Os sistemas de arquivos FAT, exFAT e NTFS não suportam UUID, mas ainda estão listados em /dev/disk/by-uuid/ com um UID mais curto (identificador exclusivo)
[root@oraclelinux92 ~]# ls -l /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 ago 7 14:03 16c8ae8a-86cb-4aec-9037-4214edc23847 -> ../../dm-0 lrwxrwxrwx 1 root root 10 ago 7 14:03 224133b2-043e-4f7a-8fb8-6db362279397 -> ../../sda1
Se um disco não foi formatado ele não aparecerá nessa lista.
Podemos executar lsblk -dno UUID /dev/sda1
[root@oraclelinux92 ~]# lsblk -dno UUID /dev/sda1 224133b2-043e-4f7a-8fb8-6db362279397
ou ainda blkid -s UUID -o value /dev/sda1
[root@oraclelinux92 ~]# blkid -s UUID -o value /dev/sda1 224133b2-043e-4f7a-8fb8-6db362279397
A vantagem de usar o método UUID é que é muito menos provável que ocorram colisões de nomes do que com rótulos. Além disso, ele é gerado automaticamente na criação do sistema de arquivos. Ele permanecerá, por exemplo, único mesmo se o dispositivo estiver conectado a outro sistema (que talvez tenha um dispositivo com o mesmo rótulo).
A desvantagem é que os UUIDs dificultam a leitura pois deixam longas linhas de código e quebram a formatação em muitos arquivos de configuração (por exemplo, fstab ou crypttab). Além disso, toda vez que um volume é reformatado, um novo UUID é gerado e os arquivos de configuração precisam ser ajustados manualmente.
by-id e by-path
by-id cria um nome exclusivo dependendo do número de série do hardware, by-path dependendo do caminho físico mais curto (de acordo com sysfs). Ambos contêm strings para indicar a qual subsistema eles pertencem (ou seja, pci- para by-path e ata- para by-id), portanto, eles estão vinculados ao hardware que controla o dispositivo. Isso implica em diferentes níveis de persistência: o by-path já mudará quando o dispositivo for conectado a uma porta diferente do controlador, o by-id mudará quando o dispositivo for conectado a uma porta de um controlador de hardware sujeito a outro subsistema. Assim, ambos não são adequados para alcançar nomenclatura persistente tolerante a mudanças de hardware.
No entanto, ambos fornecem informações importantes para encontrar um determinado dispositivo em uma grande infraestrutura de hardware. Por exemplo, se você não atribuir rótulos persistentes manualmente (by-label ou by-partlabel) e manter um diretório com uso de porta de hardware, by-id e by-path podem ser usados para encontrar um dispositivo específico.
by-id também cria links World Wide Name de dispositivos de armazenamento que o suportam. Ao contrário de outros links by-id, os WWNs são totalmente persistentes e não serão alterados dependendo do subsistema usado.
links by-id e by-path só podem ser considerados persistentes para discos, não para partições. As partições serão referenciadas por seu número na tabela de partições e isso pode mudar se as partições forem reordenadas.
Comment on “Linux: Entenda os Rótulos by-uuid, by-id, by-label e by-path”