Helio Loureiro

-= o cozinheiro de bits =-

Buscando dicas e truques sobre configurações em Unix, Linux, FreeBSD ou OpenBSD? Você pode ter finalmente chegado ao lugar certo :-)

Ativando journaling no FreeBSD

Image 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:

Image

  • 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):

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

Fiz as alterações correspondentes no /etc/fstab:
/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

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):
Image
    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."

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.

 
Bookmark and Share

Adds

Links patrocinados:

Visitors Counter

Hoje39
Ontem99
Semana512
Mês768
Visitantes137422
38.107.179.208

Statistics

Content View Hits : 151668

Random Image

mvc-95.jpg