{mosimage} Finalmente resolvi bater um pouco a cabeça e tentar habilitar a função de journaling em FreeBSD (um pouco movido pela inveja de ver isso funcionado em Linux, um pouco porque essa foi uma das "top" features do FreeBSD-7.0). O grande desafio foi fazer isso em um sistema já ativo. Já havia deixada uma partição livre, /dev/ad4s1h, com 360 MB livres, mas descobri que precisava de uma relação de partição/partição para ter o journaling ativado.

Meu disco usava a seguinte separação de slices:

{mosimage}

  • ad4s1a em / (UFS2)
  • ad4s1b como swap
  • ad4s1c reservado para o disco todo (default)
  • ad4s1d em /tmp (UFS2 e soft-updates)
  • ad4s1e em /var (UFS2 e soft-updates)
  • ad4s1f em /home (UFS2 e soft-updates)
  • ad4s1g em /usr (UFS2 e soft-updates)
  • ad4s1h disponível com 360MB

Descobri que o sistema de label de slices do BSD ainda mantém a limitação de 8 slices por partição, o que restringe somente ao uso das letras a-h. Com isso esgotado, as alternativas de criar ad4s1i, ad4s1j e assim por diante, impossível.

Buscando na rede, descobri que a forma de fazer isso seria atribuindo o tamanho total de disco a ser alterado para ad4s1h e depois aplicando o disklabel sobre o mesmo, na forma "disklabel -e ad4s1h", onde novamente a letras de a-h estão disponíveis. Com isso, criei os labels ad4s1ha, ad4s1hb, ad4s1hc, ad4s1hd, ad4s1he, ad4s1hf e ad4s1hg, para cada um corresponder ao seu journal, com 50MB.

O passo seguinte foi criar e ativar o journal. Seguindo a man page, gjournal (8), segui os passos como abaixo (após o boot em single mode):
{CODE} gjournal load gjournal label -f ad4s1d ad4s1hd gjournal label -f ad4s1e ad4s1he gjournal label -f ad4s1f ad4s1hf gjournal label -f ad4s1g ad4s1hg tunefs -J enable -n disable ad4s1d.journal tunefs -J enable -n disable ad4s1e.journal tunefs -J enable -n disable ad4s1f.journal tunefs -J enable -n disable ad4s1g.journal {/CODE}
Fiz as alterações correspondentes no /etc/fstab:
{CODE} /dev/ad4s1b none swap sw 0 0 /dev/ad4s1a / ufs rw 1 1 /dev/ad4s1f.journal /home ufs async,rw 2 2 /dev/ad4s1d.journal /tmp ufs async,rw 2 2 /dev/ad4s1g.journal /usr ufs async,rw 2 2 /dev/ad4s1e.journal /var ufs async,rw 2 2 linprocfs /compat/linux/proc linprocfs rw 0 0 proc /proc procfs rw 0 0 {/CODE}
O primeiros boot falharam devido ao fato de que "gjournal load" não existe em nenhum ponto do rc.conf. Fiz uma alteração em "/etc/rc.d/fsck" para que isso funcionasse (linhas 30-32):
{mosimage} {CODE} 28 fsck_start() 29 { 30 # patch to force gjournal load 31 echo -n 'Load gjournal (as patch): ' 32 /sbin/gjournal load 33 34 if [ "$autoboot" = no ]; then 35 echo "Fast boot: skipping disk checks." {/CODE}

Ainda não descobri como ativar a partição raiz, "/", com journaling também, mas só o fato de ter feito isso com a demais já fez muita diferença: o sistema ficou muito mais rápido.

Joomla templates by a4joomla