Oracle® Solaris 11.2의 시스템 서비스 관리

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

SMF 모범 사례 및 문제 해결

이 부록은 몇 가지 권장 모범 사례를 제공하고 몇몇 SMF 서비스 문제를 해결하는 방법을 보여줍니다.

SMF 모범 사례

대부분 서비스는 구성 정책을 설명합니다. 원하는 구성이 구현되지 않은 경우 서비스를 수정하여 정책 설명을 수정합니다. 서비스 등록 정보 값을 수정하거나 다른 등록 정보 값을 사용하여 새 서비스 인스턴스를 만듭니다. 서비스 인스턴스를 사용 안함으로 설정하지 않고 SMF 서비스로 관리하려는 구성 파일을 편집하십시오.

Oracle 또는 타사 소프트웨어 공급업체에서 제공하는 매니페스트 및 시스템 프로파일을 수정하지 마십시오. 이러한 매니페스트와 프로파일은 시스템을 업그레이드할 때 대체될 수 있고 이후 이러한 파일에 대한 변경 사항이 손실됩니다. 대신에 사이트 프로파일을 만들어 서비스를 사용자 정의하거나 svccfg 명령이나 inetadm 명령을 사용하여 등록 정보를 직접 조작합니다. 또한 /lib/svc/manifest/site/var/svc/manifest/site 디렉토리는 사이트별 사용을 위해 예약되어 있습니다. Oracle Solaris에서는 이러한 디렉토리에 매니페스트가 제공되지 않습니다.

같은 사용자 정의 구성을 여러 시스템에 적용하려면 svcbundle 명령이나 svccfg extract 명령을 사용하여 프로파일 파일을 만듭니다. 해당 파일에서 등록 정보 값을 사용자 정의하고 각 사용자 정의 이유에 대한 주석을 포함합니다. 각 시스템의 /etc/svc/profile/site에 파일을 복사하고 각 시스템에서 manifest-import 서비스를 다시 시작합니다. 여러 시스템 구성을 참조하십시오.

사이트 프로파일을 만들 때 정의된 구성이 같은 서비스나 서비스 인스턴스에 대해 다른 사이트 프로파일에서 정의된 구성과 충돌하지 않는지 확인하십시오. SMF가 서비스 구성 저장소의 같은 계층에서 충돌하는 구성을 찾으면 영향을 받는 서비스 인스턴스가 유지 관리 상태로 전환됩니다.

매니페스트 및 프로파일 파일에 대해 비표준 위치를 사용하지 마십시오. 매니페스트 및 프로파일 표준 위치에 대해서는 서비스 번들을 참조하십시오.

자체 사용을 위해 서비스를 만들 경우 서비스 이름 시작 부분에 site를 사용합니다. svc:/site/service_name:instance_name.

시작 메시징 양 지정에 설명된 대로 로깅 레벨을 구성하는 경우를 제외하고 마스터 다시 시작 프로그램 서비스, svc:/system/svc/restarter:default를 수정하지 마십시오.

svccfg delcust 명령을 사용하기 전에 svccfg listcust 명령을 같은 옵션과 함께 사용하십시오. delcust 하위 명령은 서비스에 대한 모든 관리 사용자 정의를 제거할 수 있습니다. listcust 하위 명령을 사용하여 delcust 하위 명령으로 삭제될 사용자 정의를 확인합니다.

스크립트에서 전체 서비스 인스턴스 FMRI를 사용합니다. svc:/service_name:instance_name.

서비스 문제 해결

이 절은 다음 내용으로 구성되어 있습니다.

  • 실행 중인 스냅샷에 구성 변경 사항 커밋

  • 문제가 있다고 보고되는 서비스 수정

  • 인스턴스를 degraded 또는 maintenance 상태로 수동 전환

  • 손상된 서비스 구성 저장소 수정

  • 시스템 시작 시 표시 또는 저장할 메시징 양 구성

  • 지정된 마일스톤으로 전환 또는 부트

  • SMF를 사용하여 부트 문제 조사

  • inetd 서비스를 SMF 서비스로 변환

구성 변경 사항 이해

서비스 구성 저장소에서 SMF는 등록 정보 변경 사항을 실행 중인 스냅샷의 등록 정보와 별도로 저장합니다. 서비스 구성을 변경하면 해당 변경 사항이 실행 중인 스냅샷에 바로 나타나지 않습니다.

새로 고침 작업은 편집 구성의 값을 사용하여 지정된 서비스 인스턴스의 실행 중인 스냅샷을 업데이트합니다.

기본적으로 svcprop 명령은 실행 중인 스냅샷의 등록 정보를 표시하고 svccfg 명령은 편집 구성의 등록 정보를 표시합니다. 등록 정보 값을 변경했으나 구성 새로 고침을 수행하지 않았으면 svcpropsvccfg 명령은 서로 다른 등록 정보 값을 표시합니다. 구성 새로 고침을 수행한 후 svcpropsvccfg 명령은 같은 등록 정보 값을 표시합니다.

재부트해도 실행 중인 스냅샷이 변경되지 않습니다. svcadm restart 명령은 구성을 새로 고치지 않습니다. svcadm refresh 또는 svccfg refresh 명령을 사용하여 구성 변경 사항을 실행 중인 스냅샷에 커밋합니다.

성능 저하, 오프라인 또는 유지 관리 상태인 인스턴스 복구

svcs -x 명령을 인수 없이 사용하여 다음 설명 중 하나와 일치하는 서비스 인스턴스에 대한 설명 정보를 표시합니다.

  • 서비스가 사용으로 설정되었으나 실행되지 않습니다.

  • 서비스가 또 다른 사용으로 설정된 서비스를 실행하지 못하게 합니다.

다음 목록에서는 서비스 문제에 접근하는 방법을 요약합니다.

  1. 서비스 로그 파일 보기부터 시작하여 문제를 진단합니다.

  2. 문제를 해결합니다. 문제 해결 시 서비스 구성을 수정할 경우 서비스를 새로 고칩니다.

  3. 영향을 받는 서비스를 실행 상태로 이동합니다.

유지 관리 상태인 인스턴스를 복구하는 방법

유지 관리 상태인 서비스 인스턴스가 사용으로 설정되었으나 실행할 수 없습니다.

  1. 인스턴스가 유지 관리 상태인 이유를 확인합니다.

    관리 작업이 아직 완료되지 않아 인스턴스가 maintenance 상태 사이에서 전환되고 있을 수 있습니다. 인스턴스가 전환 중이면 해당 상태는 maintenance*로 표시되어야 합니다.

    시작 메소드가 실패했기 때문에 다음 예에서 “State” 및 “Reason” 행은 pkg/depot 서비스가 maintenance 상태임을 보여줍니다.

    $ svcs -x
    svc:/application/pkg/depot:default (IPS Depot)
     State: maintenance since September 11, 2013 01:30:42 PM PDT
    Reason: Start method exited with $SMF_EXIT_ERR_FATAL.
       See: http://support.oracle.com/msg/SMF-8000-KS
       See: pkg.depot-config(1M)
       See: /var/svc/log/application-pkg-depot:default.log
    Impact: This service is not running.

    Oracle Support 사이트에 로그인하여 참조되는 예측적 자가 치유 지식 문서를 확인합니다. 이 경우 문서에서는 로그 파일에서 시작 메소드가 실패한 이유를 확인하라고 알려줍니다. svcs 출력에는 로그 파일 이름이 제공됩니다. 로그 파일을 보는 방법에 대한 자세한 내용은 서비스 로그 파일 보기를 참조하십시오. 이 예에서 로그 파일에는 시작 메소드 호출 및 치명적 오류 메시지가 표시됩니다.

    [ Sep 11 13:30:42 Executing start method ("/lib/svc/method/svc-pkg-depot start"). ]
    pkg.depot-config: Unable to get publisher information: 
    The path '/export/ipsrepos/Solaris11' does not contain a valid package repository.
  2. 문제를 해결합니다.

    다음 단계의 하나 이상이 필요할 수 있습니다.

    • 서비스 구성 업데이트

      보고된 문제를 해결하는 데 서비스 구성 수정이 필요한 경우에는 구성이 변경된 모든 서비스에 대해 svccfg refresh 또는 svcadm refresh 명령을 사용합니다. svcprop 명령을 사용하여 등록 정보 값을 확인하거나 이 서비스와 관련된 기타 서비스를 통해 실행 중인 스냅샷에서 구성이 업데이트되었는지 확인합니다.

    • 종속성이 실행 중인지 확인합니다.

      때때로 svcs -x 출력의 "Impact" 행에서는 maintenance 상태인 서비스에 종속된 서비스가 실행되고 있지 않음을 알려줍니다. svcs -l 명령을 사용하여 종속 서비스의 현재 상태를 확인합니다. 모든 필수 종속성이 실행 중인지 확인합니다. svcs -x 명령을 사용하여 모든 사용으로 설정된 서비스가 실행 중인지 확인합니다.

    • 계약 프로세스가 중지되었는지 확인합니다.

      maintenance 상태인 서비스가 계약 서비스이면 서비스에 의해 시작된 모든 프로세스가 중지되지 않았는지 확인합니다. 계약 서비스 인스턴스가 유지 관리 상태이면 다음 예와 같이 계약 ID가 비어 있어야 하고 해당 계약과 관련된 모든 프로세스가 중지되어야 합니다. svcs -l 또는 svcs -o ctid를 사용하여 유지 관리 상태인 서비스 인스턴스에 대한 계약이 없는지 확인합니다. svcs -p를 사용하여 이 서비스 인스턴스와 관련된 모든 프로세스가 실행 중인지 확인합니다. 유지 관리 상태인 서비스 인스턴스에 대해 svcs -p를 통해 표시된 모든 프로세스가 종료되어야 합니다.

      $ svcs -l system-repository
      fmri         svc:/application/pkg/system-repository:default
      name         IPS System Repository
      enabled      true
      state        maintenance
      next_state   none
      state_time   September 17, 2013 07:18:19 AM PDT
      logfile      /var/svc/log/application-pkg-system-repository:default.log
      restarter    svc:/system/svc/restarter:default
      contract_id
      manifest     /lib/svc/manifest/application/pkg/pkg-system-repository.xml
      dependency   require_all/error svc:/milestone/network:default (online)
      dependency   require_all/none svc:/system/filesystem/local:default (online)
      dependency   optional_all/error svc:/system/filesystem/autofs:default (online)
  3. 인스턴스가 복구되었음을 다시 시작 프로그램에 알립니다.

    보고된 문제가 해결되면 svcadm clear 명령을 사용하여 서비스를 online 상태로 되돌립니다. maintenance 상태 서비스의 경우 clear 하위 명령은 서비스가 복구되었음을 해당 서비스에 대한 다시 시작 프로그램에 알립니다.

    $ svcadm clear pkg/depot:default

    -s 옵션을 지정하면 svcadm 명령은 인스턴스가 online 상태로 전환되거나 관리자 개입이 있어야 인스턴스가 online 상태로 전환될 수 있다고 결정될 때까지 돌아가지 않고 대기합니다. -T 옵션을 -s 옵션과 함께 사용하여 전환을 수행할 상한(초)을 지정하거나 전환을 수행할 수 없게 결정합니다.

  4. 인스턴스가 복구되었는지 확인합니다.

    svcs 명령을 사용하여 유지 관리 상태였던 서비스가 현재 온라인 상태인지 확인합니다. svcs -x 명령을 사용하여 모든 사용으로 설정된 서비스가 실행 중인지 확인합니다.

오프라인 상태인 인스턴스를 복구하는 방법

오프라인 상태인 서비스 인스턴스가 사용으로 설정되었으나 실행되고 있지 않거나 실행할 수 없습니다.

  1. 인스턴스가 오프라인 상태인 이유를 확인합니다.

    종속성이 아직 충족되지 않아 인스턴스가 offline 상태 사이에서 전환되고 있을 수 있습니다. 인스턴스가 전환 중이면 해당 상태는 offline*로 표시되어야 합니다.

  2. 문제를 해결합니다.
    • 서비스 종속성을 사용으로 설정합니다.

      필요한 종속성이 사용 안함으로 설정된 경우 다음 명령을 사용하여 사용으로 설정합니다.

      $ svcadm enable -r FMRI
    • 종속성 파일을 수정합니다.

      종속성 파일이 누락되었거나 읽을 수 없는 상태일 수 있습니다. pkg fix 또는 pkg revert를 사용하여 이 문제 유형을 해결하려고 할 수 있습니다. pkg(1) 매뉴얼 페이지를 참조하십시오.

  3. 필요한 경우 인스턴스를 다시 시작합니다.

    필수 종속성이 충족되지 않아 인스턴스가 오프라인 상태인 경우 종속성을 수정하거나 사용으로 설정하면 오프라인 인스턴스가 다시 시작되고 추가적인 관리자 작업 없이 온라인으로 전환될 수 있습니다.

    서비스에 다른 수정 사항을 적용한 경우 인스턴스를 다시 시작하십시오.

    $ svcadm restart FMRI
  4. 인스턴스가 복구되었는지 확인합니다.

    svcs 명령을 사용하여 오프라인 상태였던 인스턴스가 현재 온라인 상태인지 확인합니다. svcs -x 명령을 사용하여 모든 사용으로 설정된 서비스가 실행 중인지 확인합니다.

성능 저하 상태인 인스턴스를 복구하는 방법

성능 저하 상태인 서비스 인스턴스가 사용으로 설정되고 실행 중이거나 실행할 수 있지만, 제한된 용량으로 작동 중입니다.

  1. 인스턴스가 성능 저하 상태인 이유를 확인합니다.
  2. 문제를 해결합니다.
  3. 인스턴스를 온라인 상태로 전환하게 다시 시작 프로그램에 요청합니다.

    보고된 문제가 해결되면 svcadm clear 명령을 사용하여 인스턴스를 online 상태로 되돌립니다. degraded 상태 인스턴스의 경우 clear 하위 명령은 해당 인스턴스에 대한 다시 시작 프로그램이 인스턴스를 online 상태로 전환하게 요청합니다.

    $ svcadm clear pkg/depot:default
  4. 인스턴스가 복구되었는지 확인합니다.

    svcs 명령을 사용하여 성능 저하 상태였던 인스턴스가 현재 온라인 상태인지 확인합니다. svcs -x 명령을 사용하여 모든 사용으로 설정된 서비스가 실행 중인지 확인합니다.

인스턴스를 성능 저하 또는 유지 관리 상태로 표시

서비스 인스턴스를 degraded 상태나 maintenance 상태로 표시할 수 있습니다. 예를 들어 응용 프로그램이 루프 상태이거나 교착 상태이면 이 작업을 수행하려고 할 수 있습니다. 상태 변경에 대한 정보는 표시된 인스턴스의 종속성에 전파되어 다른 관련 인스턴스를 디버깅하는 데 도움이 될 수 있습니다.

-I 옵션을 지정하여 즉각적인 상태 변경을 요청합니다.

인스턴스를 maintenance로 표시하면 -t 옵션을 지정하여 임시 상태 변경을 요청할 수 있습니다. 임시 요청은 재부트될 때까지만 지속됩니다.

-s 옵션을 svcadm mark 명령과 함께 지정하면 svcadm은 인스턴스를 표시하고 돌아가기 전에 인스턴스가 degraded 또는 maintenance 상태로 전환될 때까지 대기합니다. -T 옵션을 -s 옵션과 함께 사용하여 전환을 수행할 상한(초)을 지정하거나 전환을 수행할 수 없게 결정합니다.

저장소 문제 진단 및 복구

시스템 시작 시 저장소 데몬 svc.configd/etc/svc/repository.db에 저장된 구성 저장소에 대한 무결성 검사를 수행합니다. svc.configd 무결성 검사가 실패할 경우 svc.configd 데몬은 다음과 유사한 메시지를 콘솔에 작성합니다.

svc.configd: smf(5) database integrity check of:

    /etc/svc/repository.db

  failed.  The database might be damaged or a media error might have
  prevented it from being verified.  Additional information useful to
  your service provider is in:

    /system/volatile/db_errors

  The system will not be able to boot until you have restored a working
  database.  svc.startd(1M) will provide a sulogin(1M) prompt for recovery
  purposes.  The command:

    /lib/svc/bin/restore_repository

  can be run to restore a backup version of your repository. See
  http://support.oracle.com/msg/SMF-8000-MY for more information.

그런 다음 svc.configd 데몬이 종료됩니다. 이 종료는 svc.startd 데몬에 의해 감지되고 이후 svc.startdsulogin을 시작합니다.

sulogin 프롬프트에서 Ctrl-D를 입력하여 sulogin을 종료합니다. svc.startd 데몬은 sulogin 종료를 인식하고 svc.configd 데몬을 다시 시작하여 저장소를 다시 검사합니다. 추가로 다시 시작된 후에는 문제가 다시 나타날 수 없습니다. svc.configd 데몬을 직접 호출하지 마십시오. svc.startd 데몬은 svc.configd 데몬을 시작합니다.

svc.configd가 다시 무결성 검사 실패를 보고하고 sulogin 프롬프트가 다시 표시되면 필요한 파일 시스템이 가득 차지 않았는지 확인합니다. root 암호를 사용하여 sulogin 프롬프트에서나 원격으로 로그인합니다. root 및 system/volatile 파일 시스템에서 둘 다 공간을 사용할 수 있는지 확인합니다. 파일 시스템의 하나가 가득 차 있으면 정리하고 시스템을 다시 시작합니다. 파일 시스템이 둘 다 가득 차 있지 않으면 백업에서 저장소를 복원하는 방법 절차에 따릅니다.

다음 중 하나의 원인으로 인해 서비스 구성 저장소가 손상될 수 있습니다.

  • 디스크 실패

  • 하드웨어 버그

  • 소프트웨어 버그

  • 우발적인 파일 덮어쓰기

다음 절차에서는 손상된 저장소를 저장소의 백업 복사본으로 바꾸는 방법을 보여줍니다.

백업에서 저장소를 복원하는 방법

  1. 로그인합니다.

    root 암호를 사용하여 sulogin 프롬프트에서나 원격으로 로그인합니다.

  2. 저장소 복원 명령을 실행합니다.
    # /lib/svc/bin/restore_repository

    이 명령을 실행하면 손상되지 않은 백업을 복원하는 데 필요한 단계를 안내합니다. 저장소 백업의 설명대로 SMF는 저장소의 백업을 자동으로 만듭니다.

    SMF는 영구적 및 비영구적 구성 데이터를 유지 관리합니다. 이러한 두 가지 저장소에 대한 자세한 내용은 서비스 구성 저장소를 참조하십시오. restore_repository 명령은 영구적 저장소만 복원합니다. 또한 restore_repository 명령은 시스템을 재부트하여 비영구적 구성 데이터를 삭제합니다. 비영구적 데이터는 시스템이 재부트 시 필요하지 않은 런타임 데이터입니다.

    시작되면 /lib/svc/bin/restore_repository 명령은 다음과 유사한 메시지를 표시합니다.

    See http://support.oracle.com/msg/SMF-8000-MY for more information on the use of
    this script to restore backup copies of the smf(5) repository.
    
    If there are any problems which need human intervention, this script will
    give instructions and then exit back to your shell. 

    root(/) 파일 시스템이 쓰기 권한으로 마운트된 후 또는 시스템이 로컬 영역인 경우 복원할 저장소 백업을 선택하라는 메시지가 표시됩니다.

    The following backups of /etc/svc/repository.db exists, from
    oldest to newest:
    
    ... list of backups ...

    백업 이름은 백업이 만들어진 유형 및 시간을 기준으로 제공됩니다. boot로 시작하는 백업은 시스템이 부트된 후 저장소에 처음으로 변경 작업을 수행하기 전에 완료됩니다. manifest_import로 시작하는 백업은 svc:/system/manifest-import:default가 프로세스를 마친 후 완료됩니다. 백업 시간은 YYYYMMDD_HHMMSS 형식으로 표시됩니다.

  3. 적당한 응답을 입력합니다.

    일반적으로 가장 최근의 백업 옵션이 선택됩니다.

    Please enter either a specific backup repository from the above list to
    restore it, or one of the following choices:
    
            CHOICE            ACTION
            ----------------  ----------------------------------------------
            boot              restore the most recent post-boot backup
            manifest_import   restore the most recent manifest_import backup
            -seed-            restore the initial starting repository  (All
                                customizations will be lost, including those
                                made by the install/upgrade process.)
            -quit-            cancel script and quit
    
    Enter response [boot]:

    복원할 백업을 지정하지 않고 Enter 키를 누를 경우 []으로 묶인 기본 응답이 선택됩니다. -quit-을 선택하면 restore_repository 스크립트가 종료되고 셸 스크립트로 돌아갑니다.


    주 -  -seed-를 선택하면 seed 저장소가 복원됩니다. 이 저장소는 초기 설치 및 업그레이드 중 사용을 위해 마련되었습니다. 복구 목적으로 seed 저장소를 사용하는 것은 최후의 수단이 되어야 합니다.

    복원할 백업이 선택되면 검증되고 무결성이 검사됩니다. 문제가 있을 경우 restore_repository 명령은 오류 메시지를 출력하고 다른 선택을 요구합니다. 유효한 백업이 선택되면 다음 정보가 출력되고 최종 확인 메시지가 표시됩니다.

    After confirmation, the following steps will be taken:
    
    svc.startd(1M) and svc.configd(1M) will be quiesced, if running.
    /etc/svc/repository.db
        -- renamed --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS
    /system/volatile/db_errors
        -- copied --> /etc/svc/repository.db_old_YYYYMMDD_HHMMSS_errors
    repository_to_restore
        -- copied --> /etc/svc/repository.db
    and the system will be rebooted with reboot(1M).
    
    Proceed [yes/no]?
  4. 결함을 임시로 수정하려면 yes를 입력합니다.

    restore_repository 명령이 나열된 모든 작업을 실행한 후 시스템이 재부트됩니다.

시작 메시징 양 지정

기본적으로 시스템 부트 시 시작되는 각 서비스는 콘솔에 메시지를 표시하지 않습니다. 다음 메소드의 하나를 사용하여 콘솔에 나타나는 메시지와 svc.startd 로그 파일에만 기록되는 메시지를 변경합니다. logging-level 값은 아래 표에 표시된 값의 하나일 수 있습니다.

  • SPARC 시스템을 부트할 때 ok 프롬프트에서 -m 옵션을 boot 명령으로 지정합니다. kernel(1M) 매뉴얼 페이지의 "메시지 옵션"을 참조하십시오.

    ok boot -m logging-level
  • x86 시스템을 부트할 때 GRUB 메뉴를 편집하여 -m 옵션을 지정합니다. Oracle Solaris 11.2 시스템 부트 및 종료 의 부트 시 GRUB 메뉴를 편집하여 커널 인수 추가kernel(1M) 매뉴얼 페이지의 "메시지 옵션"을 참조하십시오.

  • 시스템을 재부트하기 전에 svccfg 명령을 사용하여 options/logging 등록 정보 값을 변경합니다. 이 등록 정보가 시스템에서 변경된 적이 없으면 등록 정보가 종료되지 않고 사용자가 등록 정보를 추가해야 합니다. 다음 예는 자세한 메시징으로 변경됩니다. 변경 사항은 다음에 svc.startd 데몬이 다시 시작될 때 적용됩니다.

    $ svccfg -s system/svc/restarter:default listprop options/logging
    $ svccfg -s system/svc/restarter:default addpg options application
    $ svccfg -s system/svc/restarter:default setprop options/logging=verbose
    $ svccfg -s system/svc/restarter:default listprop options/logging
    options/logging astring     verbose
표 A-1  SMF 시작 메시지 로깅 레벨
로깅 레벨 키워드
설명
quiet
관리 개입이 필요한 오류 메시지를 콘솔에 표시합니다. 또한 이러한 메시지를 syslog/var/svc/log/svc.startd.log에 기록합니다.
verbose
quiet 레벨에서 제공되는 메시징 이외에 시작된 각 서비스에 대한 단일 메시지를 콘솔에 표시하고 관리 개입이 필요하지 않은 오류에 대한 정보를 /var/svc/log/svc.startd.log에 기록합니다.
debug
quiet 레벨에서 제공되는 메시징 이외에 시작된 각 서비스에 대한 단일 메시지를 콘솔에 표시하고 svc.startd 디버그 메시지를 /var/svc/log/svc.startd.log에 기록합니다.

부트할 SMF 마일스톤 지정

시스템을 부트할 때 부트할 SMF 마일스톤을 지정할 수 있습니다.

기본적으로 general/enabled 등록 정보 값이 true인 모든 서비스는 시스템 부트 시 시작됩니다. 시스템을 부트할 마일스톤을 변경하려면 다음 메소드의 하나를 사용합니다. milestone 값은 Table A–2에 표시된 마일스톤 서비스의 FMRI 또는 키워드일 수 있습니다.

  • SPARC 시스템을 부트할 때 ok 프롬프트에서 -m 옵션을 boot 명령으로 지정합니다. kernel(1M) 매뉴얼 페이지의 -m 옵션을 참조하십시오.

    ok boot -m milestone=milestone
  • x86 시스템을 부트할 때 GRUB 메뉴를 편집하여 -m 옵션을 지정합니다. Oracle Solaris 11.2 시스템 부트 및 종료 의 부트 시 GRUB 메뉴를 편집하여 커널 인수 추가kernel(1M) 매뉴얼 페이지의 -m 옵션을 참조하십시오.

  • 시스템을 재부트하기 전에 svcadm milestone 명령을 -d 옵션과 함께 사용합니다. -d 옵션을 사용하거나 사용하지 않고 이 명령은 실행 중인 서비스를 바로 제한하고 복원합니다. -d 옵션을 사용하면 이 명령은 지정된 마일스톤을 기본 부트 마일스톤으로 설정합니다. 이 새로운 기본값은 재부트 시에도 지속됩니다.

    $ svcadm milestone -d milestone

    이 명령은 시스템의 현재 실행 레벨을 변경하지 않습니다. 시스템의 현재 실행 레벨을 변경하려면 init 명령을 사용합니다.

    -s 옵션을 지정하면 svcadm은 마일스톤을 변경하고 돌아가기 전에 지정된 마일스톤에 대한 전환이 완료될 때까지 대기합니다. svcadm 명령은 모든 인스턴스가 지정된 마일스톤에 도달하는 데 필요한 상태로 전환되거나 전환하는 데 관리자 개입이 필요하다고 결정될 때 돌아갑니다. -T 옵션을 -s 옵션과 함께 사용하여 마일스톤 변경 작업을 완료하거나 돌아갈 상한(초)을 지정합니다.

다음 표에서는 해당하는 Oracle Solaris 실행 레벨을 포함하여 SMF 부트 마일스톤에 대해 설명합니다. 시스템의 실행 레벨은 사용자가 사용할 수 있는 서비스와 리소스를 정의합니다. 시스템에는 한 번에 하나의 실행 레벨만 지정할 수 있습니다. 실행 레벨에 대한 자세한 내용은 Oracle Solaris 11.2 시스템 부트 및 종료 의 실행 레벨 작동 방식, inittab(4) 매뉴얼 페이지 및 /etc/init.d/README 파일을 참조하십시오. SMF 부트 마일스톤에 대한 자세한 내용은 svcadm(1M) 매뉴얼 페이지의 milestone 하위 명령을 참조하십시오.

표 A-2  SMF 부트 마일스톤 및 해당 실행 레벨
SMF 마일스톤 FMRI 또는 키워드
해당 실행 레벨
설명
none
 
none 키워드는 마스터 다시 시작 프로그램에 대한 서비스를 제외하고 어떤 서비스도 실행되지 않는 마일스톤을 나타냅니다. none을 지정하면 svc:/system/svc/restarter:default에 대한 서비스를 제외하고 모든 서비스가 일시적으로 사용 안함으로 설정됩니다.
none 마일스톤은 시작 문제를 디버깅할 때 유용할 수 있습니다. 특정 지침에 대해서는 시스템 부트 시 서비스 시작 문제를 조사하는 방법을 참조하십시오.
all
 
all 키워드는 모든 서비스에 종속된 마일스톤을 나타냅니다. all을 지정하면 모든 서비스에 대한 일시적 사용 및 사용 안함 요청이 무시됩니다. 이는 svc.startd에서 사용되는 기본 마일스톤입니다.
svc:/milestone/single-user
s 또는 S
svc:/milestone/single-user:default 및 직접적이나 간접적으로 종속되어 있는 모든 서비스에 대한 일시적 사용 및 사용 안함 요청을 무시합니다. 모든 기타 서비스를 일시적으로 사용 안함으로 설정합니다.
svc:/milestone/multi-user
2
svc:/milestone/multi-user:default 및 직접적이나 간접적으로 종속되어 있는 모든 서비스에 대한 일시적 사용 및 사용 안함 요청을 무시합니다. 모든 기타 서비스를 일시적으로 사용 안함으로 설정합니다.
svc:/milestone/multi-user-server
3
svc:/milestone/multi-user-server:default 및 직접적이나 간접적으로 종속되어 있는 모든 서비스에 대한 일시적 사용 및 사용 안함 요청을 무시합니다. 모든 기타 서비스를 일시적으로 사용 안함으로 설정합니다.

시스템이 현재 부트되어 있는 마일스톤을 확인하려면 svcs 명령을 사용합니다. 다음 예에서는 시스템이 실행 레벨 3, milestone/multi-user-server로 부트되어 있음을 보여줍니다.

$ svcs 'milestone/*'
STATE          STIME    FMRI
online          9:08:05 svc:/milestone/unconfig:default
online          9:08:06 svc:/milestone/config:default
online          9:08:07 svc:/milestone/devices:default
online          9:08:25 svc:/milestone/network:default
online          9:08:31 svc:/milestone/single-user:default
online          9:08:51 svc:/milestone/name-services:default
online          9:09:13 svc:/milestone/self-assembly-complete:default
online          9:09:23 svc:/milestone/multi-user:default
online          9:09:24 svc:/milestone/multi-user-server:default

SMF를 사용하여 시스템 부트 문제 조사

이 절에서는 시스템이 부트 중에 멈추거나 주요 서비스가 부트 중에 시작되지 않을 경우 수행할 작업을 설명합니다.

시스템 부트 시 서비스 시작 문제를 조사하는 방법

시스템 부트 시 서비스를 시작할 때 문제가 발생하면 시스템이 부트 중에 멈출 수도 있습니다. 이 절차는 부트 시 발생하는 서비스 문제를 조사하는 방법을 보여줍니다.

  1. 서비스를 시작하지 않고 부트합니다.

    다음 명령은 svc.startd 데몬이 모든 서비스를 일시적으로 사용 안함으로 설정하고 콘솔에서 sulogin을 시작하도록 지시합니다.

    ok boot -m milestone=none

    boot -m 명령과 함께 사용할 수 있는 SMF 마일스톤 목록은 부트할 SMF 마일스톤 지정을 참조하십시오.

  2. root로 시스템에 로그인합니다.
  3. 모든 서비스를 사용으로 설정합니다.
    # svcadm milestone all
  4. 부트 프로세스가 어디에서 멈추는지 확인합니다.

    부트 프로세스가 멈출 때 svcs -a를 실행하여 어떤 서비스가 실행 중이 아닌지 확인합니다. /var/svc/log의 로그 파일에서 오류 메시지를 찾습니다.

  5. 문제를 수정한 후 모든 서비스가 시작되었는지 확인합니다.
    1. 필요한 모든 서비스가 온라인인지 확인합니다.
      # svcs -x
    2. console-login 서비스 종속성이 충족되었는지 확인합니다.

      이 명령은 콘솔에서 login 프로세스가 실행되는지 확인합니다.

      # svcs -l system/console-login:default
  6. 정상적인 부트 프로세스를 계속합니다.

로컬 파일 시스템 서비스가 부트 중에 실패하는 경우 단일 사용자 로그인을 강제 수행하는 방법

시스템을 부트하는 데 필요하지 않은 로컬 파일 시스템은 svc:/system/filesystem/local:default 서비스로 마운트됩니다. 해당 파일 시스템을 마운트할 수 없는 경우 filesystem/local 서비스가 유지 관리 상태로 전환됩니다. 시스템 시작이 계속 진행되며 filesystem/local에 종속되지 않은 모든 서비스가 시작됩니다. filesystem/local 서비스에 대한 필수 종속성이 있는 서비스는 시작되지 않습니다.

이 절차에서는 서비스 실패 직후 시스템 시작이 계속되도록 두는 대신 sulogin 프롬프트가 나타나도록 시스템 구성을 변경하는 방법을 보여줍니다.

  1. system/console-login 서비스를 수정합니다.
    $ svccfg -s svc:/system/console-login
    svc:/system/console-login> addpg site,filesystem-local dependency
    svc:/system/console-login> setprop site,filesystem-local/entities = fmri: svc:/system/filesystem/local
    svc:/system/console-login> setprop site,filesystem-local/grouping = astring: require_all
    svc:/system/console-login> setprop site,filesystem-local/restart_on = astring: none
    svc:/system/console-login> setprop site,filesystem-local/type = astring: service
    svc:/system/console-login> end
  2. 서비스를 새로 고칩니다.
    $ svcadm refresh console-login

    system/filesystem/local:default 서비스에서 실패가 발생하면 svcs -vx 명령을 사용하여 실패를 식별합니다. 실패가 해결된 후 다음 명령을 사용하여 오류 상태를 지우고 시스템 부트를 계속할 수 있습니다.

    $ svcadm clear filesystem/local

inetd 서비스를 SMF 서비스로 변환

시스템의 inetd.conf 파일에는 항목이 포함되지 않아야 합니다. inetd.conf 파일에는 이 파일에 더는 직접 사용되지 않는 레거시 파일이라는 주석만 포함되어야 합니다. inetd.conf 파일에 항목이 포함되어 있으면 이 절의 지침에 따라 이러한 구성을 SMF 서비스로 변환합니다. inetd.conf 파일에 구성되어 있지만 SMF 서비스로 구성되지 않은 서비스는 사용할 수 없습니다. inetd.conf 파일에 구성되어 있는 서비스는 inetd 명령으로 직접 다시 시작되지 않습니다. 대신에 inetd 명령이 변환된 서비스에 대한 위임된 다시 시작 프로그램입니다.

초기 시스템 부트 중에 inetd.conf 파일의 구성이 SMF 서비스로 자동으로 변환됩니다. 초기 시스템 부트 후에 IPS(Image Packaging System, 이미지 패키징 서비스) 패키지가 제공하지 않는 추가 소프트웨어를 설치하여 inetd.conf 파일에 항목을 추가할 수 있습니다. IPS 패키지가 제공하는 소프트웨어에는 필수 SMF 매니페스트가 포함되고 해당 SMF 매니페스트는 올바른 등록 정보 값을 사용하여 해당 서비스 인스턴스를 인스턴스화합니다.

시스템의 inetd.conf 파일에 항목이 포함되어 있으면 inetconv 명령을 사용하여 해당 구성을 SMF 서비스로 변환합니다. inetconv 명령은 inetd.conf 항목을 SMF 서비스 매니페스트 파일로 변환하고 해당 매니페스트를 SMF 저장소로 가져와 서비스 인스턴스를 인스턴스화합니다. 명령 옵션에 대한 자세한 내용과 명령 사용 예를 보려면 inetconv(1M) 매뉴얼 페이지를 참조하십시오.

새 SMF 매니페스트의 이름은 inetd.conf 항목의 service_name을 통합합니다. inetd.conf 파일의 항목은 새 서비스 인스턴스의 등록 정보로 저장됩니다. 새 SMF 매니페스트는 등록 정보 그룹과 등록 정보를 지정하여 inetd.conf 항목에 나열된 작업을 정의합니다. inetconv 명령을 실행한 후 svcssvcprop 명령을 사용하여 새 서비스 인스턴스가 생성되고 올바른 등록 정보 값을 포함하는지 확인합니다.

inetd 명령은 SMF 인터넷 서비스에 대한 위임된 다시 시작 프로그램입니다. 이러한 서비스를 관리하는 데 inetd 명령을 직접 사용하지 마십시오. inetadm 명령을 옵션이나 피연산자 없이 사용하여 inetd로 제어되는 서비스 목록을 확인합니다. inetadm, svcadmsvccfg 명령을 사용하여 이 변환된 서비스를 구성하고 관리합니다.

inetconv 명령은 입력 inetd.conf 파일을 수정하지 않습니다. inetconv를 성공적으로 실행한 후 inetd.conf 파일에서 항목을 수동으로 삭제해야 합니다.

이미 SMF 서비스로 변환된 inetd 서비스를 구성하는 방법에 대한 자세한 내용은 inetd로 제어되는 서비스 수정을 참조하십시오.