4. Configurando o journaling

4.1. Executando o gjournal

Tendo preparado todas as partições requeridas, é bastante fácil configurar o journaling. Nós precisaremos mudar para o modo de single user, então entre como root e digite:

# shutdown now

Pressione Enter para obter o shell padrão. Nós precisaremos desmontar as partições que serão registradas no diário, no nosso exemplo /usr e /var:

# umount /usr /var

Carregue o módulo necessário para o journaling:

# gjournal load

Agora, use suas anotações para determinar qual partição será usada para cada diário. Em nosso exemplo, /usr é ad0s1f e seu journal será ad0s1g, enquanto /var é ad0s1d e será journaled para ad0s1h. Os seguintes comandos são necessários:

# gjournal label ad0s1f ad0s1g

GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.

# gjournal label ad0s1d ad0s1h

GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.

Nota:

Se o último setor de qualquer partição for usado, o gjournal retornará um erro. Você terá que executar o comando usando o sinalizador -f para forçar uma substituição, ou seja:

# gjournal label -f ad0s1d ad0s1h

Como esta é uma nova instalação, é altamente improvável que qualquer coisa seja realmente sobrescrita.

Neste ponto, dois novos dispositivos são criados, a saber ad0s1d.journal e ad0s1f.journal. Os quais representam as partições /var e /usr que temos que montar. Antes de montar, devemos definir o flag de Journal e limpar o flag de Soft Updates:

# tunefs -J enable -n disable ad0s1d.journal

tunefs: gjournal set
tunefs: soft updates cleared

# tunefs -J enable -n disable ad0s1f.journal

tunefs: gjournal set
tunefs: soft updates cleared

Agora, monte os novos dispositivos manualmente em seus respectivos locais (note que agora podemos usar a opção de montagem async):

# mount -o async /dev/ad0s1d.journal /var
# mount -o async /dev/ad0s1f.journal /usr

Edite o /etc/fstab e atualize as entradas para /usr e /var:

/dev/ad0s1f.journal     /usr            ufs     rw,async      2       2
/dev/ad0s1d.journal     /var            ufs     rw,async      2       2

Atenção:

Certifique-se de que as entradas acima estão corretas ou você terá problemas para inicializar normalmente após o reboot!

Finalmente, edite o /boot/loader.conf e adicione a seguinte linha para que o módulo gjournal(8) seja carregado em cada boot:

geom_journal_load="YES"

Parabéns! Seu sistema está agora configurado para journaling. Você pode digitar exit para retornar ao modo multiusuário ou reinicializar para testar sua configuração (recomendado). Durante a inicialização, você verá mensagens como as seguintes:

ad0: 76293MB XEC XE800JD-00HBC0 08.02D08 at ata0-master SATA150
GEOM_JOURNAL: Journal 2948326772: ad0s1g contains journal.
GEOM_JOURNAL: Journal 3193218002: ad0s1h contains journal.
GEOM_JOURNAL: Journal 3193218002: ad0s1d contains data.
GEOM_JOURNAL: Journal ad0s1d clean.
GEOM_JOURNAL: Journal 2948326772: ad0s1f contains data.
GEOM_JOURNAL: Journal ad0s1f clean.

Após um encerramento não limpo, as mensagens variam ligeiramente, ou seja:

GEOM_JOURNAL: Journal ad0s1d consistent.

Isso geralmente significa que o gjournal(8) usou as informações no journal provider para retornar o sistema de arquivos a um estado consistente.

4.2. Fazendo journaling de partições recém-criadas

Embora o procedimento acima seja necessário para partições que fazem uso de journaling e que já contêm dados, o journaling de uma partição vazia é um pouco mais fácil, uma vez que os dados e o journal provider podem ser armazenados na mesma partição. Por exemplo, suponha que um novo disco tenha sido instalado e uma nova partição /dev/ad1s1d tenha sido criada. Criar o journal seria tão simples quanto:

# gjournal label ad1s1d

O tamanho do journal será 1 GB por padrão. Você pode ajustá-lo usando a opção -s. O valor pode ser dado em bytes, ou acrescentado por K, M ou G para indicar Kilobytes, Megabytes ou Gigabytes, respectivamente. Note que o comando gjournal não permitirá que você crie journals de tamanhos pequenos e inadequados.

Por exemplo, para criar um journal de 2 GB, você poderia usar o seguinte comando:

# gjournal label -s 2G ad1s1d

Você pode criar um sistema de arquivos em sua nova partição e ativar o journaling usando a opção -J :

# newfs -J /dev/ad1s1d.journal

4.3. Adicionando suporte ao journaling no seu kernel personalizado

Se você não deseja carregar o geom_journal como um módulo, você pode construir suas funções diretamente em seu kernel. Edite seu arquivo de configuração do kernel personalizado e verifique se ele inclui estas duas linhas:

options UFS_GJOURNAL # Note: This is already in GENERIC

options GEOM_JOURNAL # You will have to add this one

Recompile e reinstale seu kernel seguindo as instruções relevantes no Handbook do FreeBSD.

Não se esqueça de remover a entrada relevante load do /boot/loader.conf se você a usou anteriormente.

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