728x90
반응형
Solaris 10부터 SMF 라는 개념이 생겼는데, 쉽게 말하면 서비스를 관리하는 데몬? 정도 이다.. 

Linux 에서는 전통적으로 "service sshd restart" 등 service 라는 명령어가 있듯이 Solaris 에서는 본 문과 같이 서비스를 관리한다.


1.     SMF(Solaris Management Facility) 란?
Solaris 10에서는 SMF로 시작 스크립트를 대신하고 체계적인 관리(서비스 비정상 종료시 재시작 등) 및 시스템 구동에서 스크립트에 알 수 없는 오류 발생하였을 때 
가시적으로 쉽게 감지하기 위해 만들어진 서비스이다. Solaris 10은 9과 달리 SMF를 통해 서비스가 관리되기 때문에 /etc/init.d에 시작 스크립트가 거의 없다. 
하지만 일부 9의 업데이트 버전에 따라 지원할 수도 있다.

즉 윈도우 OS의 제어판 > 관리도구 > 서비스 툴과 비슷한 기능을 수행한다.



2.     SMF(Solaris Management Facility) 동작 여부 확인
[t5120:/]ps -ef | grep svc
root     7     1   0 02:04:49 ?        0:10 /lib/svc/bin/svc.startd -> 요청에 따라 시작과 중지를 담당
root     9     1   0 02:04:49 ?        0:33 /lib/svc/bin/svc.configd -> 요청에 따라 저장소에 접근
root   255     1   0 02:05:06 ?           0:00 /lib/svc/method/iscsi-initiator

[t5120:/]regadm status
Solaris Auto-Registration is currently { online | enable }

ㆍ만약 # regadm status  명령 시 offline 혹은 disable 일 때 조치 방법
[t5120:/]regadm enable  ----> 여러 번 해줘야 online으로 바뀐다.


3.     SMF 관리
svcs : 등록되어 있는 서비스의 목록과 상태를 보여주는 명령
--> [t5120:/]svcs –option { 특정 FMRI }

svcadm : 등록되어 있는 서비스를 시작, 정지, 재기동 하는 명령
--> [t5120:/]svcadm –option state { 특정 FMRI }

svccfg : 서비스의 등록, 수정, 삭제를 하는 명령
--> [t5120:/]svccfg { import(입력) | export(출력) | modify(수정) | delete(삭제) } 설정파일.xml

inetadm : inetdconf를 대신하여 inet 관련(네트워크) 서비스들을 제어한다.
--> [t5120:/]inetadm –option { 특정 FMRI }

FMRI(Fault Management Resource Identifier)
ㆍSMF에 등록된 서비스의 고유 키를 말한다. 이 키는 svcs, svccfg, svcadm 명령에 의해 사용된다. 현재 시스템에 등록된 FMRI는 svcs –a 명령을 통해 전부 확인할 수 있다.
ㆍFMRI는 [스키마:서비스명:인스턴트명] 형식으로 이뤄진다.
ㆍ인스턴스명이 default인 경우 보통 생략된다.
legacy_run      0:17:37 lrc:/etc/rc2_d/S10lu
disabled        0:17:34 svc:/network/time:stream
㉠             ㉡   ㉢        ㉣      ㉤

㉠ : 해당 서비스의 state
㉡ : start time
㉢ : SMF에 관리되는 서비스는 svc로 표기되고, lrc는 legacy process란 뜻
㉣ : svc 경우는 서비스 인스턴스를 의미하고,
legacy의 경우 스크립트를 관리하는 디렉토리와 서비스 이름을 뜻함.
㉤ : 서비스 명(legacy는 없다)

설정에 문제가 있거나, 특성 서비스가 실행이 안되면 로그는 /var/svc/log에 기록된다.



4.     SMF 명령 이용 방법


ㆍsvcs 명령을 통해 서비스의 목록과 상태를 확인할 수 있다.
[t5120:/]svcs –option { 특정 FMRI }
options설명
-astatus에 상관없이 전체 서비스 보기, 생략 시 enable만 출력한다.
-xstatus가 enable이지 않을 것들만 출력
-vverbose(자세히 보기)
-l FMRI특정 FMRI(서비스)의 모든 정보 보기(-v 옵션 보다 강력함)
-d FMRI특정 FMRI(서비스) 의존하고 있는 모든 서비스 보기
Lists a services dependencies
-D FMRI특정 FMRI(서비스)가 실행한 데몬 및 자식 프로세스 서비스 보기(FMRI 의존하고 있는 서비스 보기)
Lists a services dependents
-p 모든 서비스에 관련된 PID를 출력


ㆍsvcs 명령에서 출력된 STATE(상태 값) 정의
state설명
Uninitialized모든 인스턴스가 초기화되지 않은 상태를 의미, 해당 서비스의 구성 정보가 아직 로드되지 않았으며, 아직 구동되지 않는 상태를 의미한다. SMF 데몬에 의해 disable, offline으로 변경될 수 있다.
Offline해당 인스턴스는 활성화 되었지만 구동되지 않은 상태를 의미, 인스턴스가 시작 메소드 동앙네 발생한 에러 또는 의존성 문제로 발생된 상태를 나타낸다.
Online해당 서비스가 활성화되어 있으며, 정상적으로 구동 중인 상태
Disabled해당 서비스가 관리자에 의해 disable 되었거나, 해당 서비스 인스턴스의 설정 파일에 의해 disabled로 표시된 경우. 서비스가 구동되지 않았고, 비활성화된 상태
Degraded서비스는 활성화되었지만, 일부 실패로 인해 제한적으로 구동되는 상태, 거의 대부분이 잠시 후에 다른 상태로 변환된다.
Maintenance서비스는 활성화되었지만, 서비스를 실행할 수 없으며, 관리자에 의해 서비스와 관련된 설정을 수정하여야 한다.
Legacy_runSMF에 의해 관리되지는 않는 레거시 서비스를 사용하는 상태의 서비스, 보통 /etc/rc%.d 에서 실행된 스크립트


ㆍsvcadm 명령을 사용하여 서비스에 state를 변경할 수 있다.
[t5120:/]svcadm –option state { 특정 FMRI }
options설명
 -v수행 상황을 화면으로 출력
 -renable 명령(state)에 대해서만 적용되고, 의존되는 서비스 모두를 enable 시킨다.
-senable, disable 명령(state)에 대해 적용되고, 서비스의 enable/disable을 기다리지 않고 svcadm 명령이 종료됨 
 -tenable, disable, mark 명령(state)에 대해 적용되고,해당 서비스는 재시작 후에 enable, disable, mark 명령이 수행된다.
-dmilestone 명령어에 대해 적용되고, 기본 마일 스톤으로 지정

state설명
enable해당 FMRI(서비스)의 인스턴스 state를 활성화
disable해당 FMRI(서비스)의 인스턴스 state를 비활성화
restart해당 FMRI(서비스) 인스턴스를 재기동
refresh해당 FMRI(서비스)의 인스턴스 구성 정보를 재로딩
clearmaintenance 상태인 서비스를 클리어를 줌으로서 enable 명령을 줄 수 있다.
markdebug(디버그)용도로 서비스의 상태를 변경할 수 있다.
milestone
시스템에 설정되어 있는 서비스를 특정 용도에 맞게 실행시킨다. 
S레벨 : svc:/milestone/single-user:default
2레벨 : svc:/milestone/multi-user:default
3레벨 : svc:/milestone/multi-user-server:default

 ※ milestone 이란?
Milestone 이란 여러 서비스들을 묶은 특별한 서비스 타입을 의미한다. 솔라리스10 버전 이전에 런 레벨과 유사한 개념으로, 시스템은 특정 시스템 상태에 이르기 위해서는 실행하려는 서비스들의 정의가 필요하고 이러한 서비스들은 계층적 구조를 가짐으로서 실행된다.



ㆍsvccfg 명령 사용하여 SMF에 서비스를 등록, 수정, 삭제를 할 수 있다.
[t5120:/]svccfg { import(입력) | export(출력) | modify(수정) | delete(삭제) } 설정파일.xml

ㆍxml 파일로 SMF 등록하는 절차
순서설명
1해당 응용 프로그램의 xml 파일을 /var/svc/manifest/application 경로에 복사한다.
2해당 응용 프로그램의 기동/종료 스크립트를 /lib/svc/method 경로에 복사한다.
3# cd /var/svc/manifest/application   ---> 해당 응용 프로그램 xml 파일 경로로 이동
4# svccfg validate 응용_프로그램.xml ---> 응용 프로그램 xml 파일을 svccfg 명령을 통해 검증
5
# svccfg import 응용_프로그램.xml
---> 응용 프로그램 xml 파일을 svccfg 명령에 import 옵션으로 입력
6# svcs –a | grep 응용_프로그램  ---> svcs 명령을 통해 정상적으로 SMF에 등록되었는지 확인
7# svcadm enable svc:응용_프로그램 ---> svcadm 명령을 통해 state를 enable로 변경


ㆍinetadm 명령을 사용하여 network서비스들의 enabled와 property를 변경할 수 있다.
[t5120:/]inetadm –option { 특정 FMRI }
options설명
 -e특정 FMRI에 enabled에 값을 enabled로 변경한다.
-d특정 FMRI에 enabled 값을 disabled로 변경한다.
-l특정 FMRI에 property 정보를 모두 출력한다.
-m특정 FMRI에 property 정보를 수정한다.

 Ex) # inetadm –m network/telnet:default tcp_wrappers=TRUE


728x90
반응형

+ Recent posts