Solaris 영역 부팅을 기다리는 방법(처음)

Solaris 영역 부팅을 기다리는 방법(처음)

솔라리스 11.

zoneadm -z myzone boot영역이 완전히 시작/구성되기 전에 영역 시작 명령(예: )이 반환된 것을 발견했습니다 . 이 문제는 새로 생성된 영역과 관련이 있습니다.

더 정확하게 말하면, 내가 한 일은 다음과 같습니다.

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

두 번째 행이 완료되면 시스템은 지역이 실행 중이라고 보고합니다(기술적으로는 정확함). 실제로 이 영역은 여전히 ​​인벤토리 가져오기, 즉 초기 구성으로 바쁘다. 따라서 현재로서는 에 정의된 아티팩트(예: 사용자)가 실제로 존재한다는 보장이 없습니다 mytemplate.xml. 일반적으로 1~2분 정도 더 소요됩니다.

이는 스크립트된 영역을 생성할 때 발생하는 문제입니다. 분명히 오랫동안 이 작업을 수행할 수 있었고 sleep그때까지 영역이 해당 구성 작업을 완료했으면 좋겠지만 이는 어리석은 해결책처럼 보입니다. 얼마나 기다려야 할지 모르겠습니다.

계속하기 전에 지역의 백그라운드 구성 프로세스가 완료되었는지 확인하는 스크립트 방법이 있습니까?

답변1

한 가지 방법은 실행되는 while 루프를 사용하는 것입니다.

zlogin <zone> svcs -xv

또는

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

그리고 이러한 명령 중 하나의 출력을 사용하여 해당 영역이 준비되었는지 또는 더 오랜 시간 동안 절전 모드로 전환해야 하는지 확인합니다.

수정을 위해 수동 개입이 필요한 서비스가 자주 실패하는 경우 두 번째 명령이 더 나을 수 있습니다. 그렇지 않으면 스크립트가 중단될 수 있습니다. 스크립트가 조건을 충족하지 않는 비전역 변수를 영원히 기다리지 않도록 시간 초과 값도 있어야 합니다.

내 테스트에서는 실패한 서비스의 출력을 실행할 때 0이 아닌 종료 코드가 나올 것으로 예상했지만 svcs -xv종료 코드는 0이었으므로 이에 유의하세요. 따라서 명령을 사용 zlogin <zone> svcs -xv하고 종료 코드를 테스트하려면 를 실행하는 것이 좋습니다 zlogin <zone> svcs -xv | grep State. 0이 아닌 종료 코드는 실패한 서비스가 없음을 나타내고 0 종료 코드는 일부 실패한 서비스를 나타냅니다.

답변2

Solaris 10에서 새 영역을 만든 후 일반적으로 몇 가지 질문에 대답하려면 해당 영역의 콘솔에 로그인해야 합니다. zlogin -C <zonename>

관련 정보