Contents
Visão geral: UUIDs, rótulos e fstab
A nomeação persistente de dispositivos de blocos foi possível graças à introdução do udev e tem algumas vantagens sobre o uso de nomes tradicionais baseados em barramento (bus), como /dev/hda1 ou /dev/sda2.
Embora as distribuições GNU/Linux e o udev estejam evoluindo e a detecção de hardware esteja se tornando mais confiável, também há uma série de novos problemas e mudanças:
Se você tiver mais de um controlador de disco (IDE ou especialmente SCSI/SATA), ou mesmo se você tiver quantidades variáveis de dispositivos de armazenamento USB/firewire removíveis que são conectados com frequência, a ordem em que são detectados pode não ser determinística. O resultado é que nomes de dispositivos como /dev/sda1 e /dev/sdb1 podem alternar aleatoriamente em cada boot. A nomeação persistente permite que você não se preocupe com isso.
Para máquinas com controladores IDE (incluindo, por exemplo, máquinas com discos rígidos SATA e apenas uma unidade de CDROM IDE), a troca para um núcleo Squeeze padrão pode causar problemas: com a introdução do novo suporte a libata PATA, seus dispositivos IDE hdX se tornarão dispositivos sdX. Novamente, se você tiver uma nomenclatura persistente, nem vai notar (o postinst para o pacote linux-base inclui código para ajudar na mudança, mas faz sentido verificá-la antecedência).
Máquinas grandes, com muitas CPUs rápidas e muitos adaptadores de barramento de host de canal de fibra, switches FC de carga/latência variáveis, controladores SCSI e/ou placas de rede de alto desempenho, podem ter problemas de temporização assíncronos ao lidar com udev e E/S multipath, com ordem de detecção de dispositivo quase imprevisível e atribuição automática de nomes durante a inicialização.
Há mais razões, mas estas são as mais críticas agora e no futuro próximo. É por isso que o Debian encoraja você a mudar sua configuração para esquemas de nomenclatura persistentes, a menos que você esteja usando LVM. Os volumes lógicos LVM devem sempre ser identificados pelo nome do volume lógico (/dev/mapper/nome-do-volume).
Quadro esquemas diferentes para nomeação persistente
Via UUIDs
UUID significa Identificador Único Universal (Universally Unique Identifier) e é um mecanismo para dar a cada sistema de arquivos um identificador único. Todos os sistemas de arquivos Linux suportam UUIDs de sistema de arquivos; sistemas de arquivos FAT e NTFS não suportam UUIDs verdadeiros, mas ainda estão listados em /dev/disk/by-uuid com um identificador exclusivo:
$ ls -l /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 você pode ver, os sistemas de arquivos FAT e NTFS têm nomes mais curtos (sda6 e sdb1), mas ainda estão listados por UUID. O motivo das strings base-62 de 32 dígitos é tornar as colisões astronomicamente improváveis; se acontecesse de sda1 e sda2 tivessem o mesmo UUID, o sistema não conseguiria inicializar.
Contudo, instantâneos (snapshots) LVM resultarão em UUIDs duplicados.
Via rótulos
Quase todos os tipos de sistema de arquivos podem ter rótulos (labels). Todos aqueles que têm um rótulo estão listados no diretório /dev/disk/by-label:
$ ls -l /dev/disk/by-label 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
Embora palavras reconhecíveis possam ser usadas como rótulos, você precisa ter cautela para evitar colisões de nomes; considere a possibilidade de que possa ter unidades aleatórias USB/firewire conectadas na reinicialização. Instantâneos LVM também resultarão em rótulos duplicados.
Você pode alterar os rótulos de seus sistemas de arquivos usando esses comandos:
Tipo |
Comando |
Notas |
EXT3: |
e2label /dev/XXX <label> |
também se aplica a EXT2/EXT4 |
FAT/VFAT: |
dosfslabel /dev/XXX <label> |
bug #506786 no Lenny; ou mlabel em mtools |
JFS: |
jfs_tune -L <label> /dev/XXX |
|
NTFS: |
ntfslabel /dev/XXX <label> |
ou modifique no Windows |
ReiserFS: |
reiserfstune -l <label> /dev/XXX |
|
swap: |
mkswap -L <label> /dev/XXX |
veja abaixo o procedimento swapoff/swapon |
XFS: |
xfs_admin -L <label> /dev/XXX |
|
Via IDs de hardware
by-id cria um nome único dependendo do número de série do hardware. Estes são destinados a ser imutáveis para uma determinada configuração de hardware.
# ls -l /dev/disk/by-id/ total 0 lrwxrwxrwx 1 root root 10 2010-10-20 13:52 dm-name-grupo1-lvstripe1 -> ../../dm-8 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath0 -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath1 -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath2 -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath3 -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath4 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath5 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath6 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-name-mpath7 -> ../../dm-7 lrwxrwxrwx 1 root root 10 2010-10-20 13:52 dm-uuid-LVM-OaDwNcuwdzuuZYAcrbeKNdYsE237BKX2YIEdUN5CsSgeU7WNn5dhtiQPBP9uHU25 -> ../../dm-8 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000c -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000d -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000e -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c000000000000000f -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000112 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000113 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000114 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 dm-uuid-mpath-36005076308ffc36c0000000000000115 -> ../../dm-7 lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c -> ../../sda lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-360026b9038e49f001270c8b707980d5c-part3 -> ../../sda3 lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000c -> ../../sdr lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000d -> ../../sdc lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000e -> ../../sdab lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c000000000000000f -> ../../sdu lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000112 -> ../../sdn lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000113 -> ../../sdo lrwxrwxrwx 1 root root 9 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000114 -> ../../sdp lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-36005076308ffc36c0000000000000115 -> ../../sdag lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath0 -> ../../dm-0 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath1 -> ../../dm-1 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath2 -> ../../dm-2 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath3 -> ../../dm-3 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath4 -> ../../dm-4 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath5 -> ../../dm-5 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath6 -> ../../dm-6 lrwxrwxrwx 1 root root 10 2010-10-20 13:51 scsi-mpath7 -> ../../dm-7
Via caminhos sysfs
by-path cria um nome único dependendo do caminho físico mais curto (de acordo com sysfs). Ambos contêm strings para indicar a que subsistema pertencem e, portanto, não são adequados para resolver os problemas mencionados no início deste artigo. Não serão discutidos mais aqui.
Preparando para nomeação persistente
Você pode obter uma visão geral básica de quais dispositivos estão associados a quais nomes persistentes simplesmente invocando
$ ls -lR /dev/disk
mas também há o útil comando blkid (que está em /sbin, mas não requer privilégios de root). Fornece vários tipos de saída úteis, a mais simples:
$ /sbin/blkid /dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3" /dev/sda2: TYPE="swap" /dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3"
Como você pode ver, a partição de swap aqui não tem um UUID ou rótulo; o instalador do Debian Lenny usou uma versão do partman que não os definiu para partições de swap. No entanto, as partições de swap podem receber nomes persistentes via mkswap.
Atribuindo nomes persistentes para partições swap
Primeiro, certifique-se de ter identificado corretamente a partição de swap (veja /proc/swaps)! Em seguida (como root) desative com segurança o swap atual, reinicie-o (adicionando opcionalmente um rótulo) e reative-o:
# swapoff /dev/sda2 # mkswap -L Swap /dev/sda2 Setting up swapspace version 1, size = 1998737 kB LABEL=Swap, UUID=7cdfeb21-613b-4588-abb5-9d4049854e9a # swapon /dev/sda2
Você pode verificar os resultados como usuário(a) normal:
$ /sbin/blkid
/dev/sda1: LABEL=Root UUID="87f2b245-6ab3-4021-bf07-d069b4d387a1" TYPE="ext3"
/dev/sda2: LABEL=Swap UUID="7cdfeb21-613b-4588-abb5-9d4049854e9a" TYPE="swap"
/dev/sda3: LABEL=Home UUID="a6f7a63f-71ac-4361-b49a-39d62b06f18a" TYPE="ext3"
$ free
total used free shared buffers cached
Mem: 33017956 298700 32719256 0 17060 148668
-/+ buffers/cache: 132972 32884984
Swap: 1951888 0 1951888
Usando nomeação persistente
Depois de escolher qual método de nomeação você quer usar, vamos agora permitir a nomenclatura persistente para o seu sistema:
No fstab
Habilitar a nomenclatura persistente em /etc/fstab é fácil; para cada sistema de arquivos no seu arquivo fstab, basta substituir o nome do dispositivo na primeira coluna (onde diz algo como /dev/sda7) com o novo nome persistente. Isto pode ser conseguido substituindo o caminho apropriado em /dev/disk`, por exemplo:
/dev/disk/by-label/home
ou
/dev/disk/by-uuid/31f8eb0d-612b-4805-835e-0e6d8b8c5591
However, instead of giving an explicit /dev/disk path, the method usually recommended is to indicate how the filesystem is to be mounted by writing No entanto, em vez de dar um caminho explícito /dev/disk, o método geralmente recomendado é indicar como o sistema de arquivos deve ser montado, definindo LABEL=<rótulo> ou UUID=<uuid> - por exemplo:
LABEL=home
ou
UUID=31f8eb0d-612b-4805-835e-0e6d8b8c5591
CategorySystemAdministration | CategoryStorage | CategoryRedundant: combinar com fstab. Talvez com udev? Ao menos parcialmente?
