18.7. Rotulando Dispositivos de Disco
Anterior | Capítulo 18. GEOM: Framework de Transformação de Disco Modular | Próxima

## 18.7. Rotulando Dispositivos de Disco

Durante a inicialização do sistema, o kernel do FreeBSD cria nós de dispositivos conforme os dispositivos são encontrados. Esse método de detectar dispositivos gera alguns problemas. Por exemplo, e se um novo dispositivo de disco for adicionado via USB? É provável que um dispositivo flash receba o nome do dispositivo `da0` e o `da0` original alterado para `da1`. Isso causará problemas ao montar sistemas de arquivos se eles estiverem listados no `/etc/fstab`, o que também pode impedir que o sistema seja inicializado.

Uma solução é encadear os dispositivos SCSI para que um novo dispositivo adicionado à placa SCSI receba números de dispositivo não utilizados. Mas e os dispositivos USB que podem substituir o disco principal SCSI? Isso acontece porque os dispositivos USB geralmente são examinados antes da placa SCSI. Uma solução é inserir esses dispositivos apenas após o sistema ter sido inicializado. Outro método é usar apenas uma única unidade ATA e nunca listar os dispositivos SCSI no arquivo `/etc/fstab`.

Uma solução melhor é usar o `glabel` para rotular os dispositivos de disco e usar os rótulos no arquivo `/etc/fstab`. Como o `glabel` armazena o rótulo no último setor de um determinado provedor, o rótulo permanecerá persistente nas reinicializações. Ao usar esse rótulo como um dispositivo, o sistema de arquivos pode sempre ser montado independentemente do nó do dispositivo pelo qual ele é acessado.

### Nota:

O `glabel` pode criar rótulos transitórios e permanentes. Somente rótulos permanentes são consistentes nas reinicializações. Consulte glabel(8) para obter mais informações sobre as diferenças entre os rótulos.

### 18.7.1. Tipos de Rótulos e Exemplos

Os rótulos permanentes podem ser um rótulo genérico ou de um sistema de arquivos. Rótulos de sistema de arquivos permanentes podem ser criados com tunefs(8) ou newfs(8). Esses tipos de rótulos são criados em um subdiretório `/dev` e serão nomeados de acordo com o tipo de sistema de arquivos. Por exemplo, os rótulos do sistema de arquivos UFS2 serão criados em `/dev/ufs`. Rótulos permanentes genéricos podem ser criados com o `glabel label`. Estes não são específicos do sistema de arquivos e serão criados em `/dev/label`.

Os rótulos temporários são destruídos na próxima reinicialização. Esses rótulos são criados em `/dev/label` e são adequados para experimentação. Um rótulo temporário pode ser criado usando `glabel create`.

Para criar um rótulo permanente para um sistema de arquivos UFS2 sem destruir nenhum dado, emita o seguinte comando:

    # tunefs -L home /dev/da3

Um rótulo deve agora existir em `/dev/ufs` que pode ser adicionado ao arquivo `/etc/fstab`:

    /dev/ufs/home		/home            ufs     rw              2      2

### Nota:

O sistema de arquivos não deve ser montado durante a tentativa de executar o `tunefs`.

Agora o sistema de arquivos pode ser montado:

    # mount /home

A partir deste ponto, desde que o módulo do kernel `geom_label.ko` seja carregado na inicialização com o `/boot/loader.conf` ou com a opção do kernel `GEOM_LABEL` estando presente, o nó do dispositivo pode mudar sem qualquer efeito negativo no sistema.

Os sistemas de arquivos também podem ser criados com um rótulo padrão usando a flag `-L` com o comando `newfs`. Consulte newfs(8) para obter maiores informações.

O seguinte comando pode ser usado para destruir o rótulo:

    # glabel destroy home

O exemplo a seguir mostra como rotular as partições de um disco de inicialização.

Exemplo 18.1. Rotulando Partições no Disco de Inicialização

Ao marcar permanentemente as partições no disco de inicialização, o sistema deve poder continuar a inicializar normalmente, mesmo se o disco for movido para outro controlador ou transferido para um sistema diferente. Para este exemplo, presume-se que um único disco ATA é usado, que é atualmente reconhecido pelo sistema como `ad0`. Também é assumido que o esquema de partição padrão do FreeBSD é usado, com `/`, `/var` , `/usr` e `/tmp`, bem como uma partição de swap.

Reinicialize o sistema e, no prompt do loader(8), pressione 4 para inicializar no modo de usuário único. Em seguida, insira os seguintes comandos:

    # glabel label rootfs /dev/ad0s1a
    GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
    # glabel label var /dev/ad0s1d
    GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
    # glabel label usr /dev/ad0s1f
    GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
    # glabel label tmp /dev/ad0s1e
    GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
    # glabel label swap /dev/ad0s1b
    GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
    # exit

O sistema continuará com a inicialização multiusuário. Depois que a inicialização terminar, edite o arquivo `/etc/fstab` e substitua os nomes de dispositivos convencionais por seus respectivos rótulos. No final o `/etc/fstab` ficará assim:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/label/swap         none            swap    sw              0       0
    /dev/label/rootfs       /               ufs     rw              1       1
    /dev/label/tmp          /tmp            ufs     rw              2       2
    /dev/label/usr          /usr            ufs     rw              2       2
    /dev/label/var          /var            ufs     rw              2       2

O sistema agora pode ser reinicializado. Se tudo correr bem, ele aparecerá normalmente e o comando `mount` mostrará:

    # mount
    /dev/label/rootfs on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/label/tmp on /tmp (ufs, local, soft-updates)
    /dev/label/usr on /usr (ufs, local, soft-updates)
    /dev/label/var on /var (ufs, local, soft-updates)

A classe glabel(8) suporta um tipo de rótulo para sistemas de arquivos UFS, com base no ID do sistema de arquivos exclusivo `ufsid`. Esses rótulos podem ser encontrados em `/dev/ufsid` e são criados automaticamente durante a inicialização do sistema. É possível usar rótulos `ufsid` para montar partições usando o `/etc/fstab`. Use o `glabel status` para receber uma lista de sistemas de arquivos e seus rótulos `ufsid` correspondentes:

    % glabel status
                      Name  Status  Components
    ufsid/486b6fc38d330916     N/A  ad4s1d
    ufsid/486b6fc16926168e     N/A  ad4s1f

No exemplo acima, `ad4s1d` representa `/var`, enquanto `ad4s1f` representa `/usr`. Usando os valores `ufsid` mostrados, essas partições podem agora ser montadas com as seguintes entradas em `/etc/fstab`:

    /dev/ufsid/486b6fc38d330916        /var        ufs        rw        2      2
    /dev/ufsid/486b6fc16926168e        /usr        ufs        rw        2      2

Quaisquer partições com rótulos `ufsid` podem ser montadas dessa forma, eliminando a necessidade de criar manualmente rótulos permanentes, enquanto ainda desfruta dos benefícios da montagem independente do nome do dispositivo.

Anterior | Acima | Próxima
18.6. GEOM Network Gate | Principal | 18.8. Journaling UFS através do GEOM

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.