monta dispositivo de bloco como / var / log durante a inicialização

0

Eu gostaria de usar o dispositivo de bloco de memória RAM para armazenar o conteúdo da pasta /var/log . O driver de dispositivo de bloco com suporte a RAM que eu usei é o mesmo que neste link .

Este cria o dispositivo /dev/rb . Gostaria de saber o que preciso fazer para: (1) formatá-lo como ext3fs e (2) montá-lo como /var/log . Isso precisa ser feito durante a inicialização do sistema.

Teste bem-sucedido: vários arquivos de mensagens do kernel são armazenados no dispositivo ram que eu criei.

Obrigado pela ajuda!

    
por hebbo 18.09.2017 / 22:57

1 resposta

0

Isso tudo deve ser feito no arquivo de inicialização /etc/rc.local , que é executado no final de cada runlevel.

Para montar em / var / log, você precisará interromper qualquer processo que tenha arquivos abertos no diretório de log, montá-los e reiniciá-los. Minha sugestão seria adicionar a seguinte linha ao seu script rc.local , então ele será executado no boot:

    lsof | grep /var/log | awk '{ print $1 }' | uniq > /root/logs_open

lsof lista todos os arquivos abertos. Em seguida, filtramos todas as linhas que não fazem referência a / var / log ( grep /var/log ). Imprimimos apenas a primeira coluna (nome do processo) do resultado ( awk '{ print $1 }' ), mantendo apenas uma cópia de cada ( uniq ) e enviando a saída para um arquivo ( > /root/logs_open ). Você terá que adicionar algo ao arquivo de inicialização para parar esses processos antes de montar a partição e reiniciá-los depois. Com essa informação em mãos, remova essa linha do rc.local e podemos começar.

Primeiro, precisamos fazer o que for necessário para que o ramdisk seja criado. Talvez você faça um script para fazer isso.

/root/create_ramdisk.sh

Para criar um sistema de arquivos ext3, você executa:

mkfs.ext3 /dev/rb

Em seguida, pare qualquer processo que esteja registrando.

service apache2 stop

Agora podemos montar em / var / log

mount /dev/rb /var/log

Inicie o backup dos processos que paramos anteriormente

service apache2 start

Por fim, rc.local deve sair com status 0 ou Bad Things ™ acontecer.

exit 0

rc.local script:

/root/create_ramdisk.sh # example purposes only
mkfs.ext3 /dev/rb # create the filesystem
system apache2 stop # stop processes with open log files
mount /dev/rb /var/log # mount
system apache2 start # restart anything we stopped before
exit 0 # important!!! rc.local must exit successfully or Bad Things (tm) happen

Espero que isso ajude.

    
por 23.09.2017 / 03:23