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

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

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 df -hcomando (relatando 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. Dos dois, é correto deduzir que UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13arepresenta, /dev/vdadado que a primeira coluna fstabé <file system>?

  2. Então, estaria tudo bem se eu modificasse /etc/fstabisso?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. EDITAR:Se sim (para a pergunta acima), por que o sudo blkidcomando 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?

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

Responder1

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.

Imagine que você adiciona outro disco rígido ao sistema e, por algum motivo, o sistema operacional decide que seu disco antigo agora sdbé sda.

Seu processo de inicialização seria complicado se fstabapontasse para o nome do dispositivo. Mas no caso dos UUIDs, tudo bem.

Informações mais detalhadas sobre UUIDs também podem ser encontradas na postagem do blog"UUIDs e Linux: tudo o que você precisa saber"

Responder2

Nesse caso, posso modificar /etc/fstab para isso?

Vocêpodee vaiprovavelmentetudo bem, mas provavelmente seria melhor deixar o UUID.

UUIDssã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 receber uma partição diferente, se desejado (como endereços MAC).

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

Outro exemplo mais sutil de onde o uso do nome do dispositivo pode causar um problema seria a recente mudança em alguns sistemas para usarnomes de dispositivos de rede consistentes. 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 uma atualização 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êpodeusar o nome do dispositivo, não há vantagem em fazer issoa menos que(por exemplo) você tem um sistema onde você troca unidades diferentes. Em outras palavras, se você não tiver um bom motivo para fazer isso,fique com o UUID.

Responder3

Você pode fazer man fstabuma leitura bastante concisa do conteúdo e da semântica do /etc/fstabarquivo. No meu servidor Arch Linux x86 bastante atualizado, man fstabme dá isto:

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

Então, sim, /dev/vdaaparentemente é um dos muitos nomes para algum dispositivo, já UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13aque ambos os nomes parecem montados em "/".

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

informação relacionada