샤브의 블로그 RSS 태그 관리 글쓰기 방명록
2010-09-03 02:02:04

Service Management Facility

1. SMF 특징(SMF Features)

가. (Legacy 스크립트) SMF 서비스(새로운 서비스 관리 방식)와 Legacy Run Control스크립트 (이전 서비스 관리 방식, SMF 서비스에 의해 관리 되지 않는다.)를 둘 다 사용할 수 있다.

나. (서비스 restart) 서비스의 의존성 순서를 점검하고, 자동으로 실패한 서비스를 restart 한다.

# svcs -a | grep sendmail/* sendmail 서비스 online 상태 */

# pgrep -lf sendmail /* 정상적으로 데몬이 떠 있는 상태 */

# pkill -9 sendmail /* sendmail 데몬을 강제 종료 */

# pgrep -lf sendmail /* 데몬 restart */

다. (SMF 서비스 관리에 대해) svcadm 명령어를 통해 disable/enable 할 수 있으며, 이런 경우 영구적으로 설정 된다. -t 옵션으로 현재만 서비스의 상태를 disable/enable 할 수 있다

라. (부팅시의 메시지) 부팅할 때 콘솔 출력 메시지를 자세하게 보여주지 않는다.

마. (서비스 설정 저장소) service configuration repository는 서비스마다 snapshot 설정을 유지하며, 최근에 성공했던 snapshot 설정으로 돌리는 것이 가능하다.

바. (서비스 설정 snapshot) 서비스 설정에 대한 자동 snapshot 기능에 의해 서비스 설정에 대한 쉬운 백업, 복구, 이전 상태로 변경할 수 있다.

사. (서비스 의존성 관계) 서비스간의 의존성 관계의 정의 때문에, 서비스간의 이상 관계를 쉽게 발견할 수 있도록 해 주거나, 서비스를 병렬적으로 수행할 수 있도록 해 준다. 그래서 부팅이 빨라졌다.

 

2. SMF 아키텍처(SMF Architecture)

- SMF 구성 요소(Main components of SMF)

● 서비스 추상화(Service abstraction)

● 서비스 저장소(Repository of service information, (예) /etc/svc/repository.db)

● 저장소 관리 데몬(Daemon to access the repository, svc.configd)

● 저장소 접근 API(APIs for access to the repository)

● 메인 재시작 데몬(Master restarter daemon, svc.startd)

● 위임된 재시작 데몬(Delegated restarters, (예) inetd)

● 명령행 툴(Command line tools, (예) svcs, svcadm, svccfg)

 

3. SMF 서비스(SMF Services)

가. 서비스의 종류(Categories of Service)

milestone (런레벨)

system (시스템)

network (네트워크)

application (응용프로그램)

legacy (이전 방식)

● device (디바이스)

● site (사이트)

● platform (플랫폼)

[참고] svcadm milestone

# svcadm milestone single-user(런레벨 1)

# svcadm milestone multi-user (런레벨 2)

# svcadm milestone multi-user-server (런레벨 3, text)

# svcadm milestone all (런레벨 3, GUI)

 

# svcadm milestone -d single-user ; reboot (런레벨 1)

# svcadm milestone -d multi-user ; reboot (런레벨 2)

# svcadm milestone -d multi-user-server ; reboot (런레벨 3, text)

# svcadm milestone -d all ; reboot (런레벨 3, GUI)

 

[EX] GUI / TEXT Mode 전환

(On Linux : GUI / TEXT Mode 전환 : Runleve 3 <-> Runlevel 5)

# svcadm milestone -d multi-user-server

# svcadm milestone multi-user-server

 

# svcadm milestone -d all

# svcadm milestone all

나. 서비스 URI문법

FMRI(Fault Managed Resource ID)

(FMRI EX1) svc:/network/http:apache2

● svc SMF에 의해 관리되는 서비스 prefix, SMF에 의해 관리 함

/network/http Service Name (network: Service Type, http: Service Name)

apache2 Instance Name

 

(FMRI EX2) lrc:/etc/rc3_d/S90samba

● lrc prefix lrc(Legacy Run Control), SMF에 의해 관리 되지 않음

● /etc/rc3_d /etc/rc3.d 디렉토리

● S90samba S90samba 스크립트

- 다음의 FMRI 형식은 모두 같은 의미이다.

● svc:/system/console-login:default

● svc://localhost/system/console-login:default

● system/console-login:default

● console-login:default

● console-login

- vold 데몬 관리 예

# svcadm disable svc:/system/filesystem/volfs:default

= svcadm disable system/filesystem/volfs:default

= svcadm disable filesystem/volfs:default

= svcadm disable volfs:default

= svcadm disable volfs

다. 서비스 상태

- Disabled -> (Offline -> Maintenance) -> Online

Uninitialized

모든 인스턴스가 초기화 되지 않은 상태, 서비스의 구성정보가 아직 로드 되지 않았으며, 아직 구동되지 않은 상태를 의미 한다.

Offline

해당서비스 인스턴스는 활성화 되었으나 구동되지 않은 상태, 인스턴스가 시작 메소드(실행 메소드, Method) 동안에 발생한 에러 또는 의존성 문제로 발생된 상태를 의미한다.

Online

해당 서비스가 활성화 되었으며, 성공적으로 구동되어진 상태이다.

Disabled

해당 서비스가 관리자에 의해 비활성화 되거나 서비스 인스턴스의 구성 데이터에 disable로 표시된 경우.

Degraded

서비스는 활성화 되었으나, 일부 실패들로 인한 제한적으로 구동되어 있는 상태이다

Maintenance

서비스 인스턴스는 관리자에 의해서만 해결이 가능한 에러를 만난 경우의 상태이다. 이 상태는 서비스가 불가능하고, 관리적 활성화 또는 관리자에 의한 직접적인 관리 요구를 필요로 한다. (# svcs -xv, Web page, Log)

라. 서비스 구성요소

/etc/svc

repository.db(svc.configd) <----- svc.startd ----- /var/svc/profile, /var/svc/manifest

 

generic.xml

(예) ftp.xml

1) svc.startd Daemon

- 시스템의 서비스를 책임지는 Daemon. Master Daemon 이라고도 한다.

2) /etc/svc/repository.db

- 서비스의 정보를 담고 있는 파일. 부팅 할 때 이 파일의 내용을 가지고 서비스를 실행한다.

- /lib/svc/seed/global.db 파일은 비어있는 파일이다.

- Solaris를 설치할 때 global.db 파일을 repository.db 파일로 복사한다. 

[참고] 부팅하는 과정에서 repository.db 파일 이상

[문제] 부팅하는 과정중 에러 메세지

svc.configd: Fatal error: /etc/svc/repository.db: unable to open database /etc/svc/repository.db

Requesting System Maintenance Mode

svc.configd exited with status 102 (database initialization failure)

Root password for system maint

enance (control-d to bypass): (관리자 암호 입력)

single-user privilege assigned to /dev/console

Entering system Maintenance Mode

#

 

부팅시에 위와 같은 에러가 발생하게 된다면 아래와 같은 3가지 방법을 통해 해결이 가능하다.

 

[해결1]

# mount -o remount,rw /

# cp /lib/svc/seed/global.db /etc/svc/repository.db

# reboot

 

[해결2]

# /lib/svc/bin/restore_repository

......

Enter response [boot]: -seed-

 

[해결3]

ok boot -m seed

3) SMF Profile & SMF Manifest

가) SMF Profile

(1) 시스템이 부팅될 때 활성화 되는 서비스 인스턴스들의 목록

(2) 부팅될 때 사용 되는 파일은 아니다. 부팅될 때는/etc/svc/repository.db 파일을 사용

(3) 초기 repository.db 파일의 서비스 목록과 부팅시 활성화할 목록을 만들때 사용

(4) repository.db에 로딩하기 위해서는 다음과 같이 사용할 수 있다.

(예) # svccfg apply /var/svc/profile/generic.xml

(5) SMF Profile은 /var/svc/profile/generic.xml파일이다.

- 이 파일은 generic_open.xml or generic_limited_net.xml 파일에 심볼릭 링크 걸려 있다.

- generic_open.xml 파일을 사용하면 일반적인 원격 서비스는 모두 enable

- generic_limited_net.xml 파일을 사용하면 ssh 서비스를 제외한 원격서비스는 disable

나) SMF Manifests

(1) XML 형식의 파일로 구성된 서비스 또는 서비스 인스턴스의 관계 설정 파일로 Property의 집합으로 구성된다.

(2) 서비스에 대한 서비스명, 서비스 start/stop Method, 또는 여러 가지 목록이다.

(3) 모든 Manifest는 /var/svc/manifest directory에 위치하고, 이 directory의 로컬 그룹 서비스의 서브디렉토리들을 포함할 수 있다.

4) /var/svc/log Directory

가) /var/svc/log -> SMF log file 존재(누적 로그 기록)

나) 부팅시에 Service Instance 실행시 에러가 있는지 확인

# egrep -l '(ERROR|WARNING)' /var/svc/log/*

마. SMF 서비스 관리(SMF Service Management)

1) inetd Daemon

가) inetd Daemon은 SMF의 일부로 동작한다. (svc:/network/inetd:default)

나) network/inetd:defualt는 svc.startd에 의해서 동작하는 서비스 인스턴스이다.

다) inetd Daemon은 더 이상 /etc/inetd.conf 파일을 읽지 않는다.

2) svcs CMD

명령어 형식

# svcs (-> disable 되어진 서비스는 출력되지 않음)

# svcs -a (svcs -a | grep telnet, svcs telnet)

# svcs -l svc:/system/filesystem/minimal:default (svcs -l minimal)

# svcs -p "*nfs*" (-p : process)

# svcs -d /system/filesystem/minimal:default (-d : dependency)

# svcs -D /system/filesystem/minimal:default

# svcs -xv (svcs -x, svcs -xv)

옵션

-a 모든 인스턴스 출력(활성화/비활성화), 상태와 시간으로 정렬

-x 에러와 상태를 출력, 장애 처리에 활용(부팅시 에러 출력)

-d 현재 서비스가 의존하는 서비스 정보 출력

-D 현재 서비스에 의존적인 서비스 정보 출력

-p 프로세스 정보 출력

-v 상세 정보 출력

-l 특정 서비스 목록 정보 출력

가) 서비스 전체 목록 확인

# svcs

- disable 된 서비스는 확인 안됨

legacy_run 23:19:24 lrc:/etc/rc2_d/S81dodatadm_udaplt

legacy_run 23:19:24 lrc:/etc/rc2_d/S05vmware-tools

..... (중략) .....

online 23:17:16 svc:/system/svc/restarter:default

online 23:17:20 svc:/network/pfil:default

online 23:17:20 svc:/network/tnctl:default

..... (이하생략) .....

# svcs -a

- disable 된 서비스도 확인 가능

legacy_run 23:19:24 lrc:/etc/rc2_d/S70uucp

..... (생략) .....

disabled 23:17:18 svc:/network/rpc/keyserv:default

disabled 23:17:18 svc:/network/winbind:default

..... (생략) .....

online 23:18:38 svc:/system/coreadm:default

online 23:18:38 svc:/system/resource-mgmt:default

online 23:19:29 svc:/system/basicreg:default

online 23:19:45 svc:/system/boot-archive-update:default

offline 23:17:18 svc:/system/console-login:default

나) svcs 명령어의 -p 옵션을 통해 process 정보 확인

# svcs -p "*nfs*" (# svcs -p *nfs*)

STATE

online

online

STIME

23:18:59

23:18:59

23:18:59

23:18:59

FMRI

svc:/network/nfs/status:default

412 statd

svc:/network/nfs/cbd:default

417 nfs4cbd

→ (# svcs -a | grep nfs) + # pgrep -lf nfs

다) svcs 명령어 통한 서비스간의 의존성 관계 확인

- minimal 서비스는 Service1이 online 되어 있어야만 동작을 하는(online 상태) 서비스라면, minimal 서비스는 Service1의존적인(Dependency) 서비스라고 표현하고, svcs 명령어에 -d 옵션을 통해서 확인이 가능하다.

- minimal 서비스가 online 상태로 되어 있어야만 Service2 서비스가 동작(online 상태)하는 서비스라면, Service2 서비스는 minimal의존적인 서비스라고 표현하고, svcs 명령어에 -D 옵션을 통해서 확인이 가능하다.

Service1

filesyste/minimal:default

Service2

-d

-D

# svcs -d minimal

STATE

online

online

STIME

23:18:31

23:18:37

FMRI

svc:/system/filesystem/usr:default

svc:/system/device/local:default

# svcs -D minimal

STATE

disabled

disabled

disabled

disabled

disabled

disabled

online

online

online

online

online

online

offline

STIME

23:17:17

23:17:17

23:17:17

23:17:18

23:17:18

23:17:18

23:18:59

23:18:59

23:18:59

23:18:59

23:19:11

23:19:15

23:17:18

FMRI

svc:/network/nis/client:default

svc:/network/dns/client:default

svc:/network/nis/server:default

svc:/network/ldap/client:default

svc:/system/mdmonitor:default

svc:/system/pools:default

svc:/network/nfs/cbd:default

svc:/system/sysidtool:system

svc:/network/nfs/nlockmgr:default

svc:/network/nfs/mapid:default

svc:/application/management/snmpdx:default

svc:/system/fmd:default

svc:/system/console-login:default

# svcs -l minimal

fmri

name

enabled

next_state

state_time

alt_logfile

restarter

dependency

dependency

svc:/system/filesystem/minimal:default

minimal file system mounts

true

none

Wed Oct 08 23:18:37 2008

/etc/svc/volatile/system-filesystem-minimal:default.log

svc:/system/svc/restarter:default

require_all/none svc:/system/filesystem/usr (online)

require_all/none svc:/system/device/local (online)

라) svcs 명령어를 통해 부팅시의 에러 메시지 확인

# svcs -x

svc:/application/print/server:default (LP print server)

State: disabled since Fri Dec 05 15:05:05 2008

Reason: Disabled by an administrator.

See: http://sun.com/msg/SMF-8000-05

See: lpsched(1M)

Impact: 2 dependent services are not running. (Use -v for list.)

# svcs -xv

svc:/application/print/server:default (LP print server)

State: disabled since Fri Dec 05 15:05:05 2008

Reason: Disabled by an administrator.

See: http://sun.com/msg/SMF-8000-05

See: man -M /usr/share/man -s 1M lpsched

Impact: 2 dependent services are not running:

svc:/application/print/rfc1179:default

svc:/application/print/ipp-listener:default


출처 : 광수의 작은세상(http://blog.daum.net/oh0625/7502876)

'Device & Language > Solaris 10' 카테고리의 다른 글

useradd – administer a new user login on the system  (0) 2010.09.03
속성  (0) 2010.09.03
Hardware Diagnostics for Sun Systems  (0) 2010.09.01
manpages section 1M: System Administration Commands  (0) 2010.09.01
솔10 svcadm  (0) 2010.09.01