Por que o fstab usa o UUID em vez do nome real do sistema de arquivos?

20

Por exemplo, esta é a primeira linha do meu /etc/fstab :

UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a    /    ext4    errors=remount-ro    0    1

E aqui está a saída do comando df -h (reportando espaço livre em disco):

honey@bunny:~$ df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda       ext4      30832636 4884200  24359188  17% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498172      12    498160   1% /dev
tmpfs          tmpfs       101796     320    101476   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508972       0    508972   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
  1. A partir dos dois, não há problema em deduzir que UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a representa /dev/vda , dado que a primeira coluna em fstab é <file system> ?

  2. Então, tudo bem se eu modificasse o /etc/fstab para isso?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. EDIT: Se sim (acima da pergunta), por que o comando sudo blkid mostra um UUID diferente para /dev/vda ?

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    O que estou perdendo aqui?

    Resposta: Eu concluiria (3) ser um bug na nuvem do meu host. Portanto, sim, o UUID relatado por blkid (ou ls -l /dev/disk/by-uuid ) deve ser o mesmo usado em /etc/fstab .

por its_me 18.06.2014 / 17:54

3 respostas

19

A vantagem de usar o UUID é que ele é independente do número real do dispositivo que o sistema operacional fornece ao seu disco rígido. Imagem que você adiciona outro disco rígido ao sistema e, por algum motivo, o sistema operacional decide que seu disco antigo agora é sdb em vez de sba . Seu processo de inicialização estaria estragado se o fstab apontasse para o nome do dispositivo. No entanto, no caso dos UUIDs, tudo bem.

Informações mais detalhadas sobre UUIDs também podem ser encontradas na postagem do blog

    
por 18.06.2014 / 18:12
3

In that case, can I modify /etc/fstab to this?

Você pode e provavelmente estará bem, mas provavelmente seria melhor deixar o UUID.

UUIDs são strings arbitrárias usadas para identificar, neste caso, uma partição em um dispositivo de bloco; é armazenado com a própria partição, e pode ser atribuído um diferente, se desejado (como endereços MAC).

A vantagem de usar o UUID é que ele é inconfundível, enquanto /dev/vda não é; poderia acontecer que acabe sendo uma unidade diferente no momento da inicialização, embora isso possa ser totalmente teórico no contexto (por exemplo, porque você tem apenas uma unidade de um tipo específico).

Outro exemplo mais sutil de onde usar o nome do dispositivo pode causar um problema seria a recente mudança em alguns sistemas para o uso de dispositivo de rede consistente nomes . Se isso ocorresse como uma atualização e você usasse um nome de dispositivo codificado em um script de rede em algum lugar, ele seria interrompido. Um exemplo paralelo de dispositivos de bloco WRT pode ser um upgrade de kernel ou udev que altera o esquema de nomenclatura.

Um ponto dos UUIDs é tornar esse tipo de coisa possível e indolor. Então, enquanto você pode usar o nome do dispositivo, não há vantagem em fazê-lo a menos que (por exemplo) você tenha um sistema onde você troca diferentes drives. Em outras palavras, se você não tem uma boa razão para fazer isso, fique com o UUID .

    
por 18.06.2014 / 18:09
2

Você pode fazer man fstab para uma leitura bastante concisa do conteúdo e da semântica do arquivo /etc/fstab . No meu x86, servidor Arch linux razoavelmente atualizado, man fstab me dá isto:

The second field ... describes  the mount point for the filesystem.

Então, sim, /dev/vda aparentemente é um dos muitos nomes para alguns dispositivos, como é o UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a , dado que ambos os nomes parecem estar em "/".

Se você procurar no diretório /dev/disk/by-uuid/ , poderá ver links simbólicos que apontam para coisas como /dev/sda1 , /dev/sdb1 no meu servidor. Esta pode ser uma outra maneira de verificar sua hipótese. /dev/disk tem subdiretórios by-id , by-path , by-uuid , que parecem ser nomes alternativos para o mesmo dispositivo.

    
por 18.06.2014 / 18:03