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.
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.
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
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.
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.
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>.