Gjournaling um servidor de uso geral em rede pequena

1

Eu tenho um servidor de propósito geral (mail, web, arquivo, etc) rodando em uma pequena rede mista (Windows / FreeBSD). Eu não estou satisfeito com a forma como eu coloquei o disco originalmente e desde que ele está um pouco desatualizado de qualquer maneira, eu pretendo simplesmente reinstalar a máquina inteira e consertar cada pequeno aborrecimento enquanto estou nisso.

Eu tenho usado gjournaling em outras máquinas e estou satisfeito com isso. Eu sei como configurar novas partições para que elas contenham o diário e os dados, e eu sei como criar um diário para uma partição existente em uma partição recém-criada. Ainda tenho algumas perguntas sobre o gjournal antes de começar a usar a máquina:

  1. Como faço para criar partições para conter o diário e os dados durante a instalação do FreeBSD, se eu tiver que criar uma partição de diário separada para cada partição, atingirei o limite de 8 letras de partição.

  2. Eu sei que é seguro montar sistemas de arquivos assíncronos ao fazer o registro no diário, mas as pessoas montam o sistema de arquivos raiz como assíncrono também durante o registro no diário ou isso é imprudente?

  3. É possível registrar uma fatia inteira de uma só vez? Isso pouparia o trabalho de aumentar significativamente o tamanho da minha raiz, / var e várias outras partições pequenas para realmente ter espaço suficiente para armazenar os dados do diário.

por jldugger 08.06.2009 / 01:18

2 respostas

1

Depois de algumas bagunças eu finalmente encontrei uma maneira de realizar o que eu quero há algum tempo, mas esqueci de atualizar minha pergunta aqui. No futuro (início de outubro) estou substituindo a máquina inteira e, de fato, mudando para o ZFS. Enquanto isso, postarei minha solução aqui para que outras pessoas possam usá-la.

A solução é fazer com que o sistema de arquivos seja instalado a partir do FreeBSD. Não consegui carregar o módulo do kernel do gJournal a partir do disco do fixit, então instalei uma instalação básica em um pendrive. Depois de limpar todo o disco que eu iria instalar, eu inicializei a máquina pelo pendrive.

O primeiro passo foi carregar o módulo do kernel do gJournal com " gjournal load " e rotular o disco no qual eu estava instalando ( /dev/ad0 ) " gjournal label ad0 ". Agora você deve ver uma entrada /dev/ad0.journal dentro de /dev . O próximo passo é escrever um setor de inicialização para este disco com bsdlabel . No caso do meu sistema amd64, este foi " bsdlabel -wBm amd64 ad0.journal ", para os detalhes do seu sistema, consulte a página de manual bsdlabel(8) . Eu continuei a editar as etiquetas com o bsdlabel como você normalmente mudaria o layout do disco, mas usando /dev/ad0.journal onde você normalmente usaria /dev/ad0 . Acabei especificando o seguinte layout em bsdlabel -e ad0.journal :

# size offset fstype [fsize bsize bps/cpg]
a: 256M    16 4.2BSD   2048 16384
b:   2G     *   swap
c:    *     * unused
d:   2G     * 4.2BSD   2048 16384
e: 512M     * 4.2BSD   2048 16384
f:   6G     * 4.2BSD   2048 16384
g:    *     * 4.2BSD   2048 16384

Os tamanhos específicos que você exige serão diferentes, é claro. Depois de especificar essas partições, /dev/ deve mostrar as várias entradas /dev/ad0.journala a /dev/ad0.journalg . Agora podemos formatar os novos sistemas de arquivos usando newfs(8) . Eu usei o UFS2 com rótulos para poder me referir a /dev/label/<label> in /etc/fstab em vez do dispositivo de disco. O comando que eu executei era newfs -O 2 -J -L rootfs /dev/ad0.journala , -O 2 usa o UFS2, -J ativa o registro no diário em uma partição específica e -L rootfs nomes /dev/ad0.journala to /dev/label/rootfs . Não se esqueça de que você pode querer desabilitar o registro no diário, por exemplo, a partição /tmp ; nesse caso, não passe o sinalizador -J para essas partições. Embora estejam no disco com registro no diário, o GEOM registrará apenas os sistemas UFS que sinalizam se os dados que estão sendo gravados são metadados ou não, o que acontece apenas para sistemas de arquivos criados com -J ou para os quais você ativa o registro no diário via tunefs(8) .

Agora a parte complicada acabou e só precisamos instalar o sistema operacional no nosso sistema de arquivos recém-criado, eu simplesmente usei o disco de instalação. Como já criamos nosso sistema de arquivos, o instalador do CD não pode ser usado. Em vez disso, basta montar o CD a partir da instalação USB e montar o sistema de arquivos raiz recém-criado em algum lugar (vou usar /tmp/newinstall como ponto de montagem aqui). Em seguida, monte todas as outras partições que você criou dentro de /tmp/newinstall as /var , /usr e tudo o que você particionou. Em seguida, defina a variável de ambiente DESTDIR para este novo caminho ( export DESTDIR=/tmp/newinstall ).

Agora mude o diretório para onde você montou o CD de instalação, no CD você encontrará uma pasta com o nome da versão do FreeBSD que você baixou, dentro dessa pasta existem várias pastas contendo um arquivo install.sh , execute cada uma delas scripts (você tem que especificar o kernel GENERIC como um argumento para o script de instalação no diretório do kernel).

Depois disso, não se esqueça de copiar / mover /tmp/newinstall/boot/GENERIC para /tmp/newinstall/boot/kernel ou você verá que o sistema não consegue encontrar um kernel para inicializar. Por último, mas não menos importante, edite /tmp/newinstall/boot/loader.conf e adicione a linha geom_journal_load="YES" para carregar o suporte ao gjournal no momento da inicialização, você pode (e deve) remover esta linha se você compilar um kernel customizado com o suporte gJournal incluído (as opções necessárias para isso são options UFS_GJOURNAL e options GEOM_JOURNAL ).

A última coisa que resta a ser feita é criar um arquivo /tmp/newinstall/etc/fstab que monte as partições necessárias no momento da inicialização. Você pode especificar /dev/ad0.journala devices ou /dev/label/rootfs e outros marcadores que você forneceu. Detalhes sobre a sintaxe e opções para o arquivo podem ser lidos na página de manual do fstab(5) . Tenha em mente que, com o registro no diário, agora é "seguro" [1] montar seus sistemas de arquivos como assíncronos. Observe também que, embora os dispositivos registrados não precisem de fsck , você ainda deve preencher a coluna fsck no arquivo fstab. Se você não fizer isso, seu sistema NÃO VAI INICIAR. O sistema reconhece discos registrados e os trata diferentemente nas verificações automatizadas do fsck, em vez de executar as verificações apropriadas para um sistema registrado.

[1] - Seguro significa que seu sistema de arquivos não será corrompido por um travamento durante o registro no diário. Os dados que não foram gravados no disco no momento da falha ainda podem ser perdidos, por exemplo, se estiverem sendo armazenados em buffer pelo sistema operacional ou pelo disco. Os dados podem permanecer nesses buffers por um bom tempo.

    
por 17.09.2009 / 23:19
0

Apenas uma sugestão para 1. - use a tabela gpt, ela suporta até 26 partições

Para 3. - você pode gjournal todo o disco de uma só vez (dados daqui)

PS. E de qualquer maneira você deve tentar tudo isso de alguma VM como o VirtualBox.

PPS. Pode ser que você deva tentar o ZFS?

    
por 10.06.2009 / 05:06