Como aguardar a inicialização da região do Solaris (primeira vez)

2

Solaris 11.

Descobri que o comando de inicialização da zona (por exemplo, zoneadm -z myzone boot ) retorna antes que a zona seja totalmente inicializada / configurada. O problema está relacionado a zonas criadas recentemente.

Mais precisamente, o que faço é isto:

zoneadm -z myzone install -c mytemplate.xml
zoneadm -z myzone boot

Quando a segunda linha termina, o sistema informa que a zona está em estado de execução (o que é tecnicamente verdadeiro). Na realidade, a zona ainda está ocupada fazendo a importação de manifesto, ou seja, fazendo a configuração inicial. Portanto, neste ponto, não há garantia de que os artefatos definidos em mytemplate.xml (como usuários) existirão. Isso normalmente leva mais um minuto ou dois.

Este é um problema na criação de zonas por script. Obviamente, posso fazer um sleep muito longo e esperar que a região tenha terminado suas tarefas de configuração, mas isso parece uma solução estúpida. Eu não saberia por quanto tempo esperar.

Existe uma maneira do meu script garantir que os processos de configuração em segundo plano da zona tenham sido concluídos antes de continuar?

    
por peterh 10.08.2014 / 20:21

2 respostas

2

Uma maneira seria usar um loop while que seja executado

zlogin <zone> svcs -xv

ou

zlogin <zone> svcs svc:/milestone/multi-user | grep online

e usa a saída de um desses comandos para determinar se a zona está pronta ou se deve dormir um pouco mais.

O segundo comando pode ser melhor se você falhar regularmente nos serviços que precisam de intervenção manual para corrigir, pois o script pode ser interrompido de outra forma. Você provavelmente também deve ter um valor de tempo limite para que seu script não espere para sempre por um não global que nunca atenda à sua condição.

Em meus testes, eu esperava um código de saída diferente de zero quando a saída da execução svcs -xv gerou serviços com falha, mas o código de saída é zero, portanto, fique ciente disso. Por esse motivo, se você usar o comando zlogin <zone> svcs -xv e quiser testar o código de saída, talvez seja melhor executar zlogin <zone> svcs -xv | grep State . Um código de saída diferente de zero indica que nenhum serviço com falha e um código de saída zero indicarão alguns serviços com falha.

    
por 11.08.2014 / 02:04
0

Depois de uma zona recém-criada no Solaris 10, normalmente precisava fazer login no console da zona para responder a algumas perguntas. zlogin -C <zonename>

    
por 05.01.2017 / 19:40