Melhor maneira de executar um comando após o sistema Linux parar

3

Problema: Os SSDs em nossos servidores exigem um ciclo de energia (ou seja, desligado / ligado, não reinicializado / reinicializado a quente) após uma atualização de firmware.

Pensamentos: Usando o "ciclo de potência do chassi do ipmitool", posso ligar e desligar a energia do servidor. No entanto, isso cortaria a energia enquanto o sistema ainda estivesse em execução, sistemas de arquivos fossem montados, etc.

O que eu quero basicamente é um ciclo de energia atrasado para que o sistema tenha a chance de parar. Mas eu acho que isso teria que ser implementado na placa IPMI do servidor, então não é realmente uma opção.

Minha ideia inicial era criar dinamicamente um ramdisk contendo a ferramenta e as bibliotecas e de alguma forma integrar isso no processo de parada. Eu vi que há um /etc/init.d/halt, então esse seria meu ponto de partida. Embora eu acredite que o kernel em algum momento do processo de desligamento comece a eliminar processos remanescentes. Então, eu nem tenho certeza se isso é uma maneira viável.

Pergunta: Qual seria a melhor maneira de executar o ipmitool (ou qualquer outro comando), depois que o sistema parasse e todos os sistemas de arquivos regulares fossem desmontados?

    
por Lukas Loesche 10.10.2012 / 17:05

4 respostas

7

Eu o levo para o modo de usuário único, desmonto qualquer sistema de arquivos que não seja do sistema operacional e remonta todos os existentes como somente leitura. Em seguida, execute a ferramenta de atualização de firmware e o 'ciclo de energia do chassi ipmitool'.

Não é bonito nem inteligente, mas deve ser seguro o suficiente

    
por 10.10.2012 / 18:21
2

Faça um desligamento completo normal e desligue; conte até dez e, em seguida, ligue a máquina novamente com wake-on-lan ou IMPI para o BMC (DRAC no caso da Dell?). Se você quiser mantê-lo totalmente local para a máquina, alguns BIOS permitem que você especifique um tempo de ativação / ativação via ACPI - veja link . Por exemplo. defina o tempo de energização para (agora) + (duração normal do desligamento) + (uma pequena margem de segurança) e, em seguida, execute o desligamento.

Não faço ideia se isso é realmente possível com hardware de classe de servidor - informe-nos se você tentar.

    
por 10.10.2012 / 17:48
1

Você está procurando por um cão de guarda. Um cronômetro que é ativado pelo seu software e redefine o computador se o cronômetro expirar sem ser atualizado. Para isso, você precisa de um BIOS com um temporizador de suporte para ligar a máquina, um gerenciador IPMI externo ou a boa sorte de o suporte do ciclo de energia IPMI funcionar diretamente em sua máquina.

Como ponto de partida, confira o utilitário IPMI que também inclui a ferramenta com uma redefinição de "ciclo de energia" .

Se você puder definir o temporizador de vigia ativo, estabeleça um nível de execução que inicie o temporizador com uma função de tempo limite de desligamento de hardware. O último efeito do seu runlevel shutdown-without-ACPI-off deve ser o de matar o processo de atualização do timer.

    
por 10.10.2012 / 18:37
0

Na inicialização (em vez de desligamento).

Usando uma inicialização pela rede.

Você precisa ligar e desligar as unidades físicas, então eu sugiro que você reinicie a máquina, dizendo para inicializar a partir da rede, uma vez feito isso, você desligará e reinicializará as unidades.

    
por 10.10.2012 / 17:08