 |  |
|
난이도 : 중급 Adam Cormany, National Data Center Manager, Scientific Games Corporation
옮긴이: 박재호 이해영 dwkorea@kr.ibm.com
2008 년 9 월 23 일 컴퓨터가 똑딱거리며 동작하거나 유닉스(UNIX®) 서버가 동작하는 원리가 궁금합니까? 컴퓨터에 붙어 있는 전원 버튼을 누를 때 무슨 일이 일어나는지 궁금하게 생각하는 사람을 위해, 여기에 내부 모습을 공개합니다. 이 기사는 다양한 부트 유형, IBM® AIX® 부트목록 관리 방법, AIX 부트 절차를 설명합니다. 이 기사를 읽고 나면, 서버가 시작할 때 정확하게 무슨 일이 일어나는지 좀 더 제대로 이해하게 될 것입니다.
소개
AIX 운영체제는 IBM이 특별히 만든 유닉스 변종이다. IBM은 1986년 AIX 버전 1.0을 출시했고, 지난 22년 동안 여러 차례 개선했으며(이 글을 쓰는 시점에서 최신 버전은 AIX 6.1이다), 튼튼한 유닉스 시스템으로 자라났다.
AIX와 RS/6000 용어를 섞어 쓰는 경우도 있지만, 같은 개념이 아니다. AIX는 유닉스 운영체제이며, IBM RS/6000®은 RISC(Reduced Instruction Set Computer) 서버 하드웨어로 여기서 AIX가 돌아간다. IBM은 초기에 IBM 6150 RT 워크스테이션에서 AIX를 선보였다. 세월이 흐르면서 AIX는 IBM PS/2 인텔(Intel®) 386 컴퓨터, IBM 메인 프레임, POWER 아키텍처에서 동작하도록 발전해나갔다. 지금 AIX는 IBM System p™ 시리즈(과거 RS/6000)와 System i™ 시리즈(과거 IBM iSeries®와 AS/400®) 컴퓨터에서 동작한다.
AIX 부트 방법
AIX 운영체제를 부팅하는 방법은 일반 부트, 단독 부트, 네트워크 부트라는 세 가지 유형이 있다.
일반 부트
전형적인 AIX 부트 방법은 일반 부트 옵션이다. 일반 부트 옵션은 AIX를 지역 디스크에서 서버로 부트한다. 부트가 끝나면 운영체제는 다중 사용자 모드로 동작한다.
단독 부트
AIX 시스템에서 다음 부트 유형은 단독 부트이며, 유지 보수 모드 옵션으로 부른다. 단독 부트 옵션은 일반 부트 옵션과 비슷하지만, 다중 사용자 모드로 시작하는 대신에 시스템은 단독 사용자 유지보수 모드로 시작한다. AIX 시스템에서 여러 가지 방법으로 단독 부트가 가능하다. 이동식 매체(테이프나 CD)를 통해 서버를 부팅하거나, 초기 하드웨어 주변 장치 점검 과정에서 키보드가 초기화된 다음에 F5(하드웨어에 따라 F6이 될지도 모른다)를 누르거나, 아니면 (파일 시스템 손상과 같이) 문제가 발생해 일반 부트로 들어가기 앞서 시스템 복구가 필요한 경우가 대표적이다. 단독 부트는 소프트웨어 설치, 문제 해결, 진단 수행, 다른 사용자가 없는 상황에서 자원을 잠궈버릴 위험을 줄인 상태에서 하드웨어 설정과 같은 작업을 허용한다.
네트워크 부트
마지막 부트 유형은 네트워크 부트 옵션이다. 물론 일반 부트 옵션과 비슷하며, AIX 시스템은 다중 사용자 모드로 부트한다. 하지만 이 옵션을 사용하면, AIX는 부트 정보를 네트워크에 존재하는 다른 서버에서 받는다.
부트 목록과 관리 기법
다양한 매체로 AIX를 부트할 수 있기 때문에, 다양한 유형을 관리할 방법이 있어야 한다. 여기서 부트 목록이 이런 문제를 해결한다. 부트 목록은 시스템이 제공하는 각 부트 방법에 대한 모든 부트 디바이스 목록을 관리한다.
특정 부트 방법에 대한 부트 목록을 보려면 간단하게 스위치 -o를 붙인다. 다음 예제에서 일반 부트 방법을 표시한다. 서버가 부트를 시도할 순서는 첫 번째 지역 논리 디스크(hdisk0), 그 다음으로 CD(cd0), 마지막으로 테이프(rmt0) 순이다.
# bootlist -m normal -o
hdisk0
cd0
rmt0
|
특정 부트 방법에 대한 부트 목록을 설정하려면 -m 스위치를 입력하고 적절한 부트 방법 다음에 원하는 부트 디바이스를 지정한다. 다음에 제시하는 예는 일반 부트 목록을 hdisk0, cd0, cd1 순서로 서버가 부트하도록 변경한다.
bootlist -m normal hdisk0 cd0 cd1
|
직전 예제에서 살펴본 바와 같이, -m 스위치는 부트 방법을 변경하거나 출력할 때 확인을 위해 매번 사용했다. 이 옵션은 normal, service(단독 사용자 유지보수 모드), both(normal과 service), prevboot(직전 부트 목록)으로 변경을 허용한다.
AIX 부트 순서
부트 방법을 선택했다면, 서버 전원이 들어온 다음에 일어나는 실제 사건 순서를 살펴볼 시간이 왔다.
참고: 이 기사 나머지 부분에서, 서버를 일반 부트 모드로 부트했다고 가정한다.
POST
전원을 켜서 서버가 시작할 때, 문제점이 없는지 서버 하드웨어를 검사하고 가능한 문제점이 없는지 점검한다. 이 단계를 POST(Power-On Self-Test)라고 부른다. 서버가 이 단계를 밟고 있을 때 POST는 메모리, 키보드, 사운드 카드, 네트워크 디바이스를 점검한다. 이 시점에서 단독 모드(단독 사용자 유지보수)로 들어가고 싶다면, 키보드 초기화 이후에 F5나 F6을 누른다. 하지만 이 기사에서는 어떤 키도 누르지 않기에 서버는 정상 부트 모드로 부트가 이뤄진다.
부트스트랩
POST 과정을 마친 다음에, 좀 더 큰 프로그램을 적재하기 위해 사용되는 작은 프로그램인 부트 스트랩을 메모리에 올린다. 그러고 나서 부트 스트랩은 부트 논리 볼륨(BLV, Boot Logical Volume)을 메모리에 올린다. BLV를 메모리에 올린 다음에 커널은 부트 과정을 넘겨 받는다.
BLV와 bosboot 명령어
BLV는 AIX에서 부트 가능한 이미지를 포함하는 위치다. 일반적으로 BLV는 서버의 지역 디스크에서 발견된다. BLV는 AIX 커널, rc.boot 파일, 부트 과정에 필요한 명령어, ODM(Object Data Manager)을 축약한 버전을 포함한다.
부트 가능한 이미지를 만들기 위해 bosboot 명령어를 사용한다. bosboot를 사용해 램 디스크, 파일 시스템, 커널에서 부트 파일(즉, 부팅 가능한 이미지)을 만든다. 부팅 가능한 이미지는 서버의 부트 ROS(Read-Only Storage)/EPROM(Erasable Programmable Read-Only Memory)과 인터페이스하도록 만들어진다.
다음 예제는 시스템을 부트할 지역 고정 디스크에 있는 기본 BLV에서 부팅 가능한 이미지를 생성하는 방법을 보여준다.
AIX 커널
BLV에 저장된 AIX 커널은 /(루트), /usr, /var 파일 시스템을 램에 생성한다. 커널과 함께 이 파일 시스템은 운영체제 부트 절차 도중에 램에 처음으로 저장된다. 파일 시스템이 램에 있기 때문에 BLV 외부에 있는 어떤 파일 시스템에도 접근하지 못한다.
파일 시스템이 RAM에 올라온 다음에, 커널은 부트 절차를 넘겨 받을 init 프로세스를 수행한다.
init 프로세스
AIX 커널은 프로세스 init을 프로세스 식별자(PID) 1로 메모리에 올린다. 이 프로세스는 AIX에서 동작하는 다른 모든 프로세스의 어버이나 루트 프로세스다. init 프로세스가 메모리에 올라와서 부트 과정을 시작하면 init은 rc.boot를 호출한다.
rc.boot 파일
rc.boot 파일은 AIX 부트 과정에서 세 가지 중요한 수행 절차를 포함한다. rc.boot에서 첫 번째 수행 절차는 운영체제 부트를 준비하기 위해 시스템 하드웨어를 초기화한다. 시스템을 시작하기 위해 꼭 필요한 몇몇 디바이스를 이 시점에서 환경 설정 관리 명령어인 cfgmgr로 설정한다.
rc.boot에서 두 번째 수행 절차는 파일 시스템 /, /usr/, /var와 페이징 영역 마운트다. 이 파일 시스템을 마운트하고 나면, init은 디스크에 존재하는 init으로 대체되며(PID는 1), 램 내용은 지워진다.
rc.boot에서 세 번째이자 마지막 수행 절차는 실제 init 프로세스를 디스크에서 수행한다. init을 수행할 때, /etc/inittab을 읽어 각 항목을 수행한다. 이 과정에서, /tmp 파일 시스템은 이제 디스크로 마운트된다. 시스템이 부트 과정에서 마지막 구간을 통과하면, rc.boot에서 첫 번째 수행 절차에서 설정하지 않은 남은 디바이스에 대해 cfgmgr 명령어를 다시 한번 실행한다.
/etc/inittab 파일
init 프로세스를 수행한 다음 단계로 init이 /etc/inittab을 열고 각 항목을 읽어들인다. /etc/inittab 파일의 목적은 시작 시점에서 일반적인 작업을 시작하는 프로세스 목록을 init 프로세스에 전달하는 데 있다.
/etc/inittab 파일 형식은 아주 구체적이며, 각 필드는 콜론으로 나뉜다. /etc/inittab 형식은 다음과 같다.
<ID>:<Run Level>:<Action>:<Command>
|
/etc/inittab 파일에 정의된 필드 설명은 다음과 같다.
다음 예제는 실행 단계 2를 시작하는 시점과 실행 단계 2가 매번 불릴 때마다 다시 시작되는 /usr/bin/rc.atc_bin이라는 셸 스크립트를 보여준다.
CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin
|
동일한 스크립트를 실행 단계 0, 1, 3, 6, 9에서 비활성화하려면 다음 명령을 내린다.
CORMANY_BIN:245780:respawn:/usr/bin/rc.atc_bin
|
inittab 읽고 수정하기
AIX는 /etc/inittab 파일을 수동으로 변경하는 대신에 삶을 편하게 만들어줄 명령어를 제공한다. 명령어는 다른 AIX 명령어와 같은 이름 관례를 따른다.
-
mkitab: inittab 파일에 레코드를 추가한다.
다음 예제는 실행 단계 2로 inittab에 /usr/bin/rc.atc_bin 스크립트를 추가한다.
mkitab "CORMANY_BIN:2:respawn:/usr/bin/rc.atc_bin"
|
-
chitab: inittab 파일에 있는 레코드를 변경한다. 구문은 inittab 파일에 있는 실제 레코드와 똑같다.
다음 예제는 inittab에서 직전에 다룬 /usr/bin/rc.atc_bin 스크립트를 실행 단계 3으로 변경한다.
chitab "CORMANY_BIN:3:respawn:/usr/bin/rc.atc_bin"
|
-
lsitab: inittab 파일에 있는 레코드를 출력한다. lsitab을 사용하면 개별적으로나 전체적으로 inittab 레코드를 안전하게 살펴보는 방법을 제공한다.
다음 예제는 inittab 파일에 있는 모든 레코드를 출력한다.
다음 예제는 CORMANY_BIN으로 인식되는 레코드만 출력한다.
-
rmitab: inittab 파일에서 레코드를 제거한다.
다음 예제는 inittab 파일에서 CORMANY_BIN으로 인식되는 레코드를 제거한다.
결론
이제 inittab 파일을 읽었으며, 모든 적절한 프로세스를 수행했기에 시스템은 로그인을 기다린다. 로그인한 다음에 AIX 시스템을 즐기기 바란다.
서버에 있는 전원 스위치를 눌러 마법처럼 시동이 걸릴 때 별일 없어 보였을지도 모르겠다. 하지만 이 기사에서 살펴본 바와 같이, 시동 시점에서 AIX 시스템에는 많은 일이 일어난다. 다행히, 이 기사를 읽음으로써 튼튼한 운영체제 기초를 제공하기 위해 AIX가 수행하는 작업을 제대로 이해했을 것이다.
참고자료 교육
제품 및 기술 얻기
토론
필자소개  | |  | Adam Cormany는 National Data Center의 관리자로 현재 일하고 있다. Cormany는 유닉스 시스템 엔지니어, 유닉스 관리자, Scientific Games Corporation에서 운영 관리자를 맡아왔다. Cormany는 10년 넘게 솔라리스, 레드햇 리눅스 관리자는 물론이고 AIX도 광범위하게 다뤘다. Cormany는 pSeries AIX 시스템 관리 분야에서 IBM eServer® 공인 전문가다. 관리 업무 이외에, Cormany는 배시, csh, ksh을 사용한 셸 스크립트와 C, PHP, 펄 프로그래밍에도 광범위한 지식을 습득했다. Cormany의 전자편지 주소는 acormany@yahoo.com이다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|  |