Em /dev/disk/by-uuid
, há links simbólicos mapeando o UUID de cada unidade para sua entrada em /dev
(por exemplo, /dev/sda1
)
Meu /etc/fstab
contém isso:
# / was on /dev/sda1 during installation
UUID=77d8da74-a690-481a-86d5-9beab5a8e842 / ext4 errors=remount-ro 0 1
Existem vários outros discos neste sistema, e nem todos os discos estão sendo montados no local correto (por exemplo, / dev / sda1 e / dev / sdb1 às vezes são invertidos).
Como posso ver os UUIDs de todos os discos no meu sistema? Posso ver o UUID do terceiro disco neste sistema?
Existe uma ferramenta chamada blkid
(use como root ou com sudo
),
# blkid /dev/sda1
/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3"
você pode verificar este link para mais informações
O melhor comando para usar é %código%. Ele listará todos os dispositivos e partições, como eles são montados (se for o caso) e a estrutura em árvore dos dispositivos no caso de usar LVM, crypto_LUKS ou vários grupos de volumes na mesma unidade.
Isso funciona para mim:
ls -la /dev/disk/by-uuid
Se você quiser verificar o tipo de partição, use:
df -Th
e ele mostrará se você possui ext3 ou ext2. Hoje ele me ajudou porque havia uma partição ext2 formatada e eu pensei que era ext3, o que estava causando falha na montagem.
Para obter apenas o UUID
de um dispositivo de disco específico (por exemplo, para ser usado em um script), você pode usar:
sudo blkid -s UUID -o value /dev/sdXY
em que /dev/sdXY
é o nome do dispositivo.
lsblk -o +uuid,name
Você pode ver todas as saídas que podem ser adicionadas ao -o
( --output
) com
lsblk --help
Isso também fará o trabalho
# blkid
As respostas anteriores não funcionam para vários dispositivos ou para dispositivos com UUIDs idênticos.
Tente isto:
sudo blkid /dev/sd*
Com a seguinte linha de comando você pode ver o UUID mais o mapeamento para partições.
ls /dev/disk/by-uuid -lt
lrwxrwxrwx 1 root root 10 Sep 1 18:51 57eacf4e-1940-436e-b945-85f8d4833aa5 -> ../../sda2
lrwxrwxrwx 1 root root 10 Sep 1 18:51 656f4cae-8527-43a0-a80f-00ac82818744 -> ../../sda1
lrwxrwxrwx 1 root root 9 Sep 1 18:51 d627595d-4060-440e-8380-a1fe9f3f2a81 -> ../../md0
lrwxrwxrwx 1 root root 10 Sep 1 18:51 0dfd6dfe-1852-460d-852c-676a5b9035ed -> ../../sda4
lrwxrwxrwx 1 root root 10 Sep 1 18:51 b1ddf850-8f81-429f-a653-38ae4a4ebb6f -> ../../sda3
lrwxrwxrwx 1 root root 9 Sep 1 18:51 b4b729f7-5699-411c-8f5a-424bbc7c89fc -> ../../sdb
Eu tenho o mesmo problema que você:
renomeando pelo kernel de /dev/sd**
após uma reinicialização:
É claro que toda a minha montagem automática em /etc/fstab
é referenciada por LABEL ou UUID, então basicamente não há problema para isso.
E todos os comandos acima, blkid ou lsblk, fornecem esse tipo de informação.
Mas o problema começa como no meu caso, quando você está usando a partição no modo RAW, no ponto de vista do sistema atualmente inicializado:
por exemplo:
a partição é usada como dispositivo bruto, para criar um disco virtual para o VirtualBox
(então a referência a esta partição é algo como: /dev/sdf3
)
ou
a partição é usada como dispositivo bruto, para criar um LUN para iSCSI
(então a referência a esta partição é algo como: /dev/sdc6
)
Portanto, agora na inicialização, por exemplo, em rc.local, você precisa encontrar de maneira confiável, o que é o dispositivo /dev/sdXX
de sua partição RAW dedicada e adaptar algum arquivo:
EXEMPLO 1
A descrição do disco virtual * .vmk deste disco bruto, na parte algo como:
\# Extent description
RW 488397167 FLAT "/dev/sdXX" 0
e reinicie o serviço VirtualBox
EXEMPLO 2
na configuração do tgtd, um target: target0 foi associado a /dev/sdd6
no tempo de compilação.
Após a reinicialização, você recebe a mesma partição renomeada /deb/sdc6
Isso acontece com um disco removível, USB ou eSATA!
Então, como encontrar o novo dispositivo automaticamente?
Novamente em /etc/rc.d/rc.local
Portanto, neste caso, precisamos de uma maneira confiável para descobrir qual é o novo nome do dispositivo. A partição GPT oferece GUID exclusivo para qualquer partição GPT, escrita na tabela GPT.
O gdisk não fornece esta informação com o modo de listagem, mas somente no modo interativo com: i comando. Felizmente, blkid faz isso!
Então você precisa escrever um script de shell, para procurar em todos os seus discos, que é o dispositivo /dev/sdXX
, associado ao GUID notado no momento da criação da partição.
Algo como, search_device_by_partUUID.sh:
\#!/bin/bash
PART_UUID=$1
if [ "$PART_UUID" = "" ]
then
echo "Syntax: $0 <a valid partition UUID>"
exit 3
fi
lsblk | grep '^sd' | awk '{print $1}' | while read DISK_DEVICE
do
INFO='blkid /dev/${DISK_DEVICE}* | grep "PARTUUID=\"$PART_UUID\"" '
if [ "$INFO" != "" ]
then
echo INFO : "$INFO"
BLK_DEVICE='echo "$INFO" | awk '{print $1}''
echo $BLK_DEVICE > /dev/shm/blkdevice
echo -n "BLK_DEVICE : " ; cat /dev/shm/blkdevice
fi
done
e, em seguida, use /dev/shm/blkdevice
em seu script rc.local.
Para ver o uuid de uma partição do disco rígido Acabei de inicializar o sistema com um CD do Linux e ir para a montagem do meu computador, clique na partição que quero ver. O número uuid da partição Linux será exibido.
Você também pode ver o disco uuid executando o utilitário Linux Disk após a inicialização do CD do Linux.