60.Unix2008. 12. 12. 11:53
반응형
이번엔 솔라리스를 한번 설치해 보겠습니다.

솔라리스는 리눅스가 아니라 유닉스(UNIX) 라고 해야겠지만... Like UNIX 는 모두 Linux 라는 카테고리로 올리겠습니다. ㅎㅎ

분류에 유닉스를 따로만들기가 좀 그렇네욤 ㅎㅎ~~

여기에 사용된 솔라리스는 x86 용 10버전이며 썬마이크로시스템 에서 다운로드 받으실 수 있습니다.

DVD 나 CD 이미지를 다운로드 받아서 사용하시면 편리합니다.

여기서는 DVD 이미지를 레코딩해서 설치하는 것을 기본으로 합니다.


우선 DVD 를 넣고 부팅합니다.

s1.gif

제일 위에 있는 솔라리스를 선택합니다.


s2.gif

1번을 선택해서 설치를 시작합니다.

각 옵션을 간략히 살펴보면.....

1, 솔라리스 대화형 설치 (기본)
2. 사용자 정의 설치
3. 텍스트 베이스로 솔라리스 대화형 설치 (데스크탑 세션) - 3번과 4번의 차이점은 모르겠네욤 ㅎㅎ
4. 텍스트 베이스로 솔라리스 대화형 설치 (콘솔 세션)
5. 드라이버 업데이트 - 설치시에 드라이버를 올려야 하는 장치들 (예를 들면 Internal Disk 가 연결된 RAID Controller 등...)
6. Single Mode 로 부팅 - Shell 로 바로 부팅됩니당~~


s3.gif

1번을 눌러서 설치진행합니다. (약 30초가 지나면 자동으로 Default 인 1번으로 시작됩니다.)


s4.gif

키보드 레이아웃은 언어 설정이 아니므로 한국이 없을경우 US-English 를 선택하시면 됩니다. (모든 Like UNIX)


s5.gif

화살표 키로 상/하 이동을 해 보니 한국어 레이아웃이 있군요 ㅎㅎ
선택은 Space Bar 로 하시고 다음화면으로 가시려면 F2 기능키를 누르시면 됩니다.


001.gif

이제부터 본격적인 설치가 진행됩니다. 리눅스의 아나콘다 화면과 비슷하죠? 다음을 눌러서 진행합니다.
아래쪽에 설치콘솔에는 직접 입력할 일이 없으므로 신경안쓰셔도 됩니다. ㅎㅎ


002.gif

당연히 네트워크에 연결이 되어 있겠죠 ? "네크워크에 연결되어 있음" 을 선택하시고 다음..


003.gif

Server 를 유동 IP (사설이건 공인이건 간에..) 로 사용하시는 분들은 거의 없겠죠? 물론 이 글을 보시는 분들 대부분이 Study 를 위해 설치하시는 분들이겠지만요 ^^ 일단은 "아니오"를 선택합니다.


004.gif

호스트 명을 입력해 줍니다.
뭐 보통 localhost.localdomain 으로 입력하시는 경우도 있지만... 제 경우엔 보통 ns 로 둡니다.
원래 ns 는 Nameserver 의 호스트 명으로 많이들 사용하지만 그냥 버릇처럼 되어 버렸네요...
이 호스트 명은 윈도우 계열에서 말하는 서버명(컴퓨터이름) 이라고 생각하시면 됩니다.


005.gif

이전 설정에서 DHCP 를 사용안한다고 했으니 IP를 입력해 줘야겠죠?
아시겠지만 보통 테스트 서버에는 C Class 사설 IP 를 많이 사용하죠... 뭐 A Class 10. 대 네크웍을 쓰셔도 상관없습니다.
자신이 테스트하는 Client 들과의 같은 네트웍에 있으면 됩니다.
제 경우엔 192.168.1.105 / 24 로 지정했습니다.


006.gif

넷마스크는 서브넷팅 하지않은 C Class 기본 서브넷을 사용합니다. 255.255.255.0 입니다.


007.gif

일단 IP v6 는 사용하지 않는 걸로 설정하겠습니다.
뭐 차후에 필요하다면 그때 설정하기로 하죠 *^^*


008.gif

경로 설정 - 라우터.. 즉, 다른 네트웍으로 통하는 출입구... 게이트웨이의 주소를 말합니다.
물론 "기본경로 감지" 를 해 보셔도 되지만.. Gateway 주소를 알고 있다면 그냥 입력해 줍니다. - 주소를 지정함 선택


009.gif

Gateway 의 주소는 192.168.1.1 입니다.
제가 테스트하는 네트웍은 192.168.1.255 이며, Gateway 는 192.168.1.1 (라우터-공유기), DNS Server 는 2~3가지를 줍니다.

1 - 서버자신의 IP (어짜피 테스트 할때 Domain Name Service 를 올려서 테스트 해야 하니까요 ^^ - 내부 네트웍용)
2 - 코넷 네임서버 (한국통신)
3 - 파워콤 네임서버

제가 테스트하는 환경을 사무실이랑 집을 통일시켜 놨는데 사무실은 한국통신 회선이며, 집은 파워콤 회선이라... ㅎㅎ


010.gif

커버로스 설정 - 강화된 보안기능을 이야기 하며, 테스트 서버에서는 일단 사용하지 않는것으로 합니다.
물론 실제 운영중인 서버들도 잘 안쓰더군요... 불편해서 그런지... 물론 사용하시는 곳도 있겠죠 ^^
제가 모든 솔라리스 사이트를 다 알고있는 것은 아니니까요 ㅎㅎ 일단 사용안함~~


011.gif

일단 네임 서비스는 "없음" 으로 하겠습니다.
보통 DNS 로 해 두시면 되는데... 일단 여기서는 설치 완료 후 네트웍 설정으로 외부네트웍(인터넷)이 되도록 해 두고..
차 후에 네임서비스를 솔라리스 서버로 별도로 올릴예정이므로 ^^....
학습용으로 솔라리스를 설치하시는 분이라면 저와같이 없음으로 해 두시고.. 제일 마지막 부분에 나오는 간단한 설정으로 외부 네트웍(인터넷)설정을 하시는 것이 좋을 듯 합니다.


012.gif

NFS 도메인 이름은 Default 인 NFS v4 로 놔 두시고 다음..


013.gif

시간대 선택 - 편하신걸로 선택하시면 됩니다.
일반적으로 "지리적...." 이나 "GMT..." 를 많이 쓰죠.. GMT + 숫자... 뭐 이런식이죠 ^^
우리는 그림을 보고 찾는걸 좋아하니까... ㅎㅎ 지리적.... 을 선택하고 다음..


014.gif

아시아에서 대한민국을 찾은 후 다음...


015.gif

날짜와 시간설정 하시고.. 다음..


016.gif

Super User 인 root 의 Password 를 등록하시고.... 다음
root 는 Windows 서버의 Administrator 과 같은 사용자 입니다. 패스워드 까먹지 않게 잘 기억하세요 *^^*
물론 Password 를 분실하면 Single Mode 로 부팅해서 변경해 주시면 됩니다만....


017.gif

여기선 "예"를 선택합니다. 학습용이라면 정확이 어떠한 원격접속들이 이루어 질지 알지 못하니까요 ㅎㅎ
물론 요즘 텔넷으로 접속하는 경우는 거의 없죠...
대부분이 최소한 ssh 로 접속을 하니까요... ssh 는 보안쉘로 전송되는 모든 패킷이 암호화 되어 있습니다.
반면 telnet 은 clean text 로 전송되므로 가로채기만 하면 내용을 다 볼 수 있죠...


018.gif

설정한 내용을 요약해서 보여주네요.... 확인 후 "확인"
수정해야 할 부분이 있다면 "뒤로" 를 누르시면 됩니다.


019.gif

이제 설치를 위해 "다음"을 클릭하세요~


020.gif

설치기 옵션... 둘다 "예"를 선택하고 다음...


021.gif

설치가 완료된 뒤 재부팅 할떄 또다시 설치기가 동작하지 않고 CD/DVD 꺼내라는 이야기죠..


022.gif

설치 매체지정 - 우리는 설치 DVD 를 만들어서 설치하므로 CD/DVD 로 선택하시면 됩니다.
솔직히 네크웍 설치 보다는 CD/DVD 설치가 시간적인 면이나 편의성 명에서 훨 좋죠...
언제든 재설치해 볼 수 있고... CD 나 DVD 미디어 자체도 가격이 저렴하니까요...


023.gif

시스템 초기화.....


024.gif

라이센스에 동의 하시고 "다음".. "종료" 누르지 마세요 ㅎㅎ


025.gif

설치 패키지는 언제든 추가 삭제 할 수 있으니 "기본설치" 로 하고 "다음"....
물론 세부항목을 수동으로 지정해 주고 싶으신 분들은 "사용자설치" 를 선택하시면 됩니다.


026.gif

설치항목 확인하시고.. "지금설치" 를 누르시면 됩니다.


027.gif

파일 시스템을 만들고... 패키지들을 설치하고 있습니다.


028.gif

설치 완료 후 재부팅 되면서 로그인 화면이 나왔습니다.
사용자 이름에 root 를 입력하시고, 비밀번호는 설치시에 입력했던 root password 를 입력하세요 *^^*..


029.gif

사용할 데스크탑 환경을 지정하세요~~ Java Desktop System 릴리즈 3 와 CDE 가 있네요...
리눅스에서는 보통 GNOM 과 KDE 를 많이 사용하죠?.... CDE 도 괜찮긴 하지만... ㅎㅎ 전 Java ..... 를 선택했습니다.

아... 데스크탑 환경이란... 일종의 윈도우에서 말하는 "테마" 와 비슷하다고 생각하시면 됩니다.
Like Unix 에서 사용하는 X-Window 의 사용환경이니까요...


자~ 이제 설치는 완료 되었구요...
나머지 설정이야 하나씩 공부해 가면서 설정하시면 되겠지만... 일단 인터넷은 되야겠죠 ?
아까 네임서비스 관련 설정을 하지 않았으므로 외부로 나갈떄 IP 로는 나갈 수 있지만 Domain Name 로는 찾지를 못하는 상태입니다.

030.gif

우선 이너넷카드(랜카드)가 정상적으로 인식되어 있는지 볼까요?
물론 ifconfig 로 NIC 가 올라와 있는지 보셔도 됩니다.
/etc 에서 ls hostname* 로 파일을 보니... 역시... 제 랜카드는 vmxnet 이군요.... ㅎㅎ
VMware 에서 제공한 가상의 이더넷 카드군요 ㅎㅎ


031.gif

/etc/hosts 파일에 ns 가 없으면 일단 추가해 주시구요~~
뒤에 있는 loghost 는 localhost 를 잘못 적었네욤 ㅋㅋ


032.gif

/etc/nsswitch.conf 파일을 vi 에디터를 이용해서 수정해 줍니다.


033.gif

주석(앞에 #이 붙어있는 줄) 과 공백을 제외하고 위에서 3번째 줄....
hosts :    files 뒤에 dns 라고 추가해 줍니다.

** 참고 **
지금 현재 리눅스 배포본에 포함되어 있는 vi 에디터는 정확히 vim 입니다.
vim 은 윈도우에 익숙한 사용자들에 맞게 좀 변형된 vi 이죠...
간단하게 비교해 보면 vim 에서는 화살표 키(방향키)가 먹지만.. unix 의 정통 vi에서는 방향키도 먹지 않습니다.
vim 을 설치하셔서 사용하셔도 되고, 저처럼 터미널에서 작업하지 말고 X-Window의 에디터에서 수정하셔도 됩니다만...
간단하게 수정하는거니까.. 걍 vi 에서 하시는게 좋을 듯 하네요...
간단한 vi 사용법을 보실려면 man vi 하셔서 맨페이지를 보셔도 되구요..
아니면 본 사이트 기술문서의 VI 명령어 정리 를 참고하셔도 됩니다.


034.gif

마찬가지로 vi 에디터를 사용해서 /etc/resolv.conf 를 엽니다.
물론 파일이 없으면 새 파일로 만들어 줍니다. *^^*


035.gif

여기에 사용할 DNS 서버의 주소를 입력해 줍니다.
형식은 "nameserver    IP Address" 입니다.

첫번째 라인은 솔라리스 서버의 IP - 나중에 DNS 서버 테스트용이죠.. (내부 네트웍)
두번째 라인은 한국통신 네임서버
세번째 라인은 파워콤 네임서버 입니다.

파워콤의 경우 인증용 네임서버랑은 틀립니당 ^^...

자 이제 Domain Name 으로 검색해 볼까요?...


036.gif

호홋.... 정상적으로 잘 동작하는군요... ^^....

리눅스도 그렇지만... 솔라리스 역시 데스크탑 용이든.. 서버용이든.. 훌륭한 OS 임에 틀림없습니다.

그럼 설치강좌는 여기서 마치겠습니다.

솔직히 설치는 강좌까지도 필요없겠지만... 두가지 이유로 글을 작성합니다.

하나. 설치하시기 전에 미리 그림으로 한번 보시라고... ㅎㅎ
두울. 다른 설치강좌들을 보면... 메뉴에대한 아주 간략한 설명도 없이.. 그냥 "이것" 클리하세요~ "저걱"클릭하세요~ 라고만 되어 있어서..
그렇게 설치를 하면 예외사항에 전혀 대처할 수 가 없으니... 처음 시작하시는 분들께 조금이라도 도움될까 해서 ㅎㅎ..

저 역시 그냥 설치하면서 스크릿샷만 찍으면 되니까욤 ㅎㅎ 일석이조 맞죵 ?....
Posted by 1010
60.Unix2008. 12. 11. 12:05
반응형
Solaris 9 Installation Process
- Boot Service
- System Indentification Service
- System Configuration Service
- Installation Servie



(1). Booting for Solaris Installation

(1-1). CD-ROM 부팅을 통해 설치하는 방법
- <STOP + A>
- ok boot cdrom
or
- # init 0
- ok boot cdrom

(1-2). 네트워크 부팅을 통해 설치하는 방법
<STOP + A>
ok boot net - install



(2). Solaris 9 OE Installation Process

1. Select a Language : 5.Korean
2. Select a Locale   : 0.Korean EUC
3. 설치 안내     : F2_계속
4. 시스템 식별     : F2_계속
5. 네트워크 [X] 예   : F2_계속
6. DHCP 사용     : 아니오
7. 호스트 이름     : solarisXXX   (범위:200 ~ 214, 예: solais200)
8. IP     : 172.16.8.XXX (예: 172.16.8.105)
9. 서브넷     : 255.255.0.0
10. IPv6 사용     : 아니오
11. 기본경로     : 지정
12. 라우터 IP     : 172.16.0.1
13. 커버로스     : 아니오
14. 이름서비스     : none
15. 대륙 및 대양     : 아시아
16. 국가 및 지역     : 대한민국
17. 날짜 및 시간     : 시간확인(ROK)
18. F4_초기
19. F2_표준
20. 지역선택     : F2_계속
21. [X]64비트 지원   : F2_계속
22. 소프트웨어 선택 : Entire Distribution plus OEM Support 64-bit
23. 디스크선택 [X]c0t0d0 : F2_계속
24. 데이터 보존     : F2_계속
25. 레이아웃     : F2_자동배열 (이 부분은 필요한 경우만)
26. 자동레이아웃     : [X]/ [X]swap : F2 (이 부분은 필요한 경우만)
27. 디스크레이아웃   : F4_사용자정의     (수동레이아웃을 선택한경우만)
28.
------------------------------------------------------------
8G 기준)               Sparc / Intel(VMWare)
____________________________________________________________

0 / 5000
1 swap 512
2 overlap (전체용량)
3 /data1 500
4 /data2 500
5 /data3 500
6 /data4 500
7 /export/home (나머지용량)
____________________________________________________________

[참고] 실무에서 많이 사용되고 있는 파티션들 예제
/, /usr, /var, /tmp, /export/home(/user), /database, /oracle, /was

위와 같이 입력후 "F2_계속"
29. 원격파일시스템    : F2_계속
30. 프로파일          : F2_계속
31. [X]자동재부트     : F2_설치시작
32. root password 입력: knit
33. 자동절전기능 사용여부 : n
34. 다음에 다시 질문여부  : n
35. 2번 CD 설치
36. 3번 CD(language) 설치

[참고] 자동절전기능
Sparc Platform Sun Solaris 설치시 자동절전기능을 설정한 경우(yes로 설정한 경우)
이 기능을 해제 시키 위해서는 다음과 같은 방법이 가능하다.

<Power Saving Function OFF>
첫번째 방법) /noautoshutdown 파일 생성하는 방법
# touch  /noautoshutdown
두번째 방법) /etc/power.conf 파일을 편집하는 방법
# vi /etc/power.conf 편집
세번째 방법) CDE 환경에서 "Desktop Control" 아이콘을 사용하는 방법
- CDE환경에서
- 패널에 있는 "Desktop Control" 아이콘을 클릭하고
- 전원관리(Power Management) 아이콘을 클릭한다.(Yellow Icon)
- 자동 절전 기능을 OFF 한다.





4. 파티션 정책과 파티션 용량

다음 예는 실무에 바로 적용할수 있는 예는 아니다. 하지만 파티션 정책과 파티션 용량
을 결정할때 한가지 참고 사항으로만 사용할수는 있다.

시스템 자원 사항
- Total Disk : 8G
- Total Mem  : 256MB



(1). 파티션 정책 (Partition Policy) 수립시 고려사항
- 소스(추가패키지)가 있는 위치를 나누어야 하는가?       예: /var/apache/htdocs
- 추가적인 패키지 설치 위치를 나누어야 하는가?          예: /oracle
- 데이터가 있는 위치를 나누어야 하는가?                 예: /data1, /data2
- 로그 기록을 남기는 위치를 나누어야 하는가?            예: /data1/logs
- 기본적인 프로그램이 위치한곳을 나눌것인가?            예: /usr, /opt, /usr/local
- 운영체제의 /tmp, /var, /export/home을 나눌것인가?     예: /tmp, /var, /export/home
- 스토리지는 붙일것인가?
- NAS의 일부 파일시스템을 사용할것인가?
- RAID 구성을 할것인가?



(2). 파티션 정책과 용량 예제

다음은 파티션 정책에 대한 하나의 예이다. 실무에 바로 적용할 수 있는 예는 아니다. 각
각의 서버의 목적에 맞는 사용자 정의가 필요하다.

[Web Server]
________________________________________________

0 / 1000
1 swap 512
2 overlap 8692 (전체용량)
3 /usr 2000
4 /tmp 500
5
6 /WAS 2000
7 /www *
________________________________________________


[Anonymous FTP Server]
________________________________________________

0 / 1000
1 swap 512
2 overlap 8692 (전체용량)
3 /usr 2000
4 /tmp 500
5
6
7 /export/ftp *
________________________________________________


[Mail Server]
________________________________________________

0 / 1000
1 swap 512
2 overlap 8692 (전체용량)
3 /usr 2000
4 /tmp 500
5
6
7 /var *
________________________________________________


<문제점, 질문>

swap, overlap이란?
Posted by 1010
60.Unix2008. 12. 11. 11:56
반응형
솔라리스 시스템을 종료하는 명령어들을 정리하였다.


# init 0

위 명령어는 시스템을 run level 0로 전환시킨다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 PROM 모드로 전환한다.


# init 5

run level 5로 시스템을 전환한다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 Power off 시킨다.


# init 6

run level 6로 시스템을 전환한다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 재부팅한다. 이때 시스템은 PROM 모드 까지 내려 갔다가 다시 올라온다.


# reboot

시스템을 재부팅한다. /etc/rc0.d 스크립트는 실행하지 않고 시스템을 재부팅 한다.


# shutdown -i5 -y

시스템 사용자에게 시스템 종료를 알리는 경고 메시지를 출력하고 60초뒤에 시스템을 종료한다. -i 옵션은 run level을 설정하는 옵션으로 위 예제 에서는 run level 5로 시스템을 전환한다. 즉, 시스템을 Power off 시킨다. -y 옵션은 시스템을 종료할 때 나오는 모든 질문에 yes로 대답하라는 것이다.

-i 옵션을 지정해 주지 않으면 shutdown 명령어은 디폴트인 Single user mode로 시스템을 전환시킨다.


# halt

시스템을 PROM 모드로 바로 전환한다. /etc/rc0.d 스크립트는 실행하지 않는다.


# poweroff

시스템을 바로 Power off 시킨다.


※ 팁:

시스템을 종료하기 전에 반드시 sync 명령을 통해 커널 메모리 데이터를 디스크와 동기화 시켜주는 작업을 하자.

만약, sync 명령을 실행 시키지 않고 시스템을 종료하게 되면 다시 부팅 할 때 일명 디스크가 깨져 있을 수도 있다.

sync 명령어를 여러 번 실행하고 시스템을 종료하도록 하자.
Posted by 1010
60.Unix2008. 12. 11. 11:52
반응형

[*] 사용자 환경 설정
=====================
# vi /.profile  실행하여 다음 내용을 추가합니다.
export PS1=`hostname`:'$PWD> '
export ENV=/.kshrc


# vi /.kshrc 실행하여 다음 내용을 추가합니다.
alias net='/usr/dt/appconfig/SUNWns/netscape& '

logout -> login


# net    ;명령을 실행하여 netscape를 실행합니다.



[*] flash player 설치          
======================
다음이나 네이버 사이트로 가면 flash player 다운로드 창이 뜨게 됩니다.
[ok]버튼을 클릭하셔서 다운로드 받습니다.

# gzip -d install_flash_player_7_solaris_sparc.tar.gz  ;압축을 풉니다.
# tar xvf install_flash_player_7_solaris_sparc.tar  ; tar 아카이브를 풉니다.
# cd install_flash_player_7_solaris
# ./flashplayer-installer
[enter]->[enter]->[enter]-> 설치경로: /usr/dt/appconfig/SUNWns -> [y] ->[n]
순서로 실행하여 설치 합니다.



[*] ksh 에서 이전 명령어 불러와서 실행하기
===========================================
# set -o vi   ; 이전 명령어를 불러와서 사용하는 형식으로 vi를 설정
프롬프트상태에서 [esc]->[k] 를 눌러 이전 명령을 불러올수 있습니다.
불려진 명령은 [enter]를 눌러 실행합니다.

[esc]->[\] 키를 사용하여 파일명 자동완성 기능을 사용할 수 있습니다.

# bash   ; 사용하는 쉘을 bash쉘로 변경합니다.
           bash 쉘에서는 이전 명령실행은 올라가는 화살표와 내려가는 화살표를
           사용합니다.
           파일명 자동완성기능은 [tab]키를 사용합니다.



[*] 디바이스 생성 및 생성 확인하기
===================================
1) prtconf 명령으로 확인
2) /etc/path_to_inst 파일에 인스턴스명이 매핑되어 있는지 확인
3) /dev , /devices 디렉토리에 디바이스 파일이 생성되어 있는지 확인

디바이스 다시 생성하는 방법
1) # touch /reconfigure
   # init 6
2) # halt
   ok boot -r
3) devfsadm



[*] 파티션 생성
================
# format    ; 출력되는 디스크중 파티션 작업을 수행할 디스크 번호를 선택합니다.
Specify disk> 1
format> p   ; 파티션 작업을 선택합니다.
partition> print   ; 파티션 정보를 출력합니다.
partition> 3       ; 3번 파티션 정보를 변경합니다.
partition> label   ; 파티션 정보를 vtoc에 저장합니다.
partition> name
.......: /etc/format.dat
partiotion> quit
format> save
format> quit



[*] 파일에 저장된 파티션 정보로 파티션 생성 또는 복구하기
=========================================================
0번 블럭에 저장되어있는 파티션정보가 손상되었거나 새로운 디스크에 대해
같은 파티션 정책을 적용하는 경우 백업되어 있는 파티션 정보를 사용하여
생성또는 복구 할수 있습니다.
format 명령의 "select" 서버 메뉴나 fmthard 명령을 이용합니다.

**> format->partition->select 명령을 사용하는 방법

# dd if=/dev/zero of=/dev/rdsk/c0t2d0s0 bs=512 count=1  ; vtoc 정보 삭제
# format    ; 출력되는 디스크중 파티션 작업을 수행할 디스크 번호를 선택합니다.
Specify disk> 1
format> p   ; 파티션 작업을 선택합니다.
partition> select    ; 저장된 파티션 정보중 복구할 파티션정보의 이름 선택
        0. disk2
        1. disk2-1
        2. original
Specify table (enter its number)[1]: 1
partition> label
partition> quit
format> quit

# prtvtoc /dev/rdsk/c0t2d0s0  ; 복구된 파티션 정보를 확인합니다.

**> fmthard를 사용하는 방법
# prtvtoc /dev/rdsk/c0t2d0s0 > /disk2.vtoc  ; 파티션 정보를 파일에 저장합니다.
# dd if=/dev/zero of=/dev/rdsk/c0t2d0s0 bs=512 count=1  ; vtoc 정보 삭제
# fmthard -s /disk2.vtoc /dev/rdsk/c0t2d0s0 ; 저장된 파티션 정보를 이용하여
                                              VTOC를 다시 생성합니다.



[*] 파일시스템 생성하기
========================
# newfs /dev/rdsk/c0t2d0s3
newfs: 새 시스템 파일 /dev/rdsk/c0t2d0s3을(를) 구성하시겠습니까: (y/n)? y
/dev/rdsk/c0t2d0s3:     16 트랙, 63 섹터의 204 실린더에 있는 205632 섹터
        100.4MB (13 실린더 그룹) (16 c/g, 7.88MB/g, 3776 i/g)
수퍼 블록 백업 (fsck -F ufs -o b=#의 경우):
 32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,
 161952, 178144, 194336,

# fstyp -v /dev/rdsk/c0t2d0s3  ; 생성된 파일시스템의 내용을 확인할 수 있습니다.

# fsck /dev/rdsk/c0t2d0s3  ; 파일시스템에 오류가 있는지 점검합니다.
                             총 5개단계로 검사하며 각 단계별로 아무런 출력없이
                             넘어가면 파일시스템에 아무런 문제가 없습니다.



[*] 수퍼블럭이 깨어진 파일시스템 복구하기
==========================================
# dd if=/dev/zero of=/dev/rdsk/c0t2d0s3 bs=512 count=32
; 파일시스템의 수퍼블럭 정보를 삭제합니다.

# fsck /dev/rdsk/c0t2d0s3  ; 수퍼블럭의 정보가 깨어졌기 때문에 파일시스템 점검
                             작업에 에러가 발생
** /dev/rdsk/c0t2d0s3
BAD SUPER BLOCK: MAGIC NUMBER WRONG
USE AN ALTERNATE SUPER-BLOCK TO SUPPLY NEEDED INFORMATION;
eg. fsck [-F ufs] -o b=# [special ...]
where # is the alternate super block. SEE fsck_ufs(1M).
 
# newfs -N /dev/rdsk/c0t2d0s3  ; 백업수퍼블럭의 위치를 확인합니다.

# fsck -F ufs -o b=97184 /dev/rdsk/c0t2d0s3  ; 백업된 수퍼블럭 정보를 이용하여
                                               수퍼블럭을 복구합니다.



[*] 파일시스템 minfree공간 조정
================================
# tunefs -m 1 /dev/rdsk/c0t2d0s3
minimum percentage of free space changes from 10% to 1%
# mount -F ufs /dev/dsk/c0t2d0s3 /test
# df -h /test
파일시스템             크기   사용   가용   용량    설치지점
/dev/dsk/c0t2d0s3       94M   585K    93M     1%    /test



[*] 파일시스템 수동으로 마운트하기
===================================
# mkdir /test
# mount -F ufs /dev/dsk/c0t2d0s3 /test
# mount        ; 전체 마운트 되어 있는 정보를 출력합니다.
# df -h        ; 마운트된 파일시스템의 사용가능한 용량을 확인합니다.



[*] 시스템 부팅시 파일시스템 자동으로 마운트하기
================================================
# vi /etc/vfstab   ; 파일에 새로 생성한 파일시스템을 추가합니다.
/dev/dsk/c0t2d0s3       /dev/rdsk/c0t2d0s3      /test   ufs     2       yes     -

# umountall    ; mount at boot = yes 로 설정된 파일시스템들을 모두 umount
# mountall     ; mount at boot = yes 로 설정된 파일시스템들을 모두 mount



[*] vfstab 에서 옵션 설정하기
==============================
# vi /etc/vfstab   ; setuid 설정을 허용하지 않도록 마운트 옵션을 조정합니다.
/dev/dsk/c0t2d0s3       /dev/rdsk/c0t2d0s3      /test   ufs     2  yes  nosuid

# cd /test
# cp /usr/bin/ksh .
# chmod +s ksh
# su - sa119    ; 일반 사용자 계정(sa119)로 로그인
$ cat /etc/shadow
cat: cannot open /etc/shadow
$ ./ksh
# cat /etc/shadow  ; root 권한으로 파일의 내용이 출력되는것을 확인할 수 있습니다.

# cd /
# umount /test
# mount /test
# su - sa119    ; 일반 사용자 계정(sa119)로 로그인
$ cat /etc/shadow
cat: cannot open /etc/shadow
$ ./ksh
$         ; setuid가 적용되지 않는것을 확인할 수 있습니다.



[*] vfstab 수정오류로 인해 시스템이 부팅되지 않는경우 복구하기
==============================================================
# init 0
ok boot cdrom -s     ; 1번 설치 CD를 이용하여 싱글유저로 부팅합니다.
# mount /dev/dsk/c0t0d0s0 /a  ; 기존의 root파일시스템을 /a 디렉토리엥 마운트
# TERM=sun
# export TERM
# vi /a/etc/vfstab    ; 잘못설정된 설정을 변경합니다.

# reboot


[*]패키지 설치하기
==================
패키지 유형  -  디렉토리구조
             -  스트림 구조

디렉토리 구조인 경우 설치하기
# pkgadd -d . SUNWzsh

스트림 구조인 경우 설치하기
# pkgadd -d top-3.6-local-sparc

http://www.sunfreeware.com/ 에서 top-3.6 패키지를 다운로드 받습니다.
# gzip -d top-3.6-sol9-sparc-local.gz     ; 압축을 풀어줍니다.
# pkgadd -d top-3.6-sol9-sparc-local      ; 패키지를 설치합니다.
                                          ; 설치시 /usr/local 디렉토리를 생성할것인지에
                                            대한 질문은 'y'로 입력합니다.
# cd /usr/local/bin
# file top    ; top 명령이 잘 설치 되었는지 확인합니다.
# ./top       ; top 명령을 실행 합니다.

# vi /.profile
export PATH=/usr/local/bin:$PATH   ; /usr/local/bin 을 PATH환경변수에 추가합니다.
# top         ; top명령이 실행되는지 확인합니다.



[*] 소스코드를 이용하여 패키지 설치하기
=======================================
컴파일러를 설치합니다.
# gzip -d gcc_small-3.3.2-sol9-sparc-local.gz
# gzip -d libiconv-1.11-sol9-sparc-local.gz
# pkgadd -d gcc_small-3.3.2-sol9-sparc-local
# pkgadd -d libiconv-1.11-sol9-sparc-local
# type gcc   ; gcc 컴파일러가 설치되었는지 확인합니다.
# type make  ; make not found 메시지가 출력되면 PATH 환경변수에 /usr/ccs/bin 경로를
             ; 추가합니다.
# export PATH=$PATH:/usr/ccs/bin


기존 설치되어 있던 top 패키지를 제거합니다.
# pkginfo | grep top  ; top 패키지 정보를 확인합니다.
# pkgrm SMCtop        ; top 패키지를 제거합니다.

소스코드를 이용하여 top 패키지 설치하기
# gzip -d top-3.6.tar.gz  ; 압축되어 있는 경우 압축해제
# cd /usr/local
# tar xvf /lab/top-3.6.tar
# cd top-3.6
# ./configure
# make         
# make install 



[*] patch 설치하기
===================
http://sunsolve.sun.com  사이트에서 patch를 다운로드 받습니다.
일반적으로 패치는 123456-01.zip 형태의 파일로 배포됩니다.
다운받은 파일은 unzip 명령을 이용하여 압축을 풉니다.
# unzip 123456-01.zip
# patchadd 123456-01   ; 패치를 설치합니다.
# patchadd -p | grep 123456-01  ; 패치가 되었는지 확인합니다.
# patchrm 123456-01    ; 이미 패치된 파일을 제거합니다.



[*] patchpro를 이용하여 자동으로 패치하기
==========================================
1단계:  http://patchpro.sun.com
          시스템 버전에 맞는  PatchPro 2.2 를 다운로드 받는다.

2단계:  gz,tar 압축을 푼다.
            # gzip -d pproSunOSsparc5[1].9jre2.2.tar.gz | tar xvf -

3단계:  patchpro를 설치한다.
           # cd pproSunOSsparc5.9jre2.2
           # ./setup

           would you like to continue with the installation [y.n?] y
           mechanism ? [1,2,?,q]  1
           Do you want these services restarted at that time [y,n,?] y
           Is this information is correct [y,n,?] y

4단계:  패치 업데이트 실행하기, PATH환경변수를 설정한다.
           # export PATH=$PATH:/opt/SUNWppro/bin:/usr/sadm/bin
           # smpatch update
           password:: <root 패스워드를 입력>

5단계:  시스템을 재부팅해 줍니다.
           # init 6



[*] PROM 명령어 사용하기
=========================
# init 0   ; PROM 상태로 run-level을 변경합니다.


**> boot command
ok
ok boot    ; PROM parameter boot-device에 정의되어 있는 순서대로 시스템을 부팅
ok boot cdrom  ; CD-ROM으로 부터 시스템을 부팅
ok boot cdrom -s ; CD-ROM으로 부터 시스템을 싱글유저 모드로 부팅
ok boot -r  ; system reconfigure를 실행하면서 시스템을 멀티유저모드로 부팅
ok boot -a  ; interactive mode로 시스템을 부팅
ok boot -v  ; debug level의 메시지를 출력하면서 시스템 부팅


**> PROM parameter 값 확인 및 설정
ok printenv boot-device  ; boot-device 에 설정된 값을 출력합니다.
    이 파라메터는 부팅할 장치 순서를 지정하고 있습니다.   
ok setenv boot-device disk disk2  ; 부팅 디바이스 순서를 설정합니다.
       disk 나 disk2는 각각의 디바이스에 할당된 별명입니다.
ok devalias   ; 각 디바이스에 할당된 별명을 확인 할 수 있습니다.
ok nvalias mydisk /pci@1,0/ide@1,0/dad@0,0  ; 첫번째 디스크의 첫번째 파티션에
       mydisk라는 별명을 설정
ok printenv auto-boot?   ; 이 값이 true로 설정되어 있으면 시스템 전원입력시
   자동적으로 boot-device에 지정한 순서대로 시스템을
   부팅하게 합니다.
ok setenv auto-boot? true

ok set-defaults  ; 모든 파라메터의 값을 디폴트값으로 설정합니다.
ok set-default auto-boot?   ; auto-boot? 파라메터의 값을 디폴트값으로 설정합니다. 

[*] 사용자계정 등록하기
========================
# useradd -d /export/home/kuser -m -s /bin/ksh -e 12/31/2006 kuser
; kuser계정을 등록합니다. 홈디렉토리는  /export/home/kuser, 사용자쉘은 /bin/ksh
  이 계정은 2006.12.31일 까지만 사용가능한 계정입니다.

# useradd -d /export/home/cuser -m -s /bin/csh -f 10 cuser
; 이 계정은 10일동안 로그인하지 않으면 계정을 잠그도록( -f 10)설정하였습니다.

# passwd -d cuser   ; 패스워드를 삭제하여 lock을 해제합니다.
# passwd -f cuser   ; 다음번 로그인시에 패스워들 설정하도록 요구합니다.

# passwd -x 10 -w 5 kuser
; kuser 는 한번 변경한 패스워드는 10일뒤에 다시 변경하도록 설정하였습니다.(-x)
  패스워드 만기일 5일전에 패스워드변경 경고 메시지를 출력합니다.(-w)


[*] 사용자별 그룹을 할당하는 사용자 등록 스크립트
==================================================
# vi adduser
#!/bin/ksh
echo groupadd $1
groupadd $1

echo useradd -d /export/home/$1 -m -s /bin/bash -g $1 $1
useradd -d /export/home/$1 -m -s /bin/bash -g $1 $1

echo passwd -f $1
passwd -d $1
passwd -f $1

# chmod +x adduser
# ./adduser user10
# grep user10 /etc/passwd
# grep user10 /etc/shadow
# grep user10 /etc/group


[*] 사용자 정보 확인하기
=========================
# who    ; 현재 시스템에 로그인하고 있는 사용자 정보를 출력합니다.

# rusers sun201  ; sun201서버에 로그인하고 있는 사용자 정보를 출력합니다.

**> rusers 사용자 정보 조회 서비스를 막는 방법
# vi /etc/rpc
#rusersd  100002 rusers  ; rusersd 서비스를 커맨트 처리합니다.

# /etc/init.d/inetsvc stop
# /etc/init.d/inetsvc start  ; inetd 데몬을 죽였다가 다시 한번 살려줍니다.

또는

# pkill -1 inetd  ; inetd 데몬 환경설정을 다시 하도록 지시합니다.

# rpcinfo -p | grep user  ; rusers 서비스가 등록되었는지 확인합니다.

**> finger 사용자 정보 조회 서비스를 막는 방법
# vi /etc/services
#finger  79/tcp

# pkill -1 inetd
# netstat -a | grep finger


[*] 반복적으로 실패하는 로그인 시도를 로깅하는 방법
===================================================
# vi /etc/default/login
SYSLOG_FAILED_LOGINS=2

# touch /var/adm/loginlog
# chowm root:sys /var/adm/loginlog
# chmod 600 /var/adm/loginlog


[*] switching user
==================
# su - kuser
# su kuser
$ su -   ; root 계정으로 사용자를 변경합니다. root계정의 환경설정 작업이 실행
 됩니다. 이 경우에는root의 패스워드가 요구됩니다.
$ su     ; root 계정으로 사용자를 변경합니다. 기존의 사용자 환경을 그대로 사용
 하면서 계정(UID,GID)만 변경됩니다.
# vi /etc/default/su

CONSOLE=/dev/console ; 커맨트를 풀어주면 su 명령을 이용해서 root로 로그인할수
    있는 터미널을 console로만 한정합니다.


[*] root 로그인 제한
====================
# vi /etc/default/login
CONSOLE=/dev/console    ; 커맨트를 풀어주면 root로그인할수 있는 터미널을
   console로만 한정합니다.
 
[*] r-command 환경 설정하기
===========================
rcp,rsh,rlogin 을 r-command라고 부릅니다. rcp나 rsh명령을 사용하기위해서는
먼저 상대호스트가 시스템을 사용할수 있도록 설정해 주어야 합니다.

** root계정의 경우
/.rhosts 파일에 r-command로 시스템을 사용할 수 있도록 상대 호스트의 정보와 계정정보를 등록합니다.
# vi /.rhosts
203.234.247.228 root

** 일반 계정인 경우
/etc/hosts.equiv 파일에 r-commAnd로 시스템을 사용할 수 있도록 허용할 호스트 정보와 계정명을 등록합니다.
# vi /etc/hosts.equiv
+ user01

[*] file의 owner와 group변경하기
=================================
# chown user01 file1   ; file1의 owner를 user01로 변경
# chgrp staff file1    ; file1의 group을 staff으로 변경하기

# chown user01:staff file1  : file1의 owner와 group을 한개 명령으로 변경


[*] set-uid, set-gid, sticky  퍼미션 설정하기
=====================================
** set-uid: 프로그램 실행시에 파일 접근 권한을 실행자가 아닌 파일의 원래 주인의
         UID을 사용하도록 한다.
# chmod u+s file1    ; file1의 owner퍼미션에 set-uid 를 설정
# chmod 4555 file1   ; file1의 owner퍼미션에 set-uid 를 설정

** set-gid: 프로그램 실행시에 파일 접근 권한을 실행자가 아닌 파일의 원래 주인의
         GID을 사용하도록 한다.
# chmod g+s file1    ; file1의 group퍼미션에 set-uid 를 설정
# chmod 2555 file1   ; file1의 group퍼미션에 set-uid 를 설정

** sticky-bit: rwxrwxrwx 퍼미션이 설정된 디렉토리에서 파일의 삭제 권한을
 파일의 주인과 root계정에게만 허용하도록 한다.
# chmod +t dir1      ; dir1에 sticky-bit 설정
# chmod 1777 dir1    ; dir1에 sticky-bit 설정


[*] 프린터 설정하기
====================
프린터를 연결한 디바이스의 owner를 lp로, 파일의 퍼미션은 600으로 설정합니다.
# chown lp /dev/pts/6
# chmod 600 /dev/pts/6

/dev/pts/6번에 연결된 프린터명을 prt1으로 설정합니다.
# lpadmin -p prt1 -v /dev/pts/6

# lpstat -t  ; 프린터 상태 정보를 출력합니다.
# ps -ef | grep lpsched   ; 프린터를 관리하는 데몬이 실행되었는지 확인합니다.
# lpadmin -d prt1  ; prt1을 디폴트 프린터로 지정합니다.

# accept prt1  ; 프린터가 출력요청을 받아들이도록 설정합니다.
# echo 김영숙 | lp
# /usr/bin/enable prt1  ; 스풀에 저장된 출력요청을 프린터로 내 보냅니다.
# disable prt1  ; 스풀에 저장된 출력요청을 프린터로 내보지 않도록 합니다.
# cancel prt1-2 prt1-3 prt1-4  ; 출력요청을 취소합니다.
# lpstat -o ; 프린터 스풀의 상태를 출력합니다.
# lp -i prt1-7 -q 0  ;  prt1-7작업의 작업우선순위를 0으로 설정(가장 높은 우선순위)
# lp -i prt1-6 -H immediate ; 즉각적인 출력 요청을 지시합니다.

[*] mt 관리 명령어
===================
# mt status    ; 테입드라이브의 상태 정보를 출력합니다.
# mt -f /dev/rmt/0  rewind   ; rewind tape drive
# mt offline    ; 테입드라이브를 rewind한뒤 테입을 밖으로 배출합니다.
# mt fsf 1       ; 숫자(예제:1) 만클 테입에 기록된 파일의 위치로 이동합니다.
                     예제의 경우 rewind후 이 명령을 실행하였다면 두번째 백업된 내용을 처리하기 위해

                     파일의 위치를 이동하도록 설정한 명령입니다.

                     테입드라이브에서 하나의 백업을 하나의 파일로 인식합니다.


[*] 파일시스템 백업하기

==========================


** 일반 파일시스템의 full backup

# umount  /database     ; 백업받을 파일시스템을 umount합니다.

# ufsdump 0uf /dev/rmt/0n /database 

; /database 파일시스템을

  0 옵션을 사용하여 full-backup 하도록 설정합니다.

  u 옵션을 사용하여 백업시간정보를 /etc/dumpdates 파일에 업데이트 합니다.

  f 옵션을 사용하여 백업이 저장될 장치명을 지정합니다. 이 예제에서는 0번 테입드라이버에 기록한뒤

    no-rewind 하도록 지정하였습니다.


** /, /usr , /var 파일시스템의 full-backup

 # init s  ; 싱글유저로 시스템 런레벨을 변경하여 위와 동일한 옵션을 사용하여 전체백업을 실행합니다.


** 증분백업

전체 백업이후에 변경된 부분에 대해서만 백업을 실행하도록 합니다.

백업레벨(0-9)값을 이용하여 증분백업을 실행할수 있습니다.

예를 들어 어제 full-backup(0)을 실행한뒤 오늘 변경된 부분에 대해서만 백업을 하도록 하려면 0보다 큰 아무 숫자나

사용하여 백업레벨을 지정합니다.


백업스캐줄링예:

월   화   수  목  금  토  일

0     1    2    3    1   2    3


월: 전체 백업

화: 월요일 전체 백업이후 변경된 내용만 백업

수: 화요일 백업이후 변경된 내용만 백업

목: 수요일 백업이후 변경된 내용만 백업

금: 월요일 전체 백업이후 변경된 내용만 백업


[*] 파일시스템 백업분으로 시스템 복구하기

=============================================


** 일반 파일시스템인 경우


# newfs /dev/rdsk/c0t0d0s7

# mount /dev/dsk/c0t0d0s7 /database

# cd /database

# ufsdump rf /dev/rmt/0    ; full backup 되어있는 데이터를 전체 restore합니다

# rm restoresymtable   ; 백업목록을 가지고 있는 파일입니다. restore 작업이 끝나면 다음 백업때 이 파일이

                                    백업되지 않도록 삭제합니다.


** /usr 또는 /var  파일시스템인 경우


# init 0

ok boot cdrom -s            ; /usr 파일시스템을 싱글유저모드상태에서도 마운트 되어 있어야 하는 파일시스템입니다.

                                      /usr파일시스템에 문제가 발생한 경우 정상적으로 시스템을 사용할 수 없습니다.

                                      부팅 CD를 사용하여 싱글유저로 부팅하여 복구합니다.

# newfs /dev/rdsk/c0t0d0s3

# mount /dev/dsk/c0t0d0s3 /a

# cd /a

# ufsrestore rf /dev/rmt/0

# rm restoresymtable

# cd /

# umount /a

# reboot


** / 파일시스템인 경우

# ok boot cdrom -s

# newfs /dev/rdsk/c0t0d0s0

# mount /dev/dsk/c0t0d0s0 /a

# cd /a

# ufsrestore rf /dev/rmt/0

# rm restoresymtables

# cd /usr/platform/`uname -m`/lib/fs/ufs

# installboot bootblk /dev/rdsk/c0t0d0s0

# cd /

# umount /a

# fsck -y /dev/rdsk/c0t0d0s0

# init 6


[*] sanpshot을 이용하여 사용중인 파일시스템을 안전하게 백업하기

=====================================================================


# fssnap -F ufs -o bs=/var/tmp  /database  

/dev/fssnap/0


; backing-store file의 위치를 -o bs=/var/tmp 로 지정하였습니다.

  이 명령을 실행하면 /database 파일시스템 크기의 snapshot0 파일이 /var/tmp에 생성됩니다.

  이 파일은 스냅샷을 실행하는 시점의 파일시스템 데이터를 보존하기 위한 용도로 사용됩니다.

  이 명령을 실행하면 /dev/fssnap/0 , /dev/rfssnap/0 디바이스가 생성됩니다.


# fssnap -i      ; 파일시스템별 생성된 디바이스 번호를 출력합니다.

0    /database


# ufsdump 0uf /dev/rmt/0  /dev/rfssnap/0


# fssnap -d /database       ; 백업이 종료되고 나면 생성된 디바이스를 삭제합니다.

# rm /var/tmp/sanpshot0    ; backing-store로 만들어진 파일을 삭제합니다.


Posted by 1010
60.Unix2008. 12. 11. 11:48
반응형

Solaris Volume Manager

설치하기
root@tech # cd /cdrom
root@tech # ls
cdrom0            devpro_v9n1_sparc  sol_8_204_sparc_2
root@tech # cd cdrom0
root@tech # ls
Copyright  Solaris_8  installer

root@tech # cd Solaris_*
root@tech # ls
EA      Product  Tools
root@tech # cd EA
root@tech # ls
installer  products
root@tech # cd prod*
root@tech # ls
DiskSuite_4.2.1    SunScreen_3.1_Lite
root@tech # cd Di*
root@tech # ls
README    installer  sparc
root@tech # cd sp*
root@tech # ls
Docs      Packages  Tools
root@tech # cd Pa*

--경로 : CD 2번째 CD

# cd /cdrom/sol_8_401_sparc_2/Solaris_8/EA/products/Disksuite_4.2.1/sparc/Packages 
root@tech # ls
SUNWlvma  SUNWlvmr  SUNWmdja  SUNWmdnu  SUNWmdu
SUNWlvmg  SUNWmdg  SUNWmdnr  SUNWmdr  SUNWmdx
root@tech # pkgadd -d . 

다음과 같은 패키지를 사용할 수 있습니다.
  1  SUNWlvma    Solaris Volume Management API's
                  (sparc) 1.0,REV=2001.11.02.03.17
  2  SUNWlvmg    Solaris Volume Management Application
                  (sparc) 1.0,REV=2001.11.14.03.19
  3  SUNWlvmr    Solaris Volume Management (root)
                  (sparc) 1.0,REV=2001.11.14.03.19
  4  SUNWmdg      Solstice DiskSuite Tool
                  (sparc) 4.2.1,REV=1999.11.04.18.29
  5  SUNWmdja    Solstice DiskSuite Japanese localization ß x
                  (sparc) 4.2.1,REV=1999.12.09.15.37
  6  SUNWmdnr    Solstice DiskSuite Log Daemon Configuration Files ß
                  (sparc) 4.2.1,REV=1999.11.04.18.29
  7  SUNWmdnu    Solstice DiskSuite Log Daemon
                  (sparc) 4.2.1,REV=1999.11.04.18.29
  8  SUNWmdr      Solstice DiskSuite Drivers
                  (sparc) 4.2.1,REV=1999.12.03.10.00
  9  SUNWmdu      Solstice DiskSuite Commands
                  (sparc) 4.2.1,REV=1999.11.04.18.29
 10  SUNWmdx      Solstice DiskSuite Drivers(64-bit)  ß 서버 버전 확인 후 설치

               (sparc) 4.2.1,REV=1999.11.04.18.29

처리할 패키지(들)를 선택하십시오.(또는 모든 패키지를
처리하려면'all'을 입력하십시오.) (default: all) [?,??,q]:

패키지예<SUNWlvma>(을)를 </cdrom/sol_8_204_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages>에서 처리 중

Solaris Volume Management API's
(sparc) 1.0,REV=2001.11.02.03.17
Copyright 2001 Sun Microsystems, Inc. All rights reserved.
디렉토리 </>(을)를 패키지의 기본 디렉토리로 사용
## 패키지 정보 처리 중
## 시스템 정보 처리 중
  14개 패키지 경로 이름이 이미 제대로 설치되어 있습니다.
## 패키지 종속성 검증
## 디스크 공간 요구 검증 중
## 이미 설치되어 있는 패키지와의 충돌 여부를 확인하고 있습니다.

다음의 파일이 이미 시스템에 설치되어 있으며 다른 패키지에 의해
사용되고 있습니다:
  /usr/sadm/lib/wbem/doc <속성 변경만>

충돌하는 파일을 설치하겠습니까? y
## setuid/setgid 프로그램 점검

## 설치 전 스크립트 실행

.....


*** 주의 사항 ***
        시스템의 정확한 작동을 위해서는 반드시재부팅해야 합니다.
        다음을 실행한 후:
              shutdown -y -i6 -g0
        "콘솔 로그인:" 프롬프트가 나올 때까지 기다리십시오.


--패키지 설치 여부 확인작업

root@tech # pkginfo | grep mdx
system      SUNWhmdx      SunSwift SBus Adapter Drivers (64-bit)
system      SUNWmdx        Solstice DiskSuite Drivers(64-bit)
root@tech # pkginfo | grep -i solstice
ALE        SUNWksadl      Korean (EUC) Solstice Admintool launcher
system      SUNWmdg        Solstice DiskSuite Tool
system      SUNWmdja      Solstice DiskSuite Japanese localization
system      SUNWmdnr      Solstice DiskSuite Log Daemon Configuration Files
system      SUNWmdnu      Solstice DiskSuite Log Daemon
system      SUNWmdr        Solstice DiskSuite Drivers
system      SUNWmdu        Solstice DiskSuite Commands
system      SUNWmdx        Solstice DiskSuite Drivers(64-bit)
system      SUNWmibii      Solstice Enterprise Agents 1.0.3 SNMP daemon
system      SUNWsacom      Solstice Enterprise Agents 1.0.3 files for root file system
system      SUNWsadmi      Solstice Enterprise Agents 1.0.3 Desktop Management Interface
system      SUNWsadml      Solstice Launcher.
system      SUNWsadmx      Solstice Enterprise Agents 1.0.3 Desktop Management Interface Libraries (64-bit)
system      SUNWsasnm      Solstice Enterprise Agents 1.0.3 Simple Network Management Protocol
system      SUNWsasnx      Solstice Enterprise Agents 1.0.3 Simple Network Management Protocol Libraries (64-bit)





1. 테스트 장비
 
   - Sun Enterprise 3500

2. OS
   - 솔라리스 8

3. 테스트 디스크 정보
 root@E3500 # format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037979518,0
       1. c0t1d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037a85803,0
       2. c0t2d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037e94a1e,0
       3. c0t3d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000004cf997f24,0
Specify disk (enter its number):

 
c0t2d0
------------------------------------------------------------------------
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14518       20.00GB    (14519/0/0) 41945391
  1 unassigned    wu       0                0         (0/0/0)            0
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm   14519 - 15244        1.00GB    (726/0/0)    2097414
  5 unassigned    wm   15245 - 15970        1.00GB    (726/0/0)    2097414
  6 unassigned    wm   15971 - 16696        1.00GB    (726/0/0)    2097414
  7 unassigned    wm   16697 - 16732       50.78MB    (36/0/0)      104004

c0t3d0
------------------------------------------------------------------------
Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 - 14518       20.00GB    (14519/0/0) 41945391
  1 unassigned    wu       0                0         (0/0/0)            0
  2     backup    wm       0 - 24619       33.92GB    (24620/0/0) 71127180
  3 unassigned    wm       0                0         (0/0/0)            0
  4 unassigned    wm   14519 - 15244        1.00GB    (726/0/0)    2097414
  5 unassigned    wm   15245 - 15970        1.00GB    (726/0/0)    2097414
  6 unassigned    wm   15971 - 16696        1.00GB    (726/0/0)    2097414
  7 unassigned    wm   16697 - 16732       50.78MB    (36/0/0)      104004


4. Meta DB생성하기
  root@E3500 # metadb -a -f -c 3 c0t2d0s7
  root@E3500 # metadb -i
        flags           first blk       block count
     a        u         16              1034            /dev/dsk/c0t2d0s7
     a        u         1050            1034            /dev/dsk/c0t2d0s7
     a        u         2084            1034            /dev/dsk/c0t2d0s7
 o - replica active prior to last mddb configuration change
 u - replica is up to date
 l - locator for this replica was read successfully
 c - replica's location was in /etc/lvm/mddb.cf
 p - replica's location was patched in kernel
 m - replica is master, this is replica selected as input
 W - replica has device write errors
 a - replica is active, commits are occurring to this replica
 M - replica had problem with master blocks
 D - replica had problem with data blocks
 F - replica had format problems
 S - replica is too small to hold current data base
 R - replica had device read errors
  root@E3500 #

사용자 삽입 이미지


5. RAID 0 구성하기
 <Concatenation>   
root@E3500 # metainit d0 2 1 c0t2d0s4 1 c0t3d0s4
d0: Concat/Stripe is setup
root@E3500 # metastat d0
d0: Concat/Stripe
    Size: 4194828 blocks
    Stripe 0:
        Device              Start Block  Dbase
        c0t2d0s4                   0     No  
    Stripe 1:
        Device              Start Block  Dbase
        c0t3d0s4                   0     No  

root@E3500 #

사용자 삽입 이미지

 <Stripe>
root@E3500 # metainit d1 1 2 c0t2d0s5 c0t3d0s5 -i 128k
d1: Concat/Stripe is setup
root@E3500 # metastat d1
d1: Concat/Stripe
    Size: 4191939 blocks
    Stripe 0: (interlace: 32 blocks)
        Device             Start Block  Dbase
        c0t2d0s5                   0     No  
        c0t3d0s5                   0     No  

root@E3500 #

사용자 삽입 이미지

6. RAID 1 구성하기
root@E3500 # metainit d2 1 1 c0t2d0s6
d2: Concat/Stripe is setup
root@E3500 # metainit d3 1 1 c0t3d0s6
d3: Concat/Stripe is setup
root@E3500 # metainit d23 -m d2
d23: Mirror is setup
root@E3500 # metattach d23 d3
d23: submirror d3 is attached
root@E3500 # metastat d23
d23: Mirror
    Submirror 0: d2
      State: Okay        
    Submirror 1: d3
      State: Resyncing   
    Resync in progress: 0 % done
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 2097414 blocks

d2: Submirror of d23
    State: Okay        
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t2d0s6                   0     No    Okay        


d3: Submirror of d23
    State: Resyncing   
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t3d0s6                   0     No    Okay        


root@E3500 #

사용자 삽입 이미지

7. Disk Mount 하기
root@E3500 # newfs /dev/md/rdsk/d23
root@E3500 # mount /dev/md/dsk/d23 /test

8. MetaDB 삭제하기
root@E3500 # metadb -i
        flags           first blk       block count
     a        u         16              1034            /dev/dsk/c0t2d0s7
     a        u         1050            1034            /dev/dsk/c0t2d0s7
     a        u         2084            1034            /dev/dsk/c0t2d0s7
     a        u         16              1034            /dev/dsk/c0t3d0s7
     a        u         1050            1034            /dev/dsk/c0t3d0s7
     a        u         2084            1034            /dev/dsk/c0t3d0s7
 o - replica active prior to last mddb configuration change
 u - replica is up to date
 l - locator for this replica was read successfully
 c - replica's location was in /etc/lvm/mddb.cf
 p - replica's location was patched in kernel
 m - replica is master, this is replica selected as input
 W - replica has device write errors
 a - replica is active, commits are occurring to this replica
 M - replica had problem with master blocks
 D - replica had problem with data blocks
 F - replica had format problems
 S - replica is too small to hold current data base
 R - replica had device read errors
root@E3500 # metadb -d -f c0t2d0s7 c0t3d0s7
root@E3500 # metadb -i
root@E3500 #


9. RAID 구성 삭제하기
root@E3500 # metastat
d23: Mirror
    Submirror 0: d2
      State: Okay        
    Submirror 1: d3
      State: Okay        
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 2097414 blocks

d2: Submirror of d23
    State: Okay        
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t2d0s6                   0     No    Okay        
d3: Submirror of d23
    State: Okay        
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t3d0s6                   0     No    Okay        


d0: Concat/Stripe
    Size: 4194828 blocks
    Stripe 0:
        Device              Start Block  Dbase
        c0t2d0s4                   0     No  
    Stripe 1:
        Device              Start Block  Dbase
        c0t3d0s4                   0     No  

d1: Concat/Stripe
    Size: 4191939 blocks
    Stripe 0: (interlace: 32 blocks)
        Device              Start Block  Dbase
        c0t2d0s5                   0     No  
        c0t3d0s5                   0     No  

root@E3500 #
root@E3500 # metaclear -r d0
d0: Concat/Stripe is cleared
root@E3500 # metaclear -r d1
d1: Concat/Stripe is cleared
root@E3500 # metaclear -r d23
d23: Mirror is cleared
d2: Concat/Stripe is cleared
d3: Concat/Stripe is cleared
root@E3500 # metastat
root@E3500 #



1. Hot spare 구성하기
  Volume 으로 구성하여 운영하던 중에 Disk의 hardware 장애로 인하여 volume 의 구성에 문제가 발생되어 여유분의 disk를 volume의 장애난 디스크와 자동 교체됨

root@E3500 # metainit hsp000 c0t2d0s5  <-Hot Spare 생성
hsp000: Hotspare pool is setup
root@E3500 # metastat hsp000
hsp000: 1 hot spare
        c0t2d0s5                Available       2097414 blocks

사용자 삽입 이미지

root@E3500 #
root@E3500 # metahs -a hsp000 c0t3d0s5  <- Hot Spare 추가
hsp000: Hotspare is added
root@E3500 # metastat hsp000
hsp000: 2 hot spares
        c0t2d0s5                Available       2097414 blocks
        c0t3d0s5                Available       2097414 blocks

root@E3500 #
root@E3500 # metahs -d hsp000 c0t3d0s5 <- Hot Spare 삭제
hsp000: Hotspare is deleted
root@E3500 # metastat hsp000
hsp000: 1 hot spare
        c0t2d0s5                Available       2097414 blocks

root@E3500 #
root@E3500 # metahs -r hsp000 c0t2d0s5 c0t3d0s5  <- Hot Sprae 교체
hsp000: Hotspare c0t2d0s5 is replaced with c0t3d0s5
root@E3500 # metastat hsp000
hsp000: 1 hot spare
        c0t3d0s5                Available       2097414 blocks

root@E3500 #

root@E3500 # metastat d10  <- RAID 1 구성상태
d10: Mirror
    Submirror 0: d0
      State: Okay        
    Submirror 1: d1
      State: Resyncing   
    Resync in progress: 4 % done
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 2097414 blocks

d0: Submirror of d10
    State: Okay        
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t2d0s4                   0     No    Okay        


d1: Submirror of d10
    State: Resyncing   
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t3d0s4                   0     No    Okay        

root@E3500 # metaparam -h hsp000 d0  <- RAID1 과 연계
root@E3500 # metaparam -h hsp000 d1  <- RAID1 과 연계
root@E3500 # metastat d1
d1: Concat/Stripe
    Hot spare pool: hsp000
    Size: 2097414 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t3d0s4                   0     No    Okay        

root@E3500 #

사용자 삽입 이미지


root@E3500 # metaparam -h none d0  <- RAID1 과 연계제거
root@E3500 # metaparam -h none d1  <- RAID1 과 연계제거
root@E3500 #
root@E3500 # metaclear hsp000  <- Hot Spare spool 제거
hsp000: Hotspare pool is cleared
root@E3500 #
 

2. Soft Partition 구성하기
  기존 파티션에서 30Mbtye의 용량으로 2개의 Volume 만들기

root@E3500 # metainit d10 -p c0t2d0s6 30m   <- 30Mbyte Volume 만들기
d10: Soft Partition is setup
root@E3500 # metainit d11 -p c0t2d0s6 30m   <- 30Mbyte Volume 만들기
d11: Soft Partition is setup
root@E3500 #
root@E3500 # metastat d10 d11
d10: Soft Partition
    Component: c0t2d0s6
    State: Okay
    Size: 61440 blocks
        Extent              Start Block              Block count
             0                        1                    61440

d11: Soft Partition
    Component: c0t2d0s6
    State: Okay
    Size: 61440 blocks
        Extent              Start Block              Block count
             0                    61442                    61440

root@E3500 #
root@E3500 # metaclear -r d10  <- Volume 삭제
d10: Soft Partition is cleared
root@E3500 # metaclear -r d11  <- Volume 삭제
d11: Soft Partition is cleared
root@E3500 #



출처 : http://serings.tistory.com/

Posted by 1010
60.Unix2008. 12. 11. 11:46
반응형
은근히 모르시는 분들이 많다. 간단하게- 포스팅!

1. METADB 만들기
#metadb -a -f -c3 c2t0d0s4 c2t1d0s4 c2t2d0s4 c2t3d0s4    <--- metadb file을 만들어 준다.
#metadb

2. RAID 0 : Concatenated 구성
#metainit d0 1 1 c2todos1
#metattach d0 c2tld0s1
#metastat  <--- raid 구성확인하기
#newfs /dev/md/dsk/d0   <--- file system 만들기

3. RAID 0 : Striped 구성
#metainit d1 1 2 c2t0d0s0 c2t1d0s0
#newfs /dev/md/dsk/d1

4. RAID 1
#metainit d10 1 1 /dev/dsk/c2t2d0s0     <---concat으로 일단 만듬
#metainit d20 1 1 /dev/dsk/c2t3d0s0     <---concat으로 일단 만듬
#merainit d12 -m d10     <----- 묶기
#metattach d12 d20       <----- d12 묶기
#newfs /dev/md/dsk/d12

5. RAID 0 + 1
#metainit d30 1 2 c2t0d0s6 c2t1d0s6
#metainit d40 1 2 c2t2d0s6 c2t3d0s6
#metainit d34 -m d30
#metattach d34 d40
#newfs /dev/md/dsk/d34

6. RAID 5
#metainit d5 -r c2t0d0s5 c2t1d0s5 c2t2d0s5  <----반드시 장치이름을 3개로 줄것
#newfs /dev/md/dsk/d5


출처 : http://dolbbi.com/352?srchid=BR1http%3A%2F%2Fdolbbi.com%2F352
Posted by 1010
60.Unix2008. 12. 11. 11:44
반응형

1.   DiskSuite 4.2 Install

 

Solaris Media Kit 제공되는 Solaris Easy Access Server 3.0 CD 있는 disksuite 4.2 install 한다

PATH 설정       /opt/SUNWmd/bin  /usr/opt/SUNWmd/sbin

MANPATH 설정  /opt/SUNWadm/man  /opt/SUNWmd/man

 

 

2.   Disk Partition 설정 metadb 생성

 

Metadevice 구성을 위한 Disk Partition 구성은 Data 영역과 Metadatabase영역으로 나눈다

    Metadatabase 영역은 10MB 정도 설정 주며 복제본은 metadb 3 이상으로 한다.

 

ex) 18.2GB HDD 경우

 

(1)     command Prompt에서 작업 방법

 

# format

c0t1d0s6,  c0t2d0s6 … à 10MB disk 하나씩

c0t1d0s7,  c0t2d0s7 … à 18190MB 파티션 설정하며 디스크의 종류와 설정값은 동일해야 한다.

 

# metadb  -a  –f  -c  3  c0t1d0s6  c0t2d0s6 ……

   -a ; 생성

   -f ; 강제로

   -c  3  ; metabd 복제본 3

 

à 삭제

# metadb  -d  -f  c0t1d0s6

# metaclear  d3

 

 

(2) File  편집 작업 방법

 

# vi  /etc/opt/SUNWmd/md.tab

  mddb  01  c0t1d0s6  c0t2d0s6  ……

:wq!

# metadb  -a  -f  -c  3  mddb01

 

확인방법

# metadb  -i    

 

플래그               첫째 blk         블록 계수

     M      pc luo              16             1034             /dev/dsk/c2t0d0s6

     a m    pc luo        16              1034            /dev/dsk/c2t1d0s6

     a      pc luo         16              1034            /dev/dsk/c2t8d0s6

     a      pc luo         16              1034            /dev/dsk/c2t9d0s6

 o - mddb 구성을 마지막으로 변경하기 전의 활성 복제본입니다.

 u - 최신 복제본입니다.

 l - 복제본의 위치자를 성공적으로 읽었습니다.

 c - 복제본의 위치는 /etc/opt/SUNWmd/mddb.cf 내에 있습니다.

 p - 커널에서 복제본의 위치를 패치하였습니다.

 m - 복제본은 마스터이고 이것은 입력용으로 선택한 복제본입니다.

 W - 복제본에 장치 쓰기 오류가 있습니다.

 a - 복제본을 활성화하여 복제본을 완료합니다.

 M - 복제본에 마스터 블록 문제가 있습니다.

 D - 복제본에 데이터 블록 문제가 있습니다.

 F - 복제본에 형식 문제가 있습니다.

 S - 복제본이 너무 작아 현재 데이터베이스를 유지할 없습니다.

 R - 복제본에 장치 읽기 오류가 있습니다.

 

 

3.   Concatenation Metadevice 구성

 

(1)  Prompt에서 작업 방법

 

# metainit  d10  2  1  c0t1d0s7  1  c0t2d0s7

    d10 ; logical device name

2        ; 구성되는 Slice

1          ; Slice 앞에 default 붙여줌

 

(2) File  편집 작업 방법

   

# vi  /etc/opt/SUNWmd/md.tab

d10  2  1  c0t1d0s7  1  c0t2d0s7

:wq!

 

    # metainit  d10

 

확인 방법

    # metastat

 

 

4.   Striped Metadevice 구성

 

(1) Prompt에서 작업 방법

 

# metainit  d10  1  2  c0t1d0s7   c0t2d0s7  -i  32k (or 8k)

d10 ; logical device name

2          ; 구성되는 Slice

1        ;  logical device

32k ;  한번에 data 쓰는 단위

 

   (2) File  편집 작업 방법

    # vi  /etc/opt/SUNWmd/md.tab

d10  1  2  c0t1d0s7  c0t2d0s7  -i  32k (or 8k)

:wq!

   

# metainit  d10

 

 

5.    Mirrored  Metadevice  구성

 

(1)  Prompt에서 작업 방법

 

 mirroring data 영역과 root 영역의 구성 방법이 서로 다르다.

 

1)    data 영역

      슬라이스를 stripe 구성한다

# metainit  d10  1  1  c0t1d0s7

# metainit  d20  1  1  c0t2d0s7

 

      oneway mirroring

# metainit  d0  -m  d10

 

      twoway mirroring

# metattach  d0  d20

 

      확인

#metastat

 

d0: 미러

    서브미러 0: d10

      상태: 확인        

    서브미러 1: d20

      상태: 확인

    통과: 1

    읽기 옵션: 라운드 로빈 (기본값)

    쓰기 옵션: 병렬 (기본값)

    크기: 35231301 블록

 

d10: d0 서브미러

    상태: 확인        

    크기: 35231301 블록

    스트라이프 0: (인터레이스: 32 블록)

        장치                시작 블록    Dbase 상태         스페어

        c2t8d0s7                   0     아니  확인        

        c2t9d0s7                   0     아니  확인        

 

d20: d0 서브미러

    상태: 확인

    호출: 메타대체 d2 c2t0d0s7 < 장치>

    크기: 35231301 블록

    스트라이프 0: (인터레이스: 32 블록)

        장치                시작 블록    Dbase 상태         스페어

        c2t0d0s7                   0     아니  확인   

        c2t1d0s7                   0     아니  확인        

 

2)     root (O/S) 영역

data 영역 mirroring 동일 하나 oneway mirroring Rebooting 작업을 한번 준다.

 

# metainit  -f  d10  c0t1d0s7

# metainit  -f  d10  c0t2d0s7

# metainit  d0  -m  d10  à oneway

# metaroot  d0

# lockfs  -fa   à / 경우에만 ; /usr 기타 디렉토리는 안함.

/etc/vfstab 등록

# reboot

# metattach  d0  d20

 

(2)    File 편집  작업 방법

 

# vi  /etc/opt/SUNWmd/md.tab

         d0  -m  d10 

         d10  1  1  c0t1d0s7

         d20  1  1  c0t2d0s7

 

         :wq!

 

# metainit  d10

# metainit  d20  

# metainit  d0

# metattach  d0  d20

 

 

6.   RAID 5

 

# metainit  d10  -r  c1t1d0s7   c1t2d0s7   c1t3d0s7  c1t4d0s7  -i  8k

 

 

7.   hot spares

 

-  hot spares pool 만듦.

# metainit  hsp001  c1t5d0s7

 

-  지정

    # metaparm  -h  hsp001  d0

    # metaparm  -h  hsp001  d10

 

    -  추가

    # metahs  -a  hsp001  d10

   

    -  해제

    # metahs  -d  hsp001  c1t5d0s7

  

    -  replace   

    # metahs  -r  hsp001  c1t5d0s7  c1t11d0s7

 

    -  enable

    # metahs  -e  c1t11d0s7

 

    -  제거  

    # metaparam  -h  hsp001  c1t5d0s7

 

    -  확인

    # metahs  -i  

 

 

8.   /etc/vfstab 등록하기

 

# vi  /etc/vfstab

 

logical  device  logical  device name 으로  파일에 등록해 준다

device          fsck type       mount dir   fsck type   mount boot  opt.

 /dev/md/dsk/d0   /dev/md/rdsk/d0  /data  ufs     2         no          -

Posted by 1010
60.Unix2008. 12. 11. 11:43
반응형
* 설치된 Package 정보
system      VRTSvmdev      VERITAS Volume Manager, Header and Library Files
system      VRTSvmdoc      VERITAS Volume Manager (user documentation)
system      VRTSvmman      VERITAS Volume Manager, Manual Pages
system      VRTSvmsa       VERITAS Volume Manager Storage Administrator
system      VRTSvxvm       VERITAS Volume Manager, Binaries
 
#  pkginfo -l VRTSvxvm
   PKGINST:  VRTSvxvm
      NAME:  VERITAS Volume Manager, Binaries
  CATEGORY:  system
      ARCH:  sparc
   VERSION:  3.0.3,REV=02.11.2000.17.32
   BASEDIR:  /
    VENDOR:  VERITAS Software
      DESC:  Virtual Disk Subsystem
    PSTAMP:  VERITAS-3.0.3h:11-February-2000
  INSTDATE:  1¿ù 27 2001 19:53
   HOTLINE:  800-342-0652
     EMAIL:  support@veritas.com
    STATUS:  completely installed
     FILES:    303 installed pathnames
                12 shared pathnames
                 6 linked files
                44 directories
               183 executables
                 1 setuid/setgid executables
             45446 blocks used (approx)
 
* 시스템 정보(E3500)
# uname -a
SunOS search_move 5.7 Generic_106541-14 sun4u sparc SUNW,Ultra-Enterprise
 
search_move[root/]:1 format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037bd1966,0
       1. c0t1d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037a833c2,0
       2. c0t2d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037bd9613,0
       3. c0t3d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037bd7aa3,0
       4. c1t4d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w2100002037bd5390,0
       5. c1t5d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w2100002037a5f521,0
       6. c1t6d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w2100002037a5f380,0
       7. c1t7d0 <SUN18G cyl 7506 alt 2 hd 19 sec 248>
          /sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w2100002037ae64c0,0
Specify disk (enter its number):
 
(참고)  c0t0d0  --> o/s disk 사용
           c1t4d0 --> o/s backup disk 로 사용 (o/s 디스크 장애시 대비)
           c0t1d0, c0t2d0, c0t3d0   -> stripe 구성 (18GB disk 3개로 plex 1개 구성)
           c1t5d0, c1t6d0, c1t7d0  -> stripe 구성 (18GB disk 3개로 plex 1개 구성)
 
* 작업시작.

1. rootdg 생성 - 새로운 볼륨을 생성하기 위해 rootdg 를 만들어준다.
    rootdg로 사용할 slice를 미리 정해준다.
    저는 c0t0d0s7 과 c1t4d0s7에 약 20MB정도의 slice를 생성하였음.
 
 # newfs /dev/rdsk/c0t0d0s7
  newfs: construct a new file system /dev/rdsk/c0t0d0s7: (y/n)? y
  /dev/rdsk/c0t0d0s7:     23560 트랙의 5 실린더에 있는 19 섹터, 248 섹터
        1076298240 실린더 그룹의 0.0MB(16 c/g, 36.81MB/g, 17664 i/g)
  수퍼-블록 백업은 (fsck -F ufs -o b=#를 위한) 다음에:
  32,
 #
 # newfs /dev/rdsk/c1t4d0s7
  ...

 # vxconfigd -m disable   ; deamon 정지
  (ex)
   # vxconfigd -m disable
    vxvm:vxconfigd: ERROR: cannot open /dev/vx/config: Device is already open

 # vxdctl init   ; /etc/vx/volboot 파일 초기화
 # vxdctl list      
 
  (ex)
 # vxdctl init
 # vxdctl list
 Volboot file
 version: 3/1
 seqno:   0.5
 hostid:  search_move
 entries:
 
 # vxdctl add disk c0t0d0s7 type=simple
 # vxdctl add disk c1t4d0s7 type=simple
 
 # vxdg init rootdg    ; rootdg생성하는 것으로 초기화하는 부분.
 
 # vxdg list rootdg   ; rootdg에 대한 정보 출력해본다.그냥.
 Group:     rootdg
 dgid:      1102393079.1050.search_move
 import-id: 0.1
 flags:   
 version:   60
 copies:    nconfig=default nlog=default
 config:    seqno=0.1034 permlen=4 free=2 templen=0 loglen=0
 
 # vxdisk -f init c0t0d0s7 type=simple    ; 헤더정보를 인스톨
 # vxdisk -f init c1t4d0s7 type=simple

 # vxdg adddisk c0t0d0s7    ; rootdg에 c0t0d0s7, c1t4d0s7 영역을 import함.
 # vxdg adddisk c1t4d0s7

 # vxdctl enable   ; 각각의 디스크로 부터 볼륨을 가져옴

 # vxdctl list
 Volboot file
 version:3/1
 seqno: 0.7
 hostid : search_move
 entries:
   disk c0t0d0s7 type=simple privoffset=1
   disk c1t4d0s7 type=simple privoffset=1

 # vxdg list rootdg
   ……
   config disk c0t0d0s7 copy 1 len=727 state=clean online
   config disk c1t4d0s7 copy 1 len=727 state=clean online
 
 # vxdisk list
 DEVICE       TYPE      DISK         GROUP        STATUS
 c0t0d0s2     sliced    -            -            error
 c0t0d0s7     simple    c0t0d0s7     rootdg       online
 c0t1d0s2     sliced    -            -            error
 c0t2d0s2     sliced    -            -            error
 c0t3d0s2     sliced    -            -            error
 c1t4d0s2     sliced    -            -            error
 c1t5d0s2     sliced    -            -            error
 c1t6d0s2     sliced    -            -            error
 c1t7d0s2     sliced    -            -            error
 c0t0d0s7     simple    c1t4d0s7     rootdg       online
 
위에서 error 로 표기된 것은 vxvm 디스크로 초기화 되지 않은 상태이다.
2. 볼륨을 구성할 디스크 6개에 대해서 초기화 시켜준다.
   방법은 vxdiskadm 으로 들어가서 대화식모드로 디스크를 초기화시켜주는 방법이 있고,
   두번째로는 vxdisksetup 명령어를 이용해서 생성할 수 있다.
 
  # vxdiskadm
Volume Manager Support Operations
Menu: VolumeManager/Disk
 1      Add or initialize one or more disks
 2      Encapsulate one or more disks
 3      Remove a disk
 4      Remove a disk for replacement
 5      Replace a failed or removed disk
 6      Mirror volumes on a disk
 7      Move volumes from a disk
 8      Enable access to (import) a disk group
 9      Remove access to (deport) a disk group
 10     Enable (online) a disk device
 11     Disable (offline) a disk device
 12     Mark a disk as a spare for a disk group
 13     Turn off the spare flag on a disk
 list   List disk information

 ?      Display help about menu
 ??     Display help about the menuing system
 q      Exit from menus
Select an operation to perform:  1
 여기서 1번 메뉴로 들어가면..아래와 같이 나온다.
 
Add or initialize disks
Menu: VolumeManager/Disk/AddDisks
  Use this operation to add one or more disks to a disk group.  You can
  add the selected disks to an existing disk group or to a new disk group
  that will be created as a part of the operation. The selected disks may
  also be added to a disk group as spares. The selected disks may also
  be initialized without adding them to a disk group leaving the disks
  available for use as replacement disks.
  More than one disk or pattern may be entered at the prompt.  Here are
  some disk selection examples:
  all:          all disks
  c3 c4t2:      all disks on both controller 3 and controller 4, target 2
  c3t4d2:       a single disk
Select disk devices to add:                                         
[<pattern-list>,all,list,q,?] list
DEVICE       DISK         GROUP        STATUS
c0t0d0       -            -            error
c0t0d0       c0t0d0s7     rootdg       online
c0t1d0       -            -            error
c0t2d0       -            -            error
c0t3d0       -            -            error
c1t4d0       -            -            error
c1t4d0       c1t4d0s7     rootdg     online
c1t5d0       -            -            error
c1t6d0       -            -            error
c1t7d0       -            -            error
 
Select disk devices to add:                                         
[<pattern-list>,all,list,q,?] c0t1d0 c0t2d0 c0t3d0 c1t5d0 c1t6d0 c1t7d0
  Here are the disks selected.  Output format: [Device_Name]
  c0t1d0 c0t2d0 c0t3d0 c1t5d0 c1t6d0 c1t7d0
Continue operation? [y,n,q,?] (default: y) y
  You can choose to add these disks to an existing disk group, a
  new disk group, or you can leave these disks available for use
  by future add or replacement operations.  To create a new disk
  group, select a disk group name that does not yet exist.  To
  leave the disks available for future use, specify a disk group
  name of "none".
Which disk group [<group>,none,list,q,?] (default: rootdg) list
NAME         STATE           ID
rootdg       enabled  1102033027.1042.investinfo_move
Which disk group [<group>,none,list,q,?] (default: rootdg) investinfodg
  There is no active disk group named investinfodg.
 
Create a new group named searchdg? [y,n,q,?] (default: y) y
Use default disk names for these disks? [y,n,q,?] (default: y) y
Add disks as spare disks for searchdg? [y,n,q,?] (default: n) n
  A new disk group will be created named investinfodg and the selected disks
  will be added to the disk group with default disk names.
  c0t1d0 c0t2d0 c0t3d0 c1t5d0 c1t6d0 c1t7d0
Continue with operation? [y,n,q,?] (default: y) y
  These disk devices are currently listed as in use by another host.
  If you are certain that the other host is not using the disks, you
  can choose to clear the use status. To use these disks the use status
  must be cleared.
  Output format: [Device_Name,Disk_Access_Name,Hostid]
  [c0t1d0,c0t1d0s2,search_move] [c0t2d0,c0t2d0s2,search_move] [c0t3d0,c0t3d0s2,search_move]
  [c1t5d0,c1t5d0s2,search_move] [c1t6d0,c1t6d0s2,search_move] [c1t7d0,c1t7d0s2,search_movel]
Clear use status? [Y,N,S(elect),q,?] (default: N) y
  Please respond with "Y", "N", or "S"
Clear use status? [Y,N,S(elect),q,?] (default: N) Y
  The following disks you selected for use appear to already have
  been initialized for the Volume Manager.  If you are certain the
  disks already have been initialized for the Volume Manager, then
  you do not need to reinitialize these disk devices.
  Output format: [Device_Name]
  c0t1d0 c0t2d0 c0t3d0 c1t5d0 c1t6d0 c1t7d0
Reinitialize these devices? [Y,N,S(elect),q,?] (default: Y) Y
  Initializing device c0t1d0.
  Initializing device c0t2d0.
  Initializing device c0t3d0.
  Initializing device c1t5d0.
  Initializing device c1t6d0.
  Initializing device c1t7d0.
  Creating a new disk group named searchdg containing the disk
  device c0t1d0 with the name searchd01.
  Adding disk device c0t2d0 to disk group searchdg with disk
  name searchd02.
  Adding disk device c0t3d0 to disk group searchdg with disk
  name searchd03.
  Adding disk device c1t5d0 to disk group searchdg with disk
  name searchd04.
  Adding disk device c1t6d0 to disk group searchdg with disk
  name searchd05.
  Adding disk device c1t7d0 to disk group searchdg with disk
  name searchd06.
Add or initialize other disks? [y,n,q,?] (default: n) n
 
Volume Manager Support Operations
Menu: VolumeManager/Disk
 1      Add or initialize one or more disks
 2      Encapsulate one or more disks
 3      Remove a disk
 4      Remove a disk for replacement
 5      Replace a failed or removed disk
 6      Mirror volumes on a disk
 7      Move volumes from a disk
 8      Enable access to (import) a disk group
 9      Remove access to (deport) a disk group
 10     Enable (online) a disk device
 11     Disable (offline) a disk device
 12     Mark a disk as a spare for a disk group
 13     Turn off the spare flag on a disk
 list   List disk information

 ?      Display help about menu
 ??     Display help about the menuing system
 q      Exit from menus
Select an operation to perform: q
Goodbye.
 
 이렇게 하면 초기화가 된다. 초기화 하는 중 리부팅후에 적용해야 된다는 경우도 메세지로 출력될 수 있는데...그때는 리부팅....
 
 다시 리부팅후 vxdisk list 해서 디스크가 올라오는지 확인후 ,
새롭게 디스크 정보를 지우고 초기화 한다.

 # vxdiskadm   --> 1.Add or initialize disks
기존 정보에 대해 clear 시킨다. 해당 디스크 c0t1d0, c0t2, c0t3, c1t5, c1t6, c1t7 를 선택한다.
여기서, 새롭게 설정할 디스크그룹(dg)이름도 만들어서 해당디스크들을 새로운DG(investinfodg)의 멤버로서 초기화한다.

 - 리부팅해야 할 경우도 생긴다. Encapsulate 해야 되니…아님…해당 디스크는 리부팅후 초기화 해야된다는 메시지가 나오면 리부팅후 혹은 아래와 같이 명령어로 한다.

 (기존 정보 제거 순서) 만약에 기존 디스크에 볼륨정보가 존재하고 있다면…. 아래와 같이 제거후 다시 해준다.
 - plex 제거 # vxedit -r rm plex_이름
 - dg에서 subdisk 제거   # vxdg -g dg이름 rmdisk subdisk이름
 - dg에 남은 마지막 남은 subdisk는 위 명령으로 제거가 안된다.
    그래서 아예 dg를 아래와 같이 날린다.
    # vxdg destory dg이름

 - FDP(Free Disk Pool) 에 디스크제거  
 # vxdiskupsetup c#t#d#
 기존 정보를 제거를 헀다면…. 초기화 시킨다.'

  # cd /etc/vx/bin
  # vxdisksetup -i c#t#d#    ;  FDP영역에 넣어 주는 것.( vxdisk list 했을 시 errot 에서 online으로 바뀐다.)
 
2. subdisk 생성 -> plex 생성 -> volume 생성 -> volume start -> newfs(파일시스템생성) -> 마운트(여기같은 경우 물리적 디스크 한 개에 subdisk 한 개를 만들었다.)
(len값의 35363560은 "vxdisk list c#t#d#s2"로 보면 나오는 최종 offset값이다..즉…전체사이즈를 말한다.)
 
** subdisk 생성 **
 # vxmake -g searchdg sd searchd01-01 len=35363560  dmname=searchd01 dmoffset=0
 # vxmake -g searchdg sd searchd02-01 len=35363560  dmname=searchd02 dmoffset=0
 # vxmake -g searchdg sd searchd03-01 len=35363560  dmname=searchd03 dmoffset=0
 # vxmake -g searchdg sd searchd04-01 len=35363560 dmname=searchd04 dmoffset=0
 # vxmake -g searchdg sd searchd05-01 len=35363560 dmname=searchd05 dmoffset=0
 # vxmake -g searchdg sd searchd06-01 len=35363560 dmname=searchd06 dmoffset=0
 
 # vxprint -s 혹은 vxprint -st 로 확인한다.
 
** dg에 속한 subdisk 제거 **
 # vxdg -g dg이름 rmdisk disk이름     ; 마지막남은 놈은 이 명령으로 안 지워진다.

 # vxdg destroy dg이름    ; 마지막 남은 디스크와 dg를 완전히 제거
 
** subdisk 제거 **   (보통 default로 dg이름이 aadg이면 disk이름은 aad01,aad02… 이렇고, subdisk이름은 aad01-01,aad02-01…)
 # vxedit rm subdisk이름

** plex 생성 **
(plex 생성 - 여기서는 디스크를 3개씩 스트라이프로 묶어 plex를 2개 만들어 미러하고자 한다.)

 # vxmake -g searchdg plex home1-01 sd=searchd01-01,searchd02-01,searchd03-01  layout=stripe stwidth=256 ncolumn=3

 # vxmake -g searchdg plex home1-02 sd=searchd04-01,searchd05-01,searchd06-01  layout=stripe stwidth=256 ncolumn=3
 
여기서 stwidth는 stripe width를 가리키는데,
위 명령은 stripe용 plex를 생성하는 것이다.
Plex 이름은 home1-01 이며, subdisk가 3개이므로 ncolumn은 3이며, stwidth는 256이다.

 # vxprint -sp  ; plex 생성후 제대로 생성되었는 지 확인해본다.
 
** plex 제거 **

 # vxedit -r rm plex이름 plex이름 …

** volume 생성 **
 # vxmake -g investinfodg -Ufsgen vol home1 plex=home1-01,home1-02  
  ; home1이라는 volume을 생성한다.
  ( home1이란 volume을 생성하는 plex두개를 동시에 적어서 포함시켜준다.)
 
 # vxprint -pvt       ; plex 와 volume 확인

 # vxvol start home1    ; 생성된 volume 을 시작하게 되면, 자동으로 sync 를 시작한다.
 
 # ls -ld /dev/vx/rdsk/investinfodg/home1    ; 생성된 raw device 확인
   crw-------   1 root     root     155,83000 Dec  3 17:09 /dev/vx/rdsk/investinfodg/home1

 # newfs /dev/vx/rdsk/investinfodg/home1       ; file system 생성.

 # mount /dev/vx/dsk/investinfodg/home1 /home1      ; mount

** volume 제거 **
 # vxedit -r rm volume이름     ; volume 제거시 포함된 plex, subdisk등을 전부 다 제거한다.
 

(참고)
 # vxdg -g dg이름 -k rmdisk disk이름
    ; vxdisk list 시 failed 라고 떨어지는 디스크를 removed로 바꾼다.
Posted by 1010
60.Unix2008. 12. 11. 11:41
반응형

cron :schedule commands
cron이라고 불리는 주기적인 실행을 도와주는 프로그램이 있다.
이 프로그램은 주기적으로 어떤 프로그램을 수행하도록 하는데 사용되는 shell은 sh(bourn shell)이다. cron의 주기적 실행의 포맷은 밑에 설명하고 이 명령들은 crontab이라는 파일에 실행될 주기와 명령을 정의 한다. 파일의 형식은 다음과 같다.
minute hour day month weekday username command
minute :분단위의 값(0-59)
hour :시간단위의 값(0-23)
day :날짜 값(1-31)
month :달값(1-12)
weekday :요일 값(0-6)
항상 일치되는 값은 *로 표시 한다.

일반 사용자는 crontab이라는 명령으로 자신으 주기적 실행을 확인 할수 있고 실행되고 있는 cron 의 내용은 "crontab -l"을 이용해 확인할수 있으며 "crontab -r"을 이용해 수행하고 있던 주기적인 실행을 제거 할수 있다.
일반적으로 주기적인 실행을 하게 되는 경우 날짜나 시간에 대한 정보를 주기적으로 나타내기 위해 사용되어 지고 또 시스템의 관리를 위해 File system을 주기적으로 점검하여 필요 없는 쓰레기 파일등을 제거 하는 목적으로도 사용된다.

예제:
10 1 * * *  find / -xdev -name core -atime +7 -exec rm -f {} ';'    #매일 1시 10분에 core 파일을 찾아 지우라는 명령

Solaris 는 crontab 파일을 /var/spool/cron/crontab에 위치 하고 cron의 사용허가권에 대한 cron.allow ,cron.deny 에 관한것은 /etc/cron.d에 위치해 있다. cron의 log를 만들려면 /etc/default/cron에 있는 CRONLOG=YES;라는 항목을 uncomment 하면 되고 이 log는 /var/cron/log에 생기게 된다.

Daemaon
daemon이란 background 로 동작하고 있는 시스템의 프로세서 이다. 접근하는 사용자에게 서비스를 제공하기 위한 것이다. 간단하게 표현하면 시스템에 서비스를 이용하기 위해 들어오는 문이라고 하겠다. "대문"
Various Daemons:유닉스 시스템에는 매우 다양한 대몬이 있다. 그만큼 다양한 서비스를 제공한다는 뜻이다.
 
Essential Daemon:init ,cron,inetd
init :시스템 부팅시 가장먼저 수행되는 데몬
모든 프로세서가 init에서 부터 생성된다.
cron:주기적인 수행을 위한 데몬
inetd:데몬들을 관리 하는 데몬, client의 요청을 받아 작업을 허가하고 제어하는 역할을 한다.
inetd의 설정은 /etc/inet/inetd.conf에서 하게 되고 포트의 정의 나 설정은 /etc/service 에서 하게 된다는 뜻이다.
NFS Daemon :nfsd,rpc.mountd, rpc.lockd,rpc.statd,biod
nfsd :NFS client 들이 접근 할수 있게 도와주는 데몬 단순히 요청을 받아 kernel로 넘겨주는 역할을 한다.
rpc.mountd:mount 요청을 받았을 때 응답을 하기 위한 데몬 mount가능 여부는 /etc/export에 정의 된 부분에 따른다.
rpc.lockd&rpc.statd:lockd는 접근을 제한하고 statd는 접근을 허용하기 위해 존재 한다.

NIS Daemons:ypbind,ypserv,ypxfrd,rpc.nisd
ypbind :NIS client  server에서 동시에 존재하고 자체적으로 어떤 요청을 받아 들이지 않는다.
ypserv:NIS server에서 동작되고 client들에게 Broadcasting 하면서 서버의 위치를 알린다. client 들의 요청을 받아 응답하고 처리한다.
ypxfrd:NIS server database의 내용을 sub server에게 복사 해 주기위한 데몬이다. client인 sub server 가 ypxfr이라는 명령을 사용하여 Daemon에 요청한다.
rpc.nisd:NIS+ server daemon

internet daemon :comsat talkd rwhod ftpd popper rlogind telnetd rshd rexecd rpc.rexd timed xntpfd routd gated named nntpd innd syslogd fingerd httpd
comsat:새로운 메일을 사용자에게 알려주기 위한 데몬
talkd : 서로 다른 시스템 사이에서 talk를 하기 위한 데몬
ftpd : 서로 파일 을 주고 받기 위한 데몬
popper: 유닉스가 아닌 운영 체제 에서 메일을 주고 받게 하기 위한 인터넷 데몬
rlogind: remote login을 가능 하게 하는 데몬
telnetd : rlogin과 비슷하게 remote login을 가능 하게 하는 데몬
rshd: remote 에서 명령을 수행하기 위한 데몬
rexecd: rshd 와 비슷한 remote 명령을 수행하기 위한 데몬
rpc.rexd: RPC remote 명령을 수행하기 위한 데몬
timed: 시간을 동기화 하기 위한 데몬
xntpd: timed 보다 더 나아진 시간을 동기화 하기 위한 데몬
routed: routing table을 관리 하기 위한 데몬
gated : routd 와 비슷한 기능을 가지지만 더 설정이 쉬움
named : DNS server에서 네임을 해석 하기 위한 데몬
nntpd: Usenet News 를 제공 하기 위한 news 서버 Daemon
innd:nntpd 와 비슷한 기능을 수행하는 데몬
syslogd:process 들의 수행결과나 에러 메세지를 처리 하는 daemon
fingerd: user의 정보를 확인 하는데 쓰이는 finger 명령을 처리 하기 위한 데몬

Daemon for Diskless Clients: bootd tftpd rarpd bootparamd

bootd : Boot server 기능을 하기 위한 데몬
tftpd : ftpd 보다 훨씬 간단 한 파일 전송을 하기 위한 데몬
rarpd: name을 ip 로 인식하기 위해 사용되는 Daemon
bootparamd: Diskless client 가 여러가지 설정으로 boot 가능하게 하는 데몬
 
 

nslookup
홍익대의 ip를 물어왔고 나의 서버에서 DNS 가 작동중이다.
>nslookup  hongik.ac.kr
*nslookup  domainname >>>>>>>> ip를 알수 있다.
 nslookup  ip >>>>>>>>>>>>>>   domain name을 알수 있다.
>nslookup 을 그냥 치고 나중에 찾고자 하는 정보를 쳐도 됨 (여러가지를 찾을때 유용)
 

passwd,group 화일을 400으로 소유권을 바꾸었는 데 메일이 죽었다
>>>group이란 화일을 보고 mail의 그룹을 허용해야 하는 데 mail 의 그룹아이디를 찾을수 없으므로 메일을 이용할수 없었다.passwd,group 화일은 444,644로 소유권을 조정해야 함

*DNS
dns 서버 지정
/etc/resolv.conf
/etc/hosts: 테이블 (호스트명 >> ip 주소 변환 테이블)
(IP address ) (hostname)(hostname alias)

DNS서버가 작동이 안되 도메인으로 인터넷을 못나갈시
ps -edf|grep named 로서 named 가 떠있는지 확인
named 가 안떠있을 경우 cd  /var/named 에서
ls 로서 core 가 발생했는지 확인 있을 경우
rm -rf core 로 제거후
named 를 쳐서 named를 띄운다.
ps -edf|grep named 로서 named 가 떠있는지 확인

* >whereis mail :로 mail의 위치를 알수도 있다.
>/etc/명령어 -al: 등의 옵션
*netstat -a : 현제의 네트웍의 상태를 알수있다.

DNS 수정작업
var/named 의 내용을 수정
1.ex)sist.ssy.co.kr  203.244.14.11 를 203.244.27.2 로 바꿀경우
var/named 및에
㉠~14.11이므로 14.rev화일로 vi 로 들어가서 ~14.11의 라인을 지운다.
단 여기서 중요한 점이있는데 rev화일의  맨 위의 시리얼 넘버를 rev화일 수정시 반드시 올려주어야 rev화일의 수정치가 유효하게 된다.매우 중요함
㉡domain이 ssy.co.kr이므로 ssy.zone화일로 들어가 수정해준다.
㉢~27.2로 바뀌므로 27.rev화일을 열어 sist.ssy.co.kr로 라인을 추가 시킨다.
㉣nslookup으로 보면 아직 도 전의 ip가 보이는데 이는 named가 전에 띄워진것이기 때문
㉤ps -edf|grep named 로 named의 PID를 확인 한뒤
㉥kill -HUP PID를 치던지 아니면 -9옵션으로 완전히 죽인뒤 다시 named를 쳐서 띄우던지 아면 된다.
㉦ps -edf|grep named 로 named로 named 확인 뒤 nslookup sist.ssy.co.kr로 ip를 확인 한다.
2.ex)cmail10.ssy.co.kr (203.244.5.23)과 sis.ssy.co.kr (203.244.5.21)이 있는데 뒤의 도메인으로 들어 오는 클라이언트들을 앞의 도메인으로 넘기고 싶어 한다.
domain>>>IP: zone 화일 ,   IP>domain: rev화일
㉠var/named및에 가서 vi ssy.zone
㉡sis.ssy.co.kr의 라인을 찾는다.
      sis        IN A PTR sis.ssy.co.kr을
     ;sis         IN A PTR sis.ssy.co.kr로 막는다.
㉢바로 밑줄에
     sis  IN CNAME  cmail10
을 쳐서 alias를 시킨다. vi 를 저장하고 종료
㉣vi 224.5.
21  IN PTR sis.ssy.co.kr을
;21 IN PTR sis.ssy.co.kr 로 막는다.
㉤nslookup으로 확인 하면 아직 바뀌지 않았다.
㉥ps -edf|grep named 로 named의 PID를 확인 한뒤
㉦kill -HUP PID를 치던지 아니면 -9옵션으로 완전히 죽인뒤 다시 named를 쳐서 띄우던지 아면 된다.

*vi 에서 :/pattern으로 pattern을 찾은 뒤 다음것은 n을 눌러 찾고 : set nu   :set nonu 로 라인 의 줄을 보였다 감출수 있다. ctrl +f로 한페이지 앞으로 ctrl +b로 한페이지 뒤로
yy:한줄을 버퍼에 저장하기
p: 버퍼에 저장된 내용을 붙이기 (paste)
dd: 한줄을 삭제 하기
a: 커서의 다음 부터 입력시작
i: 커서가 있는 지점 부터 입력시작
o: 커서가 있는 다음줄 부터 입력 시작
O: 커서가 있는 윗줄 부터 입력시작
*core ?
core는 프로세서의 이상이 있을 때 메모리나 프로세서의 내용을 하드디스키에 쏟아버리고 시스템을 보호 한다. 이런 코어 화일을 보는 명령어로는
strings 란 명령어가 있다.
*mail  계정명
종료는 새로운 라인에서 . 또는 ctrl +z
*date
>ls TIMEZONE.bak
>date 1210113098
98년 12월 10일 11시 30분
*netstat |grep logos
logos라는 계정을 가진 사람이 네트웍으로 무얼하고 있는지 알고 싶을때

*계정추가
>useradd -u 1000 -g staff  -d /export/home/valse -s  /bin/csh -c hckim -k /etc/skel -m valse
-u 1000: UID 만약 지정하지 않을 경우 시스템에서 자동으로 순서에 의해 주어짐
-g staff : GID 그룹아이디 여기서는 staff 이는 group이라는 화일에 들록이 되어 있어야 함
-d :user 의 홈 디렉토리 경로 여기서는 /export/home/valse
-s : user의 기본 쉘
-c: comment 문 즉 계정에 대한 설명 (이름 ,전화번호등)
-k :/etc/skel 에 있는 skel  화일 (.cshrc,.login,.profile등)을 홈디렉토리로 저장해라
-m : 디렉토리의 생성을 지정
valse: 계정명 최대 8자 까지 숫자와 소문자의 조합 첫문자는 숫자가 안됨
UID: 유저의 등록 숫자 .유일한 값으로 유저를 확인 하는 값 일반적으로 100-60000까지
GID: 유저의 기본 그룹의 등록 숫자 범위는 100-60000까지 사용
>pwconv : 솔라리스에서 /etc/shadow 를 사용하기 때문에 이 명령으로 수정된 passwd 가
/etc/shadow 화일을 변경시키게 된다.
*skel ?
shell의 형태를 " /bin/csh" 을 설정하면 그계정의 홈디레토리 에는 .cshrc와.login 이라는 화일이 있어야 하는데 이 화일들은 /etc/skel/ 에 있는 local.cshrc,local.login이라는 화일을 카피하여 사용하면 된다.
*permission 설정
chown (소유자)  (디렉토리 ,화일 )
chmod 777 (ugo) (디렉토리 ,화일 )
chgrp (그룹명) (디렉토리,화일)

*/etc/passwd 화일의 구성:6개의 콜론 7개의 필드로 구성
username:passwd:UID:GID:User's information :home directory:login shell

여기서 passwd는 암호화 되어 있음 이는 보안 수준이 c2 level ,임을  알수있다.
*보안수준?
TCSEC(Trusted Computer System Evaluation Criteria)
D-A level 까지 A로 갈수록 같은 레벨에선 숫자가 클수록 보안성이 높다.
division D: 보안성이 전혀 고려 되지 않은 시스템 (pc) ms-dos, macintosh
division C: Directory Protection
 C1: Discretionary Security Protection
 C2: Controlled Access Protection
division B: Mandatory Protection
 B1: Labeled Security Protection
 B2: Structured Protection
 

*passwd 의 옵션들
-n: minimum day       -a : 모든 사용자의 aging status
-x: maximum day      -l : 사용자가 로그인 하지 못하게 lock을 건다.  -u : unlock을 실행
-f: 다음 로그인 시 무조건 passwd를 바꾸어야 한다.  -w :warning 기간을 지정
-s: passwd aging status를 보여 준다.  -d : 사용자의 passwd를 삭제 한다.
ex) #passwd -n 1 -x 158 sakai
sakai 라는 계정의 passwd를 바꾸고 바뀐 passwd는 최소 하루이상 158일 이내 만 사용가능

*BSD 계열에서 su 는
/etc/group 화일 안에
wheel :*: 0: nogodan ,valse....  여기에 등록된 계정만 su 가 될수있다
cf)/etc/ root.allow 라는 화일에 추가 하여 사용할수도 있다

/etc/ttytab
에서 Secure terminal 에서만 root 로 로그인이 가능
*사용자 등록의 취소
>userdel 계정명 : 로그인 entry 만 삭제할경우
>userdel -r 계정명 : login entry 와 그와 관련된 모든 화일,디렉토리  삭제
*그룹의 등록,삭제
>groupadd  -g GID 그룹이름
>groupdel  그룹이름
*그룹 정보의 변경
그룹 ID의 변경 >groupmod -g GID 그룹이름
그룹이름의 변경 >groupmod  -n  새그룹이름 옛 그룹이름
*사용자 정보 변경
로그인 명 변경: >usermod -l 새로그인명
홈 디렉토리 변경 :>usermod -m 디렉토리명
*패스워드 관리 명령어
passmgmt ,pwconv,pwunconv,passwd
*시스템 확인          *프로세서 상태 확인 : >vmstat
>uname -a
*런레벨 확인
>who -r
*부팅 시스템의 이해
/etc/rc.d    init.d/모든 스크립트의 실체가 들어있는곳,rc.local 은 백업필요

rc0.d 중지(halt)(0)
rc1.d 1인 관리자 모드(S ,4)
rc2.d 다중 사용자 모드 w/o NFS(2)
rc3.d 완전한 다중사용자 모드(3)
rc5.d x로그인
rc6.d 리부팅(reboot)

Run Level Process
0 시스템의 shutdown ,halt
2 멀티유저 로컬 프로세서 데몬
3(보통의 런레벨 상태) 멀티유저 리모트 프로세서 데몬
4 싱글유저 스테이트 (root 만 접속가능) 단 root의 화일 시스템만 보임
*shutdown
root만 실행가능
>shutdown -h .............정상적 종료후 halt 상태로
>shutdown -r ...............시스템 리부팅
>init s .................시스템을 싱글유저 (root)로 전환
*killing init :대부분의 컴퓨터에서 init 을 kill 시킨다면 자동으로 reboot 되기 때문에 이것은
시스템의 운용에 있어 매우 중요 하다 .shutdown,이나 reboot 대신 사용
>shutdown -i0 -g0 -y
-i0: halt 모드(이옵션을 주지 않으면 디폴트로 Single-User Mode 로 들어간다.)
-g0: grace-period : 실제 shutdown 이 시작되는 시간 지연 (defalut 60sec)
>shutdown
....싱글유저 모드로 60초 를 기다렸다가 이것 저것 물어보면서 셧다운 시킨다.

*password check
>pwck
*smtp, pop3
smtp(simple mail transfer protocol): unix to unix 간의 메일 전송 프로토콜
pop3(post office protocol):unix to pc 간의 메일 전송 프로토콜
 
 
 
 

*path 지정 법
새로운 패스를  설정할 경우 기 본 쉘의 종류에 따라
bourn,korn shell의 경우 : .profile
csh의 경우 : .csh rc
>vi .profile
PATH=.:/usr/bin:/home/bin ...............추가
>vi .cshrc
set path=(. /usr/bin /home/bin )

*파티션 분할
/:(/etc,/bin,/sbin,/boot,/lib,/root 포함)
/usr: 배포판의 설치 요소들이 설치될 공간
/usr/local: 관리자 자신이 직접 컴파일 해서 설치될 공간
/home :사용자의 홈디렉토리
/var: 경우에 따라 매우 가변적인 파일 시스템 공간

*네트워크 기본 점검
㉠인터페이스 점검 : >ifconfig -a
여기서 le0가 자기 자신을 얘기함 *ifconfig >>>랜카드에 ip를 할당하는 명령
㉡라우팅 점검 :ping ,telnet ,traceroute(추가해야할 app)
㉢DNS 점검: >nslookup
라우팅테이블 설정 명령: route
㉣랜 연결과 라우팅 테이블 확인 :>dmesg
                                >netstat -nr
gateway : 두 네트워크를 동시에 연결된 라우터나 호스트,게이트 웨이중 중요한건 Default gateway이다. 즉 해당 랜이나 연결된 다른 네트워크에서 주소를 찾을수 없을 경우 무조건 패킷을 보내는 라우터를 Default gateway 라 한다.
*처음 os를 설치 했을 경우 /etc 에
vi defaultrouter
디폴트 게이트웨이의 주소(IP)
로 디폴트 라우터를 잡아 주어야 네트웍이 설정됨
 

*방화벽(firewall)
-Proxy Server
-IP Masquerade
방화벽을 사용할경우 내부 랜에서 인터넷의 여러 서비스를 사용하는데 제한이 따르는데 이런 제한을 줄이기 위해 socks라는 파이어월 바이패스 프로그램이 있다. 방화벽 내부에서 socks를 지원하는 프로그램을 클라이언트 프로그램을 사용할경우 방화벽 설치에도 불구 하고 인터넷의 여러가지 서비스를 이용할수있다. 넷스케이프 ,netterm등

*로그화일의 위치 :/var/log  /var/adm/sulog   <<<</etc/syslog.conf 에서 지정
*messages : /var/adm/messages 로 저장되며 커널에러 리부팅 로긴 실패 su 로그등이 남는곳
*log 화일 볼때는 계정과 시간을 유의 해서 보아라
 

*process bomb 에 대해 process 수를 제한 하는 방법
/etc/system 화일에
set maxuproc=100
을 추가

*PID: Process identifier  PPID: Parent Process의 PID
*cp -rp dirA dirB
-r : 디렉토리의 서브 디렉토리 까지 같이 복사 해라
-p : 디렉토리의 소유나  권한등을 바꾸지 말고 access time 까지 그대로 cp 해라는 옵션
    but 실제로 실행해본 결과 그안의 화일들은 그대로 옮겨지지만 디렉토리는 정보가            바뀌었다. 백업시 주의 요망
*bc 간단한 계산기
*last 사용자와 터미널에 대한 로그인 로그 아웃에 관한 정보
*압축
>tar cvf A.tar Bdir Cdir
B,Cdir을 모두 A.tar 로 묶어준다.
>tar tvf 디바이스명
디바이스 안의 내용을 볼때
>tar xvf A.tar
A.tar 의 내용을 다시 디렉토리에 풀때
>tar cvf /dev/rmt/0 /export
>tar xvf /dev/rmt/0   :이때 pwd가 화일을 풀 디렉토리

>comprss backup.tar
backup.tar.z 로 압축
>uncompress backup.tar.z
gzip 으로 묶을때     gzip으로 풀때
>gzip -9 backup.tar     >gzip -d backup.tar.gz
 

*du :현 디렉토리,서브 디렉토리의 사용량을 보여줌
stty -a: 현제의 단말기 상황을 보여줌
env: 현제의 설정된 환경변수를 보여준다.

*csh의 kill 명령
ex)>jobs
[1] +Running sleep 100
  > kill  >1
*Runaway process :CPU나 disk space 등 막대한 자원을 쓰는 프로세스
*SCSI: Small Computer System Interface
*inetd : Internet super daemon 외부로 부터 요청이 들어 왔을때 그에 적합한 데몬을 생성
*UDP ...User Datagram Protocol : mail 서버 프로그램 target에서 응답이 없어도 동작             connectionless 프로그램 속도가 빠르나 신뢰성이 적다 ex)real player
 TCP ....Transper Connection Protocol:송신과 응답으로 계속 통신의 신뢰성을 확인하며 통신
connection oriented 프로그램의 속도가 늦으나 신뢰성이 높다.
Please DoNt Touch Selly's Pretty Ass
Physical layer : cable Ethernet board
Datalink      : device driver
Network       : IP,ICMP
Transport       : TCP,UDP
Session          :
Presentation       :
Application        : telnet ,ftp              cf) telnet : unix to other system
      rlogin : unix to unix
*Bridges :connect ethernets at data link level
router: 두개 혹은 그이상의 ethernet 들을 연결해 주는 dedicate Computer
Gateway : routing 과 protocol 변환을 해주는 호스트 머신
Ethernet addess: ethernet protocol layer 에서 쓰는 어드레스 48비트로 표시되며 업자들에 의해 하드웨어 제작시 고유한 번호가 붙여진다. ex)0:40:2b:e:a:ba
IP addess ......0:호스트의 의미를 제거 네트워크로만 해석
         .....255: 브로드 케스트 IP
*IP addess 와 Ethernet addess 의 관계
IP에서 하위 layer인 Ethernet protocol을 call 할때 IP addess 가 Ethernet addess 로 mapping 된다.
ARP(addess resolution protocol) :Ethernet >>>>IP
RARP(Reverse addess resolution protocol):IP>>>Ethernet

*wait ,nowait
다음 서비스를 하기전 지금 서비스가 끝나기를 기다리는 여부
*init : 프로세서가 터미날 포트에 대해서 getty 프로세서를 실행 시킨다.
* getty 가 실행될 터미날 포트는 /etc/ttytab(또는 /etc/inittab)화일에 의해 결정
*getty 의 동작
1.login프로세서 의 실행
2. login과 /etc/passwd에 정의된 쉘의 실행
3.쉘의 환경변수 TERM은 /etc/ttytab(/etc/ttytype)에 의해 결정

*Solaris 외장하드 잡기
P-ROM 모드에서 PROBE-SCSI-ALL을 치면 외장장비의 리스트가 나오는데 여기서 잡힌다.
(안 잡힐경우 외장하드의  SCSI넘버를 수정하며 try해보면 잡힘
SCSI chain
0~3: 외장하드 , 4~5: tape device,  6: CD-ROM device ,7 : 사용하지 않음)
그런 다음 /etc/vfstab이라는 화일에 추가 해주면 된다.

*웹서버의 사양은 telnet www.kebi.com 80 와 같이 80 포트로 접근 하면 알수있다.
*어떤 시스템의 경우 su.allow,su.deny 혹은 /etc/root.allow ,root.deny 가있다. 여기다 추가 삭제 함으로서 su 의 권한을 컨트롤 할수있다.
*dmesg|more  시스템에 붙어있는 디스크수를 알수있다.
sd1>>>시스템 내장 하드
sd2>>> 시스템 외장 하드

*Solaris 설치 하기
-CD-ROM 연결(SCSI:6 넘버 조심)
-OS CD 삽입
-Power on
-Stop+A
>boot cdrom
-계속....- 호스트명입력
-네트워크됨 Yes
-IP 입력
 -NIS,DNS 서버가 있을시 기타를 선택,NIS는 DNS서버가 없을시
- 서브넷이 아님을 선택
- 지역적위치 (Asia,동부,한국)
-설치
-시간확인
-독립형
-ko (한국어)
-맨위의 목록 (전체및 OEM)
-사용가능한 디스크수를 모두 선택하여 디스크로 이동
-자동배치 파일 시스템
-생성되는 dir 모두 선택
-디스크 조정으로가서 디스크 용량을 클릭하면 오른쪽 상단에 권장 크기가 나타남
여기서 보이는 overlap 은 전체 디스크의 용량을 나타냄
-설치시작
-재부팅 -root passwd 입력

CDE  설치
CDE CD-ROM 삽입
-boot
-cd /cdrom
-cd ko_solaris_2_5_desktop_1_0
-cd CDE
-cd sparc
-./install-cde
-select number 1
*네트웍 잡기
>ifconfig -a
>netstat -nr
>ping router
>route add  default 203.244.7.1  1
여기서 마지막의 1의 의미는 matric이다.
matric이란 디폴트 라우터와 현 호스트와 사이에 있는 네트웍의 숫자인데
이것은 RIP(Routing Information Protocol)에서의 홉(hope)수의 의미로 생각하면된다.
참고로 RIP은 최고로 15홉수까지만 전달이 가능 하다. 그래서 광범위한 인터넷에서는 쓰이질 못하고 OSPF(Open Shortest Path First) 라는 새로운 프로토콜로 대치되고 있다.
 

          host                    matric=1                   router
 
 

          host                      gateway                    router

                                  matric=2
*DNS 서버에  IP를 등록하고 named를 다시 띄우면 이제 nslookup 으로 서버의 도메인과
IP를 찾을수 있다.
*telnet domainname 으로 접속하고 싶은 서버의 경우
/etc/hosts라는 화일에 IP와 도메인네임을 등록시키면 가능하다.

*인터넷이 안된다는 연락(나는 DNS 서버 관리자)
㉠ 그쪽의 라우터의 IP를 물어본다.
㉡ping 우리의 라우터(디폴트 gateway)
㉢ps -edf|grep named
㉣ping 그쪽의 라우터
㉤traceroute 그쪽의 라우터
㉥nslookup으로 local network 을 찾아본다. 잡히면 local은 이상이 없음
㉦nslookup으로 www.yahoo.co.kr 을 찾아본다.잡히면 이상이 없고 안잡히면 외부로 나가질 못하는 것이다.

*mt status
mt(magnetic tape)
* /dev/rmt/0 >>>>>>>DAT 드라이버
>mt rewind :tape 되감기
*ps -edf|grep .....
 root 338 314 .......
여기서 앞의 것이 대개 숫자가 크고 그것이 대게 child process 이다(PID)
314(PPID)그런데 여기서 만약 PPID를 죽이면 338즉 child process가 좀비 프로세서가 됨

*바로전의 명령이 성공적인가
>echo $?    :종료값을 보는 것
성공이면 1,아니면 0

*package add하는 법
#pkgadd -d `pwd` GNUbind

* 대부분의 path 설정에서 보안상의 이유로 현제 디렉토리를 경로에 포함시키지 않는 경우가 있는데 이때는
>./명령어   :로써 실행을 시키면 된다.

*dump -of  (-)/home2 |(cd /home3;restore xf -)
 

     Application                  FTP      Telnet      Smtp       NFS
     Presentation                                                              RIP
     Session                              OSPF
     TRANSFORT     TCP     UDP     DNS
     NETWORK          ICMP     IP   ARP
     Data link
     Physical

Posted by 1010
60.Unix2008. 12. 11. 11:39
반응형
RAID
 (1) VERITAS(VxVM)
 (2) SUN(DiskSuite) = SVM(Solaris 불륨 레이블)
    용량과 리던딘시 문제를 해결하기 위해 , 솔라리스는 " redundant  array of
    inexpenisive disks"(RAID) 표준에 대한 지원을 지원한다.
    <-  redundant '여유도' 의미
    그리고 RAID는 중요한 데이터를 가지고 있는 서버에 주로 사용한다.
   
    RAID는 다양한 유형의 'striping'과 'mirroring'을 제공하는 여러 서로 다른
    수준(Level)을 제공한다.
   
    RAID 0 - Concatenation Strinping
            :  이 중에 Striping 은 동일한 사이즈의 두 개 이상의 디스크에
                I/O를 분산 시키는 것
                --성능 높고 가용성은 낮다.
           
               
    RAID 1 - 미러링
            : 두 개 이상의 디스크에 테이터를 미러링(복사) 한다.
            즉 디스크 한계가 장애가 생기더라도 데이터가 손실되지 않는다.
            --중요한 데이터에 치중한다면
           
    RAID 5 - parity
            : 스트라이핑이지만 패러티 정보를 분산시켜서 저장함으로써
            RAID 0 이 제공 못하는 가용성을 제공한다.
            디스크 한 개가 장애가 생기더라도 나머지 디스크를 가지고 장애난 디스크의
            정보를 계산함. 
            --성능 향상(즉, 속도에 치중한다면 )
            foar
           
--metadb 옵션들
 
  -a :
 
  Attach a new database device
  The /kernel/drv/md.conf file is automatically
  updated with th new information
  meta database 정보를 add(추가)
 
  -f :
  The -f option is used the create the initial
  static database.
  :force(강제로 추가)
 
  -c :
  number : Specifies the number of replicas to be placed on each
  device
  :meta database replica(복사본)의 개수 지정
 
  -------------------------------------------------------------------
 
  MetaDB 란
  DiskSuite의 전체의 config 정보와 metadevice의 상태 정보를 가지고 있는 DB
  slice당 20M 정도면 충분하고, 최소 2개의 DB 복사본(Replicas)이 요구된다.
 
  [권장사항]
  Disk 1 -3 Replicas
  Disk 2 -4 각 Disk 당 Replicas (총 4 -8)
  Disk 5 이상 - 각 Disk 당 Replice
  - MetaDB 생성할 공간이 없으면, swap를 조금 줄이고, 공간을 확보한다.
  -OS Mirror시에는 두 Disk에 각각 2개 이상의 MetaDB 를 생성한다.
 
 ===================================================================
 

 -- RAID 0 구성 실습
           
bash-2.05# df -h
파일시스템            크기  사용  가용  용량    설치지점
/dev/dsk/c0t0d0s0      5.8G  2.9G  2.8G    51%    /
/proc                    0K    0K    0K    0%    /proc
mnttab                  0K    0K    0K    0%    /etc/mnttab
fd                      0K    0K    0K    0%    /dev/fd
swap                  838M   40K  838M    1%    /var/run
swap                  838M  328K  838M    1%    /tmp
/dev/dsk/c0t0d0s3      94M  1.0M    84M    2%    /p3
/dev/dsk/c0t0d0s4      94M  1.0M    84M    2%    /p4
/dev/dsk/c0t0d0s5      94M  1.0M    84M    2%    /p5
/dev/dsk/c0t0d0s7      1.8G  1.9M  1.7G    1%    /export/home

--Raid 구성하기 전에 /p /p4 mount file --> umount 시킴

bash-2.05# umount /p3
bash-2.05# umount /p4

bash-2.05# df -h
파일시스템            크기  사용  가용  용량    설치지점
/dev/dsk/c0t0d0s0      5.8G  2.9G  2.8G    51%    /
/proc                    0K    0K    0K    0%    /proc
mnttab                  0K    0K    0K    0%    /etc/mnttab
fd                      0K    0K    0K    0%    /dev/fd
swap                  839M    40K  839M    1%    /var/run
swap                  839M  328K  839M    1%    /tmp
/dev/dsk/c0t0d0s5      94M  1.0M    84M    2%    /p5
/dev/dsk/c0t0d0s7      1.8G  1.9M  1.7G    1%    /export/home
bash-2.05#

bash-2.05# metadb
metadb: solaris3: 기존 데이터베이스 없음

bash-2.05# metadb -a -f  -c 1 /dev/dsk/c0t0d0ns3 /dev/dsk/c0t0d0s4
bash-2.05# metadb
        flags          first blk      블록 개수
    a        u        /dev/dsk/c0t0d0s3
    a        u        /dev/dsk/c0t0d0s4
bash-2.05#
bash-2.05# vi /etc/lvm/md.tab

# Logging with mirrored master device and striped logging device
#
#      d1              -t d14 d13
#      blue/d1        -t blue/d14 blue/d13
#
# RAID of devices
#
#      d15            -r /dev/dsk/c1t0d0s0 /dev/dsk/c1t1d0s0 \
#                          /dev/dsk/c1t2d0s0 /dev/dsk/c1t3d0s0
#      blue/d15        -r /dev/dsk/c2t0d0s0 /dev/dsk/c2t1d0s0 \
#                          /dev/dsk/c2t2d0s0 /dev/dsk/c2t3d0s0
#
# Hot Spare Pool of devices
#
#      hsp001          /dev/dsk/c1t0d0s0
#      blue/hsp001    /dev/dsk/c2t0d0s0
#
# 100MB Soft Partition
#
#      d1              -p /dev/dsk/c1t0d0s1 100M
#      blue/d1        -p /dev/dsk/c2t0d0s1 100M
d5 2 1 /dev/dsk/c0t0d0s3 1 /dev/dsk/c0t0d0s4
--마지막 라인 추가 하기
~
:wq!

bash-2.05# metainit d5
d5: Concat/스트립이 설정됨

bash-2.05# newfs /dev/md/rdsk/d5
newfs: 새 시스템 파일 /dev/md/rdsk/d5을(를) 구성하시겠습니까: (y/n)? y
/dev/md/rdsk/d5:        16 트랙, 63 섹터의 390 실린더에 있는 393120 섹터
        192.0MB (25 실린더 그룹) (16 c/g, 7.88MB/g, 3776 i/g)
수퍼 블록 백업 (fsck -F ufs -o b=#의 경우):
 32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,
 242912, 258080, 274272, 290464, 306656, 322848, 339040, 355232, 371424,
 387616,
bash-2.05#

bash-2.05# tail /etc/lvm/md.tab
# Hot Spare Pool of devices
#
#      hsp001          /dev/dsk/c1t0d0s0
#      blue/hsp001    /dev/dsk/c2t0d0s0
#
# 100MB Soft Partition
#
#      d1              -p /dev/dsk/c1t0d0s1 100M
#      blue/d1        -p /dev/dsk/c2t0d0s1 100M
d5 2 1 /dev/dsk/c0t0d0s3 1 /dev/dsk/c0t0d0s4
bash-2.05

bash-2.05# cd /

bash-2.05# mkdir /stripe

bash-2.05# mount /dev/md/dsk/d5 /stripe/

bash-2.05# cd /stripe/

bash-2.05# ls
lost+found
bash-2.05# pwd
/stripe
bash-2.05# mkdir aaa
bash-2.05# touch bb.txt
bash-2.05# ls
aaa        bb.txt      lost+found

bash-2.05# metastat
d5: Concat/Stripe
    크기: 393120 블록(191 MB)
    스트립 0:
        장치      시작 블록    Dbase  Reloc
        c0t0d0s3      9072    예      예
    스트립 1:
        장치      시작 블록    Dbase  Reloc
        c0t0d0s4      9072    예      예

장치 재배치 정보:
장치    재배치 장치 ID
c0t0d0  예    id1,dad@AST39140A=AY425135
bash-2.05#

bash-2.05# df -h
파일시스템            크기  사용  가용  용량   설치지점
/dev/dsk/c0t0d0s0      5.8G  2.9G  2.8G    51%    /
/proc                    0K    0K    0K    0%    /proc
mnttab                  0K    0K    0K    0%    /etc/mnttab
fd                      0K    0K    0K    0%    /dev/fd
swap                  836M    40K  836M    1%    /var/run
swap                  836M  328K  836M    1%    /tmp
/dev/dsk/c0t0d0s5      94M  1.0M    84M    2%    /p5
/dev/dsk/c0t0d0s7      1.8G  1.9M  1.7G    1%    /export/home
/dev/md/dsk/d5        180M  1.0M  161M    1%    /stripe

--Raid 0 으로 구성됨 파일 100M 합 200M 구성됨.
bash-2.05#

======================================================================

--미러링 실습

bash-2.05# vi /etc/lvm/md.tab

d50 -m /dev/md/dsk/d52 /dev/md/dsk/d53

d52 1 1 /dev/dsk/c0t0d0s3
d53 1 1 /dev/dsk/c0t0d0s4

:wq!
--마지막 라인에 추가시킴

bash-2.05# metainit d52
d52: Concat/스트립이 설정됨

bash-2.05# metainit d53
d53: Concat/스트립이 설정됨

bash-2.05# metainit d50
metainit: d50: 경고: 이 형식의 metainit는 바람직하지 않음.
submirror가 동일한 데이터를 갖고 있지 않을 수 있음.
추가 정보는 metainit(1M)의 ERRORS를 참조하십시오.
d50: 이중화가 설정됨


bash-2.05# newfs /dev/md/rdsk/d50
newfs: 새 시스템 파일 /dev/md/rdsk/d50을(를) 구성하시겠습니까: (y/n)? y
/dev/md/rdsk/d50:      16 트랙, 63 섹터의 187 실린더에 있는 188496 섹터
        92.0MB (12 실린더 그룹) (16 c/g, 7.88MB/g, 3776 i/g)
수퍼 블록 백업 (fsck -F ufs -o b=#의 경우):
 32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,
 161952, 178144,


bash-2.05# tail /etc/lvm/md.tab
#
#      d1              -p /dev/dsk/c1t0d0s1 100M
#      blue/d1        -p /dev/dsk/c2t0d0s1 100M
#d5 2 1 /dev/dsk/c0t0d0s3 1 /dev/dsk/c0t0d0s4

d50 -m /dev/md/dsk/d52 /dev/md/dsk/d53

d52 1 1 /dev/dsk/c0t0d0s3
d53 1 1 /dev/dsk/c0t0d0s4

bash-2.05# df -h
파일시스템            크기  사용  가용  용량    설치지점
/dev/dsk/c0t0d0s0      5.8G  2.9G  2.8G    51%    /
/proc                    0K    0K    0K    0%    /proc
mnttab                  0K    0K    0K    0%    /etc/mnttab
fd                      0K    0K    0K    0%    /dev/fd
swap                  864M    40K  864M    1%    /var/run
swap                  864M  312K  864M    1%    /tmp
/dev/dsk/c0t0d0s5      94M  1.0M    84M    2%    /p5
/dev/dsk/c0t0d0s7      1.8G  1.9M  1.7G    1%    /export/home
bash-2.05# pwd
/
bash-2.05# mkdir /mirror
bash-2.05#

bash-2.05# mount /dev/md/dsk/d50 /mirror
bash-2.05#
bash-2.05# cd mirror/
bash-2.05# mkdir ccc
bash-2.05# touch ddd.txt
bash-2.05#
bash-2.05# df -h
파일시스템            크기  사용  가용  용량    설치지점
/dev/dsk/c0t0d0s0      5.8G  2.9G  2.8G    51%    /
/proc                    0K    0K    0K    0%    /proc
mnttab                  0K    0K    0K    0%    /etc/mnttab
fd                      0K    0K    0K    0%    /dev/fd
swap                  863M    40K  863M    1%    /var/run
swap                  863M  312K  863M    1%    /tmp
/dev/dsk/c0t0d0s5      94M  1.0M    84M    2%    /p5
/dev/dsk/c0t0d0s7      1.8G  1.9M  1.7G    1%    /export/home
/dev/md/dsk/d50        86M  1.0M    77M    2%    /mirror

-- 마지막 라인 확인 미러로 구성시 2개의 용량을 반만 사용됨을 알수 있다.

bash-2.05# metastat
d50: 이중화
    서브미러 0: d52
      상태: 확인       
    서브미러 1: d53
      상태: 확인       
    전달: 1
    읽기 옵션: roundrobin (기본값)
    쓰기 옵션: parallel (기본값)
    크기: 188496 블록(92 MB)

d52: d50의 Submirror
    상태: 확인       
    크기: 188496 블록(92 MB)
    스트립 0:
        장치      시작 블록    Dbase        상태 Reloc 핫 스패어
        c0t0d0s3      17136    예            확인    예


d53: d50의 Submirror
    상태: 확인       
    크기: 188496 블록(92 MB)
    스트립 0:
        장치      시작 블록    Dbase        상태 Reloc 핫 스패어
        c0t0d0s4      17136    예            확인    예


장치 재배치 정보:
장치    재배치 장치 ID
c0t0d0  예    id1,dad@AST39140A=AY425135
bash-2.05#



========================================================================

 --기존  Meta 정보 삭제
 -- Raid 삭제
 
#metastat
#df -h
#umount /mirror
--unmount 하기 전에 기존 마운트 해제 시킴
bash-2.05# umount /mirror

bash-2.05# metaclear d52
d5: Concat/스트립이 지워짐
bash-2.05# metaclear d53
d5: Concat/스트립이 지워짐
bash-2.05# metaclear d50
d5: Concat/스트립이 지워짐
bash-2.05#

  --강제 삭제시  metaclear -f 옵션을 주고 강제 삭제 시킴

bash-2.05# metadb -d /dev/dsk/c0t0d0s3
bash-2.05# metadb -d /dev/dsk/c0t0d0s4
metadb: solaris3: 최소 1개의 데이터베이스를 갖고 있어야 함(-f 무시)

bash-2.05# metadb -df /dev/dsk/c0t0d0s4
bash-2.05# metadb
bash-2.05# metastat

d50: 이중화
    서브미러 0: d52
      상태: 확인       
    서브미러 1: d53
      상태: 확인       
    전달: 1
    읽기 옵션: roundrobin (기본값)
   쓰기옵션: parallel (기본값)
    크기: 196560 블록(95 MB)

d52: d50의 Submirror
    상태: 확인       
    크기: 196560 블록(95 MB)
    스트립 0:
        장치      시작 블록    Dbase        상태 Reloc 핫 스패어
        c0t0d0s3      9072    아니          확인    예


d53: d50의 Submirror
    상태: 확인       
    크기: 196560 블록(95 MB)
    스트립 0:
        장치      시작 블록    Dbase        상태 Reloc 핫 스패어
        c0t0d0s4      9072    아니          확인    예


장치 재배치 정보:
장치    재배치 장치 ID
c0t0d0  예    id1,dad@AST39140A=AY425135
bash-2.05#


출처 : http://love7979.tistory.com/30?srchid=BR1http%3A%2F%2Flove7979.tistory.com%2F30
Posted by 1010
60.Unix2008. 12. 11. 11:25
반응형

RAID란 무엇인가?         


I.RAID의 개요

  가.RAID의 정의
   1)데이터 분할기법을 이용하여 데이터 Disk Array들을 묶어 데이터의 가용성을
     향상시키는 구조
   2)디스크 하드웨어의 소형화와 가격하락으로 최근 상용화 추세

  나.RAID의 등장배경
   1)Redundant Array of Indexpensive Disk의 줄임말
   2)데이터 가용성이 시스템 가용성 만큼 중요
   3)시스템은 대체가 가능하지만 데이터의 대체는 어려움
   4)데이터 고장이 복구에 장시간 소요
   5)Critical mission 업무에 중요

다.데이터의 가용성 향상 방안
   1)Concurrent maintenance: 사용중 복구
   2)Remote copy:분산 복사,센타 고장시 데이터 보관
   3)Dual copy:2의 유지,중요업무,가격이 비쌈
   4)RAID:데이터 미러링 및 패리티 이용 데이터 재생

II.RAID방식의 비교

  가.Level 1: Mirroring
   1)Disk Mirroring
   2)모든 디스크마다 중복디스크를 하나씩 설치
   3)최상의 데이터 가용성 제공
   4)가격이 고가
    설명) 즉, 똑같은 내용을 두개의 DISK에 저장하는 원리와 같다.
          RAID Level구성을 하기 위한 Console이 있으며, Console에서
          Display되는 것에 따라 RAID Level구성을 할수가 있다.
         
  나.Level 2: Hamming Code for Error Correction
   1)주기억장치의 해밍코드를 디스크 데이터에 응용
   2)에러검출과 수정용 중복디스크 설치
   3)중복디스크의 수는 한 그룹에 속한 디스크의 수에 따라 가변적
   4)Stripping 구조

  다.Level 3: Single Check Disk per Group
   1) 데이터 분할,전용 Parity 디스크 사용
   2) 데이터 디스크의 고장시 디스크 이용하여 데이터 재생
   3) Random access 업무에 부적당
   4) Random I/O Random disk 병목현상 발생

  라.Level 4: Independent
   1)Level 3의 병목해소
   2)독립적인 데이터 접근
   3)병렬전송으로 전송율 향상
   4)Small block size, Random access 업무에 유리
   5)Wire Penalty 문제의 발생: 한번쓰기 동작에 4번의 I/O발생

마)Level5: Rotating Independent Disk Array
   1)Level4의 단점을 해소
   2)독립적인 데이터 접근
   3)분산parity,분산 데이터
   4)블록(block)단위로 데이터나 체크정보를 모든 디스크에 분산
      설명)주로 일반적으로는 가장 많이 사용한다.

III.향후 동향
   1)디스크 하드웨어의 소형화와 가격하락으로 최근 상용화 추세
   2)Mission critical 업무에 적합
   3)Fault toterant computing 환경
   4)복잡하고 대량정보의 가용성이 날로 증대
   5)값싼 Disk Array의 사용이 보편화  

RAID란 무엇인가?
RAID는 Redundant Array of Inexpensive (or Independant) Disks의 약어이다. RAID 시스템은 여러 드라이브의 집합을 하나의 저장장치처럼 다룰 수 있게 하고, 장애가 발생했을 때 데이터를 잃어버리지 않게 하며 각각에 대해 독립적으로 동작할 수 있도록 함으로써 디스크의 Availibility를 높이는 것이다.

1988년 버클리의 David Patterson, Garth Gibson, Randy Katz가 SIGMOD에서 "A Case for Redundant Arrays of Inexpensive Disks (RAID)"라는 논문을 발표했다. 이 문서는 데이터와 패리티 정보를 디스크에 배치하는 방법에 따라 디스크 어레이를 분류하고 있는데, 이것이 이후 RAID level이라고 불리게 된다. 그러나 이것은 절대적이지도 않고 가능한 모든 아키텍처를 수용하고 있는 것도 아니다.

기본적인 RAID의 개념은 작고 값싼 드라이브들을 연결해서 크고 비싼 하나의 논리적인 디스크(SLED: Single Large Expansive Disk)를 구현하자는 것이다.

RAID의 잇점


고 가용성 / 데이터 보호
시스템에 있는 디스크의 수가 증가함에 따라 그중 한 디스크가 장애를 일으킬 가능성도 함께 증가한다. 그러므로 디스크 어레이는 어느 한 디스크의 장애에 면역성을 가져야 한다. 미러링은 간결하고 성능이나 가용성에 장점을 상대적으로 많이 갖지만 실저장용량의 두배에 해당하는 디스크를 필요로 한다. 인코딩(Parity 연산) 기법은 요구되는 여분의 디스크 용량을 감소시키기 위해 사용된다.

드라이브 접속성의 증대
운영체제에게 여러개의 물리적 드라이브가 하나의 논리적 드라이브로 보임으로서 논리적 드라이브 수의 제한을 피할 수 있다. 예를들어 보다큰 파일시스템 또는 파일을 만들 수 있다.

저렴한 비용, 작은 체적으로 대용량 구현
여러개의 물리적인 소용량 드라이브로 논리적인 대용량 드라이브를 대체할 수 있다.

지능형 콘트롤러에 의한 유연성, 콘트롤러에 지원되는 각 파라미터에 의해 선택적으로 성능을 최적화할 수 있다.

특정 상황에서의 효율성 증가
효율성은 하나의 디스크 입출력 요구에 대하여 여러 디스크에 데이터를 Stripe 단위로 분산시키고 병렬적으로 입출력을 처리함으로서 증가될 수 있다.

즉 RAID의 목적은 데이터 가용성과 총 저장 용량을 증가시키며 여러 물리적 디스크에 데이터를 적절히 분산시킴으로서 효율성을 재고시키는 것이다.

striping 단위의 크기

큰 파일을 읽고 쓸 경우 striping 블럭의 크기는 작을 수록 좋다. 이는 각 드라이브간 입출력이 고르게 분배되어 병렬로 처리되기 때문이다. 하지만 작은 파일을 여러개 입출력할 경우, 각 파일에 대한 입출력이 모든 드라이브에서 일어나기 때문에 드라이브간의 속도차이가 효율의 저하를 발생시키게 된다. 즉 가장 느린 드라이브의 동작이 끝날 때까지 입출력이 종료되지 않는다. 이를 해결하기 위해서 분산 단위가 작아질 경우 각 드라이브간에 동기를 맞출(synchronized spindle) 필요가 있다.


RAID 레벨간의 비교
UC-Berkeley의 연구그룹은 RAID를 여섯개의 레벨로 분류하였다. 각 레벨은 비용과 속도에 대한 상반되는 요구를 절충하여 각기 다른 방법으로 여러 드라이브 사이에 데이터를 분산시킨다. 즉 RAID의 각 레벨은 서로 다른 용도를 위해 최적화된 시스템이다.

RAID 0

RAID level 0은 장애 발생에 대비한 여분의 저장공간을 갖지 않는다. 그러므로 엄밀히 이야기하자면 RAID의 정의에 부합된다고 볼 수 없다. Level 0에서 데이터는 빠른 입출력이 가능하도록 여러 드라이브에 분산된다. 여분의 정보를 기록하지 않기 때문에 성능은 가장 뛰어나지만, 어느 한 드라이브에서 장애가 발생하게 되면 데이터는 손실된다.
이 레벨은 striping이라고 부른다.

RAID 1

RAID level 1은 한 드라이브에 기록되는 모든 데이터를 다른 드라이브에 복사해 놓는 방법으로 복구능력을 제공한다. Level 1 array는 하나의 드라이브를 사용하는 것에 비해 약간 나은 정도의 성능을 제공한다. (읽을때 더 빠르며, 쓸때는 약간 느리다. 하지만 ECC를 계산하지 않기 때문에 RAID4나 5보다는 빠르다.) 이 경우 어느 드라이브가 고장나더라도 데이터의 손상은 일어나지 않는다. 이것은 단 두대의 드라이브만으로 시작할 수 있기 때문에 RAID 시스템을 처음 구축하는 사람에게 입문용으로 적합하다. 하지만 전체 용량의 절반이 여분의 데이터를 기록하기 위해 사용되기 때문에 저장용량당 단가가 비싸다.
이 레벨은 mirroring이라고 부른다.

RAID 2

RAID level 2는 에러검출능력이 없는 드라이브를 위해 hamming 오류정정코드를 사용한다. 모든 SCSI 드라이브는 에러검출능력을 갖고 있기 때문에 SCSI 드라이브를 사용할 경우 이 레벨은 별로 쓰이지 않는다.

RAID 3

RAID level 3은 한 드라이브에 패리티 정보를 저장하고, 나머지 드라이브들 사이에 데이터를 바이트 단위로 분산한다. 이것은 level 4와 유사하나 바이트 단위의 분산 저장을 경제적으로 수행하기 위해선 하드웨어적인 지원이 필요하다.

RAID 4

RAID level 4는 한 드라이브에 패리티 정보를 저장하고 나머지 드라이브들 사이에 데이터를 블럭 단위로 분산한다. 패리티 정보는 어느 한 드라이브에 장애가 발생했을때 데이터를 복구할 수 있게 해 준다. Level 4 array는 데이터를 읽어들일 때 level 0에 필적하는 매우 우수한 성능을 보이나, 쓸때는 매번 패리티 정보를 갱신하기 때문에 추가적인 시간을 필요로 한다. 실제적으로는 작고 랜덤하게 기록할수록 느리고 크고 순차적인 기록을 행할때는 그리 느리지 않다. 여러 드라이브들 중에서 한대의 드라이브만이 여분의 패리티 정보를 기록하는데 사용되기 때문에 level 4의 용량당 비용은 그리 높지 않다.

RAID 5

RAID level 5는 level 4와 유사하나 패리티 정보를 모든 드라이브에 나누어 기록한다. 패리티를 담당하는 디스크가 병목현상을 일으키지 않기 때문에, level 5는 멀티프로세스 시스템에서와 같이 작고 잦은 데이터 기록이 있을 경우 더 빠르다. 하지만 읽어들이기만 할 경우 각 드라이브에서 패리티 정보를 건너뛰어야 하기 때문에 level 4 array보다 상당히 느리다. 용량당 비용은 level 4와 같다.


어떤 RAID 레벨을 써야 하는가?
RAID 0 (stripping)
빠른 입출력 속도가 요구되나 장애 복구 능력은 필요없는 경우에 적합하다.

RAID 1 (mirroring)
빠른 기록 속도와 함께 장애 복구 능력이 요구되는 경우에 사용된다.
구성 및 운영이 용이하다.

RAID 2
모든 현행 드라이브들이 ECC를 탑재하고 있기 때문에 거의 사용되지 않는다.

RAID 3
효율적인 동작을 위해 동기가능한(synchronized-spindle) 드라이브를 필요로 하기 때문에 거의 사용되지 않는다.

RAID 4 (parity)
저렴한 가격으로 장애 복구 능력이 요구되거나 빠른 판독 속도가 필요한 경우에 사용된다.
파일 서버와 같이 주로 읽기만 하는 경우에 적합하다.

RAID 5 (distributed parity)
level 4와 유사하나 작고 랜덤한 입출력이 많은 경우 더 나은 성능을 제공한다. 빠른 기록속도가 필수적이지 않다면, 일반적인 다중사용자 환경을 위해 가장 좋은 선택이다. 그러나 최소한 3대, 일반적으로는 5대 이상의 드라이브가 필요하다.

여러 RAID 레벨을 복합적으로 사용하는 경우가 있다. 2대의 논리적 드라이브(LU)를 가진 시스템에서 한 LU는 빠른 임시 영역을 위해 level 0으로 사용되고 다른 LU는 중요한 프로그램이나 데이터를 위해 level 1로 사용될 수 있다. 또 다른 예로 3개의 LU를 가진 시스템에서 임시 영역 파티션은 level 0, 부트 파티션은 level 1, 대량의 데이터를 저장하는 파티션은 level 4로 설정할 수 있다.


그 이외의 RAID
RAID 6

1989년 IEEE compcon conference에서 2차원 disk array 패리티 기법이 Randy Katz, Garth Gibson, David Patterson에 의해 소개되었다. 이는 드라이브를 바둑판모양으로 배치하고 가로세로 패리티를 취하는 방법이다. 이는 10,000번 이상의 장애에 의해서만 데이터의 손실이 일어날 정도로 안정성을 증가시킨다. 그러나 이러한 구조를 갖는 RAID시스템이 발표된 적은 없는 것 같다.

Storage Technology Corp는 그들의 Iceberg disk에서 이와 유사한 기법을 소개했다. 이는 여러개의 RAID5 array를 평행하게 배치하고 그들 사이를 다시 Reed-Solomon 부호를 이용해 인코딩하는 것이다. 이는 RAID 6 혹은 RAID 5+라고 불리기도 한다.

RAID 5 array는 array를 구성하는 어느 한 드라이브의 장애를 견뎌낼 수 있다. 그러므로 동시에 복수의 드라이브가 장애를 일으킬 경우 데이터를 잃어버리게 된다.


 HBA1    HBA2    HBA3    HBA4    HBA5    HBA6    HBA7    HBA8         |       |       |       |       |       |      |Rank1   Disk1   Disk2   Disk3   Disk4   Disk5   Disk6   Disk7   Disk8        |       |       |       |       |       |     |Rank2   Disk9   Disk10  Disk11  Disk12  Disk13  Disk14  Disk15  Disk16        . . . . . - etc.
 Rank4                           .       .       .       .          Disk32
위 그림이 RAID 5로 구성되어 있다면(즉 가로 방향의 패리티 정보만 갖는다면) Disk 5와 6의 동시 고장에 의해 데이터를 손실하게 되나 RAID 6은 이를 견뎌낼 수 있다. Disk 3과 12가 동시에 고장났을 경우 RAID 5와 RAID 6은 둘 다 데이터를 손실하지 않는다.
그러나 RAID 6는 구성하기 위하여 더 많은 비용이 들며 또한 더 많은 패리티 정보를 갱신하는 만큼 작은 데이터를 기록할 경우 느려진다.

RAID 7

RAID 7은 Storage Computer. Inc가 자사 제품의 마케팅을 위해 만들어낸 단어로 write-back cache를 갖춘 RAID 4를 말한다.


RAID 구현
하드웨어 RAID

하드웨어 RAID는 호스트로부터 독립적으로 RAID시스템을 관리하며 이를 호스트에게 하나의 디스크로 보이게 만든다. 이 때문에 호스트는 RAID시스템에 대해 알지 못하며 이를 관리할 필요도 없다.

1) 디스크 콘트롤러에 기반한 방법
이 방식은 호스트의 확장 슬롯에 꽂힌 지능형 콘트롤러가 호스트로부터 독립적으로 RAID시스템을 관리하게 된다. 콘트롤러는 여러 SCSI 채널을 관리할 수도 있으며 이 경우 하나의 SCSI 채널에 의한 병목현상을 극복할 수 있다.

2) 외장 하드웨어에 의한 방법 (SCSI to SCSI RAID)
이는 외장 케이스 안에 지능형 RAID 콘트롤러와 디스크를 함께 담은 것이다. 시스템은 보통의 SCSI콘트롤러를 통해 호스트에 접속되며 하나의 디스크처럼 보이게 된다. 이 시스템의 단점은 디스크 시스템의 입출력속도가 SCSI 채널의 전송능력에 의해 제한을 받는다는 점이다. 예를 들어 4개의 일반 SCSI 디스크가 장치되어 포화된 채널에 외장 RAID 박스를 추가하면 제성능을 발휘할 수 없을 것이다. 이 때문에 외장 RAID 시스템들은 때때로 FC-AL같은 고성능 SCSI 채널을 사용하곤 한다.

소프트웨어 RAID

1) 소프트웨어만을 사용하는 것
디바이스 드라이버를 사용해 RAID기능을 제공한다.

2) 소프트웨어와 하드웨어를 병용하는 것
Adaptec의 RAID 콘트롤러는 이 방식을 사용한다. 이 콘트롤러에는 RAID 기능이 없으며 단순히 여러개의 SCSI 콘트롤러를 한장의 보드에 탑재한 것이다. 이 콘트롤러를 갖고 RAID기능을 사용하려면 콘트롤러를 지원하는 디바이스 드라이버를 설치해야 한다. 이 방식은 하나의 SCSI 채널에 의한 병목현상이 없는 것을 제외하면 소프트웨어 RAID와 똑같다. (사용하는 OS에 맞는 디바이스 드라이버가 없으면 무용지물이다)

하드웨어 RAID와 소프트웨어 RAID의 비교

어레이 기능을 제외하면, 하드웨어 RAID와 소프트웨어 RAID간에는 공통점이 거의 없다.
다른 응용 프로그램들처럼 소프트웨어 RAID는 메모리나 CPU시간 같은 시스템 자원을 소모하며 운영체계 의존적이다. 시스템에 지속적인 부하를 거는 응용 프로그램을 실행할 경우, 소프트웨어 RAID는 시스템의 전체적인 퍼포먼스를 떨어뜨릴 수 있으며, CPU의 성능과 부하에 직접적인 영향을 받는다. 이에 반해 하드웨어 RAID는 시스템 자원을 사용하지 않으며, 운영체제 의존적이지도 않다.
하드웨어 RAID는 또한 장애에 강하다. 하드웨어에 어레이 기능이 탑재되어 있으면 부팅시에 소프트웨어를 필요로 하지 않는다. 이에 반해 소프트웨어 어레이는 부팅에 실패하면 어레이 기능을 사용할 수 없으며, 또한 데이터를 분산(striping)했을 경우 특별한 도구 없이 디스크를 읽을 수도 없다. 때문에 소프트웨어 어레이를 사용할 경우 어레이에 포함되지 않는 별도의 부트 드라이브를 두는 것이 일반적이다.
그러나 소프트웨어 RAID는 얼마간 시스템 자원을 소모한다 하더라도 구성이 유연하고 가격이 저렴하여 나쁘지 않은 선택이다. 그리고 여러 디스크 콘트롤러/디스크 간에 부하를 분산하여 효율을 개선한다. 또 많은 현행 운영체제가 무상으로 소프트웨어 RAID를 제공하기 때문에 쉽게 시작해 볼 수 있다.

소프트웨어 RAID 목록

MacOS


ATTO Technology는 Mac에서 software striping을 수행하는 ExpressStripe와 mirroring을 수행하는 ExpressMirror를 제공한다.

Conley도 Mac에서 striping과 mirror를 지원하는 SoftRAID를 판매하고 있다.

OS/2


Cyranex의 EZRAID PRO는 RAID 0,1,4,5를 제공한다.

Unix


실리콘그래픽스는 그들의 IRIX OS에 xlv라는 volume manager를 제공한다. 이는 striping과 mirroring을 제공한다.

HP 7xx 계열에 탑재된 sdsadmin은 RAID 0 striping을 잘 수행한다. 또한 8xx 계열에서는 LVM(Logical Volume Manager)을 사용해 이것이 가능하다. hpux10에서 sdsadmin은 LVM으로 대치되었다. LVM은 striping과 mirroring을 지원한다.

Sun의 Solstice DiskSuite는 RAID 0, 1, 5를 지원한다. 이것은 예전에 Online: Disk Suite라고 불렸다.

DEC의 Digital Unix에 포함된 LSM(Logical Storage Manager)는 RAID 0, 1, 0/1을 제공한다.

IBM의 AIX에 포함된 LVM(Logical Volume Manager)는 striping과 mirroring을 지원한다.

Linux는 커널에 포함된 MD드라이버가 RAID 0를 지원한다.

Windows NT


Windows NT는 Disk Administrator에서 RAID 0,1,5를 지원한다.


RAID 공급업체
RAID 시장은 빠르게 성장하고 있으며 새로이 진입하거나 퇴출하는 업체가 많습니다. 또한 서로의 장비를 OEM으로 공급하고, 공급받으며 이름을 바꾸는 일도 흔합니다. Disk Trend의 1996년도 리포트에 따르면 전년도에 비해 다소 줄어들긴 했지만 96년도에도 158개사가 자사 상표로 제품을 공급하고 있다고 합니다. 이 혼란스러운 시장상황을 적절히 반영하는 목록을 만드는 것은 쉽지 않은 일이므로 이점 양해바랍니다.


Adaptec

American Megatrends, Inc

Atto Technology
ExpressStripe/Mirror : 동사의 NuBus SCSI컨트롤러와 함께 사용하는 Mac용 RAID 0, 1 소프트웨어
ExpressRAID for Mac : PCI SCSI 컨트롤러와 함께 사용하는 소프트웨어 RAID 0
ExpressRAID for PC : 동사의 ExpressPCI SCSI 컨트롤러와 함께 사용하는 RAID 0 소프트웨어
VantageRAID : 동사의 VantagePCI SCSI 컨트롤러와 함께 사용하는 RAID 0 소프트웨어

Baydel
Compaq
Cyranex
EZRAID PRO : RAID 0/1, 0, 1, 4, 5를 지원하는 OS/2용의 소프트웨어 RAID
Data General
CLARiiON :
Digital Equipment Corporation
StorageWorks :
DPT
EMC
Hewlett-Packard
IBM
Mylex
Storage Computer
Storage Technology Corp
StreamLogic
Sun Microsystems
Symbios Logic
Tekram Technology
DC600 series : IDE HDD를 사용하는 RAID 1 캐쉬 콘트롤러


RAID 시장동향
이하는 컴퓨터 보조기억장치 전문 시장조사회사인 DISK/TREND의 1996 DISK/TREND report on disk drive arrays를 번역한 것입니다.

Disk array 시장은 네트웍 파일서버와 메인프레임을 위한 RAID subsystem의 주도에 힘입어 빠른 성장을 계속하고 있다. 1996년의 세계시장은 123억 달러로 추산되며, 1999년에는 186억달러에 이를 것으로 예측되고 있다.
디스크 어레이가 컴퓨터 시장의 주요 품목으로 자리잡음에 따라 낮은 시장점유율을 가진 업체들이 시장에서 밀려나기 시작하고 있다. 1995년의 DISK/TREND의 조사에서는 자사 브랜드로 제품을 출하한 기업의 수가 179개사였으나, 1996년에는 158개사로 감소하였다. IBM, EMC, DEC, compaq등이 세계시장을 주도하고 있으며, 미국에 본사를 둔 기업이 세계시장의 92%이상을 점하고 있다.

그 외에 주목할 점으로는


메인프레임용 disk array는 EMC, IBM, Hitachi Data System등의 성공적인 제품에 힘입어 95년대비 130% 이상의 성장을 이루었으며, 다른 어떤 디스크 어레이보다도 빠른 성장을 보이고 있다. 그러나 메인프레임 어레이는 96년의 44억 달러를 정점으로 점진적인 하강 곡선을 그릴 것으로 보인다. 매년 메인프레임에 사용되는 저장용량은 늘어날 것이나 디스크 드라이브의 가격하락이 더 빠르기 때문에 앞으로 3년간 평균 6.2%의 매출 감소가 예상된다.

네트웍 서버와 중형 시스템을 위한 제품은 95년 기준으로 총액기준 55.4%, 출하량 기준으로 91.8%를 차지하며 가장 큰 디스크 어레이 시장임이 명백하다. 자체개발한 디스크 어레이를 탑재한 컴퓨터 시스템을 판매하는 10개 이상의 시스템 생산자를 포함하여 140개가 넘는 업체가 이 시장에 참여하고 있다. 네트웍/중형 시스템의 시장은 95년의 54억 달러에서 99년에는 147억 달러에 이를것으로 예측된다.

OEM, 시스템 통합자, 컴퓨터 조립 사용자를 위한 array controller board는 최근 높은 성장을 기록하고 있다. 그러나 보드 수준의 어레이 콘트롤러는 메인보드에 내장될 수 있는 단일칩/칩셋 어레이 콘트롤러에 의해 대체될 것이다. DISK/TREND는 1998년 이후 어레이 콘트롤러 보드의 쇠퇴를 예상한다.

중형 어레이 제품군의 안정된 매출과 새로운 메인프레임 어레이의 대폭적인 판매신장에 힘입어 33억 달러의 매출을 올리며, IBM이 전체 디스크 어레이 시장의 33.7%를 점하여 시장 수위를 유지했다. 그 뒤를 이어 EMC가 메인프레임과 중형 어레이, OEM등에 의해 16.1%로 2등을 차지하였으며, DEC는 일부 OEM시장 증대의 도움을 받기도 하였으나 주로 자사 시스템과 연계된 매출에 의해 12.6%의 시장 점유율을 유지했다.


관련 Link

FAQ for comp.arch.storage

Linux High Perfomance SCSI & RAID

Introduction to RAID

The RAID Book

Redundant Arrays of Inexpensive Disks (RAID)
- Disk Array / RAID에 대한 논문 목록이 있다.

DISK/TREND. Inc
- 컴퓨터 보조기억장치 전문 시장조사회사의 웹사이트. 동사에서 발간하는 시장조사 리포트의 요약과 보조기억장치를 생산하는 업체 Link가 있다.

스트라이핑이 소프트웨어 RAID 파일 시스템의 성능에 미치는 영향
- 네트웍상의 여러 워크스테이션의 파일시스템을 이용한 분산형 소프트웨어 RAID에 대한 연구. RAID 1과 4를 선택적으로 사용하는 시스템에 대한 제안을 담고 있다.

Posted by 1010
60.Unix2008. 12. 11. 11:14
반응형

◆DTrace
솔라리스 10의 새로운 자가진단 툴. 이를 통해 개발자들은 성능 문제와 찾기 어려운 버그를  몇 분, 몇초 안에 진단할 수 있다.

◆Solaris Containers
솔라리스10은 하나의 운영체제에서 8,000개가 넘는 컨테이너와
함께 멀티 소프트웨어 파티션을 제공하는 유일한 운영체제이다.

◆Process Rights Management
20여년간 바이러스로부터 안전했던 솔라리스 10은 이제 미국 정부의 보안 커뮤니케이션에서 널리 이용되고 있는 트러스티드 솔라리스 (Trusted Solaris) 운영체제의 기술을 포함하고 있다. 프로세스 권한 관리는 사용자 권한을 강화하는 모델을 통해 애플리케이션의 취약성이 확대되거나 광범위한 시스템 손상을 피할 수 있도록 한다.

◆Predictive Self Healing
솔라리스 10은 시스템 다운타임을 대폭 줄이기 위해 많은 하드웨어와 애플리케이션의 문제점을 자동적으로 진단, 차단, 복구한다.

◆Linux Application Environment(코드명: 프로젝트 야누스)
솔라리스 10은 솔라리스는 물론 변형 없는 본래의 리눅스 바이너리에서 운영이 가능한 유일한 운영체제 이다. 또한 고객 투자를 보호하며 두 운영체제에서 사용할 수 있는 애플리케이션에 대한 접근을 더욱 넓혀준다.

◆ZFS
최신 64비트 파일 시스템보다 160억 배 이상의 용량을 갖추고 있는 ZFS는 무제한의 가상 스토리지 용량을 지원하는 업계 유일의 파일시스템이다. 또한 ZFS는 솔라리스 10이 데이터 스토리지를 위한 업계 최고의 운영체제가 되도록 지원하며, 행정업무 비용을 80%까지 줄여준다. 99.99999999999999999%의 오류 탐지 및 수정을 가능하게 해 믿을 수 있는 데이터를 제공한다.

◆암호 프레임웍(Cryptographic Framework)
업계에서 널리 이용되는 PKCS#11 기준에 입각해 새로운 프레임웍은 성능과 집중화된 암호 관리 운영을 강화 한다. 애플리케이션 개발자들은 애플리케이션 투자를 보호 할 수 있도록 공동 API를 사용할 수 있게 하고, 썬의 협력사들이 암호 실행에 대한 염려 없이 애플리케이션을 사용할 수 있도록 한다.

◆Sun Update Connection
썬 업데이트 커넥션은 사용자들이 시스템을 분석하고 어디서든 최신으로 업데이트 할 수 있게 하는 업데이트 서비스이다. 업데이트의 공지와 함께 사용자가 단일 시스템 업데이트를 이용하고 썬의 업데이트 포털을 통해 원거리에서도 이용할 수 있다.

◆AMD64
솔라리스 10은 AMD 옵테론 64 비트 프로세서에 최적화 되어 있으며 적은 아키텍쳐 비용으로 더 나은 성능을 제공한다. 또한 32비트와 62비트 환경의 바이너리 호환성을 제공한다.

◆보장된 호환성 (Guaranteed compatibility)
썬은 이전 버전에서 이용되던 애플리케이션이 솔라리스 10에서도 사용 가능하다는 솔라리스 애플리케이션 개런티를 제공한다. 솔라리스 2.6까지 호환이 가능하며, 이런 보장 제도는 운영체제 출시 이후 7년까지 적용된다.

Posted by 1010
60.Unix2008. 12. 11. 10:52
반응형

IV.  시스템 관리 II

1.  디스크 관리

가.  디스크 관리

Windows 에 너무 익숙해져 있는 사람들은 앞부분부터 차근차근 읽도록 하고, 어느 정도 유닉스 파일 시스템(ufs)을 다뤄본 사람이라면, 앞부분은 대충 읽어나가도록 하자. 본 내용은 solaris x86를 기준으로 설명할 것이다. Disk 관리에 있어서는 SPARC과 별다른 차이가 없으니, 모든 경우에 적용된다고 보아도 좋겠다.

솔라리스에서의 디스크 이름

 솔라리스에서는 논리적 디바이스 이름(logical device name)으로 물리적 디바이스 이름(physical device name)에 링크를 걸어 사용을 한다. 아마도 리눅스의 hda1, sda1 등에 익숙한 사람들은 약간 어색할 것이며, freebsd 사용자의 경우는 그래도 조금 친근할 것이다.

(1)  Logical device names

 Logical device name 은 우리가 알아보기 쉽도록 표시한 것을 말하며, 디스크의 경우 대부분 c0t0d0s7처럼 영문과 숫자의 조합으로 표시된다. 그럼 그 영문과 숫자의 의미를 알아보자.

- c0 : controller number가 0번임을 의미한다. 숫자는 OS에서 할당하기 때문에 우리는 그냥 쓰기만 하면 된다.

 - t0 : target number가 0번임을 의미한다. IDE 에는 존재하지 않으며, SCSI의 경우는 id 번호가 된다.

 - d0 : disk number가 0번이다.

 - s7 : slice number가 7번이다. 슬라이스란 일반적으로 우리가 일컫는 파티션을 말하며, 이 숫자까지 와서야 비로소 우리가 정할 수 있다. Format 명령으로 파티션을 조직할 때 1부터 7번까지의 슬라이스 번호를 매길 수 있는데 그 중에 우리가 7번을 사용하고 있는 것이다.


Logical name은 /dev/dsk(block device names)와 /dev/rdsk(raw device names) 디렉토리에 존재하며, 실제로는 /devices 디렉토리의 복잡한 디바이스 이름에 링크되어 있다.

(2)  Physical device names

우리가 부팅을 할 때, kernel은 시스템에 부착된 디스크를 인식하고, /devices 디렉토리에 여러 문자로 이루어진 노드로 표현된다. 노드라 불리는 이 full device pathname 은 속성, 데이터 종류, 디스크 연결 방식에 관한 여러 가지 정보를 담고 있다. 그 full device pathname 의 형식은 다음과 같이 이루어진다.

driver-name@unit-address:device arguments

driver-name 은 device name 을 나타낸다.

@unit-address는 device 의 physical address를 나타내는데, 부모 주소 공간 안에서 부여가 된다.

:device arguments 에는 각 device 에 해당하는 소프트웨어를 위한 추가적인 정보가 정의된다.

예를 들어 다음의 device 명을 살펴보면 SPARC 시스템의 스카시 드라이버의 한 슬라이스를 나타낸다는 것을 알 수 있다.



/sbus@1f,0/esp@0,4000/sd@3,0:a

위의 내용을 보면, 1f,0 의 메인 시스템 버스 주소를 가지고 sbus 에 연결되어 있다. 그리고 esp 장치(scsi bus)에 0번 슬롯, 4000번 옵셋에 부착되어 있으며, SCSI target 번호가 3, 논리적 유닛 번호가 0인 sd 장치(scsi disk)라는 것을 알 수 있다.

조금 골치 아픈 얘기이기는 하지만 공부해 두도록 하자.

나. 유용한 명령어들

백견이 불여일타라고, 백 번 읽어 봤자 소용없다. 직접 솔라리스 시스템에 앉아(또는 접속하여) 직접 다음의 명령어들을 수행해 보도록 하자.

(1)  디스크 마운트하기 - mount

 디스크의 마운트 부분은 다른 부분을 참고하기 바란다.

 LINK TO ...

(2)  디스크의 이용 상태 보기 - df

 df 명령은 각 파일 시스템에 기초하여, 여분의 블록과 파일의 수를 리스트로 보여주는 명령이다. df를 실행시켰을 경우 다음과 같이 나타난다.

사용양을 킬로바이트 단위로 볼 때는 [-k] 옵션을 사용한다.

www3:/data/users/jo > df

/proc              (/proc             ):       0 블록     7828 파일

/                  (/dev/dsk/c0t0d0s0 ): 2004402 블록   351611 파일

/dev/fd            (fd                ):       0 블록        0 파일

/data              (/dev/dsk/c0t0d0s6 ):26762390 블록  1719206 파일

/stims             (/dev/dsk/c0t0d0s5 ): 1083290 블록   488819 파일

/tmp               (swap              ): 1933152 블록    55159 파일


(3)  디스크 사용량 보기 - du

 du도 df와 마찬가지로 disk useage를 보여주는 명령어인데, df가 마운트를 기준으로 보여준다고 하면, du 는 원하는 위치의 사용량을 알 수 있다.

www3:/data/users/jo > du -k /usr/sbin

240     /usr/sbin/sparcv7

305     /usr/sbin/sparcv9

2       /usr/sbin/install.d/dynamic_test

132     /usr/sbin/install.d

6445    /usr/sbin


우리는 주로 k 옵션을 사용하는데, 이것은 읽기 쉽게 kilo 단위로 표현해 주기 때문이다.

(4)  파일시스템 체크 - fsck

파일 시스템은 내부, 외부의 악조건으로 인해, 에러가 생기거나, 꼬이거나, 부서질 수 있다. fsck는 filesystem check를 위한 명령어로서, 아주 유용하게 쓰이는 유틸리티이다. 다음의 내용은 fsck를 실행 시켜본 결과이다.

# fsck -F ufs /dev/rdsk/c0t0d0s0

** /dev/rdsk/c0t0d0s0

** Currently Mounted on /

** Phase 1 - Check Blocks and Sizes

** Phase 2 - Check Pathnames

** Phase 3 - Check Connectivity

** Phase 4 - Check Reference Counts

** Phase 5 - Check Cyl groups

FILE SYSTEM STATE IN SUPERBLOCK IS WRONG; FIX? y

17987 files, 487166 used, 1002201 free (697 frags, 125188 blocks,  0.0% fragment

ation)


위에서 보인 예는 superblock에 문제가 있는 시스템을 체크해서 수정한 것을 보여준 것처럼 보이나 정상적인 파일시스템이다. 5가지의 과정을 거치면서 하나하나 검사해 나간다. ** 참고로 검사를 원하는 슬라이스는 꼭 마운트를 풀어준 후 실행해야 한다. 그렇지 않다면 위와 같이 yes, no를 묻는 경고가 나오겠지만, 꼭 마운트를 풀고 하도록 하자. fsck는 일반적으로 시스템이 부팅되면서 실행이 되며, 관리자가 살펴봐야 할 정도로 심각한 이상이 보이면, single mode로 들어가 fsck를 실행해 볼 것을 권장하는 글이 출력된다.

다.  새 디스크 추가하기

하드디스크가 비싸던 그 옛날 옛적에는 필요하다고 무턱대고 구입하여 늘일 수 없었지만 지금은 필요하다면 raid로 묶어 몇 백 기가 바이트씩 사용하는 시대이다. 그만큼 디스크의 이동이나 교체 등이 잦은 작업이 되기 쉬운데, 그래서 꼭 알아야 하는 작업 중 하나이다.

솔라리스(x86 solaris 8)를 기준으로 디스크 추가 작업을 순서대로 알아보자.

(1)  시스템 reconfigure

시스템을 shutdown한 후에 disk를 설치한다. 하드웨어를 연결하는 일은 그다지 어려운 일이 아니므로 설명을 생략하도록 하겠다. 디스크 설치 후에 그냥 부팅을 한다면 시스템은 인식을 하지 못한다. 그래서 필요한 작업이 reconfigure 수행이다.

Reconfigure 방법엔 여러 가지가 있다.

/reconfigure 파일을 만들어 준 후 reboot 을 한다.

부팅 후 init에서 불러들이는 rc.sysinit 파일에서는 root 디렉토리에 reconfigure 라는 파일의 존재를 파악해서 시스템이 변경된 부분이 있는지 kernel 을 rebuild 하게 한다. 참고로 / 디렉토리는 root만이 쓸 수 있으니 반드시 root로 로그인해야 한다.

 [ebee@test2 /]su -

 Password:

 [root@test2 /]touch reconfigure

 [root@test2 /]ls

 TT_DB devices lib packages tmp

 bin etc lost+found platform usr

 boot export mnt proc var

 cdrom floppy net reconfigure vol

 core home nsmail sbin xfn

 dev kernel opt



이때 만들어진 reconfigure 파일은 재부팅 시 rebuild 후 자동으로 삭제된다.

부팅 후 쉘 상태에서 다음과 같이 입력한다.

# reboot -- -r


부팅 시 옵션을 입력한다.

x86 버전의 경우 부팅 후 (b)oot (i)nterprete 를 고르는 부분이 있는데, 이곳에   b r  을 입력한다.

PROM 프롬프트에서는   boot r을 입력한다.

위와 같은 방법을 거쳐 booting 이 된 후에야 다음 작업을 할 수 있다.

(2)  Format

(가)  설치할 디스크 고르기

Format 명령을 하면 커널에서 인식하고 있는 디스크들을 나열한다.

 # format

 Searching for disks...done

 AVAILABLE DISK SELECTIONS:

 0. c0d0

 /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0

 1. c0d1

 /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0

 Specify disk (enter its number):



위의 출력을 통해 ide 하드디스크를 2개 가지고 있다는 것을 알 수 있다. 새로 설치한 디스크가 1번이라 가정하고 다음으로 넘어가자. 주의할 점은 이 명령 역시 디스크를 다루는 명령으로서 마운트가 되어 있으면 안 된다. 물론 새로 산 디스크를 마운트했을 리는 없지만, 예를 들자면, re-partitioning 할 경우에 주의해야 한다.



FORMAT MENU:

 disk - select a disk

 type - select (define) a disk type

 partition - select (define) a partition table

 current - describe the current disk

 format - format and analyze the disk

 fdisk - run the fdisk program

 repair - repair a defective sector

 show - translate a disk address

 label - write label to the disk

 analyze - surface analysis

 defect - defect list management

 backup - search for backup labels

 verify - read and display labels

 save - save new disk/partition definitions

 volname - set 8-character volume name

 ! - execute , then return

 quit



위의 메뉴는 고른 디스크에 대해 작업할 수 있는 format menu이다. 우리는 우선 fdisk를 통해 솔라리스 파일 시스템으로 만들어 주어야 한다.

(나)  파일 시스템 결정 및 저장

 fdisk를 입력하면 다음과 같은 메시지가 뜬다.

Total disk size is 39703 cylinders

Cylinder size is 1008 (512 byte) blocks

Cylinders

Partition Status Type Start End Length %

========= ====== ============ ===== === ====== ===

1 Active Solaris 15 16287 16273 41

SELECT ONE OF THE FOLLOWING:

1. Create a partition

2. Specify the active partition

3. Delete a partition

4. Exit (update disk configuration and exit)

5. Cancel (exit without updating disk configuration)

Enter Selection:


필자의 디스크인데, 이미 ufs로 포맷하여 사용하고 있기 때문에 사용량 등등에 관한 정보가 나온다. 만약 디스크 자체를 새로 구성하고 싶다면(re-partition이 아니다, re-partition 은 이 다음에 할 수 있다) 솔라리스 파일 시스템을 지우는 3번을 선택하고 지우면 된다. 저장 후 다시 메뉴로 나가기 위해서는 4. Exit를 선택하여야 하는데, 만약 새 디스크라면 1. Create a partition 에서 100% solaris 파티션을 설정해 준 뒤에, 4. Exit 를 선택하도록 하자.



 Total disk size is 39703 cylinders

 Cylinder size is 1008 (512 byte) blocks

 Cylinders

 Partition Status Type Start End Length %

 ========= ====== ============ ===== === ====== ===

 1 Active Solaris 15 16287 16273 41

 SELECT ONE OF THE FOLLOWING:

 1. Create a partition

 2. Specify the active partition

 3. Delete a partition

 4. Exit (update disk configuration and exit)

 5. Cancel (exit without updating disk configuration)

 Enter Selection:



(다)  파티션 나누기

 이제 100% 솔라리스 파티션인 이 디스크를 여러 슬라이스로 나눌 차례이다.

 partition 을 입력해 보자.

 format> partition

 PARTITION MENU:

 0 - change `0' partition

 1 - change `1' partition

 2 - change `2' partition

 3 - change `3' partition

 4 - change `4' partition

 5 - change `5' partition

 6 - change `6' partition

 7 - change `7' partition

 select - select a predefined table

 modify - modify a predefined partition table

 name - name the current table

 print - display the current table

 label - write partition map and label to the disk

 ! - execute , then return

 quit



위에서 볼 수 있듯, 8개의 슬라이스가 있다. 하지만 우리가 건드릴 수 있는 것은 7개이다.

이 상태에서 print 명령을 통해 현재 디스크의 슬라이스 상태를 알아보자.



 partition> print

 Current partition table (original):

 Total disk cylinders available: 16270 + 2 (reserved cylinders)

 Part Tag Flag Cylinders Size Blocks

 0 unassigned wm 3 - 10161 4.88GB (10159/0/0) 10240272

 1 unassigned wm 10162 - 16257 2.93GB (6096/0/0) 6144768

 2 backup wm 0 - 16270 7.82GB (16271/0/0) 16401168

 3 unassigned wm 0 0 (0/0/0) 0

 4 unassigned wm 0 0 (0/0/0) 0

 5 unassigned wm 0 0 (0/0/0) 0

 6 unassigned wm 0 0 (0/0/0) 0

 7 unassigned wm 0 0 (0/0/0) 0

 8 boot wu 0 - 0 0.49MB (1/0/0) 1008

 9 alternates wu 1 - 2 0.98MB (2/0/0) 2016



필자는 이미 0번과 1번의 슬라이스를 만들어 두었다. 만드는 것은 쉽다. 변경하고 싶은 슬라이스 번호를 입력하여 용량이나 실린더 수 등으로 partitioning이 가능하다. 위에서 s2(두 번째 슬라이스)에 tag 가 backup 인 것을 유심히 보자. 이것은 기본적으로 쓰이지 않는 슬라이스이며, 디스크의 전체 용량을 나타낸다. 2번 슬라이스는 건드리지 않도록 하자.

다 했다면 quit 입력으로 format 메뉴로 빠져 나온다.

(라)  relabel

format 메뉴에서 빠져 나오기 전에 꼭 해줘야 할 명령이 있다. relabel 작업인데, 지금까지 슬라이스를 나눈 정보를 저장하는 작업이다. 만일 제대로 안 해준다면 다시 한번 위의 작업을 복습해야 하는 좋은 기회(?)가 될지도 모르겠다. 하지만 우리는 시간도 없는데 그런 짓은 하지 말자. 그냥 label 을 입력하여, 가볍게 yes 를 눌러주자. 그런 다음 quit 를 입력하여 shell 상태로 나오자.

(3)  newfs

이제 디스크의 각 부분들이 자리를 잡았다. 각 슬라이스 별로 newfs 명령을 통해 파일 시스템을 재구성해줘야 한다.

 우선 format 한 상황을 종합해 보자. c0d1 인 디스크에서 s0번과 s1번의 두개의 슬라이스로 나누었다. 앗 윗 장에서 다 설명한 것들이 아닌가! 역시 뭐든 공부해 두면 다 써먹게 되어 있다. 윗 장을 읽었음에도 잘 기억이 안 나는 사람은 자신의 머리와 부모님을 원망해가며 다시 한번 정진하도록 하자. “아무나 다 유닉스를 쓴다면, 난 유닉스를 쓰지 않았을 것이다.”라는 유닉스 유저도 꽤 있다. 만만하게 보지 말자.



 다음과 같이 명령을 내려줘야 할 것이다.

# newfs /dev/rdsk/c0d1s0

  생략

#newfs /dev/rdsk/c0d1s1

  생략


이 작업에서 super block 의 지정 등 여러 작업이 이루어지며 드디어 우리가 마운트 할 수 있는 디스크가 생긴 것이다.

2.  디스크의 백업 및 복구

가.  백업의 필요성

여러분의 시스템에는 거의 매일 많은 양의 새로운 데이터가 생성되고 있을 것이다. 이 데이터들은 무슨 이유에서든지 전부 가치 있는 것들이다. 만일 이 데이터들의 일부 혹은 전부를 잃어버렸다면 이 데이터를 살리기 위해서는 노력과 시간 혹은 돈을 들여야 할 것이다. 어떤 경우에는 잃어버린 데이터는 영영 복구 불가능한 것일 수도 있다. 어떤 데이터든지 생성된 순간부터 그것을 잃지 않도록 준비를 해야만 한다.

따라서 시스템 관리자의 가장 중요한 임무중의 하나는 시스템의 데이터를 시스템 장애, 자연적으로 발생하는 재난 그리고 우발적으로 일어날 손실로부터 시스템을 보호하는 것이다.

기본적으로 데이터를 잃어버리게 되는 요인은 다음과 같다.

     우연한 파일 삭제

     시스템 내부 장애

     시스템 외부 장애

사람은 언제나 믿을 수 없는 존재이다. 언제 실수를 저지를 지 모를 뿐 아니라 고의로 데이터를 망치려는 경우 또한 많이 있을 것이다. 하드웨어 또한 완전히 믿을만한 것은 아니다. 중요한 데이터가 보관되는 하드웨어 중 가장 핵심적인 것은 하드디스크일 것이다. 그렇지만 하드디스크 드라이브에는 움직이는 부분이 있어, 가끔 이런 부분에서 장애가 발생한다. 이런 시스템 내부 문제뿐 아니라 화재, 정전 등 우리의 외부에는 언제 어떤 재앙이 있을지 알 수 없는 일이다.

백업이란 보통 파일이 이동되거나 제거되었을 때 원본을 손실하게 될 경우를 대비하여 복사해 두는 것을 의미한다. 이런 재앙에 대해 미리미리 대비를 하기 위해 주기적으로 데이터를 여러 개 복사해 둔다면 시스템의 갑작스런 재앙에 대해 당황하지 않아도 될 것이다.

나.  백업 매체 선택

현재 가장 많이 쓰이는 백업 매체는 테이프, 디스크 드라이브, 플로피 디스켓, Zip 드라이브, 다시 쓸 수 있는 CD 등이 있다.

어떤 매체를 선택할 것인지에 대해서는 고려해야 할 많은 사항들이 있는데, 먼저 비용면을 고려해 보면 같은비용으로 더 많은 양의 데이터를 저장할 수 있는 쪽이 백업에는 유리 할 것이다. 이유는 물론 저장할 데이터의 양이 많은 것도 문제가 되지만 보통 백업은 일주일에 한번씩 전체 백업을 하고 하루에 한번씩 새로 추가된 부분만 백업을 하는 것이 보통이다. 그래서 평균 6개 정도의 매체를 가지고 일주일의 분량을 백업하는데 사용하고 다음주에 새로 그 위에 덮어씌우는 식으로 백업을 수행한다. 만약 6개 이상의 매체가 있다면 더 오래된 시점의 백업 자료를 보관할 수 있기 때문에 최근의 전체 백업 자료가 파손이 되어도 많은 데이터의 손실은 피할 수 있을 것이다.

이 외에도 매체를 선택하는데 고려해야 할 사항은 이식성, 사용의 편의성, 전송속도 등이 있고 무엇보다도 가장 중요한 것은 신뢰성을 고려해야 한다. 백업 데이터가 다른 시스템에서는 사용가능하지 않다면 문제가 있을 것이다. 또한 백업을 하는데 얼마나 쉽게 할 수 있는 지도 문제가 될 것이다. 백업하기가 지겨울 정도로 쓰기 불편하다면 곤란 할 것이다.

이런 사항들을 고려해 볼 때 가장 많이 사용되는 매체로 테이프가 있다. 테이프는 값이 적당하고 상당히 신뢰성이 좋으며 속도도 상당히 빠르며 편리하기까지 하다.



솔라리스에서 백업을 수행하는 데에 가장 많이 사용되는 tool로는 tar, dd, cpio. ufsdump와 ufsrestore 가 있다

다.  tar 사용하기

tar는 tape archive를 만들거나 tape archive에 포함된 파일을 뽑아내는데 사용된다. tar를 사용하면 단일 혹은 다중 파일을 한 디렉토리 구조에 백업 할 수 있다.

tar에는 다양한 많은 옵션들이 있다. 옵션에 대한 설명을 보려면 man tar하여 알아보면 된다.

다음은 /etc의 file 들을 tar로 만드는 예이다.

먼저 du 명령어를 사용해서 만들어질 tar 파일의 잠재적인 size를 체크한다.

www3:/etc % du

.................

.................

68      ./lp

4       ./dmi/ciagent

6       ./dmi/conf

12      ./dmi

84      ./snmp/conf

86      ./snmp

4434    .


tar로 만들어질 파일의 크기는 4,434 블록이다. du -s를 사용하면 세부 디렉토리를 제외한 전체의 크기만을 볼 수 있다.

 이제 /etc의 모든 서브디렉토리의 내용을 /tmp/로 tar 파일을 만들어 넣어보자.

www3:/etc % tar cvf /tmp/etc.tar *


여기서 옵션을 사용할 때는 -를 사용하지 않아도 된다. c는 새로운 저장 파일을 만든다는 의미이고 v는 백업이 되고있는 파일의 목록을 보여주는 역할을 하고, f는 그 다음의 인자가 생성할 저장 파일(또는 장치)의 이름이라는 것을 나타낸다.

tar 파일에서부터 내용을 다시 꺼내오기 위해서는 c옵션 대신 x(extract 의미)를 사용하면 된다.

www3:/etc % cd /tmp

www3:/tmp % tar xvf etc.tar


솔라리스에서 tar 파일은 디폴트로 압축이 되지 않는다. 압축을 하기 위해서는 solaris에서는 compress 명령어를 사용한다.

www3:/tmp % compress etc.tar


위와 같이 실행하고 나면 file.tar.Z 이라는 압축된 tar 파일이 생성된다.

compress 대신 GNU gzip을 사용하면 종종 더 좋은 압축률을 얻을 수도 있다. gzip을 사용하면 file.tar.gz 이라는 압축파일이 생긴다.

www3:/tmp % gzip etc.tar


Solaris에 tar가 있지만 GNU tar를 다운받아 설치하면 tar 파일을 압축하는데 훨씬 편리하게 될 수 있다. GNU tar를 설치하면 다음과 같이 z옵션을 써서 한번에 tar.gz파일을 만들 수 있다.

www3:/etc % tar zcvf /tmp/etc.tar *


file.tar.gz 파일을 다시 풀기 위해서는 다음과 같이 실행한다.

www3:/etc % tar zxvf /tmp/etc.tar *


그러나 백업에 있어 압축을 사용하는 것은 그다지 좋은 일이 아니다. 압축한 파일의 한 비트만 못쓰게 되면 전체 파일을 모두 잃게 된다. 따라서 압축을 하려면 파일을 몇 개로 분할해서 백업을 해 주는 것이 좋다.

라.  cpio 사용하기

cpio는 표준 입력으로부터 파일의 이름을 구하고, 표준 출력으로 목록명을 얻어서 하나 또는 복수개의 파일을 압축하는데 사용된다.

 cpio 는 3개의 다른 모드로 사용될 수 있다.

* copy-in : cpio -i , 표준 입력으로 들어온 파일들을 extract 한다.

* copy-out : cpio -o, 표준 입력으로부터 파일을 얻어서 이들 파일을 가지고 그들의 pathname 과 함께, 새로운 파일을 생성한다.

* copy-pass : cpio -p, copy-out 모드와 같다. 다만 새로운 파일이 생기는 것이 아니라 디렉토리 구조를 그대로 copy 한다는 것만 다르다.

 그 외의 옵션으로는

* B - 입력/출력 레코드 블록을 5120bytes로 정하지만, 이는 -p 옵션을 사용할 때는 지원되지 않는다.

* c - 다른 플랫폼으로 이식할 수 있는 아스키 문자 형식으로 헤더 정보를 읽거나 쓴다.

* t - cpio의 내용에 관한 테이블 목록.

* v - 파일명 목록을 출력한다. t 옵션과 함께 사용하면   ls -l   과 그 출력 양식이 같다.



 cpio를 사용 예를 보면 아래와 같다.

www3:/tmp % find . -print | cpio -o > a.list


위의 명령어는 현재 디렉토리의 모든 파일의 이름을 표준출력으로 받아 a.list 하나로 묶인다. 여기서 a.list 파일 대신 /dev/rmt/0 같은 백업을 위한 이름을 주어도 된다.

www3:/tmp % cpio -ivt < a.list


위를 실행하면 a.list 에 묶인 파일의 목록들이 ls -l  결과처럼 출력된다. 다음은 a.list로 묶인 파일을 다시 복구 시켜준다.

www3:/tmp % cpio -i[cdlmv] < a.list


아래 명령은 현재 디렉토리의 내용을 디렉토리구조 그대로 directory 라는 곳의 아래에 복사한다.

www3:/tmp % find . -print | cpio -p[adlmuv] directory


마.  dd 사용하기

dd명령은 가장 낮은 레벨의 데이터복사 명령어로서, 복사뿐 아니라 물리적인 레벨의 장치의 데이터 처리가 가능하다. (섹터, 블록, 트랙, 실린더, 장치 전체)

 dd를 사용하기 위해서는 필요한 옵션들이 있다. 이 옵션들은   옵션=값의 짝으로 주어진다. if는 입력 파일을 명시하기 위한 옵션이고, of 는 출력파일 명시, bs 는 입력과 출력 블록 크기를 설정한다(기본은 모두 512bytes).

 예를 들어 /dev/dsk/c1t0d0s0의   /   파티션을 /dev/dsk/c1t4d0s0로 복사하기 위해서는

 dd의 또 다른 사용은 하나의 tape 에서 다른 tape으로 data를 백업하는 것이다. 이것은 백업 테이프를 재 생성하는데 유용할 것이다.

server% dd if=/dev/dsk/c1t0d0s0 of=/dev/dsk/c1t4d0s0 bs=128k


예를 들어 테이프 drive 0(dev/rmt/0) 에서 drive 2(/dev/rmt/2)로 copy 하기 위해서는 다음과 같은 명령어를 사용한다.

server% dd if=/dev/rmt/0 of=/dev/rmt/2


바.  ufsdump 와 ufsrestore 사용하기

ufsdump와 ufsrestore는 Unix 파일 시스템을 백업하고 복구하기 위한 표준 application이다. 백업은 파일시스템 전체나 개별적인 파일과 디렉토리의 전체 또는 추가 백업으로 할 수 있다. 기본적으로 ufsdump는 mount된 파일시스템을 백업할 수 있지만, 백업하고자 하는 파일 시스템을 unmount시키고 사용하는 것이 현명할 것이다. 파일시스템을 fsck를 사용해서 check 한 후 백업을 수행하도록 한다.



 ufsrestore는 시스템이 붕괴된 후 single-user-mode 에서 사용한다.

 ufsdump의 기본적인 개념은 레벨별로 구별해서 백업을 할 수 있다는 점이다.



ufsdump에서 full backup은 레벨 0으로 표현한다. 그리고 1에서 9까지는 마음대로 incremental backup 레벨로 할당해서 사용할 수 있다. 다만 한가지 제한은 높은 숫자는 매일 정상적인 incremental backup 을 수행하고 백업처리의 프로세스가 재시작 한다는 것을 명시하기 위해 한 주에 한번은 낮은 숫자를 놓는다.

예를 들면 일요일의 backup은 레벨 0을 수행하고, 월요일에서 금요일까지는 각각 5,6,7,8,9의 레벨을 가지고 백업을 수행하고, 백업 사이클의 끝을 알리기 위해 토요일에는 1부터 4까지의 숫자 중 하나를 이용한다.

ufsdump는 종종 cron 을 사용해서 시스템의 부하가 적은 저녁에 수행될 수 있도록 예약해서 사용된다. cron의 사용은 프로세스관리부분을 참조하라.

시스템의 부하가 적은 일요일쯤에 전체 백업(full backup)을 수행하고, 나머지 주중에는 증가부분에 대해서만 백업(incremental backup)을 수행하면 백업의 속도 면에서도 이익을 볼 수 있고, 하나의 테이프에 각각의 날들의 작업을 분리시켜 저장할 수 있게 되므로, 원하는 날의 백업파일을 다시 복구시킬 수 있다.

실제로 백업을 수행하기 전에 백업을 하고자 하는 파일 시스템의 size를 체크할 필요가 있다. 실제 테이프의 남은 양과 비교해서 백업이 안전하게 수행 될 수 있는 지 점검해야 할 것이다.

# ufsdump S dev/dsk/c0t0d0s0

509788160


위와 같은 경우 백업을 위해서 대략 테이프에 500Mbyte 의 공간이 필요하다

# ufsdump 0cu /dev/rmt/0 /dev/dsk/c0t0d0s0


실제로 SPARC의 파티션(/dev/dsk/c0t0d0s0)를 레벨 0으로 전체백업을 수행하기 위해서는  ufsdump의 파라미터 0은 레벨 0을 나타내고, c는 모든 카트리지 테이프 드라이브의 블로킹 인수를 126으로 설정한다. u는 /etc/dumpdates 의 파일에 dump record를 update 하라는 옵션이다. 이 dump record는 각각의 파일 시스템의 마지막 dump날짜를 유지하고 있다.

ufsdump는 멀리 떨어진 테이프 장치로 백업이나 복구를 수행할 때도 사용할 수 있다. 원격 백업을 수행하기 위해서는 /.rhosts 파일의 엔트리를 가진 시스템에(테이프 장치를 가진) 접근할 수 있는 권한이 있어야 하고, ufsdump나 ufsrestore 명령어 라인에서 server:tatp_drive를 명시한다.

예를 들어 카트리지 테이프를 사용하여 멀리 떨어진 host1의 테이프 장치에 /export/home 파일 시스템을 전체백업(레벨 0)을 하려면 아래와 같이 한다.

# ufsdump 0uf host1:/dev/rmt/0 /export/home


ufsdump를 사용해서 백업을 한 후에 ufsrestore를 사용하여 백업한 데이터를 다시 복구할 수 있다.

/dev/rmt/0의 테이프에서 다시 데이터를 복구하기 위해서는 다음과 같이 한다.

# ufsrestore xf /dev/rmt/0

 You have not read any volumes yet.

 Unless you know which volume your file(s) are on you should start

 with the last volume and work towards the first.

 Specify next volume #: 1

 set owner/mode for   .  ? [yn]


y를 입력하면 모든 파일들을 복원할 수 있다. 만약 복원되는 리스트를 보기 위해서는 아래와 같이 입력한다

# ufsrestore tf /dev/rmt/0


ufsrestore 는 대화식 모드로 사용할 수 있다.

# ufsrestore i

ufsrestore>


위와 같은 상태에서 help를 입력하면 사용 가능한 commend를 볼 수 있다.

여기서 ls를 하면 덤프의 디렉토리들이 나열된다. cd를 이용해서 덤프안의 디렉토리를 자유롭게 이동 할 수 있고, add를 사용해 복원할 파일의 목록을 추가하고, delete를 사용해서 목록에서 다시 삭제를 한다

그리고 extract를 치고 엔터를 치고 나면 add로 추가한 목록들이 모두 복원이 된다. 모든 복원을 끝마치고 나서 quit를 사용해서 ufsrestore 의 대화식 모드를 빠져나간다.

위의 과정을 예를 들면 아래와 같다

ufsrestore> ls

2     *./            39       devices/        60847           net/

2     *../           5122     etc/            15360           opt/

161   .Xauthority   5120     export/         25611           proc/

160   .rhosts       10240    home/          15831           sbin/

ufsrestore> add .rhosts .Xauthority

ufsrestore> delete .rhosts

ufsrestore> extract


위와 같이 하면 선택한 .Xauthority 가 복원된다.

사.  그외 유용한 툴

AMANDA( Advanced Maryland Automatic Network Disk Archiver)

AMANDA는 multiple client를 위해 서버가 중앙에서 백업하도록 지원을 해주는 freesoftware 백업 시스템이다.

이 시스템에서는 기본적으로 단일 테이프 드라이브를 사용하도록 하고 있으나, multiple tape 이나 다른 디바이스를 사용하도록 configuration이 가능하다.

AMANDA를 사용함으로써 백업에서 얻을 수 있는 이점은 기존의 솔라리스 백업과 복구 명령으로 관리를 할 수 있다는 점이다. 즉 AMANDA로 백업한 파일들은 일반 tar로 볼 수 있는 tar 파일이다. 이것은 AMANDA가 어떤 이유로 사용 불가하거나, 설치되지 않은 서버에서도 복구가 가능하다는 이점을 가져온다.

http://amanda.org에서 다운받아 설치할 수 있으며, FAQ 는 http://www.ic.unicamp.br/~oli va/snapshots/amanda/FAQ 에서 찾을 수 있다.

이 시스템에서는 데이터를 백업 디바이스로 직접 전송하지 않고 백업준비파일형태로 존재하여 실제로 기록하는 프로세스가 따로 이것을 기록한다. 이것은 CD-R 테크닉을 쓸 때 유리하다. CD-R 디바이스는 쓸 준비를 빠르게 하지 못한다. 따라서 write track 이 잘못되었을 경우 새로운 디스크를 사용해야 하기 때문에 백업준비파일과 실제 기록 프로세스와의 분리는 이런 디스크의 낭비를 막아 줄 수 있다.

AMANDA의 또 다른 이점은 효율적인 dump 스케줄링을 제공한다는 점이다.

dump cycle이란 개념을 사용했는데, 특정 파일을 dump 하는데 드는 시간을 평가해서, dump의 전체 횟수를 최소화한다. 지난 백업을 기반으로 해서 서로 다른 백업들의 시간의 균형을 맞추어서 백업을 실행한다.

이외에 AMANDA는 제한점도 가지고 있다.

이것은 단일 백업 매체보다 더 큰 양의 파일시스템을 할 수 없다. 이것은 즉, 큰 디스크만(최신의 DAT 나 DLP 테이프 같은)을 사용해서 백업을 해야 한다는 단점이 된다.



3.  시스템 프로세스 관리

유닉스 시스템 사용자라면 누구나 현재 수행되고 있는 프로세스들이 무엇이고 어떤 상태인지 보고 싶은 적이 있을 것이다. 여기서는 수행되고있는 프로세스들을 어떻게 볼 수 있으며, 이들을 제어하는 방법에 대해 설명하고, 이러한 반복적인 작업을 자동화하는 방법에 대해서 설명한다.

가.  프로세스 보기와 끝내기

프로세스들의 속성을 보기 위한 명령어로는 ps 와 pgrep을 사용하고, 프로세스를 끝내는데 사용되는 명령어로는 kill 과 pkill 이 있다

(1)  ps와 kill 사용하기

ps는 현재 활동하고 있는 프로세스들의 정보를 보여주는데 사용된다. 많은 관리자들은 kill 을 사용해 프로세스를 죽이기 위해서는 프로세스의 id(PID)를 알아야 하기 때문에 ps 를 사용해서 PID를 알아낸다.

ps에는 많은 옵션들이 있어 프로세스의 정보를 여러 원하는 형태로 출력되도록 사용이 가능하다. 사용 가능한 옵션들은 아래와 같다.



* -A와 -e 는 모든 프로세스를 출력

* -a는 터미널과 관련되지 않은 프로세스와 프로세스 그룹 리더를 제외한 모든 프로세스를 출력

* -g프로세스그룹ID 는 특정 프로세스그룹의 프로세스들을 출력

* -G그룹ID 는 특정 그룹에 속한 user 들의 프로세스만 출력

* -f 는 full 리스트 형식으로 출력

* -l 는 long 리스트 형식으로 출력

* -j 는 프로세스의 세션ID 와 프로세스 그룹ID 를 출력

* -t 터미널디바이스패스 는 특정 터미널 디바이스 패스와 연관된 프로세스들만 출력

* -u USER ID 는 특정 user 의 프로세스만 출력



ps 사용 예를 보자.

옵션 없이 ps명령어만 사용한 기본 출력형태는 아래와 같다.

www3:/data/users/jo > ps

   PID TTY      TIME CMD

 11955 pts/2    0:00 csh


여기서 나타나는 PID는 프로세스의 ID를 나타내고 TTY는 터미널 디바이스를, TIME 는 수행시간을 CMD는 프로세스가 수행하는 프로그램이나 명령어를 나타낸다.



몇 가지 사용 예를 더 살펴보자.

www3:/data/users/jo > ps -t pts/2

   PID TTY      TIME CMD

 11955 pts/2    0:00 csh

 12910 pts/2    0:00 ps


위의 명령은 터미널 디바이스 pts/5 에 관련된 프로세스들의 목록을 보여준다.

www3:/data/users/jo > ps -f -t pts/2

     UID   PID  PPID  C    STIME TTY      TIME CMD

      jo 11955 11953  0 11:33:03 pts/2    0:00 -csh

    root 12953 11955  0 11:48:21 pts/2    0:00 ps -f -t pts/2 


-f 옵션을 사용한 full 리스트는 위와 같이 출력되며 여기서의 UID는 user ID 이고, PPID 는 parent PID를, C는 소모한 프로세서의 이용시간을 나타내고 STIME은 프로세스 시작날짜를 나타내 준다.

kill 명령어를 사용하면 ps를 통해서 알아낸 PID를 가지고 프로세스에게 시그널을 보내 프로세스를 중지시킬 수 있다. 사용 방법은 kill signal값 PID와 같이 사용한다.

kill 명령어를 사용해서 프로세스에게 보낼 수 있는 시그널의 종류는 다음과 같고, 모든 시그널을 받았을 때 프로세스는 기본적으로 프로세스를 끝내는 것으로서 시그널에 응답한다.

Symbol         Value    Description

SIGHUP          1       Hangup

SIGINT          2       Interrupt

SIGKILL         9       kill

SIGTERM         15      Terminate

SIGUSR1         16      User signal 1

SIGUSR2         17      User signal 2


kill 명령어로 프로세스에게 시그널을 보낼 때는 시그널의 symbol 이나 Value 둘 다 사용 가능하다. 아래의 예는 둘 다 같은 결과를 가진다.

$ kill -SIGKILL 4220 4224 4229

 4229 Killed

 4224 Killed

 4220 Killed

 $kill -9 4220 4224 4229

 4229 Killed

 4224 Killed

 4220 Killed


(2)  pgrep 과 pkill 사용하기

ps 와 kill 외에 프로세스를 보고 프로세스에게 시그널을 보내는 명령어로 pgrep과 pkill이 있다. 이 명령어들은 UID나 GID같은 특정 attribute 들에 속하는 프로세스들의 목록을 볼 수 있을 뿐 아니라 regular expression을 사용해서 특정패턴을 가지고 특정 프로세스들을 보거나 종료시킬 수 있다.

예를 들면 ps를 사용해서 sendmail 을 실행하고 있는 프로세스를 찾기 위해서는 다음과 같이 한다.

www3:/data/users/jo > ps -eaf | grep sendmail

    root   228     1  0   Nov 16 ?        0:00 /usr/lib/sendmail -bd -q15m


이것을 pgrep을 사용하면 아래 같이 간단하다.

www3:/data/users/jo > pgrep sendmail

228


다만 pgrep을 사용하면 PID만이 출력된다. 프로그램의 이름까지 출력하고자 할 경우 -l 옵션을 사용하면 PID와 프로그램이름을 같이 볼 수 있다.

이 외에도 pgrep에서 사용되는 옵션으로는 -f 하면 패턴을 프로그램의 이름에서만 매치시키는 것이 아니라 모든 argument 에서 패턴과 매치되는 프로세스들을 출력시켜준다.

-n은 매치되는 프로세스들 중에서 가장 최근에 생긴 프로세스 하나만을 보여주고, -x는 패턴과 정확히 매치된 프로세스만 보여준다.

특정 ID를 가진 프로세스를 찾기 위해서 사용하는 옵션들은 g(Process Group ID), -G(Real Group ID), -P(Parent Process ID), -s(Process Session ID), -t(Terminal Device Path), -U(Real User ID) 등이 있다.

그리고 pgrep이 PID를 출력할 때는 디폴트로 한 줄에 하나의 PID를 출력한다. 많은 프로세스들이 출력될 때는 한꺼번에 화면이 빠르게 넘어가기 때문에 보기가 불편할 것이다. 이럴 때 -d 옵션을 사용하면 유용하다. d옵션 뒤에 표시된 것을 구분자로 해서 PID가 출력된다.

www3:/data/users/jo > pgrep -d , -u root

0,1,2,3,242,139,47,51,107,142,109,210,154,165,187,167,182,230,200,209,272,228,23

7,236,243,29240,29263,248,249,9408,11953,29250,28324,29241,29660  


pkill 명령어도 pgrep 명령어와 사용법이 유사하다. 다만 PID를 출력해주는 대신에 매치되는 프로세스들을 SIGTERM(15)를 사용해서 종료시켜 준다. SIGTERM 대신에 특정 signal을 명시해서 사용해도 무방하다.

사용되는 옵션들은 pgrep과 같다. 다음은 user ID 가 jo인 프로세스들을 종료시켜준다.

www3:/data/users/jo > pkill -KILL -u jo


나.  프로세스 Scheduling

(1)  cron 사용하기

시스템 관리자와 사용자들은 주기적으로 일어나는 작업에 대해서 매일매일 수동으로 수행하기보다는 때가 되면 자동으로 원하는 작업이 정기적으로 실행되길 원한 적이 있을 것이다.

cron 은 미래에 실행할 작업을 주기적으로 수행하도록 스케줄 할 수 있게 해준다.

cron은 시스템이 부팅될 때 시작되는 데몬이다. cron 데몬은 crontab 파일을 참조해서 파일 안에 명시된 작업을 규정된 시간에 수행한다. crontab 파일은 /var/spool/cron/crontabs 디렉토리에서 읽어서 수행한다.

다른 시스템과 마찬가지로 cron의 행위를 setting 할 수 있는데, 이들 setting 들은 /etc/default/cron 파일에 명시되어 있다.

cron 명령은 디폴트로 로그파일을 기록하도록 아래와 같이 /etc/default/cron 파일에 설정되어 있다.



     CRONLOG=YES



이것이 설정되어 있으면 cron 의 모든 활동에 대한 로그를 /var/cron/log 파일안에 저장한다. log를 기록하고 싶지 않으면 YES 를 NO로 변경하면 된다.

이 외에도 /etc/default/cron 파일에 설정할 수 있는 내용은 cron 작업들의 PATH 와 SUPATH를 아래와 같이 setting 시킬 수 있다.

PATH=/usr/bin:/usr/ucb:

SUPATH=/usr/sbin:/usr/bin:


cron 데몬은 /var/spool/cron/crontabs/ 아래의 파일들을 읽어서 예약해놓은 작업들을 실행한다. 이 디렉토리에는 시스템과 유저의 파일들을 포함하고 있는데, 파일의 이름은 유저의 이름과 동일하게 생성된다.

다음은 default로 생성된 root 의 crontab 파일이다.

10 3 * * 0,4 /etc/cron.d/logchecker

10 3 * * 0 /usr/lib/newsyslog

15 3 * * 0 /usr/lib/fs/nfs/nfsfind

1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1

30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean


파일 안에는 space 또는 tab으로 분리된 6개의 엔트리를 가진다. 각 엔트리와 해당 값은 다음과 같다.



     분(0-59), 시간(0-23), 일(1-31), 달(1-12), 요일(0-6: 일요일=0), 명령어



하나의 엔트리에는 2개 이상의 값을 표현할 수가 있다. 만약 1,2,3 월에 계속 하고 싶은 작업이라면 달에 해당하는 값을 1-3으로 표시하거나, 컴마로 구분해서 1,2,3 과 같이 표현하는 것도 가능하다. * 는 모든 값에 다 해당한다는 표현이다.

그럼 이제부터 자신의 작업을 스케쥴링 해보자.

만약 guest 라는 user account를 가진 사람이 일요일마다 12시 정각에 자신의 홈 디렉토리에 있는 test 명령을 실행하도록 나의 crontab 파일을 만들어보자.



     $crontab -l

하고 입력하면 현재 세팅되어 있는 나의 crontab 파일의 내용이 출력된다.

물론 아무 내용이 없다면 출력되지 않을 것이다.

그럼 위의 작업을 스케쥴하려면



     $crontab

을하고 나면 입력이 가능하도록 되며 여기에 작업내용을 입력한다.



     0 12 * * 0 /home/guest/test

라고 입력하고 Ctrl+D를 입력하면 나의 /var/spool/cron/crontabs/guest 파일이 생성된다.

이 파일은 root 만이 볼 수 있고 수정할 수 있다.

내 crontab 파일을 수정하기 위해서는 아래와 같이 한다.

$EDITOR=vi

$export EDITOR

$crontab -e


위와 같이 실행하고 나면 사용자의 crontab 파일이 vi 편집기로 열린다. 여기서 수정을 하면 된다.

이렇게 작업을 예약하고 나면 알아서 cron 데몬이 해당되는 시간에 예약된 작업들을 수행시켜 준다. 만약 수행할 결과의 output 이 있다면 사용자에게 메일로 전달된다.



-r 옵션을 사용하면 사용자의 crontab 파일이 삭제된다.

crontab 파일에 접근허가는 /etc/cron.d/ 아래에 있는 cron.allow와 cron.deny 2개의 파일로 컨트롤할 수 있다. 각 파일들에는 접근을 허락하기 위한 또는 거절하기 위한 user account 이름을 한 줄에 하나씩 열거한 텍스트가 들어있다.

처음 시스템을 설정하고 나면 기본적으로 cron.allow 파일은 없고 cron.deny 파일만 존재한다.

(2)  at 사용하기

이 명령어는 특정시간에 명령 혹은 스크립트를 수행하게 하며, 단지 한번 수행된다는 점이 crontab 파일과는 다르다.



     $ at [-m] [-r 작업] 시각 [날짜]



-m 옵션을 사용하면 작업이 끝난 후에 사용자에게 메일을 보내준다. -r 옵션은 at명령어로 예약해 놓은 작업 큐에서 작업을 삭제하기 위해 사용한다. 시각은 아래와 같이 여러 방법으로 규정될 수 있다.

$at now

$at 10am

$at 2pm

$at noon

$at 3pm + 1 week

$at 2am jan 24

$at 1400 tomorrow


간단한 예로 12시에 ls를 수행하도록 작업을 예약하기 위해서는

www3:/var/cron % at 12:00

at> ls

at> Ctrl +D 입력 #at 종료

/usr/bin/csh을(를) 사용하여 명령이 실행됨

작업 1007089200.a 가 금 11월 30 12:00:00 2001에


이렇게 하면 1007089200.a라는 작업이 큐에 쌓이게 된다. 만일 오늘이 12시가 지났다면 다음날 12시에 수행하도록 작업이 설정된다. 큐의 내용을 확인하려면 atq 명령어를 사용한다.

$atq

Rank     Execution Date     Owner     Job         Queue   Job Name

  1st   Nov 24, 2000 12:00   smdoo   975034800.a     a     stdin


큐의 작업을 삭제하려면 at -r 작업번호를 입력한다.



     $at -r 1007089200.a

at 명령어도 역시 /usr/lib/cron/at.allow 와 /usr/lib/cron/at.deny 파일들에 의해서 접근을 컨트롤 할 수 있다.

다.  프로세스의 자세한 정보 보기

솔라리스 프로세스의 핵심적인 특징중의 하나는 /proc 파일시스템으로 마운트 되는 프로세스 파일 시스템이다. /proc 파일 시스템에는 PID를 이름으로 가진 현재 활동중인 프로세스의 이미지를 담고 있다. 예를 들면, 먼저 jo라는 사용자의 프로세스에서 현재 shell 프로세스의 이미지를 살펴보자.

www3:/var/cron % ps -ef | grep jo

      jo 24079 23532  0 14:43:45 pts/2    0:00 grep jo

      jo 23532 23529  0 14:35:47 pts/2    0:00 -csh


여기서 csh 의 PID 는 23532이다. 이 프로세스의 이미지를 보기 위해서는 /proc/25909 디렉토리로 가면 볼 수 있다.

www3:/proc/23532 % ls -l | more

총 3098

-rw-------   1 jo       users    1564672 11월 29일  14:35 as

-r--------   1 jo       users        152 11월 29일  14:35 auxv

-r--------   1 jo       users         32 11월 29일  14:35 cred

--w-------   1 jo       users          0 11월 29일  14:35 ctl

lr-x------   1 jo       users          0 11월 29일  14:35 cwd ->

dr-x------   2 jo       users        800 11월 29일  14:35 fd

-r--r--r--   1 jo       users        120 11월 29일  14:35 lpsinfo

-r--------   1 jo       users        912 11월 29일  14:35 lstatus

-r--r--r--   1 jo       users        536 11월 29일  14:35 lusage

dr-xr-xr-x   3 jo       users         48 11월 29일  14:35 lwp

-r--------   1 jo       users       2112 11월 29일  14:35 map

dr-x------   2 jo       users        544 11월 29일  14:35 object

-r--------   1 jo       users       2432 11월 29일  14:35 pagedata

-r--r--r--   1 jo       users        336 11월 29일  14:35 psinfo

-r--------   1 jo       users       2112 11월 29일  14:35 rmap

lr-x------   1 jo       users          0 11월 29일  14:35 root ->

-r--------   1 jo       users       1440 11월 29일  14:35 sigact

-r--------   1 jo       users       1232 11월 29일  14:35 status

-r--r--r--   1 jo       users        256 11월 29일  14:35 usage

-r--------   1 jo       users          0 11월 29일  14:35 watch

-r--------   1 jo       users       3344 11월 29일  14:35 xmap


이 디렉토리에는 프로세스의 상태 정보 등을 포함하고 있는 서브디렉토리들을 포함하고 있다. 서브디렉토리 안에 있는 정보를 해석하기 위한 tool로 proc tool이 있다. 이것은 각 프로세스의 특징들을 출력시켜주는 역할을 한다.

라.  proc tool 사용하기

proc tool들은 /proc 파일시스템 안에 있는 데이터들을 다루기 위한 것이다. 이 툴에 있는 유틸리티들로는 pflags, pcred, pfiles, pldd, pmap, psig, pstack, pstop, ptime, ptree, pwait, pwdx 가 있고, 모든 유틸리티들은 argument로 PID를 사용한다.

각각이 하는 일이 무엇인지 하나씩 살펴보도록 하자.

pflags는 해당 PID의 자세한 데이터 모델과, flag에 대한 정보를 보여준다.

위의 csh 쉘에 대한 사용 예를 보면 아래와 같다.

www3:/proc/23532 % /usr/proc/bin/pflags 23532

23532:  -csh

        data model = _ILP32  flags = PR_ORPHAN

  /1:   flags = PR_PCINVAL|PR_ASLEEP [ sigsuspend(0xffbef840) ]

  sigmask = 0x00000002,0x00000000


pcred 는 수행되는 프로세스의 effective, real, saved UID와 GID를 보여준다. pmap 은 프로세스의 메모리 세그먼트 사이즈와 address space 를 보여준다. 그리고 pldd 명령어는 각 프로세스에 링크된 dynamic libraries 를 보여준다.

www3:/data/users/jo % /usr/proc/bin/pmap 23532 | more

23532:  -csh

00010000    144K read/exec         /usr/bin/csh

00042000     16K read/write/exec   /usr/bin/csh

00046000    112K read/write/exec     [ heap ]

FF160000    488K read/shared       dev:32,0 ino:358926

FF1E0000      8K read/exec         /usr/lib/locale/ko/methods_ko.so.2

FF1F0000      8K read/write/exec   /usr/lib/locale/ko/methods_ko.so.2

FF200000    656K read/exec         /usr/lib/libc.so.1

FF2B2000     32K read/write/exec   /usr/lib/libc.so.1

..........................

..........................

www3:/data/users/jo % /usr/proc/bin/pldd 23532

23532:  -csh

/usr/lib/libcurses.so.1

/usr/lib/libmapmalloc.so.1

/usr/lib/libc.so.1

/usr/lib/libdl.so.1

/usr/platform/sun4u/lib/libc_psr.so.1

/usr/lib/locale/ko/ko.so.2

/usr/lib/locale/ko/methods_ko.so.2  


pfile은 proc tool 중에 많이 쓰이는 명령어 중 하나이다. 이것의 역할은 각 프로세스의 모든 open 파일들을 출력해 준다. 출력내용은 파일이 저장되어 있는 파티션의 inode 번호, UID, GID, 접근허가 정보 등이다.

www3:/data/users/jo % /usr/proc/bin/pfiles 23532

23532:  -csh

  Current rlimit: 64 file descriptors

   0: S_IFCHR mode:0666 dev:32,0 ino:157032 uid:0 gid:3 rdev:13,2

      O_RDONLY|O_LARGEFILE

   1: S_IFCHR mode:0666 dev:32,0 ino:157032 uid:0 gid:3 rdev:13,2

      O_RDONLY|O_LARGEFILE

   2: S_IFCHR mode:0666 dev:32,0 ino:157032 uid:0 gid:3 rdev:13,2

      O_RDONLY|O_LARGEFILE

   3: S_IFDOOR mode:0444 dev:179,0 ino:1492 uid:0 gid:0 size:0

      O_RDONLY|O_LARGEFILE FD_CLOEXEC  door to nscd[182]

  15: S_IFCHR mode:0620 dev:32,0 ino:157410 uid:102 gid:7 rdev:24,2

      O_RDWR FD_CLOEXEC

  16: S_IFCHR mode:0620 dev:32,0 ino:157410 uid:102 gid:7 rdev:24,2

      O_RDWR FD_CLOEXEC

  17: S_IFCHR mode:0620 dev:32,0 ino:157410 uid:102 gid:7 rdev:24,2

      O_RDWR FD_CLOEXEC

..........................

..........................


이 외에도 psig는 각 프로세스의 signal action 리스트를 보여주고, pgrep과 pkill은 앞에서 언급했던 것처럼 프로세스의 목록을 보고 프로세스에게 시그널을 보내는 역할을 해준다. prun 은 process를 running 시키고, pstop은 kill 명령어와 같은 유사한 방법으로 프로세스를 중지시켜준다.

pstack은 프로세스 thread 의 stack trace를 보여주고, ptree는 프로세스가 생성된 tree를 process ID를 통해 나타내준다.

프로세스의 시간 정보를 보기  해 사용되는 명령어로는 ptime이 있고, pwait는 프로세스가 끝나기를 기다리도록 하는 명령어이고, pwdx는 프로세스의 working directory를 보여준다.

(1)  sof 사용하기

lsof는   list open file을 나타낸다. 이 명령어는 프로세스에 의해 현재 open된 파일들의 정보를 보여준다. 이 명렁어는 Solaris에 포함되어 있지는 않으나, ftp://vic.cc.purdue.edu/pub/tools/unix/lsof에서 최신 버전을 다운받아서 사용할 수 있다. lsof가 얼마나 유용한지에 관한 것은 얼마나 파일과 프로세스에 관련된 문제들에 많이 직면하는지에 달려 있다.

관리자들은 프로세스가 현재 사용하고 있는 파일이 무엇이고, 특정 디렉토리에서 어떤 파일들을 사용하는지 알고 싶을 때가 있을 것이다. 만약 어떤 파일이 다른 프로세스에 의해 사용되고 있어서 lock 되었을 경우, 그 파일을 사용하는 다른 프로세스는 파일을 사용할 수 없을 것이다. 후자의 프로세스를 수행시키고자 할 경우 전자의 프로세스의 PID를 찾아서 이를 중지시킨 후 파일을 사용할 수 있을 것이다.

lsof를 사용하면 디렉토리  에 파일들이 어떤 프로세스에 의해 사용되고 있는지 알 수 있다. 다음과 같이하면 /tmp 파일시스템에 있는 파일들이 어떤 프로세스에 의해 사용되는지 볼 수 있다.



     $ lsof /tmp

파일시스템을 마운트하는 제한사항 중에 하나는 만일 파일시스템에 open 된 파일이 존재한다면 이 파일시스템은 unmount 시킬 수 없을 것이다. 그 이유는 파일시스템이 unmount 된다면 파일에 대한 변화된 정보를 기록할 수 없기 때문이다.

파일시스템을 unmount 하려고 했다가 실패를 한 경우, lsof 를 사용해 파일시스템 안의 파일 중 open 된 파일의 리스트를 얻어서 해당 프로세스를 중지시키면 파일시스템을 무사히 unmount 시킬 수 있다.



4.  작업제어 관련 명령어

가.  background 작업 프로세스의 정지와 삭제

 정지는 아래의 stop 명령어로 제어될 수 있다. 그리고 현재의 진행중인 작업을 보려면 jobs라는 명령어로 체크할 수 있다. %job_number는 현재 실행중인 프로세스 번호를 적는 것으로서 pid와 동일한 값을 갖는다.

------------------------------------------------------------

 # stop %job_number 엔터

 # jobs (show job#) 엔터

------------------------------------------------------------

 삭제를 위해서는  kill 명령어를 사용하는데 사용법은 다음과 같다. 여기서 pid는 프로세스 id이며, ‘ps -a’ 명령어로 현재 수행중인 프로세스를 알 수 있다.

------------------------------------------------------------

 # kill -9 pid 엔터

------------------------------------------------------------

 다른 방법으로 whodo 라는 명령어를 이용하여 사용자와 현재 작업상태를 확인할 수 있는데, 자신의 프로세스를 이렇게 제거할 수도 있다. 또한 콘솔에서 프로세스가 다운되어 마우스나 키보드가 동작하지 않을 때는 타 서버에서 네트워크로 접속하여 프로세스를 제거해야 한다.

나.  foreground 작업 프로세스의 정지와 삭제

 현재 작업중인 프로세스를 background작업으로 돌리기 위해서는 'ctrl+z'를 입력한다. 그리고 이렇게 background로 전환된 작업은 다음의 명령어로 제어될 수 있다.

------------------------------------------------------------

 # fg 엔터 ☞ foreground 로 다시 전환시킴

 # \ 엔터 ☞ 종료를 시킴

 # bg 엔터 ☞ 계속 진행시킴

------------------------------------------------------------

다.  기타 작업제어 관련 명령어

 # command& 엔터 ☞ background 작업개시

 # ps 엔터 ☞ 현재 실행중인 프로세스 id를 디스플레이

 # jobs 엔터 ☞ background 작업번호 및 상태 디스플레이

 # nohup command& 엔터 ☞ logout 후에도 명령 실행 계속유지

 # fg 엔터 ☞ 현재작업을 foreground 로 전환시킴

 # fg %n 엔터 ☞ n 번 작업을 foreground 로 전환시킴


출처 : http://unix.co.kr/bbs/board.php?bo_table=02_021&wr_id=5

Posted by 1010
60.Unix2008. 12. 11. 10:44
반응형

III.  시스템 관리 I

1.  솔라리스 부팅과정의 이해

가.  유닉스 부팅의 개요

(1)  부팅이란?

컴퓨터에서 부팅이란 시작한다는 뜻으로 통용되는 용어이며, Bootstrapping 의 줄임말이다. Bootstrap이란 장화(부츠)를 손쉽게 신기 위해 잡아당길 수 있도록 되어 있는 손잡이가죽을 말하며, 결국 bootstrapping은 장화를 신듯이 시스템이 운영할 수 있는 준비를 하는 것을 뜻한다.

(2)  boot 과정

일반적인 UNIX의 부팅 과정에서 진행되는 일은 다음과 같다.

 - Kernel의 loading 과 initialization

 - Device detection 과 configuration

 - System process 의 생성

 - Operator intervention(single-user boot에서만 가능함)

 - System 시작 스크립트 수행

 - Multi-user operation



 x86 계열의 부팅과정으로, 보다 구체화시키면 다음과 같다.

 - 전원이 들어오면 일단 BIOS가 시스템 하드웨어에 문제가 없는지 테스트한다.

 - 첫 번째 하드디스크의 MBR(Master Boot Record)의 프로그램이 Partition Table을 검사하여 활성화(active)된 파티션의 부트섹터를 읽어 그 코드를 실행한다. 해당 코드는 커널을 메모리로 읽어 들이는 역할을 한다.

 - 커널은 자료구조를 초기화하고 필요한 커널 모듈을 읽어 들인다.

 - Root file system 을 mount 한다.

 - init 프로그램을 수행한다(init 프로그램이 다양한 스크립트를 수행하여 multi-user mode로 전환하게 된다).

(3)  초기 프로세스의 생성

커널이 메모리에 올라오고 초기화 작업이 끝나는 시점에서 사용자 메모리 영역에 몇 개의 자발적(spontaneous) 프로세스(fork와 같은 방법으로 만들어지는 것이 아닌 프로세스)를 만든다. BSD계열에서는

 - swapper : process 0

 - init : process 1

 - pagedaemon : process 2

 등이며, System V 계열에서는

 - sched : process 0

 - init : process 1

 - memory handler(각 시스템마다 차이가 있음)

등의 이름을 가지고 있다. 몇몇 초기 프로세스의 생성이 끝나면, 부팅 에 관한 커널의 임무는 여기서 끝나고 나머지 부팅 과정은 init process 가 주도한다.

(4)  시작 스크립트

init 는 각종 스크립트를 수행하여 시스템 운영 환경을 구축한다. 스크립트의 수행구조는 BSD계열과 System V 계열이 약간 차이가 있다.

BSD계열은 /etc 하위에 rc로 시작하는 파일들이 수행되는 스크립트이며, System V계열은 /etc/init.d 하위에 시작 스크립트들이 존재하고 이중 필요한 것들이 /etc/rc0.d, /etc/rc1.d 등의 디렉토리에 링크되어 사용된다.



어떤 시스템이든 시작 스크립트는 대략 다음과 같은 일들을 한다.

 - 컴퓨터의 이름 setting

 - time zone setting

 - 시스템의 디스크들을 mount

 - network interface를 configuration

 - 각종 daemon 과 network service를 시작

우리는 솔라리스가 따르고 있는 System V 방식의 시작 스크립트에 대해 자세히 알아보도록 하겠다.

(5)  run level

System V 계열의 init daemon 은 run level 이라는 것을 지원한다. Run level은 시스템 자원을 서로 다르게 조합하여 운영하는 것을 가능케 하는데 시작 스크립트도 이에 따라 여러 부분으로 나누어져 있다.



 System V에서는 다음과 같이 8개의 run level 을 제공한다.

Run Level

Functionality

0

Power down state : 시스템과 주변장치의 power 를 내려도 안전한 레벨

1

System Administration state : 다른 log-on 한 사용자에게 영향을 주지 않고 관리 업무를 수행할 때 사용

2

Multiuser mode : NFS 외의 모든 서비스가 제공되는 상태

3

Networked Multiuser mode : 일반적인 operating mode

4

Alternative Multiuser mode : 현재 사용되지 않는 run level

5

Firmware state : maintenance activity를 위해 사용

6

Shutdown and reboot state : 보통상태에서 reboot 할 때 사용

S

Single-user mode


나.  솔라리스의 부팅

(1)  솔라리스 부팅의 개요

솔라리스는 다음과 같은 네 단계를 거쳐 부팅이 수행된다. 일단 BIOS 단계에서 시스템의 하드웨어적인 이상유무를 판단하고, MBR을 읽어 들이고, 커널을 인식시킨 후에 init 프로세서를 통해 부팅을 마무리하게 된다. 그럼 각 과정에 대해 조금 더 깊이 들어가 보자.

(2)  BIOS 단계

시스템의 전원을 켰을 때 BIOS 는 시스템에 H/W와 메모리를 검사하기 위해 Self-test를 실시한다. 에러가 발견되지 않았을 경우, BIOS는 첫 번째 부트섹터(MBR)에 저장된 mboot를 메모리에 적재하고 수행한다.

(3)  boot program 단계

mboot는 활성화(active)된 파티션을 찾아서, pboot를 메모리에 적재하고 수행시킨다. 그리고 pboot는 디스크 안에 있는 secondary boot program을 메모리에 적재하기 위한 primary boot proram인 bootblk을 메모리에 적재한다. 기본적으로 파란 화면에서 10초간 기다리도록 설정되어 있는데, 부팅 가능한 파티션이 여러 개라면 이 화면에서 선택하여 부팅을 할 수 있다. Bootblk는 secondary boot program 인 boot.bin 이나 ufsboot 를 찾아 수행하는데, boot.bin 이나 ufsboot는 /etc/bootrc 스크립트를 수행하기 위해 command interpreter를 시작한다.

(4)  커널 인식 단계

core kernel 이 메모리에 올라온 이후 자신의 데이터 구조를 초기화하고, 모듈들을 메모리에 적재한다. 필요한 모듈을 불러온 이후에 커널은 /sbin/init 프로그램을 수행한다.

(5)  init 단계

커널에서 init를 호출한 이후부터는 init 프로세스가 /etc/inittab 파일의 내용을 바탕으로 마지막 부팅 작업을 하기 시작한다.

 각 run level 별로 수행되는 디렉토리와 파일을 알아보고, 특히 우리가 일반적으로 사용하는 run level 3 이 수행되는 경우에 대해서 알아보도록 하자.

 /etc/ 디렉토리 아래에는 다음과 같은 파일들이 존재하는데 그림으로 알아보도록 하자.

MEMO:


 


그림 40) init 개념도

run level 들이 명시되어 있는 파일인 /etc/inittab 파일을 조금만 살펴보도록 하자.

sS:s:wait:/sbin/rcS                     >/dev/msglog 2<>/dev/msglog </dev/console

s0:0:wait:/sbin/rc0                     >/dev/msglog 2<>/dev/msglog </dev/console

s1:1:respawn:/sbin/rc1                  >/dev/msglog 2<>/dev/msglog </dev/console

s2:23:wait:/sbin/rc2                    >/dev/msglog 2<>/dev/msglog </dev/console

s3:3:wait:/sbin/rc3                     >/dev/msglog 2<>/dev/msglog </dev/console

s5:5:wait:/sbin/rc5                     >/dev/msglog 2<>/dev/msglog </dev/console

s6:6:wait:/sbin/rc6                     >/dev/msglog 2<>/dev/msglog </dev/console


위의 내용은 /etc/inittab 파일의 중간 부분을 발췌한 것이다. 눈치가 빠른 사람은 금방 알아챘겠지만, s3로 시작하는 부분이 run level 3일 경우에 관련된 부분이다. 따라서 run level 3일 경우에 /sbin/rc3를 실행하게 된다.

물론 inittab 파일 안에 보면 전후에 실행되는 default 필드들이 있으나 여기서는 생략하도록 하겠다.

그럼 /sbin/rc3 파일을 살펴보도록 하자.

if [ -d /etc/rc3.d ]; then

        for f in /etc/rc3.d/K*; do

                if [ -s $f ]; then

                        case $f in

                                *.sh)   .        $f ;;

                                *)      /sbin/sh $f stop ;;

                        esac

                fi

        done

        for f in /etc/rc3.d/S*; do

                if [ -s $f ]; then

                        case $f in

                                *.sh)   .        $f ;;

                                *)      /sbin/sh $f start ;;

                        esac

                fi

        done

fi


위의 파일 역시 중간 부분을 발췌하였다. 이 부분은 /etc/rc3.d 디렉토리의 여러 데몬들을 구동시키는 스크립트인데, 보는 바와 같이 /etc/rc3.d 디렉토리의 파일들 중에 S로 시작하는 파일에는 start 인수를 넘겨서 시작하도록 하고, K로 시작하는 파일들은 stop 인수를 넘긴다. 한번 자신의 /etc/rc3.d 디렉토리를 살펴보고 파일명을 살펴보도록 하자.

(6)  run level 바꾸기

run level 을 바꾸는 방법에는 여러 가지가 있다. 그 중에 유용하게 쓰이는 init 명령을 살펴보도록 하자.

지금 우리가 디스크에 문제가 생겨서, single-user mode 로 부팅을 했다고 가정하자. 문제를 해결하고 원래대로 부팅을 하고 싶은데 우리는 reboot 작업을 거쳐야 할까? 물론 아니다. 다음과 같이 명령을 내리면 된다.

# init 3

위의 명령으로 run level 3로 들어가게 할 수 있다.

숫자 부분에 올 수 있는 인수로는 0, 1, 2, 3, 4, 5, 6, s 가 있다.

2.  사용자 계정 관리

관리자가 해야할 일 중에 가장 기본적이라고 할 수 있는 것이 바로 사용자의 계정을 관리하는 것이다. 관리자는 필요한 계정을 등록 해야하고 필요하면 삭제도 해야한다. 여기서는 이러한 계정 등록과 삭제에 관한 내용을 살펴볼 것이다.

가.  사용자 계정 등록하기

사용자 계정을 등록하는 방법에는 여러 가지가 있지만 그 중에서 두 가지를 여기서 설명하겠다. 먼저 GUI환경에서 제공해주는 admintool이라는 명령어를 이용하여 등록이 가능하며 useradd라는 터미널 상에서의 명령어를 사용해서 계정을 등록할 수도 있다. 일반적으로 관리자는 admintool은 한 두 명의 사용자를 등록하기에는 편리하지만 여러 명의 계정을 등록하려면 아무래도 useradd명령어를 사용해서 하는 것이 더 편리하다.

(1)  admintool

admintool을 사용하는 것은 해당 메뉴를 보면 사용하기가 쉬울 것이다. Admintool을 수행하면 3개의 풀다운 메뉴가 보일 것이다.

File은 하위 메뉴로 종료(Exit)하는 기능의 메뉴가 있으며

Edit는 창에 있는 항목을 선택하여 추가(Add), 수정(Modify), 삭제(Delete)하는 기능의 메뉴가 있고 Browse 메뉴가 어떠한 기능을 제공하는지 다음 표에 나와있다.

메뉴

기능

사용자

사용자 추가, 수정 및 삭제

그룹

그룹 추가, 수정 및 삭제

호스트

호스트 추가, 수정 및 삭제

프린터

프린터 추가, 수정 및 삭제

직렬 포트

직렬 포트 추가, 수정 및 삭제

소프트웨어

패키지 관련 소프트웨어 추가, 수정 및 삭제


(2)  useradd

useradd는 터미널 모드에서 사용하는 명령어로써 자주 사용되는 옵션은 숙지하여야 한다.

useradd [-c comment] [-d dir] [-e expire] [-f inactive] [-g group]

[-G group [, group...]] [-m [-k skel_dir]] [-u uid [-o]] [-s shell]

[-P profile [, profile...]] login



useradd 명령어의 사용 예를 보자.

#useradd -c Superman -d /data/home/jo -s /usr/bin/csh -g 100 -u 1001 -m jo

#useradd -d /data/home/jo -s /usr/bin/csh -g users -m jo

일반적으로 사용되는 옵션을 이용해서 사용자를 등록한 예이다. -m 옵션은 홈 디렉토리가 존재하지 않을 경우 생성시키는 옵션이다. 모든 옵션을 생략하고 다음과 같이 간단히 사용자를 등록할 수도 있다.



 # useradd jo

이렇게 하면 단지 jo라는 사용자 계정만 만들어질 뿐이고 홈디렉토리는 만들어지지 않는다. UID는 가장 큰 UID다음번호가 등록이 되며 GID는 1(other)로 등록이 된다. 그리고 쉘은 본쉘(/bin/sh)이 기본적으로 세팅이 된다.

등록해야할 사용자가 많을 경우에는 간단한 쉘 스크립트를 사용하여 사용자 등록을 자동적으로 해줄 수도 있다. /etc/passwd에 단순히 편집모드에서 사용자를 추가했을 경우에도 계정 등록이 가능하다 하지만 /etc/shadow에도 추가되어야 하므로 다음과 같은 명령어를 사용하여 /etc/shadow에도 추가해준다.



 # pwconv

pwconv(/bin/pwconv)명령어는 /etc/passwd파일을 참조하여 /etc/shadow파일을 갱신해준다.

나.  사용자 계정 삭제하기

유효기간이 지난 사용자나 필요 없는 사용자가 존재하면 가능하면 보안상 즉시 삭제를 해주는 것이 좋다. 삭제하는 방법은 마찬가지로 ??admintool??을 사용할 수도 있지만 여기서는 ??userdel??이라는 명령어를 사용하겠다.



# userdel [-r] login

-r 옵션은 사용자가 사용했던 홈 디렉토리까지 삭제하라는 옵션이다.

삭제 후 제대로 삭제되었는지를 확인하려면 /etc/passwd와 /etc/shadow를 확인해서 해당 login id가 존재하는지를 확인해보면 된다.

다.  그룹 추가하기

그룹추가도 마찬가지로 적은 수의 그룹 관리이면 ??admintool??을 사용해도 무난하다. 만일 그룹수가 많아지면 ??groupadd??라는 명령어를 사용한다.



 groupadd [-g gid [-o]] group



'-g gid'옵션은 GID(정수)를 써주는 부분이며 -o 옵션은 GID의 중복 사용을 허용해주는 옵션이다.



# groupadd -g 100 solaris

이렇게 solaris라는 그룹이 100이라는 GID로 등록이 되며 이는 /etc/group에 저장이 된다.

/etc/group이라는 파일을 보면 네 개의 필드가 존재한다. 첫 번째 필드는 그룹명, 두 번째 필드는 passwd, 세 번째 필드는 그룹의 실제 ID(GID), 네 번째 필드는 해당 그룹의 사용자 목록이다.

라.  그룹 삭제하기

그룹 삭제는 ??groupdel??이라는 명령어를 사용하면 된다. 사용법은 다음과 같다.



groupdel group

여기서 group은 그룹명을 적어주면 된다.

마.  사용자 패스워드

패스워드 파일(/etc/passwd)은 사용자들에 대한 정보를 지닌 파일로 각 라인마다 7개의 필드로 구성되어 있다.



 [사용자 계정]:[암호]:[사용자 ID]:[그룹 ID]:[주석]:[홈 디렉토리]:[로그인 쉘]

위에서 jo라는 계정을 만들었을 때 /etc/passwd에는 다음과 같이 추가가 된다.



jo:x:1001:100:Superman:/data/users/jo:/usr/bin/csh

여기서 암호필드에 x라고 되어있는데 이는 shadow 파일을 사용하겠다는 의미이다. 예전에는 이곳에 사용자 암호를 암호화한 내용이 들어있었지만 보안상의 문제로 요즘에는 보통 /etc/shadow에 넣어둔다. 그리고 이 shadow파일은 일반사용자는 열람이 불가하게 기본 설정이 되어있다. 나머지 필드는 이해하는데 별 어려움이 없을 것이다. 참고로 주석(comment) 필드는 생략 가능하다.

passwd파일에서 UID가 0이면 root(관리자)를 의미하며, UID와 사용자 계정은 중복해서 사용할 수가 없다. 또한 UID, GID는 항상 숫자로 나타내어야 한다.

3.  솔라리스 /etc 디렉토리

★ 이전의 시스템 정보를 다시 반영시키기 위해 백업이 필요한 파일목록

① /etc/group(현재 사용자들의 그룹 정보)

② /etc/passwd(현재 사용자들의 이용자 번호와 홈디렉토리 정보)

③ /etc/shadow(현재 사용자들의 암호가 암호화되어 있음)

④ /etc/hosts(서비스를 받을 수 있는 클라이언트들의 정보)

⑤ /etc/vfstab(현재 mount 되어 있는 파일시스템의 정보)

⑥ /etc/dfs/dfstab(file system sharing service 위치 정보)

⑦ /etc/dfs/sharetab(file system sharing service 위치 정보)

⑧ /opt/SUNWspro/license_dir/sunpro,lic.1(C 컴파일러등의 라이센스 정보)

⑨ /etc/opt/licenses_combined(C 컴파일러등의 라이센스 정보)

⑩ /etc/init.d에서 필요한 파일들(부팅시 필요한 실행파일들)

⑪ /etc/rc0.d ~ /etc/rc4.d에서 필요한 스크립트 파일들

⑫ /etc/networks(network 정보)

⑬ /etc/defaultrouter(기본 router 의 정보)

⑭ /etc/netmasks(netmask 정보)

⑮ /etc/resolv.conf(name server 정보)

? /.cshrc 및 /.login(root 가 가지는 C-shell 정보 및 login 정보)

? /etc/skel에 있는 .* 파일들(사용자 생성시 자동으로 복사되는 .cshrc 파일과 .login 파일, 이름이 각각 .cshrc 및 .login, .profile로 되어 있어야 함) .cshrc 은 사용자의 shell을 C로 설정했을 때 자동으로 복사가 되는 파일이며, .profile 은 사용자의 shell을 Bourne으로 설정했을 때 복사되는 파일이다. 선택적으로 복사가 되기 때문에 두 가지 다 넣어주는 것이 바람직하다.

4.  솔라리스 파일 시스템

가.  정의

UNIX 파일 시스템은 데이터를 체계적으로 구성하기 위한 부분

계층적 트리 구조로 이루어져 있기 때문에 정보의 저장이나 검색이 용이

나.  종류

(1)  일반 파일 (Ordinary file)

일반적으로  정보를  저장하기  위한  수단으로  이용되는데  이것은 OS 에  의해  특수한  구조를  갖지  않는  파일을  지칭한다.

Execution file, source program file, text file, data file  등이  있음.

(가)  텍스트 파일 (text file)

알파벳, 숫자, 특수문자, 제어문자, 한글문자 등으로 구성되어진 파일들로 원시 프로그램이나 쉘 프로그램 파일들이 이에 해당된다.

단말기나 프린터를 통하여 파일의 내용을 볼 수 있다.

(나)  이진 파일 (binary file)

원시 프로그램으로부터 어셈블(assemble)하거나 컴파일(compile)하여 만들어진 실행 가능한 파일 혹은 일정한 형식을 지닌 데이터 파일들이 이에 해당된다.

파일의 내용이 단말기나 프린터를 통해 표시되지 않는다.

내용을 보기 위해서는 OD(Octal Dump)라는 명령어를 이용한다.

(2)   디렉토리 파일 (Directory file)

자신의 밑에 다른 파일들을 포함하고 있는 파일들을 말한다.

다른 파일들과 디렉토리들에 관한 정보를 저장하는 논리적 영역이며 계층적 트리 구조로  이루어져 있다.

/bin, /dev, /etc, /tmp, /lib, etc.

(가) 디렉토리(Directory) 체제

      root directory                     :    / 

      UNIX O.S. 자신                   :  HOME

      현재 자신의 directory              :   . 

      자신의 한 단계 위 directory        :   .. 

(나)  대표적인 Directory 파일

 /bin    :  UNIX의 기본 커맨드 파일들이 위치한다. 기본적인 실행 가능한 명령파일을 가지고 있는 디렉토리로 대표적 파일로는 cat, cp, date, echo, mv, pwd, who, rm 등 많은 파일이 있다.

 /dev    : 장치 파일들이 있는 디렉토리 즉, 시스템의 모든 입/출력 파일을 가지고 있는 디렉토리로 대표적 파일로는 console, lp, tty 등의 파일이 있다.

 /etc    : 시스템에서 사용하는 많은 관리 파일(administrative file)을 가지며 대표적 파일로는 chmod, init, getty, mknod, motd, passwd, rc, wall 등의 파일이 있다.

 /tmp  : 프로그래머들이 임시파일을 만들기 위해 사용하며, man, queuer 등의 파일이 있다.

 /lib    : 기본적인 프로그램 모듈들이 있는 디렉토리로 cpc, libc.a, popt, spopt 등의 파일이 있다.

/ : UNIX 커널의 실행화일 및 시스템 관리에 중요한 .login, .profile 등의 파일이 포함된다.

/usr : 일반적으로 시스템 관리자의 파일들이 배치한다.

/usr/bin : 워드, 데이터 베이스관리 프로그램들과 개발된 프로그램 등이 포함된다.

/export/home : 사용자들의 홈 디렉토리로서 대표적으로 지정하는 것이나 시스템을 설치할 때 다른 곳으로 정해줄 수도 있으며 사용자계정을 만들 때에 다른 곳으로 만들어 줄 수도 있다.

/usr/include : C언어의 header 파일들이 포함된다.

/usr/man : UNIX의 매뉴얼이 위치한다.

/usr/spool : CPU와 주변장치를 중첩하여 수행시키기 위하여 주변장치로 출력되는 데이터 파일들을 임시로 저장하는 스풀용의 디렉토리다.

/usr/adm : UNIX의 사용자와 프로세스의 작동을 monitor하는 accounting error reports  같은 프로그램들이나 데이터 파일들이 포함된다.

/opt : UNIX에서 이용하는 C 컴파일러 같은 응용프로그램과 license 관리에 필요한 모든 정보가 들어가는 디렉토리이다. 따라서 아주 중요한 디렉토리이므로 정기적으로 백업하는 것이 좋다.

(3)   특수 파일 (Special file)

주변장치에 접근하는 파일들을 말한다.

일반 파일이 사용자에 의해 만들어진 정보를 그 내용으로 하는 것과는 달리 특수 파일은  입출력 주변장치인 disk, tape drive, line printer, terminal 등에 액세스 할 수 있는 채널을 마련하는 정보를 담고 있는 파일이다.

모든 입출력 장치가 UNIX와 연결되기 위해서는 적어도 하나 이상의 특수파일을 가져야  한다.

특수 파일들은 대부분 /dev 디렉토리에 존재한다.

이곳에는 입출력장치의 제어기를 이곳에서 맞추어 장치를 연결할 수 있게 한다. 예를 들면 /dev/tty12는 12번 터미널을 의미한다. 이곳에서는 자신이 가지고있는 장치가 /dev 디렉토리내의 어떤 형식의 장치를 가지고 있는가를 알고만 있어도 장치를 인식할 수 있다.

다.  파일명과 경로명

 UNIX 시스템의 파일명은 255문자이내에서 사용 가능하다. 주의할 것은 대?소문자를 구별한다는 것이다. 또 한가지 "." 나 “_”로 시작되는 파일명은 시스템 파일들이 많이 사용하기 때문에 사용하지 않는 것이 바람직하다.

UNIX 시스템에서 원하는 디렉토리 아래의 파일에 접근하고 실행하려면 패스를 지정해 주어야 한다.

(1)  상대경로(relative path)

만약 현재의 /a에서 a1으로 이동하려고 할 때 cd a1라고 입력하면 된다. 또한 /a/a1에서 /a/a2로 이동하려고 할 때 cd ../a2라고 입력하면 된다. 이때 쓰이는 방식이 상대경로 이동방식이다.

(2)  절대경로(absolute path)

 만약 현재의 /a/a1에서 /a/a2로 이동하려고 할 때 cd /a/a2라고 입력하면 된다. 이때 쓰이는 방식이 절대경로 이동방식이다.

그림 41) 디렉토리 경로



5.  NFS (Network File System)

가.  NFS란?

NFS란 Network File System의 약자로서 1980년대에 썬 마이크로시스템즈에서 처음 개발되었고, 현재 리눅스나 솔라리스와 같은 유닉스를 비롯하여 윈도95/98과 윈도2000과 같은 운영 체제에서 널리 사용되고 있다. 그럼 NFS란 무엇인가? 간단히 말해서 어떤 한 시스템(클라이언트)에서 다른 시스템(서버)의 자원을 자신의 자원처럼 사용이 가능하도록 하는 것을 말한다. 이렇게 사용함으로써 자원의 낭비를 줄이고 효율적인 운영을 할 수 있기 때문이다. 리눅스를 어느 정도 다루었던 사람들은 NFS에 대한 개념을 쉽게 잡을 수 있을 것이다. 솔라리스에서의 NFS도 다를 바가 없다. 다만 설정 상에 약간 차이가 있을 뿐이다.

NFS에 대한 개념도를 [그림 3]에 나타내었다. 그림에서는 NFS서버의 공유된 자원으로 디스크를 예로 설명된 것이다. 물론 디스크가 아니라 CD-ROM과 같은 것도 가능하다. NFS를 사용하려면 서버와 클라이언트 양쪽에서 몇 가지 설정이 필요하다. 서버의 설정이 완료되면 지정된 클라이언트에서는 단지 마운트를 통해 NFS서버의 자원을 자신의 자원인양 똑같이 사용하는 것이 가능하다. 이러한 NFS는 좋기만 한 것은 아니다. NFS로 서버와 클라이언트가 연결되어 있으면 NFS서버의 자원에 접근할 때마다 네트웍 트래픽이 걸리므로 속도면에서 많은 손실을 감안해야 한다는 점이다.

그림 42) NFS 개념도

NFS는 여러 명이 같이 사용되는 대용량 프로그램이나 데이터들을 하나의 호스트에 넣어 두고 각 클라이언트들은 이 호스트의 데이터가 들어있는 디렉토리를 마운트하여 사용한다. 따라서 디스크 공간 면에서도 많은 절약을 가져올 수 있으며 각 각의 클라이언트마다 동일한 프로그램을 설치할 필요성도 없어지므로 관리 면에서도 매우 편리해 진다. 그럼 NFS를 운영하기 위해서 NFS서버와 클라이언트에 필요한 데몬에 대해서 살펴보면 다음과 같다.


 


(1)  NFS 서버에서 사용되는 데몬

데몬

설명

 /usr/lib/nfs/nfsd

클라이언트의 파일시스템 요청을 처리한다.

 /usr/lib/nfs/mountd

NFS 접근정보에 대한 요청과 파일시스템 마운트 요청에 대해 응답을해주는 RPC 서버이다.


클라리언트가 NFS서버에 접근 요청을 하면 제일 먼저 mountd 데몬이 수행되어 /etc/dfs/sharetab파일을 참조한다. nfsd가 돌고 있다면 mountd를 꼭 데몬으로 실행해 주어야 정상적으로 NFS서버를 운영할 수 있다.

 위의 데몬들은 모두 NFS서버를 사용하기 위해서는 필수적인 데몬들이며 run level 3에서 /etc/rc3.d/S15nfs.server라는 스크립트를 통해서 실행되며 이는 /etc/init.d/nfs.server와 같은 스크립트이다.

(2)  NFS 클라이언트에서 사용되는 데몬

데몬

설명

 /usr/lib/nfs/statd

lockd 데몬과함께 NFS에서의 locking 서비스를제공하기위하여 crash 또는 recovery 기능을제공한다.

 /usr/lib/nfs/lockd

NFS lock기능을담당하는데몬이며, statd 데몬이모니터링서비스가가능하도록한다.


위의 데몬들 또한 NFS서버에 접근하기 위해서 필수적인 NFS 클라이언트 데몬들이다. 이들은 모두 run level 2에서 /etc/rc2.d/S73nfs.client라는 스크립트를 통해서 실행되며 이 파일은 /etc/init.d/nfs.client와 같은 것이다.

나.  NFS 서버

NFS 서버란 공유목적으로 파일 시스템과 같은 자원을 원격 호스트에게 네트웍을 통하여 제공하는 시스템을 말한다. NFS 서버를 세팅하기 위해서는 우선 공유하고자 하는 파일 시스템을 선택하고 이를 클라이언트가 NFS로 사용하도록 공유를 해줘야 한다. 공유하는 방식에 따라 수동 공유와 자동 공유가 있다.

(1)  수동 공유

수동 공유 설정은 'share'(/usr/bin/share)라는 명령어를 사용하며 'share'에 대한 사용법은 다음과 같다.



 share [-F FSType] [-o specific_options] [-d description] [pathname]

-F : 파일 시스템 형태를 적어준다. 기본적으로 nfs로 인식한다. 따라서 command에서는 생략 가능하다.

-o : 클라이언트가 서버의 공유자원에 접근할 때 사용제한에 대한 옵션을 적어준다.

rw=client[:client]... ; 읽기와 쓰기 가능, client에는 네트웍 호스트 이름이나 ip를 입력

ro=client[:client]... ; 읽기만 가능

root=client[:client]... ; 지정된 클라이언트에게 root 퍼미션으로 해당 자원을 공유

anon=uid ; 지정된 uid로 해당 자원을 공유

-d description : 공유 자원을 설명하는 주석

pathname : NFS 서버측 공유자원의 절대 경로명



클라이언트의 루트 사용자가 만일 NFS 서버의 공유 자원에 쓰기를 하면 어떠한 UID와 GID로 기록이 될까? 언뜻 생각하면 보통과 같이 root:other(0:1)이라고 생각하기가 쉽지만 실제로 해보면 이렇게 기록이 되질 않는다. NFS 서버측에서는 클라이언트의 root를 nobody(uid=60001)로 인식을 하기 때문에 nobody:other로 기록이 된다. 만일 root의 uid가 0인 상태로 NFS서버로 접근하기를 원한다면 위에서 기술한 anon=0이라는 항목을 추가하면 된다.

다음 예는   share  와   unshare  에 대한 가장 간단한 사용법을 설명한 것이다. 여기서는 임시적으로   /data  라는 디렉토리를 만들어 공유를 하였다. 공유 옵션은 사용하지 않았지만 기본적으로   rw  옵션이 설정된다. 단순히   share  라는 명령을 실행시키면 공유정보를 출력시켜준다. 하지만 아직 NFS 서버가 동작하는 것은 아니다. NFS 서버상에 현재 공유가 수행되는지에 대한 정보를 보려면   dfshares  라는 명령어를 사용하면 된다. 아직 NFS 서버 데몬이 실행이 안되었으므로   dfshares   명령어를 실행하면 프로그램이 아직 등록이 안되었다고 나올 것이다.   /etc/init.d/nfs.server start  라는 명령어로 NFS 서버 데몬을 실행시키면 이제부턴 NFS 클라이언트에서 마운트를 통해 서버의 공유 자원을 사용할 수가 있게 된다. 공유가 더 이상 필요하지 않게 되면   unshare  라는 명령어로 공유를 해지하고 데몬을 없애는 것은   /etc/init.d/nfs.server stop  라고 하면 된다.

share  명령어로 NFS 서버의 자원을 공유하면 해당 정보가   /etc/dfs/sharetab  에 자동 저장되며 클라이언트가 접근을 하면 이 파일을 참조하여 허용 여부를 판단한다. 또한   share  를 아무 옵션 없이 사용하면 자신의 공유 정보를 화면에 나타내 준다. 다음 표는 공유와 관련된 명령어들을 요약 정리한 것이다.

령어

기능

share

현재의공유정보를출력해주며자원을공유하는데사용된다.

shareall

/etc/dfs/dfstab참조하여리스트되어있는자원을공유한다.

unshare

명시된경로에대해서 NFS 공유를모두해제시킨다.

unshareall

/etc/dfs/dfstab명시된공유리스트를모두해제시킨다.


다음 예는 share와 unshare에 대한 가장 간단한 사용법을 설명한 것이다. 여기서는 임시적으로   /data라는 디렉토리를 만들어 공유를 하였다. 공유 옵션은 사용하지 않았지만 기본적으로   rw옵션이 설정된다. 단순히 share라는 명령을 실행시키면 공유정보를 출력시켜준다. 하지만 아직 NFS 서버가 동작하는 것은 아니다. NFS 서버 상에 현재 공유가 수행되는지에 대한 정보를 보려면 dfshares  라는 명령어를 사용하면 된다. 아직 NFS 서버 데몬이 실행이 안되었으므로 dfshares 명령어를 실행하면 프로그램이 아직 등록이 안되었다고 나올 것이다.   /etc/init.d/nfs.server start  라는 명령어로 NFS 서버 데몬을 실행시키면 이제부턴 NFS 클라이언트에서 마운트를 통해 서버의 공유 자원을 사용할 수가 있게 된다. 공유가 더 이상 필요하지 않게 되면 unshare라는 명령어로 공유를 해지하고 데몬을 없애는 것은   /etc/init.d/nfs.server stop이라고 하면 된다.

# cd /

# mkdir /data

# share /data

# share

-          /data   &nbsprw    ""

# cat /etc/dfs/sharetab

/data   -  &nbspnfs   &nbsprw

# dfshares

nfs dfshares:sola: RPC: Program not registered

# /etc/init.d/nfs.server start

# dfshares

RESOURCE           &nbspSERVER ACCESS TRANSPORT

sola:/data               sola        -           -

# unshare /data

# /etc/init.d/nfs.server stop


옵션을 사용한 NFS 공유는 나중에 다시 다룰 것이다.

(2)  자동 공유

지금까지는 기본적으로 share라는 명령어를 사용하여 직접 공유를 수행하였다. 이렇게 수행된 자원 공유는 재부팅이 되면 공유된 정보가 사라지게 된다. 따라서 재부팅이 되어도 자동으로 공유가 되도록 하기 위해서는 /etc/dfs/dfstab  파일에 공유 정보를 입력해주면 된다. 그럼 run-level 3로 들어갈 때에 dfstab 파일의 정보를 참조하여 공유를 수행한다.

dfstab파일에 공유 정보 입력은 위에서   share  명령어를 사용했던 문장을 그대로 입력해 주면 된다. 다만   -F nfs  옵션은 꼭 써주어야 한다. 위에서 설명한 예를 가지고 dfstab파일을 작성해 보면 다음과 같다.

# cd /etc/dfs

# ls -F

dfstab   &nbspfstypes   &nbspsharetab

# vi dfstab

share -F nfs /data


이렇게 작성된 공유는 아직 NFS 클라이언트에서 마운트를 할 수 없다. 위에서 설명한   shareall이라는 명령어를 사용하여 자원을 공유해줘야 한다. shareall은 /etc/dfs/dfstab에 들어있는 공유 정보를 가지고 공유를 실행한다. 수동 공유 때와 마찬가지로 공유를 수행한 다음 만일 현재 NFS 서버 데몬이 실행중이 아니라면 /etc/init.d/nfs.server start라는 명령어로 데몬을 실행시켜주어야 한다.

다.  NFS 클라이언트에서 할 일

(1)  수동 마운트

NFS 서버의 공유 내용들을 클라이언트에서 사용하려면 서버에서 공유된 자원을 마운트 해야 한다. 마운트할 때 사용되는 명령어는   mount  이며 기본 사용법은 다음과 같다.



mount [ -F nfs ] [ -r ] [ -o specific_options ] server:pathname mount_point

-r : 읽기만 가능하게 마운트

-o : 일반적인 마운트 옵션 외에 NFS에서만 적용되는 옵션을 기술

마운트가 수행되면 해당 정보는 /etc/mnttab에 저장이 되며 마우트를 수행하는 시스템(NFS 클라이언트)에서는 해당 디렉토리에 접근할 때에 위의 파일내용을 참조한다.

간단한 마운트에 대한 예제를 전 장에서 설명된 NFS 서버에서 설정된 사항을 바탕으로 설명하겠다. NFS 서버의 도메인을 sola라하고 공유된 디렉토리는 /data라고 하면, 다음 예와 같이 마운트를 하면 된다. 여기서 sola 대신에 NFS서버의 ip주소를 입력해도 무관하다.

# cd /

# mkdir /data

# mount sola:/data /data

# df k

Filesystem           kbytes   used  avail capacity Mounted on

/dev/dsk/c0t1d0s0   4030518  58355 3931858    2%   /

/dev/dsk/c0t1d0s3   4030518 686733 3303480   18%   /usr

/proc                      0      0      0    0%   /proc

fd                        0      0      0    0%   /dev/fd

mnttab                    0      0      0    0%   /etc/mnttab

swap                 523576      0 523576    0%   /var/run

swap                  523904    328 523576    1%   /tmp

/dev/dsk/c0t1d0s6    983349 217537 706812   24%   /opt

/dev/dsk/c0t0d0s7   8286045 304548 7898637    4%   /export/home

/dev/dsk/c0t1d0s4   4030518      1 3990212    1%   /usr/local

sola:/data           3007086   70853 2876092     3%    /data


마운트 대상 디렉토리는 로컬 시스템에서 항시 비어있어야 한다. 만일 내용이 있는 디렉토리를 마운트를 하면 에러가 발생할 수도 있으며 순조롭게 마운트가 수행되는 경우도 있다. 이것은 해당 디렉토리에서 어떠한 작업이든 사용중이면 장치 사용 중이라는 메시지가 나오며 마운트가 실패된다. 만일 장치가 사용중이 아니라면 마운트는 수행이 되며 원래의 디렉토리에 들어있던 내용은 보이질 않게 된다. 하지만 지워지는 것은 아니니 안심해도 된다. 나중에   umount를 사용해서 마운트를 해제하면 원래의 파일들을 다시 볼 수 있을 것이다.

# cd /

# mount sola:/data /opt

nfs mount: mount: /opt: 장치 사용 중


(2)  자동 마운트

수동으로 마운트 된 것은 시스템을 재부팅하면 마운트 정보가 사라지게 된다. 재부팅이 되어도 마운트 정보를 보존하고자 하면 /etc/vfstab라는 파일에 해당 마운트 정보를 입력하면 된다. /etc/dfs/dfstab과는 달리 여기에는 명령형태로 입력하는 것이 아니라 입력 방식이 따로 있다. 해당 파일을 열면 아마도 기존의 마운트 정보가 입력되어 있을 것이며, NFS 마운트 정보를 다음 예와 같이 추가하면 된다. 입력 시 주의할 점은 각 간격을 모두   tab으로 해야 한다는 점이다.

# cd /etc

# cat /etc/vfstab

sola:/data -    /datanfs  -    yes  -




라.  NFS 설정 예제

이번 절은 이제까지 설명된 내용을 바탕으로 몇 가지 옵션을 주고 NFS 서버와 클라이언트를 실제로 설정을 해보도록 하겠다. 다음 표는 예제로 사용될 NFS 서버와 클라이언트에 대한 정보이다.

 

호스트명

IP 주소

NFS 서버

sola1

192.168.1.194

NFS 클라이언트

sola2

192.168.1.195

sola3

192.168.1.196


(1)  NFS 서버

서버에서의 공유 자원으로는 /data/user1, /data/user2, /data/user3, /data/user4로 하며 모든 작업은 root권한으로 한다. 각 디렉토리는 서로 다르게 공유 옵션을 주었으며 해당 옵션에 대한 설명은 아래 표에 하였다.

sola1# cd / ; mkdir data

sola1# mkdir user1 user2 user3 user4

sola1# vi /etc/dfs/dfstab

share F nfs /data/user1

share F nfs o ro=sola2,rw=sola3 /data/user2

share F nfs o rw=sola2:sola3,root=sola2 /data/user3

share F nfs o rw=sola2:sola3,anon=0 /data/user4

sola1# /etc/init.d/nfs.server start

sola1# dfshares

RESOURCE                                 SERVER ACCESS   TRANSPORT

    sola1:/data/user1                    sola1   -        -

    sola1:/data/user2                    sola1   -        -

    sola1:/data/user3                    sola1   -        -

    sola1:/data/user4                    sola1   -        -


 

/data/user1

/data/user2

/data/user3

/data/user4

sola2

읽고 쓰기 가능

읽기만 가능

읽고 쓰기 가능

root 권한으로 작업 가능

읽고 쓰기 가능

root 권한으로 작업 가능

sola3

읽고쓰기가능

읽고 쓰기 가능

읽고 쓰기 가능

읽고 쓰기 가능

root 권한으로 작업 가능

기타

공유 가능

공유 불가

공유 불가

공유 불가


/data/user1 디렉토리는 아무 옵션을 주지 않고 공유를 한 것이다. 이러한 경우는 기본적으로   rw옵션이 제공되는 것이며 어느 클라이언트라도 공유하는 것이 가능하므로 이러한 설정은 가능하면 안 하는 것이 좋다. /data/user2 디렉토리는 sola2에게는 읽기만 가능하게 설정을 하였고 sola3에게는 읽고 쓰기가 가능하게 설정한 것이다. 호스트를 구체적으로 지정하였으므로 sola2와 sola3 호스트를 제외하고는 NFS 서버의 공유 자원을 사용할 수 없다. /data/user3와 /data/user4는 NFS 클라이언트에서 root권한(UID=0)으로 작업하는 것이 가능하도록 한 것이며 다만, /data/user3는 sola2만 root권한 작업이 가능하고 /data/user4는 sola2와 sola3 둘 다 root권한으로 작업하는 것이 가능하다. 마찬가지로 호스트를 구체적으로 지정하였으므로 다른 클라이언트에서는 마운트해서 사용하는 것이 불가능하다.

 이렇게 설정을 하고 NFS 클라이언트에서 마운트해서 쓰려고 하면 가능할까? 정답은 불가능하다이다. 그 이유는 처음 디렉토리를 생성하면 디렉토리 퍼미션이 755로 되어있는데 이 퍼미션으로는 루트를 제외하고는 쓰기가 불가능하다. 즉 sola2는 /data/user3와 /data/user4에서 루트로만 쓰기가 가능하며 다른 계정으로는 쓰기가 불가능하고, /data/user1과 /data/user2에서는 클라이언트에서 루트로 사용을 하려고 해도 uid가 nobody로 되기 때문에 쓰기가 불가능하다. 이 부분은 각자 실제로 그렇게 되는지 한번 테스트 해보도록 하고 이를 정상적으로 사용하기 위해서는 디렉토리 퍼미션을 777로 바꾸어주기 바란다.

sola1# cd /data

sola1# chmod 777 *

sola1# ls al

drwxr-xr-x  6 root    other       512 Nov 22 11:55 ./

drwxr-xr-x 28 root    root       1024 Nov 22 11:54 ../

drwxrwxrwx  2 root    other       512 Nov 23 19:25 user1/

drwxrwxrwx  2 root    other       512 Nov 22 11:55 user2/

drwxrwxrwx  2 root    other       512 Nov 23 19:51 user3/

drwxrwxrwx  2 root    other       512 Nov 22 16:11 user4/


(2)  NFS 클라이언트

NFS 클라이언트에서 해주어야 할 일은 각 디렉토리(마운트 포인트)를 만들고 NFS 서버에서 공유된 자원을 마운트 해주어야 하는 일이다. 여기서는 수동 마운트와 자동 마운트에 대해서 설명할 것이다. sola2는 수동 마운트를 사용하였으며, sola3는 자동마운트를 사용하였다. 둘 다 어느 것을 사용하여도 상관은 없다.

(가)  수동 마운트

수동 마운트는 mount라는 명령어를 사용하여 단순히 서버측 호스트와 공유디렉토리를 명시하여 주고, 클라이언트 쪽에 마운트 포인트만 지정하여 주면 된다.

sola2# cd / ; mkdir data

sola2# mkdir user1 user2 user3 user4

sola2# /etc/init.d/nfs.client start

sola2# mount F nfs sola1:/data/user1 /data/user1

sola2# mount F nfs sola1:/data/user2 /data/user2

sola2# mount F nfs sola1:/data/user3 /data/user3

sola2# mount F nfs sola1:/data/user4 /data/user4

sola2# df k

Filesystem           kbytes   used  avail capacity Mounted on

/dev/dsk/c0t1d0s0   4030518  58611 3931602    2%   /

/dev/dsk/c0t1d0s3   4030518 686733 3303480   18%   /usr

/proc                     0      0      0    0%   /proc

fd                        0      0      0    0%   /dev/fd

mnttab                    0      0      0    0%   /etc/mnttab

swap                 553856      0 553856    0%    /var/run

swap                 554184    328 553856    1%   /tmp

/dev/dsk/c0t1d0s6    983349 217537 706812   24%   /opt

/dev/dsk/c0t0d0s7   8286045 305049 7898136    4%   /export/home

/dev/dsk/c0t1d0s4   4030518      1 3990212    1%   /usr/local

sola1:/data/user1    3007086  64451 2882494    3%   /data/user1

sola1:/data/user2   3007086  64451 2882494    3%   /data/user2

sola1:/data/user3    3007086  64451 2882494    3%   /data/user3

sola1:/data/user4   3007086  64451 2882494     3%   /data/user4


(나)  자동 마운트

자동 마운트는 /etc/vfstab이라는 파일에 직접 마운트할 내용을 써주어서   /etc/init.d/nfs.client start라는 명령어를 통해 마운트가 실행이 된다. 또한 재부팅이 된다 하여도 부팅시 /etc/vfstab라는 파일을 참조하여 각 디렉토리를 마운트하게 된다. /etc/vfstab에는 기존의 파일시스템에 대한 마운트 내용이 들어있으므로 가능하면 손대지 말고 마지막 줄에 추가 내용만 써주도록 하면 된다.

sola3# cd / ; mkdir data

sola3# mkdir user1 user2 user3 user4

Sola3# vi /etc/vfstab

#device       device        mount       FS     fsck   mount  mount

#to mount     to fsck       point      type   pass   at boot options

sola1:/data/user1      -    /data/user1      nfs    -     yes    -

sola1:/data/user2      -    /data/user2      nfs    -     yes    -

sola1:/data/user3      -    /data/user3      nfs    -     yes    -

sola1:/data/user4      -    /data/user4      nfs    -     yes    -

sola3# /etc/init.d/nfs.client start

sola3# df k

Filesystem           kbytes   used  avail capacity Mounted on

/dev/dsk/c0d0s0     3007086  46789 2900156    2%   /

/dev/dsk/c0d0s3      3007086 571629 2375316   20%   /usr

/dev/dsk/c0d0p0:boot  10484   1623   8861   16%   /boot

/proc                     0      0      0    0%   /proc

fd                        0      0      0    0%   /dev/fd

mnttab                    0      0      0    0%   /etc/mnttab

swap                 916616      4 916612    1%   /var/run

swap                 916620      8 916612    1%   /tmp

/dev/dsk/c0d0s5     3007086 1728631 1218314   59%   /opt

/dev/dsk/c0d0s6     3007086   8567 2938378    1%   /backup

/dev/dsk/c0d0s7     4043118  62343 3940344    2%   /export/home

/dev/dsk/c0d0s4     3007086  23034 2923911    1%   /usr/local

sola1:/data/user1    3007086  64451 2882494    3%   /data/user1

sola1:/data/user2   3007086  64451 2882494    3%   /data/user2

sola1:/data/user3    3007086  64451 2882494    3%   /data/user3

sola1:/data/user4   3007086  64451 2882494    3%   /data/user4




6.  패키지 관리

가.  패키지 개요

(1)  패키지에 대한 소개

각 OS마다 설치를 쉽게 해주는 툴들이 있다. 리눅스 레드헷에서는 rpm이라는 툴을 사용하며 MS 윈도우에서는 install.exe혹은 setup.exe를 통하여 설치를 쉽게 해주는 것처럼 솔라리스에서도 이와 비슷한 툴을 제공한다. 솔라리스에서는 패키지라고 하여 pkgadd나 pkgrm가 같은 명령어를 사용하여 패키지를 설치하거나 지우곤 한다. 이러한 OS에서 응용프로그램들을 패키지 단위로 만드는 가장 큰 목적은 설치와 제거를 쉽게 하기 위해서이다. 응용프로그램의 소스를 컴파일하여 설치를 할 경우 설치된 곳에 다른 응용프로그램도 같이 들어있을 가능성이 크다. 나중에 이러한 프로그램을 다시 삭제할 필요가 생겼을 때 해당 응용프로그램만 지운다는 것은 거의 불가능에 가깝다고 볼 수 있다.

하지만 이러한 패키지를 이용한 설치가 항상 좋은 점만 있는 것은 아니다. 우선 패키지의 배포수가 미비하다는 점이다. 자신이 필요로 하는 프로그램이 항상 패키지로 제공이 된다고 보장할 수는 없는 노릇이기 때문이다. 솔라리스를 사용하는 사람이라면 자주 애용하는 사이트가 있다. 패키지와 그에 해당하는 소스를 제공해주는 사이트인데 주소는 http://www.sunfreeware.com이다. 이곳에 들어가 보면 알겠지만 리눅스에서 제공되고 있는 패키지(rpm)에 비하면 그 양이 매우 미비하다. 하지만 자주 사용되는 웬만한 패키지는 갖추고 있으므로 잘 이용하면 유용한 사이트다.

두 번째로 패키지가 갖고 있는 한계점이라고 할 수 있는 것이 있다. 패키지는 패키지 제작자가 자신의 환경에 맞게 제작을 한 관계로 사용자가 마음대로 그 환경을 바꿀 수가 없다. 예를 들면 설치경로를 마음대로 지정해줄 수가 없다는 점이다. 솔라리스 Companion CD에 있는 패키지를 설치해본 사람은 알겠지만 여기에서 제공되는 패키지는 모두 /opt/sfw 밑에 설치가 되며 위에서 언급한 사이트에서 제공되는 패키지들은 /usr/local 밑에 설치가 된다. 이렇듯 약간 일관성이 없는 면이 있다. 만일 사용자가 특정 옵션이나 혹은 특정 설치 경로를 원한다면 소스를 직접 컴파일 해야 한다. 만일 이러한 프로그램이 자주 사용되거나 여러 컴퓨터에 설치하고자 한다면 나중에 설명될 패키지 제작을 익혀서 본인만의 패키지를 만들어보는 것도 좋은 방법이 될 것이다.

(2)  패키지 구성요소

패키지를 설치하는 방법을 설명하기에 앞서 우선 패키지가 어떻게 구성되는지를 알아볼 필요가 있다. 본 절에서는 이러한 패키지 구성요소에 대해서 설명한다. 패키지는 크게 필수적인 구성 요소와 선택적인 구성 요소로 나누어진다. 필수적인 구성 요소에는 패키지의 주된 내용물인 패키지 오브젝트, 패키지의 정보를 가지고 있는 파일(pkginfo), 패키지 오브젝트의 파일 정보 및 설치 위치에 대한 정보를 가지고 있는 파일(prototype)이 있다. 선택적인 구성요소에는 compver, depend, space, copyright등과 같은 정보제공 파일과 설치 시 수행되는 스크립트파일인 request, checkinstall, Procedure, Class Action등이 있다.

(가)  필수적인 패키지 구성요소

패키지 오브젝트

패키지 오브젝트란 실행파일을 포함하여 소스를 컴파일할 때 생성되는 모든 파일과 디렉토리를 지칭하는 것이다. 따라서 패키지를 구성하는 요소로서 가장 중요하며 설치가 될 실제 파일들이다. 패키지 오브젝트에 있는 주된 내용물은 실행 파일, 데이터 파일, 디렉토리, named pipe, 링크, 디바이스 파일 등 여러 파일들이 있다.

 pkginfo 파일

패키지에 대한 전반적인 어떤 파라미터 값들을 정의한 파일로 여기에 사용되는 파라미터는 PKG, ARCH, NAME, VERSION, DESC, VENDOR, BASEDIR, CATEGORY, CLASSES 등이 있다.



 PKG : 총 9자 이하로 패키지의 이름을 정의해준다.

 ARCH : 아키텍쳐를 정의해주는 곳으로 i386혹은 sparc을 써준다.

 NAME : 패키지의 이름을 써준다. 축약된 패키지 설명을 써도 된다.

 VERSION : 패키지의 버전

 DESC : 패키지에 대한 간략한 설명을 써준다.

 VENDOR : 소스를 제공하는 곳이나 제공자의 이름을 써준다. url을 써주는 경우도 많다.

 BASEDIR : 설치될 경로의 기본 디렉토리를 지정해 준다.

 CATEGORY : 해당 패키지의 category를 적어주면 된다. 일반적으로 system과 application으로 나뉘어 진다.

 CLASSES : 모든 패키지 마다 CLASSES라는 것을 명명하여 pkgadd나 pkgrm시 어떠한 특정 action script를 수행할 수 있도록 한다. 일반적으로 none을 사용한다.



이밖에도 사용자가 임의적으로 pkginfo파일에 어떤 내용들을 정의해줘도 상관은 없다. 실제 패키지에 사용된 pkginfo파일을 다음 예에 나타내었다. 밑의 예제는 EB2Igftp라는 패키지의 pkginfo를 나타낸다.

# cat pkginfo | more

CLASSES=none

BASEDIR=/

TZ=ROK

PATH=/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin

OAMBASE=/usr/sadm/sysadm

PKG=SUNWdoc

NAME=Documentation Tools

ARCH=sparc

VERSION=11.7.0,REV=1998.09.01.04.16

SUNW_PRODNAME=SunOS

SUNW_PRODVERS=5.7/Generic

SUNW_PKGTYPE=usr

MAXINST=1000

CATEGORY=system   


 prototype 파일

패키지가 구성하고 있는 파일들에 대한 리스트로 각각의 위치와 속성 및 타입을 기술하고 있다. prototype파일에 들어가는 내용의 양식은 다음과 같다.

part ftype class path major minor owner group



part : 패키지 오브젝트들을 그룹화를 해주는 번호를 입력하는 것으로 기본 값은 1이며 옵션이다.

ftype : 이 필드에는 한 문자만 입력하는 것으로 패키지 오브젝트의 타입이 입력된다. 종류는 아래 표를 참조하길 바란다.

class : 패키지 오브젝트가 지니는 class를 입력해준다. 일반적으로 none이 입력된다.

path : 절대 경로 혹은 상대 경로가 입력된다.

major : block 혹은 character special device에 대한 major device number가 입력된다.

minor : block 혹은 character special device에 대한 minor device number가 입력된다.

mode : 오브젝트 파일의 mode, 예를 들면 0755와 같이 입력된다.

owner : 패키지 오브젝트의 소유자, 예를 들면 root와 같이 입력된다.

group : 패키지 오브젝트의 그룹, 예를 들면 bin과 같이 입력된다.

ftype


f

e

v

d

x

l

p

c

b

i

s

표준 실행파일 혹은 데이터 파일

패키지의 설치 혹은 제거시 편집되는 파일

log파일과 같이 변화가 있는 휘발성 파일

디렉토리

해당 패키지에서만 접근 가능하도록 하는 디렉토리

링크 파일

named pipe

character special device

block special device

information file 혹은 installation script

심볼릭 링크


그럼 실제로 prototype 파일이 어떻게 생겼는지 아래에 있는 예제 표를 보면서 이해하길 바란다. 아래 예는 /var/sadm/pkg/SUNWxilrl/install 패키지에 대한 prototype파일을 나타낸다. 실제 내용은 여기서 나타낸 것보다 더 길다.

# cat prototype | more

#

#  File:       prototype.rl

#  Project:    XIL

#  Revision:   1.7

#  Last Mod:   16:07:07, 07/08/98

! default 0775 root bin

#

d none $top

d none $top/lib

d none $top/lib/xil

d none $top/lib/xil/utils

d none $top/lib/xil/locale

e OWconfig $xil_dir/config=config

d none $install_dir

f none $install_dir/libxil.so.1=lib/libxil.so.1 0775 bin bin

s none $install_dir/libxil.so=libxil.so.1 0777 root root

f none $xil_utils/xiliUtils.so.2=utils/xiliUtils.so.2 0775 bin bin


(나)  선택적인 패키지 구성요소

패키지 구성요소 중에서 패키지를 구성하는데 꼭 필요한 요소는 아니지만 어떠한 정보나 설치를 도와주기 위한 것들이 있는데 이러한 것들에는 설치하려는 패키지와의 의존 관계에 대한 정보를 지니는 depend 파일, 버전에 대한 정보를 지니는 compver 파일, 소스 파일들에 대한 copyright정보를 지니는 copyright 파일 등이 있다. 이러한 정보를 제공해 주는 파일 이외에 설치 스크립트를 제공해줌으로써 설치할 때 설치자로부터의 어떠한 입력을 필요로 하거나 할 때에 사용되는 패키지 설치 스크립트라는 것이 있다. 이들 정보 파일이나 설치 스크립트들은 패키지 설치에 어떠한 정보나 옵션을 제공해 주며 패키지 구성에 반듯이 필요한 것은 아니다.

 depend 파일

depend파일은 패키지의 의존성을 나타내주는 파일로 여기에 입력된 정보는 단순히 패키지 설치 시에 정보를 출력시켜줄 뿐이다. depend파일에서 사용되는 형식은 다음과 같다.



type pkg-inst pkg-name



type : 디펜던시 타입을 정의해준다. 여기에는 P(prerequisite package), I(incompatible package) 및 R(reverse dependency)중 하나가 지정 되야 한다. 일반적으로 P가 보통 사용된다.

pkg-inst : 패키지의 인스턴스명을 적어주는 곳으로 EB2Igftp와 같은 이름이 들어간다.

pkg-name : 패키지의 이름을 적어주는 곳으로 pkginfo파일의 NAME의 값을 써준다.



다음 예는 SUNWxilrl의 depend파일을 나타낸다. depend파일은 다음의 예와 같이 쓸 수 있다. 이렇게 정의를 하면 패키지 설치지 경고 메시지가 나타나지만 패키지 설치하는 사람은 이 경고 메시지를 무시하고 설치할 수가 있다.

# cat depend

P SUNWcar       Core Architecture, (Root)

P SUNWkvm       Core Architecture, (Kvm)

P SUNWcsr       Core Sparc, (Root)

P SUNWcsu       Core Sparc, (Usr)

P SUNWcsd       Core Sparc Devices

P SUNWesu       Extended System Utilities


 compver 파일

compver파일은 현재 패키지의 이전 버전을 정의해주는 파일이다. 버전의 정의는 이미 설치된 패키지의 pkginfo파일에서 VERSION정보를 참조하여 같은 형식으로 써준다.



 다음 예는 임의로 만든 compver파일을 나타낸다.

# cat compver

3.0

2.0

1.5

1.0


 위의 수치들은 모두 해당 패키지 pkginfo파일의 VERSION에서 정의된 값을 뜻한다.

 space 파일

prototype 파일에 정의된 오브젝트를 위한 공간 이외에 목표 시스템에 필요한 디스크 공간을 정의해 주는 파일이다. depend파일에서 사용되는 형식은 다음과 같다.



pathname blocks inodes



pathname : 디렉토리 경로명을 정의해준다.

blocks : 필요한 디스크 공간을 512바이트의 배수로 정의한다.

inodes : 필요한 inodes의 수를 정의한다.

# cat space

/opt/SUNWits/Graphics-sw/xil/lib 2 1


위의 예는 목표 시스템의 /opt/SUNWits/Graphics-sw/xil/lib이라는 경로에 한 개의 inode와 2*512바이트의 block수를 정의한 것이다.

 copyright 파일

copyright 파일은 이름으로도 쉽게 알 수 있듯이 해당 프로그램의 copyright를 정의해 주는 파일이다.

나.  패키지 사용 방법

(1)  패키지 설치

(가)  pkgadd

맨 처음 인터넷을 통해 패키지를 다운로드받으면 아마도 filename-version-sol8-arch-local. gz이라는 파일형식을 갖고 있을 것이다. gz는 알다시피 gzip으로 압축된 것을 의미하며 local은 파일이 패키지 형태를 지니고 있다는 의미이다. arch는 머신의 종류를 의미하며, 보통 intel과 sparc 두 가지가 있다.

다운로드받은 패키지를 설치하려면 우선 gzip을 이용하여 압축을 풀고 pkgadd 명령어를 사용해서 설치한다. 유일하게 gzip으로 압축되지 않은 패키지가 하나 있다. 그것은 gzip패키지이다. 그 이유는 gzip패키지를 압축해놓으면 어떻게 gzip을 풀 수 있겠는가.

pkgadd에 대한 여러 옵션 중에서 가장 기본적이며 많이 쓰이는 것은 ??-d??옵션이다. 이를 사용하지 않으면 패키지를 설치하지 못한다. pkgadd에 대한 설치 옵션을 살펴보면 다음과 같다.

pkgadd -d device-name [-R root_path] [pkginst…]

-d device-name : 패키지의 위치를 기술한다. device-name은 tape, floppy disk, 삭제 가능한 디스크의 절대 경로 또는 identifier를 기술한다. 만일 패키지의 위치를 기술하지 않을 경우 default spool directory(/var/spool/pkg)에서 찾는다.

-R root_path : root 경로로 사용하기 위한 디렉토리의 full path name을 정의한다.

-s spool : 패키지를 설치하는 대신 패키지 인스턴스를 spool 디렉토리에 설치한다.

pkginst : 설치할 패키지 인스턴스나 인스턴스의 리스트를 써준다.



그럼 실제 예를 통해서 패키지를 설치해보도록 하자. 현재 우리 시스템엔 없는 시스템 상태를 모니터할 수 있는 프로그램인 top-3.5beta12-sol7-sparc3264-local.gz이라는 패키지 파일을 다운받자(http://www.sunfreeware.com). 이 파일을 자신의 디렉토리인 /data/users/jo에 ftp를 이용하여 전송한다. 자 이제 아래와 같이 압축을 풀고 패키지를 설치해 보도록 하자.

www3:/data/users/jo > gzip -d top-3.5beta12-sol7-sparc3264-local.gz

www3:/data/users/jo > pkgadd -d top-3*

pkgadd: ERROR: pkgadd(을)를 제대로 실행하려면 "루트"여야 합니다.

www3:/data/users/jo > su -

Password:

Sun Microsystems Inc.   SunOS 5.7       Generic October 1998

You have new mail.

# /usr/sbin/pkgadd -d /data/users/jo/pkgadd -d top-3*

The following packages are available:

  1  SMCtop     top

                (sparc) 3.5beta12

Select package(s) you wish to process (or 'all' to process

all packages). (default: all) [?,??,q]:


copyright와 설치정보가 화면에 나타나면서 설치되는 상황을 볼 수 있을 것이다. 설치 경로는 패키지를 제작한 사람이 어떻게 패키지를 만들었느냐에 따라 다르지만 보통 /usr/local밑에 설치가 되는 것이 기본이다. 설치 중 무슨 메시지가 나타나면 잘 읽어보고 yes나 no혹은 quit를 선택하면 된다. 일반적으로는 그냥 엔터를 치면 ok다.

위의 패키지를 설치를 했는데 ??top??라는 명령어가 실행이 안 된다면 무슨 이유일까? 그건 자신의 환경설정 파일에 해당 경로명을 정의해주지 않았기 때문이므로 설정을 수행해주면 잘 실행이 될 것이다. 설정을 안 해주었을 경우 /usr/local/bin/top이라고 하면 된다.

패키지 설치시 한가지 더 주의할 점은 비록 설치되는 패키지가 사용자의 현재 디렉토리에서 작업을 할지라도 패키지 설치와 제거는 root만이 할 수 있는 명령어이다. 따라서 jo라는 계정을 가진 사용자가 pkgadd명령어를 사용하여 패키지를 설치하려고 하면 위에서와 같은 에러메시지가 나타날 것이다.

(2)  패키지 정보 보기

(가)  pkgchk

'pkgchk'라는 명령어는 설치된 파일의 정확성을 검사한다. 검사 대상으로는 file permission, ownership, block 또는 character의 major/minor, file size, checksum, modification date등이 있다. 명령어 사용시 ??-l??옵션을 사용하면 설치된 패키지의 모든 파일에 대한 정보를 화면에 출력한다.



pkgchk [-l | -v] [-R root_path] [pkginst…]

 -l : 패키지가 설치된 파일들에 대한 자세한 정보를 제공한다.

 -v : 검사한 파일의 리스트를 제공한다.

 -R root_path : root 경로로 사용하기 위한 디렉토리의 full path name을 정의해준다.

Pkginst : 패키지 인스턴스 이름이나 인스턴스의 리스트로 만일 생략할 경우 모든 가능한 패키지를 체크한다.

여기서 ??-v??옵션과 ??-l??옵션은 같이 사용할 수 없다. 두 개의 옵션을 사용하여 나온 결과를 보면 다음과 같다.

# pkgchk -v SUNWdoc

................

................

................

/usr/share/lib/tmac/tmac.vgrind

/usr/share/lib/tmac/tz.map

/usr/share/lib/tmac/v

/usr/share/lib/tmac/vgrind

/usr/share/man


실제로는 위 화면보다 훨씬 많다.

# pkgchk -l SUNWdoc

................

................

................

Pathname: /usr/share/man

Type: directory

Expected mode: 0755

Expected owner: bin

Expected group: bin

Referenced by the following packages:

        SUNWwsr        SUNWuium       SUNWctpls      SUNWdoc        SUNWswmt

        SUNWkleu

Current status: installed


(나)  pkginfo

‘pkginfo’는 설치된 패키지의 데이터 베이스로부터 정보를 화면에 출력시키는 명령어이다. 앞에서 설명된 ??pkginfo??파일은 패키지를 구성하는데 사용되는 정보 파일이며 여기서 설명되는 ??pkginfo??는 명령어이다. ??pkginfo??를 옵션없이 사용할 경우 시스템에 설치된 모든 패키지 인스턴스와 카테고리 등의 정보를 출력한다.

pkginfo [-x | -l] [pkginst…]

 -x : extracted format의 패키지 정보를 출력한다.

 -ㅣ : long format의 패키지 정보를 출력한다.

# pkginfo

system      SUNWxwfs       Font server

system      SUNWxwice      ICE components

system      SUNWxwicx      X Window System ICE 64-bit library

system      SUNWxwmod      OpenWindows kernel modules

system      SUNWxwoft      X Window System optional fonts

system      SUNWxwopt      nonessential MIT core clients and server extensions

system      SUNWxwplt      X Window System platform software

system      SUNWxwplx      X Window System 64-bit library software

system      SUNWxwpsr      Sun4u-platform specific X server auxiliary filter mod

ules

system      SUNWxwrtl      X Window System & Graphics Runtime Library Links in /

usr/lib

system      SUNWxwrtx      X Window System 64-bit Runtime Compatibility Package

system      SUNWxwslx      X Window System 64-bit lint libraries

system      TSIpgx         PGX32 (Raptor GFX) System Software/Device Driver


www3:/data/users/jo > pkginfo -l SUNWdoc

   PKGINST:  SUNWdoc

      NAME:  Documentation Tools

  CATEGORY:  system

      ARCH:  sparc

   VERSION:  11.7.0,REV=1998.09.01.04.16

   BASEDIR:  /

    VENDOR:  Sun Microsystems, Inc.

      DESC:  utilities and fonts for development, display, and production of doc

umentation such as manual pages (nroff/troff)

    PSTAMP:  on99819980901043920

  INSTDATE:  11월 13 2001 11:25

   HOTLINE:  Please contact your local service provider

    STATUS:  설치 완료

     FILES:    388 설치된 경로 이름

                 7 공유 경로 이름

                 6 연결된 파일

                25 디렉토리

                32 실행 가능

              6381 블록이 사용됨 (추정치)


www3:/data/users/jo > pkginfo -x SUNWdoc

SUNWdoc         Documentation Tools   (sparc) 11.7.0,REV=1998.09.01.04.16


(다)  pkgparam

??pkgparam??이라는 명령어는 명령어 줄에 기술한 파라미터의 값을 출력해주며 출력되는 값은 패키지 인스턴스에 있는 ??pkginfo??라는 파일의 내용에 있는 값이다. 명령어 줄에 파라미터 값을 기술하지 않을 경우에는 패키지에 대한 모든 파라미터 값을 출력한다.

pkgparam [-v] pkginst [param…]

 -v : 파라미터의 이름과 값을 출력한다. 이 옵션을 사용하지 않으면 값만 출력된다.

 param : 값을 출력할 하나 이상의 파라미터를 기술한다.

www3:/data/users/jo > pkgparam -v SUNWdoc VERSION

VERSION='11.7.0,REV=1998.09.01.04.16'


(3)  패키지 삭제

(가)  pkgrm

‘pkgrm’은 설치된 패키지를 지우는 명령어이다. 이 명령어는 제거할 패키지가 다른 패키지와 의존 관계를 가지고 있는지 의존성 검사를 하고 의존 관계를 가지고 있을 경우에는 admin파일에 정의된 작업을 수행한다. ‘pkgrm’ 명령을 쓸 때 대상으로는 항상 package instance name이 와야 한다. 즉 EB2Igftp와 같은 것을 써줘야 한다. 일반적으로 ??pkginfo?? 명령어를 사용해서 지우고자 하는 패키지의 인스턴스명을 알아낸 다음에 지운다.

pkgrm [-d device-name] [-R root_path] [pkginst…]

pkgrm -s spool [-d device-name] [pkginst…]

 -d device-name : 제거할 패키지의 위치를 기술한다.

 -R root_path : root 경로를 사용하기 위한 디렉토리의 full path name을 정의한다.

 -s spool : spool된 패키지의 제거를 위한 디렉토리를 기술한다.


출처 : http://unix.co.kr/bbs/board.php?bo_table=02_021&wr_id=4

Posted by 1010
60.Unix2008. 12. 11. 10:42
반응형


II.  솔라리스 설치

1.  설치 전 준비사항

솔라리스를 설치하기에 앞서 몇 가지 알아두어야 할 사항들을 먼저 체크함으로써 설치 시 혼란을 줄일 수 있다.

가.  하드웨어 호환 목록 살펴보기

스팍 머신에 솔라리스를 설치할 경우 별 문제가 없으나 인텔용 설치에 있어서 솔라리스 7의 설치가 가능한 시스템인지 살펴볼 필요성이 있다. Sun 사이트에 가면 Hardware Compatibility List(HCL)라는 호환 하드웨어 목록을 제시해 준다. PC에는 여러 가지 하드웨어가 쓰이는데 혹시라도 지원이 안 되는 하드웨어가 있을 수 있으므로 꼭 점검해보자. 만약 설치가 되더라도 원활한 사용이 불가능할지도 모른다. 사양이 좋아서 문제 될 것은 없지만 솔라리스의 경우 리눅스처럼 다양한 그리고 최신의 하드웨어에 대한 지원은 없는 편이다. 이점을 고려하여 약간 구형 시스템으로 구성하는 것도 현명할 것이다.



HCL은 미디어 킷 구입단계 중 Step One: … 에 링크되어 있다. 직접 HCL 페이지로 가려면 아래 링크를 눌러보자. 또한 http://docs.sun.com에 가면 한글화된 하드웨어 호환 목록을 PDF 형식으로 제공받을 수 있다.



일반적인 요구사항

CPU

Intel 및 호환 : Pentium 이상(Pentium Ⅲ Zeon까지)

 AMD군 : K5 이상(Athlon K7까지)

 Cyrix군 : 5x86-100GP 이상(MII 까지)

메모리

최소 64MB, 최대 32GB

Bus

ISA, PCI, VLB

디스크 인터페이스

IDE, E-IDE, SCSI

배포 매체

CD-ROM, 싱글 부트 디스켓

솔라리스 설치에 필요한 장치

로컬 SCSI, ATAPI/IDE CD-ROM ,DVD-ROM drive

네트워크 상에서 사용할 수 있는 SCSI,

ATAPI/IDE CD-ROM, DVD-ROM drive, 하드디스크


그밖에 싱글 프로세서 시스템, 멀티프로세서 시스템, SCSI 어댑터, SCSI 컨트롤러, CD-ROM/DVD-ROM, Jaz/Zip 드라이브, 오디오 디바이스, 멀티포트 시리얼 어댑터, 네트워크 어댑터, USB, PCMCIA, 포인팅 디바이스, 테이프 드라이브, 메인보드, 비디오 카드, 네트워크 디바이스 등 다양한 하드웨어 호환목록을 살펴볼 수 있다.

MEMO:


나.  파티션을 어떻게 나눌 것인가

요즘은 대용량 하드디스크의 가격이 비교적 싸졌기 때문에 공간부족으로 인한 문제는 거의 없으리라고 본다. 하지만 구슬이 서말이라도 꿰어야 보배! 어떻게 파티션을 나누느냐는 매우 중요할 수 있다.



소프트웨어 그룹에 따른 권장 디스크 공간

솔라리스 7은 소프트웨어 그룹에 따른 권장 디스크 공간을 다음과 같이 제시하고 있다.

소프트웨어 그룹

권장 디스크 공간

전체 배포와 OEM 지원

2.4GB

전체 배포

2.3GB

개발자 시스템 지원

1.9GB

최종 사용자 시스템 지원

1.6GB




일반적인 파티션

시스템의 사용 용도나 각자의 취향에 따라 다르겠지만 일반적인 파티션의 용도 및 크기를 살펴보자.

파티션

크기

용도

/

30%

커널이 적재되는 파티션으로 없어서는 안된다. 너무 적은 용량을 할당하지 않도록 한다.

/export/home

30%

사용자 홈 디렉토리, /home 파티션은 따로 사용용도가 있으므로 /home을 사용자 홈 디렉토리로 설정하지 말기를 권장한다. 공간은 넉넉할수록 좋다.

/opt

/ 파티션에 포함

Sun에서 제공되는 기타 응용프로그램들이 설치되는 디폴트 파티션이다.

/usr

30%

유틸리티 및 기본 응용프로그램이 설치되는 곳. 후에 응용프로그램 추가 설치 시 용량부족이 생기지 않도록 넉넉히 할당한다.

/var

/ 파티션에 포함

로그, 메일, 프린트 작업 등 휘발성 파일들이 적재되는 곳. 메일 서버나 프린트 서버를 운영한다면 1GB 이상의 공간을 할당해 주는 것이 좋다.


나머지 10%의 공간은 스왑 영역으로 할당해 준다. 메모리의 두 배 가량으로 할당한다. 비율은 대략적인 것으로 사용자가 유연하게 조정할 수 있다.

다.  네트워크 정보 수집

시스템이 네트워크 상에서 정확한 작동을 하게 하기 위해서는 LAN이나 인터넷 환경 상에 있어야 한다. 아무리 네트워크가 연결되어 있다 하더라도 설정을 제대로 해주지 않는다면 아무 소용이 없을 것이다. 시스템에 솔라리스 7을 설치하기 전에 네트워크 정보를 수집해 놓는 것이 좋다. 각 해당사항을 모를 경우 시스템 관리자에게 문의해서 알아두자.

MEMO:


Hostname

솔라리스가 설치될 네트워크에 연결된 컴퓨터의 이름

ex)www3

IP Address

시스템의 IP 주소

ex)211.248.154.8

Domain Name

자신의 속한 그룹의 도메인 이름

ex)kwedu.net

Subnet Mask

솔라리스가 설치될 시스템이 서브넷의 일부라면 이 또한 알아두자.

ex)255.255.255.0


만약 DHCP를 사용한다면 관리자에게 문의해서 해당 사항들을 알아두도록 하자.

참고

DHCP란?

Dynamic Host Configuration Protocol의 약자로 DHCP서버기능을 수행하는 서버 컴퓨터에 연결되어 있는 모든 클라이언트 컴퓨터의 IP설정을 자동화 시켜준다.

서버컴퓨터에서 전체의 IP를 관리하며 클라이언트 컴퓨터가 부팅 할 때마다 서버컴퓨터에서 사용하지 않는 IP를 클라이언트 컴퓨터에 할당하여 준다. DHCP 기능을 이용하면 한정적인 IP를 휴율적으로 사용할 수 있다. 자신의 TCP/IP의 설정이 "자동으로 IP주소 받기"로 되어 있다면 DHCP기능을 이용하고 있는 상태이다. (케이블모뎀, ADSL)


2.  Solaris 7 설치

Solaris 시스템의 설치는 학교 SUN장비(보통 Enterprise 250)를 기준으로 설명한다. 여기서 설명하는 방법은 시스템을 처음부터 새로 설치하는 것을 기준으로 설명한다. 따라서 기존에 서버에 데이터가 있을 경우에는 반드시 테이프를 이용하여 백업을 한 후 이 작업을 해야한다.

가.  시스템 작동하기

시스템의 전원을 켜면 아래와 같은 화면을 볼 수 있다.

그림 2-1) 시스템 초기 화면

이 화면은 시스템의 전원만 작동시키면 언제든지 볼 수 있는 화면이다.

나.  CD-ROM으로 부팅하기

시스템에 전원을 켠 후, Solaris 7 Software CD를 시디롬 드라이브에 넣는다.

그림 2-1)과 같은 상태에서 STOP키와 A키를 동시에 누른다.

MEMO:


그림 2-2) STOP+A키를 누른 상태

화면에 ok 표시가 되면서 명령어 입력 상태로 변한다.

그림 2-3) cd rom 부팅하기

그림 2-3)과 같이 boot cdrom 이라고 타이핑 한 후 엔터키를 누른다.

그럼 다음 그림과 같이 cdrom으로 부팅과정을 거친 후 자동으로 UNIX 설치 과정으로 넘어가게 된다.

그림 2-4) cdrom 부팅 진행과정

다.  Solaris 설치하기

아래 그림은 시스템을 설치하기 위하여 cdrom으로 부팅이 된 후, 제일 처음 만나는 화면이다. 이 화면에서는 언어와 로켈을 선택한다.

영문으로 나타난 메시지를 한글로 번역해 보면 다음과 같다.

이 화면에서 선택한 로켈은 시스템 재부팅 후 데스크탑에서 기본으로 표시됩니다. 로켈을 선택하면 특정 로켈 또는 지역(예를 들어 시간, 날짜, 철자, 화폐 가치)에 대해 온라인 정보가 표시되는 방법을 결정할 수 있습니다.

주:ASCII 전용 옵션은 이전 릴리스에서 사용가능했던 기본 128자를 제공합니다. 로켈 특정 영문자(강세 표시나 우물라우트 문자 같은)가 필요한 국제 통신을 보내거나 받지 않아도 되는 경우, ASCII전용 세트로 충분합니다. 그렇지 않으면 256자를 포함하는 ISO 로켈을 선택할 수 잇습니다. ISO 로켈을 선택하면 사소한 성능 저하(대개 5%미만)를 일으킬 수 있습니다.

그림 2-5) Select Language and Locale

그림 2-5)의 화면에서는 Language는 두 번째 있는 Korean EUC locale (ko)를 선택합니다.

예전에 아래 것을 선택했을 경우가 있었는데, 이 때는 시스템을 완전히 설치한 후 재 부팅했을 경우 한글이 깨지는 경우가 발생했다.

그림 2-6) Solaris 설치 프로그램

이제 본격적으로 Solaris 프로그램을 설치합니다. 그림 2-6에 이어 컴퓨터 식별화면이 나타난 다음 계속을 선택하면 그림 2-7과 같이 컴퓨터 이름을 입력하는 화면이 나온다.

MEMO:


그림 2-7) 호스트 이름 입력

호스트 이름을 입력하게 된다. 이 때 호스트 이름은 사용하는 도메인에서 고유해야 한다. 즉, 학교를 기준으로 같은 이름의 컴퓨터가 없어야 한다는 것이다. 윈도98이나 NT, 기타 다른 Linux 시스템에서 사용하는 이름이어서는 안 된다. 윈도98의 경우 네트워크 환경 등록정보에서 컴퓨터 확인이라는 탭을 확인해 보면 거기에 컴퓨터 이름이 있다. 바로 이것과 다른 이름이어야 한다. 그렇지 않을 경우, 설치 완료 후 네트워크 상에서 문제가 야기된다.

중복되지 않는 이름이라면 어떠한 임의의 이름도 관계없다. 여기서는 WWW3로 표현을 했다. 그외 cs나 stims도 좋은 이름이다.

그림 2-8) 네트워크 연결

서버로서의 기능을 하려면 반드시 네트워크에 연결되어야 한다. 따라서 예를 선택하고 계속을 누른다.

그림 2-9) IP 주소 입력

시스템의 IP 주소를 입력한다. 이 주소는 고유해야 하며 사이트의 주소 규약을 따라야 한다. ip 주소는 마침표로 분리된 4세트의 숫자로 구성한다. 예를 들어 사설 IP의 경우에는 192.168.17.1, 공인 IP는 학교에 할당된 IP중 사용하지 않는 IP를 입력한다.

다음 화면에서 호스트명과 네트워크, 그리고 IP 주소의 정보 확인을 물어본다. 이 때 계속을 선택한다.

그림 2-10) 이름 서비스 선택

이름 서비스는 대부분 DNS를 사용하므로 세 번째 DNS를 선택한다.

만약 학내에서만 사용할 경우에는 네 번째 None을 선택해도 관계없다.

그림 2-11) 도메인 이름 입력

도메인 이름은 시스템이 있는 도메인을 지정해야 한다. 대부분의 경우 학교도메인을 입력하면 된다. 그리고 네임 서버에 이 시스템을 등록시켜 주도록 하자.

그림 2-12) DNS 서버 주소 등록

DNS 서버 주소를 입력하도록 하자. 여기에는 한 개의 주소만 입력해도 관계가 없다. 그러나 반드시 하나라도 입력해야 한다. 대부분의 경우 제일 위에는 자체 DNS 서버 주소를, 그리고 두 번째는 대형 ISP의 DNS 서버 주소를 입력한다. 여기서는 168.126.63.1을 입력했다. 이 주소는 모든 학교가 동일하게 사용해도 무방하다.

그림 2-13) DNS 검색 목록 등록

이 항목은 무시를 하고 넘어가도 관계없다. 다만 보다 편리하게 사용하려고 도메인 이름을 입력하지 않고 호스트 명만 입력하였을 경우 그림 2-13의 경우에 웹브라우저에서 www만 입력했을 경우, www.kwedu.net로 연결이 된다. 만약 kwedu.net에 www가 없을 경우에는 gwedu.net을 검색하고 그 다음엔 egangwon.net을 검색하게 된다.

그림 2-14) 정보확인

그림 2-14에서 그 동안 입력한 정보들을 다시 한번 확인해 보고, 틀린 부분이 있으면 변경을 눌러 다시 고치도록 하고, 정확할 경우 계속을 누른다.

그림 2-15) 서브넷 지정

네트워크에서 서버가 통신을 하기 위해서는 서브넷이 지정되어야 한다.

그림 2-16) 서브넷 마스크 지정

네트마스크를 여기서는 255.255.255.0으로 지정했다. 이는 대부분 사설IP를 사용하는 학교에서는 공통일 것이다. 네트마스크는 공인 IP의 경우, 학교 규모에 따라 IP의 개수가 달라지게 되는데, 우리 학교의 IP 대역을 결정하게 된다.

보통 255.255.255.0, 255.255.255.128, 255.255.255.192, 255.255.255.224 중에서 사용할 것이다. IP 수로 보면 앞에서부터 256, 128, 64, 32개의 IP를 할당받은 경우에 해당된다. 네트마스크 설정은 뒤에서 자세히 다루도록 하자.

그림 2-17) 기본 시간대 지정



그림 2-17에서는 제일 처음에 있는 지역적 위치를 선택한다. 그리로 설정을 눌러 그림 2-18에서처럼 아시아 동부의 한국을 선택한다.

그림 2-18) 아시아 동부에 있는 한국

그림 2-19) 날짜 및 시간 설정

날짜와 시간이 맞으면 바로 계속을 누르고, 틀리면 수정한 후 계속을 누른다.

그림 2-20) 정보확인

서브넷마스크 및 시간대의 정보를 확인하고 맞으면 계속을 누른다.

그림 2-21) Solaris 설치 방법

여기서는 시스템을 업그레이드하거나 초기화할 수 있다. 처음부터 새로 설치하는 것을 기준으로 설명하므로, 초기 단추를 누른다.

그림 2-22) 클라이언트 서비스 공간 할당

클라이언트 서비스를 위해 공간을 할당할 필요는 없다. 따라서 계속을 누른다.

그림 2-23) 언어선택

이 화면에서는 Solaris를 설치한 후에 사용자 인터페이스 즉 X-window에 나타날 언어를 선택하는데, 여기서는 선택의 여지가 없다. 바로 계속을 누른다.

그림 2-24) 소프트웨어 선택

여기서는 시스템의 사용 목적에 따라 다양한 소프트웨어 그룹을 선택할 수 있다. 그러나 우리가 교무업무 서버로 활용하거나, 단순한 웹서버나 메일서버, 네임 서버로 활용하는데는 End User System Support 만 선택해도 충분하다. 필요 없이 위의 것을 선택하면, 디스크 공간과 Process의 낭비만 초래하게 된다.

MEMO:


그림 2-25) 디스크 선택

디스크를 선택하는 화면이다. 대부분의 서버는 하나의 하드디스크가 장착되어 있으므로 그림 2-25와 같이 뜬다. 필요한 공간을 확인해야겠으나 유닉스 시스템을 End User로 설치하면 500M를 넘지 않으므로 충분하다. 따라서 그냥 계속을 누른다.

그림 2-26) 데이터 보존

데이터를 보존해야할 필요가 있을 경우에는 보존을 눌러준다. 그러나 우리가 시스템을 새로 설치할 때는 데이터는 모두 백업을 받아둔 상태이므로 그냥 계속 탭을 눌러준다.

MEMO:


그림 2-27) 파일시스템 레이아웃 선택

파일 시스템을 설정해야 한다. 즉, 윈도우에서 하나의 하드디스크로 디스크를 분할하는 것을 의미한다. 자동 배열을 시스템이 알아서 배열하는 것이다. 그렇게 되면 우리가 필요한 만큼 디스크를 분할 할 수 없으므로 수동 배열을 선택한다.

그림 2-28) 분할 디스크 선택

시스템에 있는 파일시스템을 보여주고 있다. 여기서 사용자 정의를 누른다. 이 경우에는 파일시스템, 디스크에 배치한 목적, 그리고 이것이 바뀜으로 인해 시스템 운영에 미치는 영향 등을 이해하고 있어야한다.

MEMO:


그림 2-29) 디스크 공간 할당

0번 파티션에 /를 할당하고 그 공간을 1G로 잡았다. 이는 UNIX를 모두 설치해도 500M를 넘지 않기 때문에 1G 면 충분하다.

5번 파티션에 /stims를 할당하고 그 공간을 1G로 잡았다. 교무업무 서버용 프로그램을 모두 설치해도 200M면 충분하다. 그리고 향후 업그레이드를 몇 번을 한다고 해도 1G정도의 공간이면 충분하다.

7번 파티션에 swap을 설정했다. 이부분은 물리적 메모리(보통 512M)가 부족할 경우 하드 디스크를 메모리로 사용하기 위해 설정한다. 여기서는 512M를 할당했는데 이는 물리적 메모리와 디스크를 합쳐 실제 사용할 수 있는 메모리가 1G나 됨을 의미한다. DB를 5개 이상 설치하지 않을 경우에는 이정도면 충분하다. 그러나 DB를 5개 이상 설치해야할 특수한 경우라면 swap을 1000으로 설정해 준다.

끝으로 6번 파티션에 /data를 할당하고, 나머지 공간을 모두 할당해 준다.

여기서 2번의 overlap은 디스크의 총 공간을 의미한다고 보면 된다.

그림 2-30) 파일시스템과 디스크 레이아웃 정보

그림 2-30은 앞에서 설정한 파일시스템과 디스크 레이아웃 정보를 보여준다. 그림 2-28에서 그림 2-30과 같이 바뀐 것이다. 여기서 계속을 눌러 준다.

그림 2-31) 원격파일 시스템 마운트

원격 파일 시스템은 마운트 할 필요가 없다. 그냥 계속을 누른다.

MEMO:


그림 2-32) 설치시작

여기서 지금까지 설정한 프로파일을 보여주고, 설치시작을 누르면 소프트웨어 설치를 시작하게 된다.

그림 2-33) 재부팅 방법 설정

시스템 설치후 재부팅을 해야하는데, 재부팅은 자동으로 한다.

그림 2-34) Solaris 소프트웨어 설치 진행

드디어 소프트웨어를 설치하기 시작한다. 이 작업은 약 15분에서 20분 정도 소요된다. 이상으로 대부분의 작업이 끝났다. 윈도98을 설치해 본 경험이 있다면, UNIX의 설치는 훨씬 쉽다는 것을 알 수 있다.

여기까지 UNIX 설치의 모든 과정이 끝난 것이다.

그림 2-35) root 암호 등록

시스템이 완전히 설치되면 재부팅이 된다. 처음 재부팅시에 그림 2-35와 같이 root password를 등록해야 한다. 이 때 적절한 암호를 입력하면 되는데 가급적 8자 이상으로 하는 것이 좋겠다.

그림 2-36) root로 접속하기

이제 시스템이 완전히 설치되어 최초로 root 권한으로 시스템에 접속하게 된다. 사용자 이름에 root를 입력하고 확인을 누른다.

그림 2-37) 데스크탑 화면 선택

사용자가 사용할 데스크탑 화면을 선택하는 것이다. 요즘 나오는 Linux와 UNIX 모두에 사용되는 공통 데스크탑 환경을 선택하자.

3.  최초 사용자 등록

이제 이 시스템에서 작업하는 일은 거의 없을 것이다. 대부분 외부에서 접속해서 처리를 하면 된다. 따라서 여기서도 외부에서 접속하여 각종 프로그램을 설치하도록 하겠다. 그러기 위해서는 먼저 최소 사용자를 등록해야 한다. 외부에서는 root로 바로 접속할 수 없으므로 일반 사용자를 하나 등록한다.

그림 2-38은 바탕화면에서 마우스 오른쪽 버튼을 누르면 나타난다.

<도구>에서 <터미널>을 선택하여 실행한다.

그림 2-38) 터미널 실행

그림 2-39) 사용자 등록 순서

그럼 터미널 창에서 사용자를 등록시키는 순서를 알아보도록 하자.

1단계 : #mkdir /data/user     -> /data/user라는 디렉토리를 만든다.

2단계 : #groupadd user       -> user라는 그룹을 등록한다.

3단계 : #useradd -d /data/user/jo -g user -s /usr/bin/csh -m jo

     -> jo라는 사용자를 등록하는데, 홈디렉토리는 /data/user/jo, 그룹은 user, 쉘은 /usr/bin/csh c shell을 사용, -m은 jo라는 디렉토리가 없을 경우 생성

4단계 : passwd jo   -> jo사용자의 암호 등록



이와 같은 단계를 거처 사용자를 등록한다. 추가로 다른 사람을 더 등록시킬 때에는 3단계와 4단계만 반복한다.

MEMO:


 




출처 : http://unix.co.kr/bbs/board.php?bo_table=02_021&wr_id=3

Posted by 1010
60.Unix2008. 12. 11. 10:35
반응형
PDF로 이 문서 다운로드 (1852 KB)

Solaris ZFS 파일 시스템

이 파일 시스템의 향상된 성능은 Solaris 10 6/06 릴리스의 새로운 기능입니다.

이 Solaris 업데이트 릴리스에는 새로운 128비트 파일 시스템인 Solaris ZFS가 포함되어 있습니다. Solaris ZFS는 간단한 관리, 트랜잭션 의미론, 종단간 데이터 무결성, 우수한 확장성 등을 제공합니다. Solaris ZFS는 기존의 기술을 증분적으로 향상하는 방식이 아니고 보다 근본적으로 데이터 관리에 접근하는 방식입니다.

Solaris ZFS는 볼륨 개념을 완전히 제거한 풀링된 저장소 모델을 사용합니다. 따라서 Solaris ZFS에서는 분할 영역 관리, 관리 제공, 증대하는 파일 시스템 등과 관련된 문제를 제거합니다. 수 천 개의 파일 시스템을 하나의 공통 저장소 풀에서 모두 가져올 수 있습니다. 각 시스템은 실제로 필요한 만큼만 공간을 사용합니다. 풀에 있는 모든 장치의 통합 I/O 대역폭을 항상 모든 파일 시스템에서 사용할 수 있습니다.

모든 작업은 “기록 중 복사” 트랜잭션이므로 디스크 내장 상태가 항상 유효합니다. 모든 블록에는 체크섬이 있으므로 확인 없이 데이터가 손상될 수 없습니다. 또한 복제된 구성에서 데이터가 자가 치유됩니다. 이 기능을 사용하면 복사본이 손상된 경우 Solaris ZFS가 손상을 감지한 후 다른 복사본을 사용하여 손상된 복사본을 복구합니다.

Solaris ZFS 간편한 관리

시스템 관리자에게 있어서 기존의 파일 시스템에 비해 Solaris ZFS의 가장 향상된 기능은 관리의 간편성입니다.

Solaris ZFS에서는 단일 명령을 사용하여 미러된 저장소 풀과 파일 시스템을 설정합니다. 예를 들면 다음과 같습니다.


# zpool create home mirror c0t1d0 c1t2d0

위 명령은 home이라는 미러된 저장소 풀과 home이라는 단일 파일 시스템을 만듭니다. 파일 시스템이 /home에 마운트됩니다.

Solaris ZFS에서는 분할 영역 대신 전체 디스크를 사용하여 저장소 풀을 만들 수 있습니다.

/home 파일 시스템 계층을 사용하여 /home 아래에 파일 시스템을 원하는 만큼 만들 수 있습니다. 예를 들면 다음과 같습니다.


# zfs create home/user1

자세한 내용은 zpool(1M)zfs(1M) 매뉴얼 페이지를 참조하십시오.

또한 Solaris ZFS는 다음과 같은 관리 기능을 제공합니다.

  • 백업 및 복원 기능

  • 장치 관리 지원

  • 지속적 스냅샷 및 복제 기능

  • 파일 시스템에 대해 설정 가능한 할당량

  • RBAC 기반 액세스 제어

  • 파일 시스템에 대한 저장소 풀 공간 예약

  • 영역이 설치된 Solaris 시스템 지원

자세한 내용은 Solaris ZFS Administration Guide를 참조하십시오.

ZFS 웹 기반 관리

Solaris 10 6/06 릴리스에는 ZFS 명령줄 인터페이스를 사용하여 많은 관리 작업을 수행할 수 있는 Solaris ZFS 웹 기반 관리 도구가 있습니다. Solaris ZFS 관리 콘솔을 사용하여 수행할 수 있는 관리 작업은 다음과 같습니다.

  • 새 저장소 풀 만들기

  • 기존 풀에 용량 추가

  • 다른 시스템으로 저장소 풀 이동(내보내기)

  • 이전에 내보낸 저장소 풀을 가져와서 다른 시스템에서 사용 가능하도록 지정

  • 저장소 풀에 대한 정보 보기

  • 파일 시스템 만들기

  • 볼륨 만들기

  • 파일 시스템 또는 볼륨에 대한 스냅샷 생성

  • 이전 스냅샷에 파일 시스템 롤백

다음 URL의 보안 웹 브라우저를 통해 Solaris ZFS 관리 콘솔에 액세스할 수 있습니다.


https://system-name:6789

해당 URL을 입력하여 Solaris ZFS 관리 콘솔에 연결할 수 없는 경우 서버를 시작할 수 없습니다. 서버를 시작하려면 다음 명령을 실행합니다.


# /usr/sbin/smcwebserver start

시스템이 부트될 때 서버가 자동으로 실행되도록 하려면 다음 명령을 실행합니다.


# /usr/sbin/smcwebserver enable

주 –

Solaris Management Console(smc)을 사용하여 ZFS 저장소 풀이나 파일 시스템을 관리할 수 없습니다.


ZFS 및 Solaris 영역

Solaris 영역 분할 기술은 Solaris ZFS 구성 요소(예: 영역에 Solaris ZFS 파일 시스템 및 저장소 풀 추가)를 지원합니다.

예를 들어, zonecfg 명령의 파일 시스템 자원 유형이 다음과 같이 향상되었습니다.


zonecfg:myzone> add fs
zonecfg:myzone:fs> set type=zfs
zonecfg:myzone:fs> set dir=/export/share
zonecfg:myzone:fs> set special=tank/home
zonecfg:myzone:fs> end

자세한 내용은 zonecfg(1M) 매뉴얼 페이지 및 Solaris ZFS Administration Guide를 참조하십시오.

ZFS 파일 시스템의 Solaris 설치 도구 지원

이 릴리스는 다음과 같은 Solaris 설치 도구를 지원합니다.

  • Solaris custom JumpstartTM - Jumpstart 프로필에 Solaris ZFS 파일 시스템을 포함할 수 없습니다. 그러나 Solaris ZFS 저장소 풀에서 다음 스크립트를 실행하여 설치 서버 또는 설치 클라이언트를 설정할 수 있습니다.

    • setup_install_server

    • add_install_server

    • add_install_client

  • Solaris Live Upgrade - 원래의 부트 환경을 유지하면서 Solaris ZFS 저장소 풀을 새 환경으로 이동할 수 있습니다. 현재는 Solaris ZFS를 부트 가능한 루트 파일 시스템으로 사용할 수 없습니다. 따라서 기존의 Solaris ZFS 파일 시스템이 부트 환경(BE)에 복사되지 않습니다.

  • Solaris 초기 설치 - Solaris ZFS 파일 시스템은 초기 설치 중에 인식되지 않습니다. 그러나 설치에 사용할 Solaris ZFS 저장소 풀이 들어 있는 디스크 장치를 지정하지 않을 경우 설치 후에 zpool import 명령을 사용하여 저장소 풀을 복구할 수 있어야 합니다. 자세한 내용은 zpool(1M) 매뉴얼 페이지를 참조하십시오.

    대부분의 재설치 시나리오와 마찬가지로 초기 설치 옵션을 진행하기 전에 Solaris ZFS 파일을 백업해야 합니다.

  • Solaris 업그레이드 – Solaris ZFS 파일 시스템과 저장소 풀이 유지됩니다.

새 Solaris ACL 모델

Solaris ZFS가 새 ACL 모델을 구현합니다. 이전 버전 Solaris OS는 주로 POSIX ACL 드래프트 사양을 기반으로 하는 ACL 모델만 지원했습니다. POSIX 드래프트 기반 ACL은 UFS 파일을 보호하는 데 사용됩니다. NFSv4 사양을 기반으로 하는 새 모델은 Solaris ZFS 파일을 보호하는 데 사용됩니다.

새 ACL 모델:

  • NT 스타일 ACL과 비슷한 새 ACL 및 NFSv4 사양을 기반으로 합니다.

  • 보다 세부적인 액세스 권한 집합을 제공합니다.

  • setfaclgetfacl 명령 대신 chmodls 명령을 사용하여 ACL을 설정하고 표시합니다.

  • 액세스 권한이 디렉토리에서 하위 디렉토리로 적용되는 방법을 지정하는 등 다양한 상속 의미론을 제공합니다.

최근에 개정된 chmod(1) 매뉴얼 페이지에는 Solaris ZFS 사용법을 설명하는 새로운 예가 상당수 추가되었습니다. acl(5) 매뉴얼 페이지에는 새 ACL 모델에 대한 개요가 있습니다. 또한 Solaris ZFS Administration Guide에는 ACL을 통한 ZFS 파일 보호와 관련한 포괄적인 예가 제공되어 있습니다.

Posted by 1010
60.Unix2008. 12. 11. 10:28

ZFS

반응형

ZFS

기존 RAID 와는 달리 디스크에 신경을 쓰지 않는다.
기존 RAID 는 디스크 마다 하나하나 다 설정을 하지만
ZFS 는 디스크라는 개념이 존재 하지않는다.
ZFS는 가상적인 풀이라는 공간을 만들고 그안에 디스크를 추가 하게 된다.


+----------------------POOL----------------------------+
|                                                                                   |
|  +-DISK-+   +-DISK-+  +-DISK-+  +-DISK-+  +-DISK-+        |
|  |          |   |          |  |          |  |         |  |          |        |
|  |  ①     |   |  ②     |  |  ③     |  |  ④    |  |  ⑤     |        |
|  +------+    +------+   +------+  +------+   +------+         |
|                                                                                   |
|  +-DISK-+   +-DISK-+  +-DISK-+  +-DISK-+  +-DISK-+        |
|  |          |   |          |  |          |  |         |  |          |        |
|  |  ⑥     |   |  ⑦     |  |  ⑧     |  |  ⑨    |  |  ⑩     |        |
|  +------+    +------+   +------+   +------+  +------+         |
|                                                                                   |
|  +-DISK-+   +-DISK-+  +-DISK-+  +-DISK-+  +-DISK-+        |
|  |          |   |          |  |          |  |         |  |          |        |
|  |  ⑪     |   |  ⑫     |  |  ⑬     |  |  ⑭    |  |  ⑮     |        |
|  +------+    +------+   +------+   +------+  +------+         |
|                                                                                  |
+------------------------------------------------------+

이런식으로 풀이라는 가상 공간에 디스크를 추가만 해주게 되면
풀이라는 공간은 늘어나게되고 계속 사용하면된다.
① 공간에 데이터를 사용하다 새로운 데이터를 저장하게 되면
①번 디스크가 ②번 디스크를 링크를 걸게 되고 Sync 작업으로
동기화가 이루어진다. 그리고 ②번 디스크에 새로운 데이터를
저장하게 되고 작업 완료 신호를 주게 되면 링크가 끈어진다.
하지만 동기화 도중 에러가 발생하게 되면 ②번 디스크의 링크를
끊고 이전 상태 ①번 디스크로 되돌린다. 다음 또 디스크에
새로운 데이터를 저장하면 ②번 디스크가 ③번 디스크에 링크를
걸고 동기화 하게 된다. 그리고 새로운 데이터를 저장한다.
☞ 풀이라는 전체 공간이 80% 이상시에는 COW 방식으로 동작하지
    않는다.

이러한 방법을 COW 방식이라 한다. (=Copy On Write )

장점: 1. Copy On Write
      2. Disk 관리가 필요 없다.
      3. RAID5 -> Disk 2장으로 구성 가능
               -> RAIDZ
      4. mount 가 필요 없다.
               -> 기존 방법은 newfs 로 파일시스템을 만들고
                  마운트를 수행하지만 ZFS 이러한 과정이 없다.
                  (파일시스템 자동생성 및 Automount)

※ 관리자는 데이터가 어떤 디스크에 저장이 되는지 모르기때문에
   데이터 복구가 매우 어렵다.
   충분한 Disk 공간이 있어야만 한다.

# zpool create mypool c1t0d0s0 c1t1d0s0
  ☞ 풀이라는 가상적인 공간을 생성
# zfs create mypool/kgb
  ☞ 풀이라는 공간에 디렉토리 생성.
     df -h 로 공간을 보면 mypool 공간과 kgb 공간이 함께 공간을
     공유한다는 것을 알수있다.
# zpool list
  ☞ 리스트를 보여준다.
# zpool status
  ☞ 상태를 보여준다.
# zpool destroy mypool
  ☞ 풀이라는 공간을 삭제


출처 : http://deandy.tistory.com/65?srchid=BR1http%3A%2F%2Fdeandy.tistory.com%2F65

Posted by 1010
60.Unix2008. 12. 11. 09:38
반응형

Solaris 10 1/06 OS를 빠르게 설치하는 방법

이 방법 가이드에서는 Solaris 10 설치에 익숙하지 않은 사용자들에게 Sun 지원 x64 또는 x86 시스템에 Solaris 10 OS를 설치하는 방법을 안내합니다. 스크린샷을 포함하는 이 단계별 가이드는 간단한 25개 단계를 통해 설치 프로세스를 안내합니다. 초보 사용자는 이 가이드의 지침에 따라 독립 실행형 x64 또는 x86 시스템에 Solaris 10 1/06 운영 체제 설치를 완료해야 합니다.

1760KPDF[1760K]
목차
 
 
 
 

설치 가정

이 가이드에서는 다음을 포함하는 몇 가지 가정 하에 진행됩니다.
  • 시스템은 x64 또는 x86 시스템입니다.
  • 시스템은 Solaris 10 OS와 호환되며 Solaris 하드웨어 호환성 목록(HCL)에 포함됩니다.
  • 시스템에 그래픽 인터페이스가 있습니다.

이 가이드는 네트워크에 연결되지 않은 독립 실행형 시스템에 가장 적절하지만 네트워크 구성 정보가 사용 가능할 경우 네트워크 연결 시스템(네트워크 인프라에 연결된 IP 주소가 있는 시스템)을 위한 단계별 설치 절차로도 사용할 수 있습니다.

설치 프로세스 중에 이 가이드에서 논의되지 않은 문제가 발생하면 Solaris 10 OS Installation Guide: Basic Installations를 참조하십시오. 이 가이드는 Sun 웹 사이트(http://docs.sun.com/app/docs/coll/1236.1)에 있는 Solaris 10 Release and Installation Collection의 일부입니다.

맨 위로

 
 
 

하드웨어 호환성 목록 확인

설치 프로세스의 첫 번째 단계는 OS를 설치할 시스템이 http://www.sun.com/bigadmin/hcl/에 있는 하드웨어 호환성 목록에 포함되어 있는지 확인하는 것입니다. (참고: 용어 "x86"은 32비트 x86 호환 가능 아키텍처 및 64비트 AMD64/Intel EM64T의 "제품군"을 나타냅니다. 그러나 용어 x64는 64비트 x86 프로세서를 사용하는 시스템을 나타냅니다. Solaris 10 OS는 x86 또는 x64로 지정된 여러 시스템에서 실행됩니다.)

맨 위로

 
 
 

기본 시스템 요구 사항

컴퓨터 시스템이 다음 요구 사항을 만족하는지 확인하십시오. 아래 요구 사항은 권장되는 최소 수준입니다. 디스크 용량과 CPU 속도가 이보다 낮은 시스템에서도 Solaris OS를 설치할 수 있지만 권장되지 않습니다.

  • 최소 256MB의 물리적 RAM
  • 최소 5GB의 사용 가능한 하드 디스크 공간
  • 최소 400MHz CPU 속도
  • DVD 또는 CD-ROM 드라이브
  • 부착된 모니터 또는 통합형 디스플레이
Solaris 시스템 요구 사항에 대한 자세한 내용을 보려면 http://www.sun.com/solaris/specs.jsp 사이트를 방문하십시오. Solaris 10에서 사용할 수 있는 타사 응용 프로그램의 자세한 목록을 보려면 http://www.sun.com/partners/10moves/solutions.html 사이트를 방문하십시오.  
 
 
 

x64 또는 x86 플랫폼용 미디어 구하기

Solaris 10 OS 1/06 릴리스는 Sun 웹 사이트에서 다운로드할 수 있습니다.

  1. Solaris 10 OS에 대한 정보를 얻으려면 http://www.sun.com/solaris/ 사이트로 이동하십시오.
  2. 다운로드 프로세스를 시작하려면 http://www.sun.com/solaris/get.jsp 사이트로 이동하십시오.
  3. 사용 가능한 다운로드 목록에서 Solaris 10을 선택하십시오.
  4. 적절한 미디어 형식(x64/x86 시스템의 경우 Solaris)을 누르십시오.
  5. Sun 다운로드 센터에 아직 등록하지 않았으면 등록하십시오.
  6. 간단한 질문에 대답하십시오.
  7. 사용권 계약을 읽어보고 동의하십시오.
  8. CD 또는 DVD를 다운로드 및 구우십시오.

    Solaris 10 OS 다운로드 또는 설치 CD 및 DVD 미디어 굽기에 대한 추가 지침, 설명 및 팁을 보려면 http://www.sun.com/solaris/self_help.jsp에 있는 Solaris 10 Self Help FAQ를 참조하십시오.

    맨 위로

     
     
     

    전원 켜기 및 미디어 부팅

    다른 운영 체제가 시스템에서 이미 실행되고 있는지 또는 새 시스템에 설치할지에 관계없이 다음 절차를 사용할 수 있습니다.

    1. 시스템 전원을 켜고 드라이브 트레이에 첫 번째 설치 CD 또는 DVD를 넣습니다.
    2. 시스템을 다시 시작합니다.
    3. 시스템이 하드 디스크에서 부팅되는 것으로 나타나고 Solaris OS 설치 관리자가 시작되지 않은 경우 시스템 전원 주기 기능을 사용합니다. 전원 주기란 시스템의 전원을 켠 후 다시 시작하는 것을 말합니다. 시스템이 부팅되기 시작하면 설치 모드로 들어갑니다. 일반적으로 입력해야 하는 키(예: "설치를 시작하려면 F2키 누르기")를 알려주는 메시지가 표시됩니다. 누를 키는 제조업체에 따라 다르며 Esc 및 F12 키가 가장 일반적으로 사용됩니다. 이 메시지를 제대로 읽지 못한 경우 볼 수 있게 될 때까지 시스템을 몇 번 다시 시작하면 됩니다.
    4. 일단 설치 모드에 들어가면 시스템의 부트 장치를 지정합니다. 이 예에서는 부트 드라이브로 CD 또는 DVD 드라이브를 지정합니다. 이렇게 하려면 부트 순서를 설명하는 목록을 찾은 후 CD 또는 DVD 드라이브가 목록 맨 처음에 나오도록 순서를 바꿉니다. 그러면 시스템이 CD 또는 DVD 드라이브에서 부팅되면서 설치 프로세스가 시작되며 아래와 같은 메시지가 표시됩니다.

      Loading stage 2....

      GNU GRUB version 0.95 ( xxK lower / xxK upper memory)

    맨 위로

     
     
     

    Solaris 10 1/06 운영 체제 설치

    Solaris 10 1/06 운영 체제 설치 및 부트 프로세스는 GNU GRUB 로더를 기반으로 합니다. 따라서 이 프로세스 중에 표시되는 메시지는 GRUB 로더에만 국한되며 이전 Solaris 설치와는 다릅니다.

    콘솔 식별

    설치 프로세스의 다음 단계는 Solaris OS가 설치되는 하드웨어 버전에 대한 콘솔 유형을 선택하는 것입니다. 화살표 키를 사용하여 하드웨어 구성에 맞는 Solaris OS 버전을 선택합니다. 대부분의 x64 및 x86 시스템에서는 이것이 기본 선택 사항입니다.

    헤드 없는 랙 장착형 시스템을 사용 중이며 직렬 콘솔에 대한 인터페이스로 직렬 포트가 필요한 경우 두 가지 직렬 콘솔 옵션을 사용할 수 있습니다. Sun Fire LX50, Sun Fire V60x 또는 Sun Fire V65x 서버와 같은 이전 x64 및 x86 시스템의 경우 Solaris Serial Console ttyb를 선택합니다.

    편집 기능 키에는 항목을 선택 또는 강조하기 위한 화살표 키, 명령을 편집하기 위한 e 키 또는 명령줄에 대한 c 키 등이 있습니다. Enter 키를 눌러 선택된 운영 체제 버전을 부팅합니다. 아무 키도 누르지 않아도 강조된 운영 체제 버전은 60초 이내에 부팅됩니다. 부트 프로세스 중에는 프롬프트가 표시되지 않습니다. 아무 버전도 선택하지 않으면 화면 시간이 초과된 후 Solaris OS가 자동으로 부팅됩니다.

    Solaris
    Solaris Serial Console ttya (headless and rack-mounted systems only)
    Solaris Serial Console ttyb (for1x50, v60x and v65x)


    설치 유형 선택

    Enter 키를 누르면 다음 메시지가 표시됩니다.

    Booting 'Solaris'
    kernel /boot/multiboot kernel/unix -B install_media=cdrom
    Multiboot-elf...

    첫 번째 모듈이 로드되면 여섯 가지 설치 옵션이 제공됩니다. 화살표 키나 스페이스바를 사용하여 옵션을 하나 선택합니다. 일정 시간 동안 아무 옵션도 선택하지 않으면 기본 설치 방법이 자동으로 선택됩니다.

    SunOS Release 5.10 Version Generic_Patch 32-bit
    Copyright 1983-2005 Sun Microsystems, Inc. All rights reserved.
    Use is subject to license terms.
    Configuring devices.

      1. Solaris Interactive (default)
      2. Custom JumpStart
      3. Solaris Interactive Text (Desktop session)
      4. Solaris Interactive Text (console session)
      5. Apply driver updates
      6. Single user shell
    Automatically continuing in xx seconds

    (timeout)


    첫 번째 옵션을 선택하거나 가만히 기다리면 다음 출력이 표시됩니다. 표시되는 하드웨어 정보(예: "bge0")는 아래에 표시되는 데이터와 정확히 동일하지 않을 수 있으며 각 단계를 완료하는 데는 몇 분 정도 걸릴 수 있습니다.

    Solaris Interactive

    Using install cd in /dev/dsk/c1t0d0p0
    Using RPC Bootparams for network configuration information.
    Attempting to configure interface bge0...
    Skipped interface bge0...
    Beginning system identification...
    Searching for configuration files(s)...
    Search complete.

    Proposed Window System Configuration for Installation:

       Video Devices:     xxxxxxxxxxxxxxx
       Video Drivers:     xxxxxxxxxxxxxxx
       Resolution/Colors: xxxxxxxxxxxxxxx
       Screen Size:       xxxxxxxxxxxxxxx
       Monitor Type:      xxxxxxxxxxxxxxx
       Keyboard Type:     xxxxxxxxxxxxxxx
       Pointing Device:   xxxxxxxxxxxxxxx

    Press  <ENTER> to accept proposed configuration
    or     <ESC> to change proposed configuration
    or     <SPACE> to pause

    <<< timeout in 30 seconds>>>

    시스템 시간이 초과되거나 Enter 키를 누르면 시스템은 그래픽 모드로 전환되며 Esc 키를 누를 때까지 다음 설치 섹션이 계속 진행됩니다. Esc 키를 누르면 하드웨어 선택 사항 및 기타 옵션을 변경할 수 있는 텍스트 기반 화면이 표시됩니다. 구성이 테스트된 후 문제가 없는 것으로 판명되면 화면은 그래픽 설치 모드로 돌아갑니다.

    시스템 구성

    일련의 화면이 표시되어 Solaris OS 구성 프로세스를 안내합니다.
    참고: 그래픽 화면에서 작업을 진행하는 동안 구성 프로세스 중에 제시된 질문에 대답하기 위해 창 내부에서 마우스로 이동해야 합니다.

    1. 시간이 초과되거나 ?Enter 키가 아닌 Esc 키를 누르면 Solaris 설치 프로그램에 대한 일련의 메시지가 표시됩니다. 메시지를 전체적으로 살펴봅니다. 옵션이 제공되면 화살표 키를 사용하여 원하는 옵션을 강조한 후 F2 키를 눌러 선택합니다. 고급 구성을 수행하려면 http://docs.sun.com/ 사이트에서 Solaris Installation Guide를 참조하십시오.
    2. 시스템의 언어를 선택합니다.

      Select Language

      0. English
      1. French
      2. German
      3. Italian
      4. Japanese
      5. Korean
      6. Simplified Chinese
      7. Spanish
      8. Swedish
      9. Traditional Chinese

      Please make a choice (0-9), or press h or ? for help:

    3. 오른쪽 아래 구석에 Solaris Install Console이라는 새 창이 표시됩니다. 이 창은 관련 설치 메시지를 표시하는 데 사용됩니다. Solaris OS 설치 질문에 대답할 수 있는 다른 창도 표시됩니다.

      Solaris Install Console
    4. welcome 화면이 표시됩니다. Next>를 눌러 설치 프로세스를 계속합니다. 설치 프로그램이 입력된 구성을 확인합니다. 제공된 구성 정보가 올바르지 않으면 해당 화면에 올바른 정보를 다시 입력하도록 요구됩니다.

      Welcome
    5. Network Connectivity 화면이 나타납니다. (참고: 시스템이 독립 실행형 시스템이면 17단계로 건너뛰어 시스템 시간과 날짜를 설정해야 합니다.) 그렇지 않고 시스템이 가정용 광대역 네트워크에 연결되어 있으면 대부분의 기본 옵션을 그대로 사용해도 됩니다. 다음 화면에서 Networked 옵션과 DHCP Server를 선택하고 가이드의 나머지 부분을 진행합니다. 시스템이 사무실 LAN에 연결되어 있으면 DHCP 서버를 사용할 수 있는지 시스템 관리자에게 문의하십시오. DHCP 서버를 사용할 수 있으면 다음 화면에서 Networked 옵션과 DHCP Server를 선택하고 가이드의 나머지 부분을 진행합니다.

      네트워크 연결


      그러나 DHCP 서버를 사용할 수 없으면 다음 정보를 확인한 후 계속하십시오.
      • 시스템의 호스트 이름
      • IP 주소
      • 네트워크 마스크
      • 기본 라우터
      • 시스템이 Kerberos를 사용할 수 있게 설정되었는지 여부
      • NIS, NIS+와 같은 이름 서비스 몇 단계 후에 DHCP configuration 화면이 표시됩니다. 이때 DHCP 서버의 사용을 묻는 메시지가 표시될 때 No를 선택해야 합니다.
    6. Next 버튼 Networked 버튼과 Next 버튼을 차례로 누릅니다.
    7. DHCP configuration 화면에 나타납니다. DHCP 서버를 사용하려면 Yes를 선택하고 Next>를 누른 후 11단계를 계속 진행합니다. DHCP 서버를 사용할 수 없으면 No를 선택하고 Next>>를 누른 후 8단계를 계속 진행합니다.

      pcn0에 대한 DHCP
    8. 시스템의 호스트 이름을 입력하고 Next>를 누릅니다. 이 예에서는 호스트 이름 cancun이 사용됩니다.

      Hostname for bge0
         Enter a hostname which...
         Host Name for bge0:
         cancun

      <Back   Next>

    9. 시스템의 IP 주소를 입력합니다. 이 예에서는 IP 주소 192.168.1.1이 사용됩니다.

      IP Address for bge0
         Enter Internet Protocol (IP)...
         IP Address for bge0: 192.168.1.1

      <Back    Next>

    10. 네트워크 마스크를 입력합니다. 이 예에서는 네트워크 마스크 255.255.255.0이 사용됩니다.

      Netmask bge0
         On this screen you must...
         Netmask bge0:
         255.255.255.0

      <Back    Next>

    11. No를 선택한 후 Next>를 눌러 네트워크 인터페이스에 대해 IPv6를 비활성화합니다.

      IPv6 for bge0
         Specify whether or not you want
         to enable IPv6...
         Enable IPv6 for bge0:
         0 Yes
         0 No
      <Back    Next>

      1. 네트워크 정보를 수동으로 입력하지 않을 경우 13단계를 계속 진행합니다.
      2. 네트워크 정보를 수동으로 입력할 경우 다음 단계가 나타납니다.
        기본 라우터를 자동으로 검색하도록 시스템을 구성합니다. Detect one을 선택하고 Next>를 누릅니다.


      Set the Default router for bge0
         The default router provides a
         bridge...
         0 Detect one
         0 Specify one
         0 None
      <Back    Next>

    12. 다음에는 Kerberos를 네트워크 인증 프로토콜로 사용하지 않도록 지정합니다. No를 선택하고 Next>를 누릅니다.

      Kerberos
    13. 다음에는 명명 서비스를 구성하지 않도록 지정합니다. None을 선택하고 Next>를 누릅니다.

      이름 서비스
    14. 다음에는 시스템에 대한 표준 시간대를 설정합니다. 이 예에서는 지리적 영역을 지정하여 표준 시간대를 설정합니다. Geographic을 선택하고 Next>를 누릅니다.

      표준 시간대
    15. 다음에는 대륙과 국가를 선택합니다. 정확한 위치에 대한 자세한 정보가 요구됩니다. 예를 들어, Americas를 선택하면 Americas의 모든 표준 시간대를 나열하는 화면이 표시됩니다. 해당 표준 시간대를 선택하고 Next>를 누릅니다.

      대륙과 국가
    16. 다음에는 날짜 및 시간을 설정하고 Next>를 누릅니다. 날짜와 시간이 자동으로 표시됩니다. 올바르면 Next>를 누르고 조정이 필요하면 텍스트 상자에 수정 내용을 입력하고 Next>를 누릅니다.

      날짜와 시간
    17. 루트 암호를 설정합니다. 입력한 암호는 화면에는 표시되지 않습니다. 두 번째 상자에 암호를 다시 입력하고 Next>를 누릅니다.

      루트 암호
    18. 마지막으로 제공된 구성 정보가 요약되어 화면에 표시됩니다. 모든 정보가 올바른지 확인하고 Confirm>을 누릅니다. 네트워크 정보를 수동으로 입력하거나 DHCP 서버를 사용하는 경우에는 다른 정보가 표시됩니다.

      Confirm Information
         Selection Information
         Hostname: cancun
         IP Address: 192.168.1.1
         System part of a subnet: Yes
         Netmask: 255.255.255.0
         Enable IPv6: No
         Default Route: Autodetect Default
         Name Service: None
         Enable Kerberos: No
         Timezone: US/Pacific

      <Back    Confirm>


    Solaris 설치

    이제 Solaris 로고가 포함된 화면이 표시됩니다. Next>를 눌러 설치 프로세스를 시작합니다. Solaris Install Console에 정보가 표시됩니다.

    Welcome

    1. 먼저 설치 관리자 옵션을 설정합니다. 설치 프로세스 마지막에 시스템이 자동으로 부팅되고 CD 또는 DVD가 꺼내지도록 지정합니다. 두 옵션에 대해 모두 Yes를 선택하고 Next>를 누릅니다.

      설치 관리자 옵션
    2. 팝업 창이 표시됩니다. OK를 누르고 계속합니다.
    3. 다음에는 설치를 수행할 미디어를 지정합니다. CD/DVD를 선택하고 Next>를 누릅니다.

      미디어 지정
    4. 설치 프로세스가 시작됩니다. 이 프로세스는 몇 초 정도 걸립니다.
    5. 사용권 계약이 표시되면 읽어봅니다.agreement. 계약 내용에 동의하면 Accept와 Next>를 차례로 눌러 설치 프로세스를 계속합니다.

      라이센스
    6. Initial Install을 선택하고 Next>를 누릅니다.
    7. Custom Install을 설치하고 Next>를 누릅니다.

      설치 유형 선택
    8. 기본 옵션을 모두 그대로 사용하여 설치하려면 이 가이드에 나오는 18단계, Ready to Install 절을 계속 진행합니다. 그렇지 않으면 아래에 나오는 9-17단계를 진행합니다.
    9. 다음에는 원할 경우 소프트웨어를 지역화합니다. > 문자를 눌러 지리적 영역을 확장합니다. 해당 지역화 버전을 선택합니다. Next>를 눌러 계속합니다. 지역화 버전을 설치하려면 Languages CD가 필요합니다. 다음 예에서는 시스템을 스페인어로 지역화합니다.

      Select Software Localizations
         Select the geographic regions...
         > Northern Africa
         > Eastern Europe
         > Southern Europe
         ...

      <Back    Next>     Exit>

    10. 해당 로케일을 선택하고 Next>를 누릅니다.

      Select System Locale
         Select the initial locale to
         be used...
         North America
         0 Spanish (Mexico, ISO...
         POSIX
         0 English (POSIX...

      <Back    Next>     Exit>

    11. 다음에는 필요한 소프트웨어 제품을 선택하고 Next>를 누릅니다. 설치를 수행하기 위해 소프트웨어가 들어 있는 배포용 CD 또는 DVD가 필요합니다.

      Select Products
         Select the products you would...
         > Solaris 10 Extra Value Software
         > Solaris 10 Documentation
         > Java Enterprise System
         > Solaris Software Companion CD

      <Back    Next>     Exit>

    12. 다음에는 추가로 필요한 소프트웨어를 선택하고 Next>를 누릅니다. 설치를 수행하기 위해 소프트웨어가 들어 있는 배포용 CD 또는 DVD가 필요합니다.

      Additional Products
         To scan for additional...
         Web Start Ready products scan
         location
         0 None
         0 CD/DVD
         0 Local or Network File System

      <Back    Next>     Exit>

    13. 그룹 선택 사항은 시스템의 사용 방식에 따라 달라집니다. 이 예에서는 Entire Group(기본 옵션)을 설치하지만 사용자 정의하지는 않습니다. Entire Group 옵션을 선택하고 Next>를 누릅니다.

      Select Solaris Software Group
         Select a Solaris software group to install:
         Solaris Software       Default    Custom    Size(MB)
         Entire Group Plus OEM    0          0        3438.7
         Entire Group             0          0        3438.7
         Developer Group          0          0        3331.5
         End User Group           0          0        2482.3
         Core Group               0          0         363.3
         Reduced Networking Group 0          0         339.5

      <Back    Next>     Exit>

    14. 부트 디스크를 선택합니다. 시스템에 디스크가 두 개 이상 있으면 화면 왼쪽에 있는 목록에서 디스크를 선택한 후 Next>를 누릅니다.

      Disk Selection
         Select which disk you want...
         Available    Selected Disk
            Add>>
            <<Remove

      <Back    Next>     Exit>

    15. 원할 경우 분할할 디스크를 선택합니다. 이전 단계에서 선택한 디스크가 나열됩니다. 디스크 하나에 파티션이 여러 개 있으면 디스크를 선택하여 수정해야 합니다. 운영 체제를 사용자 파일과 따로 두어야 할 경우에는 분할이 유용할 수 있습니다. 이 예에서는 디스크가 이미 적절한 방식으로 분할되었거나 Solaris OS에 해당 디스크 전체를 사용할 수 있다고 가정합니다. Next>를 눌러 계속합니다.

      Select Disks for fdisk Partition
      Customization
         On the next panel(s), you can...
         Please select the disk(s) to
         customize...
         0 c0d0

      <Back    Next>     Exit>

    16. 기존 파일 시스템을 보존해야 할 경우 다음 창에서 Yes를 선택하고, 그렇지 않으면 No를 선택합니다. Next>를 눌러 계속합니다.

      Preserve Data
         At least one of the disks...
            0 Yes
            0 No

      <Back    Next>     Exit>

    17. 기본 파일 시스템 레이아웃은 대부분의 시스템에 적절합니다. 스왑 공간의 추가나 /export/home 디렉토리 제거와 같은 약간의 수정 작업이 필요할 수 있습니다. 파일 시스템 레이아웃을 수정해야 할 경우 modify를 선택합니다. 새 창이 표시됩니다. 필요에 맞게 값을 변경합니다. 다음 예에서는 /export/home 디렉토리를 제거하고, 스왑 크기를 2048MB로 조정하고, 남은 공간을 루트 디렉토리에 추가합니다. 이렇게 하면 다음과 같은 파일 시스템 레이아웃이 구현됩니다. 확인을 누릅니다. 변경 내용은 이전 창에 나옵니다. Next>를 눌러 계속합니다. 구성을 사용자 정의하면 다른 메시지가 표시될 수 있습니다.

      Disk c0d0
         Slice  File System    Size
            0    /              36101
            1    swap           2048

      [OK]   [Apply]   [Reset]   [Cancel]

    18. 정보를 확인하고 Install Now를 누릅니다.

      설치 준비
    19. 정보를 확인하고 Install Now를 누릅니다. 설치 진행률 표시기가 나타납니다. 몇 분 후면 100%에 도달합니다. Pause 또는 Reboot 여부를 묻는 메시지가 표시됩니다. 시스템은 내부 하드 디스크에서 다시 부팅되어야 합니다. 다시 부팅할 때 일부 시스템은 CD/DVD 트레이에서 끌어옵니다. 이 경우 트레이에서 CD 또는 DVD를 뺀 후에 시스템을 다시 부팅하면 됩니다.

      설치 중...
    20. 시스템이 다시 부팅되기 시작하면 CD/DVD 트레이를 열어 CD/DVD를 제거합니다. 이렇게 하면 시스템이 내부 하드 디스크에서 부팅됩니다. 이것이 실패하면 설치 프로세스가 다시 시작됩니다.
    21. GNU GRUB 화면이 표시됩니다. Solaris 옵션을 강조하고 Enter 키를 누릅니다. 시스템이 다시 부팅됩니다.
    22. 시스템을 처음 부팅하면 NFS 프로토콜을 무시할지 묻는 질문이 텍스트 모드 화면에 표시됩니다. 기본값(No)을 그대로 적용하고 부팅 프로세스를 계속합니다.
    23. 설치가 CD에서 수행될 경우 설치 관리자를 시작할 수 있음을 나타내는 설치 화면이 표시됩니다. install 버튼을 누릅니다. 설치 관리자가 시작되면 화면이 파란색으로 바뀝니다. 설치 관리자가 작동되면 다음 CD를 설치할지 묻는 Solaris 화면이 표시됩니다. install 버튼을 누릅니다. 설치 프로세스 중에 빈 화면이 표시되면 모니터가 시간 초과된 것일 수 있습니다. 마우스를 이동하면 화면이 복원됩니다.
    24. 이 프로세스는 나머지 CD에서도 반복됩니다. 마지막 CD를 설치한 후에는 최종적으로 다시 부팅해야 합니다.
    25. 이제 시스템에 Solaris 10 1/06 운영 체제가 설치되었습니다.

    맨 위로

     
     
     

    추가 정보

    Solaris 10 OS에 대한 자세한 내용을 보려면 sun.com/solaris 사이트를 참조하십시오.

    매뉴얼
    Sun 설명서
    Big Admin System Administration Portal
    Sun의 새로운 기술 문서
    Sun x64/x86 시스템을 구축하도록 JumpStart 서버 구성(영문)
    로컬 부트 서버 없이 네트워크 설치 수행(영문)
    AMD 프로세서가 있는 Sun x64 시스템에서 다중 부팅 환경 구성(영문)
    관련 웹 사이트
    Solaris 랩톱 목록(x86)(영문)
    Solaris 하드웨어 호환성 목록(영문)
    Solaris 10 시스템 요구 사항(영문)
    Solaris 10 1/06 OS 기능 비교 차트(영문)
    Solaris 10을 채택하기 위한 다음 단계
    Solaris 10 using "Solaris 10 How To Guides"를 사용하여 실무 경험을 얻으시기 바랍니다.
    무료 Solaris 10 교육에 참여하십시오.
    Sun의 기업 지원 시스템은 여러분이 원하시면 언제나 달려갑니다. 지원 계약을 통해 다양한 지원을 받으십시오.
    OpenSolaris 커뮤니티에 참여하십시오.

    맨 위로

Posted by 1010
60.Unix2008. 12. 11. 09:36
반응형
PDF로 이 문서 다운로드 (803 KB)

2장 Solaris 설치 프로그램을 사용하여 설치(작업)

이 장에서는 Solaris 10 Operating System DVD 또는 Solaris 10 Software - 1 CD에 있는 Solaris 설치 프로그램을 사용하여 Solaris 소프트웨어를 설치 또는 업그레이드하는 방법에 대하여 설명합니다.

이 장의 내용:

새로운 설치 기능에 대한 자세한 내용은 Solaris 10 설치 설명서: 네트워크 기반 설치의 1 장, Solaris 설치의 새로운 기능을 참조하십시오. Solaris OS의 모든 새로운 기능에 대한 자세한 내용은 Solaris 10 새로운 기능을 참조하십시오.

SPARC: Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드 수행

Solaris 설치 프로그램을 사용하여 Solaris OS를 설치 또는 업그레이드할 수 있습니다. 여기에는 Solaris OS를 설치하기 위하여 수행할 작업 목록이 있으며 DVD 또는 CD 매체에서 Solaris OS를 설치하는 자세한 방법을 제공합니다.

절차 SPARC: Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드

이 절차에서는 CD 또는 DVD 매체에서 독립형 SPARC 기반 시스템을 설치하는 방법에 대하여 설명합니다.


주 –

DVD-ROM 또는 CD-ROM 드라이브에 직접 연결되지 않은 컴퓨터나 도메인에서 Solaris OS를 설치하려는 경우 다른 컴퓨터에 연결된 DVD-ROM 또는 CD-ROM을 사용할 수 있습니다. 자세한 설명은 Solaris 10 설치 설명서: 네트워크 기반 설치의 부록 B, 원격으로 설치 또는 업그레이드(작업)를 참조하십시오.


시작하기 전에

설치를 시작하기 전에 다음 작업을 수행합니다.

  • 다음 매체가 있는지 확인합니다.

    • DVD 설치: Solaris 10 Operating System for SPARC Platforms DVD

    • CD 설치:

      • Solaris 10 Software CD.

      • Solaris 10 Languages for SPARC Platforms CD – 설치 프로그램은 특정 지역의 언어를 지원해야 할 경우 이 CD를 요청합니다.


        주 –

        비전역 영역이 설치된 시스템을 업그레이드할 경우 Solaris 10 Software CD를 사용할 수 없습니다. Solaris 10 Operating System DVD 또는 DVD 기반 네트워크 설치 이미지를 사용해야 합니다.


  • 시스템이 최소 요구 사항을 만족하는지 확인합니다.

    시스템이 다음 요구 사항을 만족해야 합니다.

    • 메모리 – 128MB 이상

    • 디스크 공간 – 6.8GB 이상

    • 프로세서 속도 – 200MHz 이상

    시스템 요구 사항에 대한 자세한 내용은 시스템 요구 사항 및 권장 사항을 참조하십시오.

  • Solaris OS를 설치하는 데 필요한 정보를 수집합니다.

    • 네트워크되지 않은 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

    • 네트워크된 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

      • 호스트 IP 주소

      • 서브넷 마스크

      • 이름 서비스의 유형(예: DNS, NIS 또는 NIS+)

      • 도메인 이름

      • 이름 서버의 호스트 이름

      • 이름 서버의 호스트 IP 주소

      • 루트 비밀번호

    시스템을 설치할 때 수집해야 하는 정보에 대한 내용은 설치를 위한 검사 목록을 참조하십시오. 시스템을 업그레이드하는 경우 Solaris 10 설치 설명서: Solaris Live Upgrade 및 업그레이드 계획업그레이드를 위한 검사 목록을 참조하십시오.

  • (선택 사항) 시스템을 백업합니다.

    기존 데이터 또는 응용 프로그램을 보존하려면 시스템을 백업합니다. 시스템 백업에 대한 자세한 설명은 System Administration Guide: Devices and File Systems의 24 장, Backing Up and Restoring File Systems (Overview)를 참조하십시오.

단계
  1. Solaris 10 Operating System for SPARC Platforms DVD 또는 Solaris 10 Software for SPARC Platforms - 1 CD를 넣습니다.

  2. 시스템을 부트합니다.

    • 시스템을 새로 구입한 경우 시스템을 켭니다.

    • 현재 실행 중인 시스템을 설치하려면 시스템을 종료합니다.

    ok 프롬프트가 표시됩니다.

  3. Solaris 설치 프로그램을 시작합니다.

    • 로컬 DVD 또는 CD에서 부트하고 Solaris 설치 GUI를 시작하려면 다음 명령을 입력합니다.


      ok boot cdrom
      
    • 로컬 DVD 또는 CD에서 부트하고 바탕화면 세션에서 텍스트 설치 프로그램을 시작하려면 다음 명령을 입력합니다.


      ok boot cdrom - text
      
      text

      바탕화면 세션에서 텍스트 설치 프로그램을 실행하도록 지정합니다. 기본 GUI 설치 프로그램을 변경하려면 이 옵션을 사용하십시오.

    • 로컬 DVD 또는 CD에서 부트하고 콘솔 세션에서 텍스트 설치 프로그램을 시작하려면 다음 명령을 입력합니다.


      ok boot cdrom - nowin
      
      nowin

      콘솔 세션에서 텍스트 설치 프로그램을 실행하도록 지정합니다. 기본 GUI 설치 프로그램을 변경하려면 이 옵션을 사용하십시오.

    Solaris 설치 GUI와 텍스트 설치 프로그램에 대한 자세한 내용은 Solaris 설치 프로그램 GUI 또는 텍스트 설치 프로그램 요구 사항을 참조하십시오.

    설치가 시작됩니다. 설치 프로그램에 설치하는 동안 사용할 언어를 선택하는 프롬프트가 표시됩니다.

  4. 설치하는 동안 사용할 언어를 선택하고 Enter를 누릅니다.

    잠시 후 Solaris 설치 프로그램 시작 화면이 표시됩니다.

    • Solaris GUI 설치 프로그램을 실행하는 경우 그림 2–1과 같은 화면이 표시됩니다.

    • 바탕화면 세션에서 Solaris 텍스트 설치 프로그램을 실행하는 경우 그림 2–2와 같은 화면이 표시됩니다.

    그림 2–1 Solaris GUI 설치 프로그램 시작 화면

    GUI 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
    그림 2–2 Solaris 텍스트 설치 프로그램 시작 화면

    텍스트 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
  5. 다음을 눌러 설치를 시작합니다. 메시지가 표시되면 시스템 구성 질문에 응답합니다.

    구성 질문에 응답한 후, Solaris 시작 대화 상자가 표시됩니다.

    그림 2–3 Solaris 시작 화면

    설치 시작 화면의 Next 및 Edit 버튼은 화면 캡쳐에 보이는 것과 같습니다.

    설치 질문 화면이 나타납니다.

  6. 시스템을 자동으로 재부트할 것인지 디스크를 자동으로 꺼낼 것인지 결정합니다. 다음을 누릅니다.

    매체 지정 화면이 나타납니다.

  7. 설치에 사용할 매체를 지정합니다. 다음을 누릅니다.

    라이센스 패널이 나타납니다.

  8. 설치를 계속하려면 사용권 계약에 동의해야 합니다. 다음을 누릅니다.

    Solaris 설치 그러면 설치 프로그램이 시스템을 업그레이드할 수 있는지 판단합니다. 업그레이드하려면 시스템에 반드시 기존 Solaris 루트(/) 파일 시스템이 있어야 합니다. Solaris 설치 프로그램이 필요한 조건을 검출한 후 시스템을 업그레이드합니다.

    업그레이드 또는 초기화 설치 선택 화면이 나타납니다.

  9. 초기화 설치를 수행할지 업그레이드를 수행할지 결정합니다. 다음을 누릅니다.

    비전역 영역이 설치된 시스템을 업그레이드할 경우 다음을 수행합니다.

    1. 초기화 설치 또는 업그레이드를 선택하라는 메시지가 표시되면 업그레이드를 선택합니다. 다음을 누릅니다.

    2. 시스템에 루트(/) 분할 영역이 여러 개인 경우 업그레이드할 버전 선택 패널에서 업그레이드할 분할 영역을 선택합니다.

      Solaris 설치 프로그램에서 업그레이드를 사용자 정의할 수 없다는 메시지가 표시됩니다. Solaris 설치 프로그램에서 시스템을 분석하여 업그레이드될 수 있는지 판단합니다. 업그레이드 준비 완료 페이지가 표시됩니다.

      시스템에 루트 분할 영역이 한 개만 있는 경우 Solaris 설치 프로그램에서 업그레이드할 분할 영역을 선택하라는 메시지가 표시되지 않습니다. 그 분할 영역이 자동으로 선택됩니다.

    3. 업그레이드를 계속하려면 업그레이드 준비 패널에서 지금 설치를 누릅니다.

      Solaris 설치 프로그램이 시스템을 업그레이드하기 시작합니다. 업그레이드가 완료된 후에는 보존되지 않은 일부 로컬 수정 사항을 보정할 필요가 있습니다. 자세한 내용을 보려면 단계 12단계 a로 이동합니다.

      업그레이드를 계속하지 않으려면 뒤로를 눌러 초기화 설치를 수행합니다.

  10. 수행하려는 설치의 유형을 선택합니다. 다음을 누릅니다.

    • 전체 Solaris 소프트웨어 그룹을 설치 하려면 기본 설치를 선택합니다.

    • 다음 작업을 하려면 사용자 정의 설치를 선택합니다.

      • 특정 소프트웨어 그룹 설치

      • 추가 소프트웨어 설치

      • 특정 소프트웨어 패키지 설치

      • 특정 로켈 설치

      • 디스크 레이아웃 사용자 정의

      소프트웨어 그룹에 대한 자세한 내용은 소프트웨어 그룹의 권장 디스크 공간를 참조하십시오.


    주 –

    텍스트 설치 프로그램에서는 기본 또는 사용자 정의 설치 선택 프롬프트가 표시되지 않습니다. 기본 설치를 수행하려면 텍스트 설치 프로그램에 제공된 기본 값을 사용합니다. 사용자 정의 설치를 수행하려면 텍스트 설치 프로그램 화면에서 값을 편집합니다.


  11. 프롬프트가 표시되면 추가 구성 질문에 대하여 응답합니다.

    시스템 설치에 필요한 정보를 입력하면 설치 준비 화면이 표시됩니다.

    그림 2–4 Solaris 설치 준비 화면

    설치 준비 화면은 다음 화면 캡처와 같습니다. 이 화면에 설치하는 동안 입력한 구성 정보 목록이 표시됩니다.
  12. Solaris 소프트웨어를 설치하려면 지금 설치를 누릅니다. 화면에 표시되는 설명을 따라 Solaris 소프트웨어를 설치합니다.

    Solaris 설치 프로그램이 Solaris 소프트웨어 설치를 완료하면 시스템이 자동으로 다시 부트되거나 사용자에게 직접 다시 부트하도록 프롬프트가 표시됩니다.

    추가 제품을 설치하는 경우 해당 제품의 DVD 또는 CD를 넣으라는 프롬프트가 표시됩니다. 설치 과정에 대해 적절한 설치 설명서를 참조하십시오.

    설치가 완료된 후 설치 로그가 파일에 저장됩니다. 설치 로그는 /var/sadm/system/logs/var/sadm/install/logs 디렉토리에 있습니다.

    • 처음 설치하는 경우 설치가 완료됩니다. 단계 13으로 이동합니다.

    • Solaris 소프트웨어를 업그레이드할 경우 보존되지 않은 일부 로컬 수정 사항을 보정할 필요가 있습니다. 단계 a로 계속합니다.

      1. /a/var/sadm/system/data/upgrade_cleanup 파일의 내용을 검토하여 Solaris 설치 프로그램이 보존하지 못한 로컬 수정 내용을 교정해야 하는지 판단합니다.

      2. 보존되지 않은 모든 로컬 수정 사항을 보정합니다.

  13. 설치하는 동안 자동 재부팅을 선택하지 않은 경우 시스템을 다시 부트합니다.


    # reboot
    
일반 오류

설치 또는 업그레이드하는 동안 문제가 발생하는 경우 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치의 부록 A, 문제 해결(작업)을 참조하십시오.

x86: Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드 수행

Solaris 설치 프로그램을 사용하여 Solaris OS를 설치 또는 업그레이드할 수 있습니다. 여기에는 Solaris OS를 설치하기 위하여 수행할 작업 목록이 있으며 DVD 또는 CD 매체에서 Solaris OS를 설치하는 자세한 방법을 제공합니다.

다음 중 하나를 선택합니다.

절차 x86: Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드

Solaris 10 3/05 릴리스의 경우, 이 절차에 따라 CD 또는 DVD 매체에서 독립형 x86 기반 시스템을 설치합니다.

Solaris 10 1/06 릴리스부터, x86 기반 시스템용 Solaris 설치 프로그램에서는 GRUB 부트 로더를 사용합니다. GRUB를 사용하여 Solaris OS를 설치하는 방법은 x86: GRUB를 이용한 Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드를 참조하십시오.


주 –

DVD-ROM 또는 CD-ROM 드라이브에 직접 연결되지 않은 컴퓨터나 도메인에서 Solaris OS를 설치하려는 경우 다른 컴퓨터에 연결된 DVD-ROM 또는 CD-ROM을 사용할 수 있습니다. 자세한 설명은 Solaris 10 설치 설명서: 네트워크 기반 설치의 부록 B, 원격으로 설치 또는 업그레이드(작업)를 참조하십시오.


시작하기 전에

설치를 시작하기 전에 다음 작업을 수행하십시오.

  • 다음 매체가 있는지 확인합니다.

    • DVD에서 설치하는 경우 Solaris 10 Operating System for x86 Platforms DVD을 사용합니다.

    • CD 매체에서 설치 중인 경우 다음을 사용합니다.

      • Solaris 10 Software CD.

      • Solaris 10 Languages for x86 Platforms CD – 특정 지역의 언어를 지원할 필요가 있는 경우 설치 프로그램에서 이 CD가 있는지 묻는 메시지를 표시합니다.


        주 –

        비전역 영역이 설치된 시스템을 업그레이드할 경우 Solaris 10 Software CD를 사용할 수 없습니다. Solaris 10 Operating System DVD 또는 네트워크 설치 이미지를 사용해야 합니다.


  • CD 또는 DVD 매체에서 부트할 수 있는지 시스템 BIOS를 확인하십시오. 시스템이 디스켓에서 부트해야 하는 경우 Solaris 10 설치 설명서: 네트워크 기반 설치x86용 Solaris 10 3/05: 부트 소프트웨어를 디스켓에 복사에 설명된 단계를 완료하십시오.

  • Solaris OS를 하드웨어에 설치하기 위하여 필요한 설치시 업데이트(ITU: Install Time Update) 또는 드라이버를 구합니다. ITU 또는 추가 드라이버가 필요한지 확인하려면 하드웨어 설명서를 참조하십시오.

  • 시스템이 최소 요구 사항을 만족하는지 확인합니다.

    시스템이 다음 요구 사항을 만족해야 합니다.

    • 메모리 – 128MB 이상

    • 디스크 공간 – 6.8GB 이상

    • 프로세서 속도 – 120MHz 이상(하드웨어 부동소수점 지원 포함)

    시스템 요구 사항에 대한 자세한 내용은 시스템 요구 사항 및 권장 사항을 참조하십시오.

    Sun Microsystems, Inc.에서 생산되지 않은 시스템에 Solaris OS를 설치하는 경우 설치를 시작하기 전에 http://www.sun.com/bigadmin/hcl의 Solaris 하드웨어 호환성 목록을 확인하십시오.

  • 비 전역 영역이 설치된 시스템에서 Solaris 10 7/05 릴리즈로 업그레이드하기 위한 Solaris 설치 프로그램을 사용할 수 없습니다. 비전역 영역이 설치된 시스템을 업그레이드하는 경우 System Administration Guide: Solaris Containers-Resource Management and Solaris Zones의 27 장, Upgrading a Solaris 10 System That Has Installed Non-Global Zones를 참조하십시오.

  • Solaris OS를 설치하는 데 필요한 정보를 수집합니다.

    • 네트워크되지 않은 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

    • 네트워크된 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

      • 호스트 IP 주소

      • 서브넷 마스크

      • 이름 서비스의 유형(예: DNS, NIS 또는 NIS+)

      • 도메인 이름

      • 이름 서버의 호스트 이름

      • 이름 서버의 호스트 IP 주소

      • 루트 비밀번호

    시스템을 설치할 때 수집해야 하는 정보에 대한 내용은 설치를 위한 검사 목록을 참조하십시오. 시스템을 업그레이드하는 경우 Solaris 10 설치 설명서: Solaris Live Upgrade 및 업그레이드 계획업그레이드를 위한 검사 목록을 참조하십시오.

  • 시스템이 반드시 디스켓에서 부트되어야 하는 경우 Solaris 10 장치 구성 지원을 디스켓으로 복사합니다. 시스템을 반드시 디스켓으로 부트해야 하는지 확인하려면 시스템 BIOS를 확인하십시오.

    해당 지침은 Solaris 10 설치 설명서: 네트워크 기반 설치x86용 Solaris 10 3/05: 부트 소프트웨어를 디스켓에 복사를 참조하십시오.

  • (선택 사항) 시스템을 백업합니다.

    기존 데이터 또는 응용 프로그램을 보존하려면 시스템을 백업합니다. 시스템 백업에 대한 자세한 설명은 System Administration Guide: Devices and File Systems의 24 장, Backing Up and Restoring File Systems (Overview)를 참조하십시오.

단계
  1. 적절한 매체를 시스템에 넣습니다.

    • Solaris 10 Operating System DVD 또는 Solaris 10 Software - 1 CD에서 부트하는 경우 디스크를 넣습니다. 시스템의 BIOS가 DVD 또는 CD에서 부트를 지원해야 합니다.

      DVD 또는 CD에서 부트하려면 BIOS를 직접 설정해야 할 수 있습니다. BIOS 설정 방법은 하드웨어 설명서를 참조하십시오.

    • 디스켓에서 부트하는 경우 Solaris 10 Device Configuration Assistant 디스켓을 시스템의 디스켓 드라이브에 넣습니다.

  2. 시스템을 종료한 후 다시 시작하여 부트합니다.

  3. CD 또는 DVD에서 부트하도록 BIOS를 직접 설정해야 하는 경우, 시스템 부트 프로세스가 인터럽트하는 적절한 키 시퀀스를 입력합니다.

    BIOS에서 부트 우선 순위를 수정하고 BIOS를 종료하여 설치 프로그램으로 되돌아갑니다.

    메모리 테스트와 하드웨어 감지가 실행됩니다. 화면이 갱신됩니다. Solaris 부팅 시스템 화면이 표시됩니다.

  4. 장치 설정을 수정해야 하는지 결정합니다.

    다음 작업을 수행하려는 경우 장치 설정을 수정해야 할 수 있습니다.

    • 장치 드라이버 설치

    • ITU 설치

    • 고급 구성 및 전원 인터페이스(ACPI) 사용 안 함 설정

    • 직렬 콘솔 설정

    • 기본 부트 장치 재설정

    • 장치 설정을 수정하지 않는 경우 계속 합니다.

    • Solaris 장치 구성 지원을 사용하여 장치 설정을 수정해야 하는 경우 ESC 키를 누릅니다.


      주 –

      설치를 중단하고 장치 설정을 수정하려면 반드시 5초 이내에 ESC 키를 눌러야 합니다.


      Solaris 장치 구성 지원(DCA) 화면이 표시됩니다. DCA 화면의 설명을 따라 장치 설정을 수정합니다.

    Solaris 설치 프로그램은 기본 부트 디스크에 대하여 시스템 설치 또는 업그레이드 요구 사항을 확인합니다. Solaris 설치가 시스템 구성을 찾을 수 없는 경우 프로그램에 누락된 정보를 입력하라는 프롬프트가 표시됩니다.

    확인이 완료되면 설치 선택 화면이 표시됩니다.

  5. 설치 유형을 선택합니다.

    설치 선택 화면에 다음 옵션이 표시됩니다.


          Select the type of installation you want to perform:
    
             1 Solaris Interactive
             2 Custom JumpStart
             3 Solaris Interactive Text (Desktop session)
             4 Solaris Interactive Text (Console session)
    
             Enter the number of your choice followed by the <ENTER> key.
             Alternatively, enter custom boot arguments directly.
    
             If you wait 30 seconds without typing anything,
             an interactive installation will be started.
    • Solaris 설치 GUI를 사용하여 설치하려면 1을 입력한 후 Enter를 누릅니다.

    • 무인 사용자 정의 JumpStart 설치를 수행하려면 2를 입력한 후 Enter를 누릅니다.

      사용자 정의 JumpStart 설치 방법에 대한 내용은 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치를 참조하십시오.

    • 바탕화면 세션에서 텍스트 설치 프로그램으로 설치하려면 3을 입력한 후 Enter를 누릅니다. 또한 프롬프트에서 b - text을 입력할 수 있습니다.

      기본 GUI 설치 프로그램을 취소하고 텍스트 설치 프로그램을 실행하려면 이 설이 유형을 선택합니다.

    • 콘솔 세션에서 텍스트 설치 프로그램으로 설치하려면 4를 입력한 후 Enter를 누릅니다. 또한 프롬프트에서 b - nowin을 입력할 수 있습니다.

      기본 GUI 설치 프로그램을 취소하고 텍스트 설치 프로그램을 실행하려면 이 설이 유형을 선택합니다.

    Solaris 설치 GUI와 텍스트 설치 프로그램에 대한 자세한 내용은 Solaris 설치 프로그램 GUI 또는 텍스트 설치 프로그램 요구 사항을 참조하십시오.

    시스템이 장치와 인터페이스를 구성하고 구성 파일을 검색합니다. 잠시 후 Solaris 설치 프로그램 화면이 표시됩니다.

  6. Solaris 설치 프로그램 화면에서 F2_Continue를 누릅니다.

    • 설치 프로그램이 시스템에서 키보드, 디스플레이 및 마우스 유형을 찾으면 언어 선택 화면이 표시됩니다. 단계 12로 이동합니다.

    • 설치 프로그램이 시스템에서 키보드, 디스플레이 및 마우스 유형을 찾지 못하는 경우 kdmconfig – 소개 화면이 표시됩니다. 단계 7로 이동합니다.

  7. (옵션) 키보드, 디스플레이 및 마우스를 사용하도록 시스템을 구성합니다

    • 콘솔 세션에서 텍스트 설치 프로그램으로 Solaris OS를 설치하는 경우 F4_Bypass를 누릅니다. 단계 12로 이동합니다.

    • 바탕화면 세션에서 Solaris 대화식 설치 GUI 또는 텍스트 프로그램으로 Solaris OS를 설치하는 경우 F2_Continue를 누릅니다.

      kdmconfig 유틸리티는 시스템에서 키보드, 디스플레이 및 마우스를 구성하는 데 필요한 드라이버를 찾습니다. kdmconfig 유틸리티가 kdmconfig – Window System Configuration 보기 및 편집하기 화면에 검색의 결과를 표시합니다.


      주 –

      kdmconfig 유틸리티가 시스템의 비디오 드라이버를 찾을 수 없는 경우 kdmconfig 유틸리티는 640x480 VGA 드라이버가 선택합니다. Solaris 설치 GUI는 640x480 VGA 드라이버로 표시할 수 없습니다. 따라서 Solaris 설치 텍스트 설치 프로그램이 표시됩니다. Solaris 설치 GUI를 사용하려면 kdmconfig 유틸리티를 사용하여 시스템용으로 올바른 비디오 드라이버를 선택합니다.


  8. kdmconfig – Window System Configuration 보기 및 편집하기 화면의 구성 정보를 검토하고 필요한 경우 수정합니다.

    목록의 장치 중 잘못 구성된 것이 있는 경우 다음과 같이 하십시오.

    1. 변경하려는 장치를 선택한 후 F2_Continue를 누릅니다.

    2. 장치용으로 적절한 드라이버를 선택하고 F2_Continue를 누릅니다.

    3. 변경할 각 장치에 대하여 단계 a에서 단계 b까지 반복합니다.

  9. 작업을 완료했으면 No changes needed – Test/Save and Exit를 선택하고 F2_Continue를 누릅니다.

    kdmconfig Window 시스템 구성 테스트 화면이 나타납니다.

  10. F2_Continue를 누릅니다.

    화면이 갱신되고 kdmconfig Window 시스템 구성 테스트 팔레트 및 패턴 화면이 나타납니다.

  11. 포인터를 이동하고 팔레트에 표시된 색상을 조사하여 정확하게 표시되었는지 확인합니다.

    • 색상이 정확히 표시되지 않으면 No를 누릅니다. 가능한 경우 키보드의 다른 키를 누르거나 kdmconfig가 자동으로 kdmconfig Window System Configuration Test 화면을 종료할 때까지 기다립니다. 색상이 정확히 표시되고 포인터를 원하는 대로 움직일 수 있을 때까지 단계 7에서 단계 11까지 반복합니다.

    • 색상이 정확히 표시되면 Yes를 누릅니다.

    잠시 후 언어 선택 화면이 표시됩니다.

  12. 설치하는 동안 사용할 언어를 선택하고 Enter를 누릅니다.

    몇 초 후에 Solaris 설치 프로그램 화면이 나타납니다.

    • Solaris GUI 설치 프로그램을 실행하는 경우 그림 2–5와 같은 화면이 표시됩니다.

    • 바탕화면 세션에서 Solaris 텍스트 설치 프로그램을 실행하는 경우 그림 2–6과 같은 화면이 표시됩니다.

    그림 2–5 Solaris GUI 설치 프로그램 시작 화면

    GUI 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
    그림 2–6 Solaris 텍스트 설치 프로그램 시작 화면

    텍스트 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
  13. 다음을 눌러 설치를 시작합니다. 프롬프트가 표시되면 나머지 구성 질문에 대하여 응답합니다.

    구성 질문에 응답한 후, Solaris 시작 대화 상자가 표시됩니다.

    그림 2–7 Solaris 시작 화면

    설치 대화 상자에 Next 및 Exit 버튼이 표시됩니다.
  14. 시스템을 자동으로 재부트할 것인지 디스크를 자동으로 꺼낼 것인지 결정합니다. 다음을 누릅니다.

    매체 지정 화면이 나타납니다.

  15. 설치에 사용할 매체를 지정합니다. 다음을 누릅니다.

    사용권 계약 화면이 나타납니다.

  16. 설치를 계속하려면 사용권 계약에 동의해야 합니다. 다음을 누릅니다.

    Solaris 설치 프로그램이 시스템을 업그레이드할 수 있는지 판단합니다. 업그레이드하려면 시스템에 반드시 기존 Solaris 루트(/) 파일 시스템이 있어야 합니다. Solaris 설치 프로그램이 필요한 조건을 검출한 후 시스템을 업그레이드합니다.

    업그레이드 또는 초기화 설치 선택 화면이 나타납니다.

  17. 초기화 설치를 수행할지 업그레이드를 수행할지 결정합니다. 다음을 누릅니다.


    주 –

    설치를 시작하기 전에 시스템에서 진단 또는 서비스 분할 영역을 복구한 경우 Solaris OS로 업그레이드하지 못할 수 있습니다. 자세한 내용은 Solaris 10 설치 설명서: Solaris Live Upgrade 및 업그레이드 계획업그레이드를 참조하십시오.


  18. 수행하려는 설치의 유형을 선택합니다. 다음을 누릅니다.

    • 전체 Solaris 소프트웨어 그룹을 설치 하려면 기본 설치를 선택합니다.

    • 다음 작업을 하려면 사용자 정의 설치를 선택합니다.

      • 특정 소프트웨어 그룹 설치

      • 추가 소프트웨어 설치

      • 특정 소프트웨어 패키지 설치

      • 특정 로켈 설치

      • 디스크 레이아웃 사용자 정의

    소프트웨어 그룹에 대한 자세한 내용은 소프트웨어 그룹의 권장 디스크 공간를 참조하십시오. fdisk 분할 영역 사용자 정의에 대한 내용은 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치분할 권장사항을 참조하십시오.


    주 –

    텍스트 설치 프로그램에서는 기본 또는 사용자 정의 설치 선택 프롬프트가 표시되지 않습니다. 기본 설치를 수행하려면 텍스트 설치 프로그램에 제공된 기본 값을 사용합니다. 사용자 정의 설치를 수행하려면 텍스트 설치 프로그램 화면에서 값을 편집합니다.


  19. 프롬프트가 표시되면 추가 구성 질문에 대하여 응답합니다.

    시스템 설치에 필요한 정보를 입력하면 설치 준비 화면이 표시됩니다.

    그림 2–8 Solaris 설치 준비 화면

    설치 준비 화면은 다음 화면 캡처와 같습니다. 이 화면에 설치하는 동안 입력한 구성 정보 목록이 표시됩니다.
  20. Solaris 소프트웨어를 설치하려면 지금 설치를 누릅니다. 화면의 지침에 따라 시스템에 Solaris 소프트웨어 및 다른 추가 소프트웨어를 설치합니다.

    Solaris 설치 프로그램이 Solaris 소프트웨어 설치를 완료하면 시스템이 자동으로 다시 부트되거나 사용자에게 직접 다시 부트하도록 프롬프트가 표시됩니다.

    설치가 끝나면 설치 로그가 파일에 저장됩니다. 설치 로그는 /var/sadm/system/logs/var/sadm/install/logs 디렉토리에 있습니다.

    • 처음 설치하는 경우 설치가 완료됩니다. 단계 21로 이동합니다.

    • Solaris 소프트웨어를 업그레이드할 경우 보존되지 않은 일부 로컬 수정 내용을 정정해야 합니다. 단계 a로 이동합니다.

      1. /a/var/sadm/system/data/upgrade_cleanup 파일의 내용을 검토하여 Solaris 설치 프로그램이 보존하지 못한 로컬 수정 내용을 교정해야 하는지 판단합니다.

      2. 보존되지 않은 모든 로컬 수정 사항을 보정합니다.

  21. 설치하는 동안 자동 재부팅을 선택하지 않은 경우 시스템을 다시 부트합니다.


    # reboot
    
일반 오류

설치 또는 업그레이드하는 동안 문제가 발생하는 경우 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치의 부록 A, 문제 해결(작업)을 참조하십시오.

절차 x86: GRUB를 이용한 Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드

Solaris 10 1/06 릴리스부터, x86 기반 시스템용 Solaris 설치 프로그램에서는 GRUB 부트 로더를 사용합니다. 이 절차에서는 CD 또는 DVD 매체에서 GRUB 부트 로더로 독립형 x86 기반 시스템을 설치하는 방법에 대하여 설명합니다. GRUB 부트 로더에 대한 개요 정보는 Solaris 10 설치 설명서: 네트워크 기반 설치의 4 장, Solaris 설치용 GRUB 기반 부트을 참조하십시오.

Solaris 10 3/05 릴리스의 경우 CD 또는 DVD에서 Solaris OS를 설치하는 방법은 x86: Solaris 설치 프로그램을 사용하여 설치 또는 업그레이드 를 참조하십시오.


주 –

DVD-ROM 또는 CD-ROM 드라이브에 직접 연결되지 않은 컴퓨터나 도메인에서 Solaris OS를 설치하려는 경우 다른 컴퓨터에 연결된 DVD-ROM 또는 CD-ROM을 사용할 수 있습니다. 자세한 설명은 Solaris 10 설치 설명서: 네트워크 기반 설치의 부록 B, 원격으로 설치 또는 업그레이드(작업)를 참조하십시오.


시작하기 전에

설치를 시작하기 전에 다음 작업을 수행하십시오.

  • 다음 매체가 있는지 확인합니다.

    • DVD에서 설치하는 경우 Solaris 10 Operating System for x86 Platforms DVD을 사용합니다.

    • CD 매체에서 설치 중인 경우 다음을 사용합니다.

      • Solaris 10 Software CD.

      • Solaris 10 Languages for x86 Platforms CD – 특정 지역의 언어를 지원할 필요가 있는 경우 설치 프로그램에서 이 CD가 있는지 묻는 메시지를 표시합니다.


        주 –

        비전역 영역이 설치된 시스템을 업그레이드할 경우 Solaris 10 Software CD를 사용할 수 없습니다. Solaris 10 Operating System DVD 또는 DVD 기반 네트워크 설치 이미지를 사용해야 합니다.


  • CD 또는 DVD 매체에서 부트할 수 있는지 시스템 BIOS를 확인하십시오.

  • Solaris OS를 하드웨어에 설치하기 위하여 필요한 설치시 업데이트(ITU: Install Time Update) 또는 드라이버를 구합니다. ITU 또는 추가 드라이버가 필요한지 확인하려면 하드웨어 설명서를 참조하십시오.

  • 시스템이 최소 요구 사항을 만족하는지 확인합니다.

    시스템이 다음 요구 사항을 만족해야 합니다.

    • 메모리 – 256MB 이상

    • 디스크 공간 – 6.8GB 이상

    • 프로세서 속도 – 120MHz 이상(하드웨어 부동소수점 지원 포함)

    시스템 요구 사항에 대한 자세한 내용은 시스템 요구 사항 및 권장 사항을 참조하십시오.

    Sun Microsystems, Inc.에서 생산되지 않은 시스템에 Solaris OS를 설치하는 경우 설치를 시작하기 전에 http://www.sun.com/bigadmin/hcl의 Solaris 하드웨어 호환성 목록을 확인하십시오.

  • Solaris OS를 설치하는 데 필요한 정보를 수집합니다.

    • 네트워크되지 않은 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

    • 네트워크된 시스템의 경우 다음 정보를 수집합니다.

      • 설치하는 시스템의 호스트 이름

      • 시스템에서 사용하려는 언어 및 로켈

      • 호스트 IP 주소

      • 서브넷 마스크

      • 이름 서비스의 유형(예: DNS, NIS 또는 NIS+)

      • 도메인 이름

      • 이름 서버의 호스트 이름

      • 이름 서버의 호스트 IP 주소

      • 루트 비밀번호

    시스템을 설치할 때 수집해야 하는 정보에 대한 내용은 설치를 위한 검사 목록을 참조하십시오. 시스템을 업그레이드하는 경우 Solaris 10 설치 설명서: Solaris Live Upgrade 및 업그레이드 계획업그레이드를 위한 검사 목록을 참조하십시오.

  • (선택 사항) 시스템을 백업합니다.

    기존 데이터 또는 응용 프로그램을 보존하려면 시스템을 백업합니다. 시스템 백업에 대한 자세한 설명은 System Administration Guide: Devices and File Systems의 24 장, Backing Up and Restoring File Systems (Overview)를 참조하십시오.

단계
  1. 적절한 매체를 시스템에 넣습니다.

    Solaris 10 Operating System DVD 또는 Solaris 10 Software - 1 CD에서 부트하는 경우 디스크를 넣습니다. 시스템의 BIOS가 DVD 또는 CD에서 부트를 지원해야 합니다.

    DVD 또는 CD에서 부트하려면 BIOS를 직접 설정해야 할 수 있습니다. BIOS 설정 방법은 하드웨어 설명서를 참조하십시오.

  2. 시스템을 종료한 후 다시 시작하여 부트합니다.

  3. CD 또는 DVD에서 부트하도록 BIOS를 직접 설정해야 하는 경우 시스템 부트 프로세스가 인터럽트하는 적절한 키 시퀀스를 입력합니다.

    BIOS에서 부트 우선 순위를 수정하고 BIOS를 종료하여 설치 프로그램으로 되돌아갑니다.

    메모리 테스트와 하드웨어 감지가 실행됩니다. 화면이 갱신됩니다. GRUB 메뉴가 표시됩니다.


    GNU GRUB version 0.95 (631K lower / 2095488K upper memory)
    +-------------------------------------------------------------------------+
    | Solaris                                                                 |
    | Solaris Serial Console ttya                                             |
    | Solaris Serial Console ttyb (for lx50, v60x and v65x)                   |
    |                                                                         |
    |                                                                         |
    +-------------------------------------------------------------------------+
    Use the ^ and v keys to select which entry is highlighted.
    Press enter to boot the selected OS, 'e' to edit the
    commands before booting, or 'c' for a command-line.
  4. 해당 설치 옵션을 선택하십시오.

    • 현재 시스템에서 CD 또는 DVD에서 Solaris OS를 설치할 경우 Solaris를 선택한 다음 Enter를 누릅니다.

      기본값을 사용하여 시스템을 설치하려면 이 옵션을 선택합니다.

    • Solaris OS를 설치하고 화면 출력을 직렬 콘솔 ttya(COM1)로 보내려면 Solaris 직렬 콘솔 ttya를 선택합니다.

      시스템 디스플레이를 직렬 포트 COM1에 연결된 장치로 변경하려면 이 옵션을 선택합니다.

    • Solaris OS를 설치하고 화면 출력을 직렬 콘솔 ttyb(COM2)로 보내려면 Solaris 직렬 콘솔 ttyb를 선택합니다.

      시스템 디스플레이를 직렬 포트 COM2에 연결된 장치로 변경하려면 이 옵션을 선택합니다.

    • 특정 부트 인수로 Solaris OS를 설치하려면 다음을 수행합니다.

      설치하는 동안 특정 부트 인수를 사용하여 시스템 구성을 사용자 정의할 수 있습니다.

      1. GRUB 메뉴에서 편집할 설치 옵션을 선택한 다음 e를 누릅니다.

        다음 텍스트와 비슷한 부트 명령이 GRUB 메뉴에 표시됩니다.


        kernel /boot/multiboot kernel/unix -B install_media=cdrom
        module /boot/x86.miniroot
      2. 화살표 키를 사용하여 편집할 부트 항목을 선택한 다음 e를 누릅니다.

        편집할 부트 명령이 GRUB 편집 창에 표시됩니다.

      3. 사용할 부트 인수나 옵션을 입력하여 명령을 편집합니다.

        GRUB 편집 메뉴의 명령 구문은 다음과 같습니다.


        grub edit>kernel /boot/multiboot kernel/unix/ \
        install [url|ask] -B options install_media=media_type
        

        부트 인수와 명령 구문에 대한 자세한 내용은 Solaris 10 설치 설명서: 네트워크 기반 설치의 10 장, 네트워크를 통한 설치 준비(명령 참조)를 참조하십시오.

      4. GRUB 메뉴로 돌아가려면 Enter를 누릅니다.

        GRUB 메뉴가 표시됩니다. 부트 명령을 편집한 내용이 표시됩니다.

      5. 설치를 시작하려면 GRUB 메뉴에 b를 입력합니다.

    Solaris 설치 프로그램은 기본 부트 디스크에 대하여 시스템 설치 또는 업그레이드 요구 사항을 확인합니다. Solaris 설치이 시스템 구성을 찾을 수 없는 경우 프로그램에 누락된 정보를 입력하라는 프롬프트가 표시됩니다.

    확인이 완료되면 설치 선택 화면이 표시됩니다.

  5. 설치 종류를 선택합니다.

    설치 선택 화면에 다음 옵션이 표시됩니다.


          Select the type of installation you want to perform:
    
             1 Solaris Interactive
             2 Custom JumpStart
             3 Solaris Interactive Text (Desktop session)
             4 Solaris Interactive Text (Console session)
             5 Apply driver updates
             6 Single user shell
    
             Enter the number of your choice followed by the <ENTER> key.
             Alternatively, enter custom boot arguments directly.
    
             If you wait 30 seconds without typing anything,
             an interactive installation will be started.
    • Solaris OS를 설치하려면 다음 옵션에서 선택합니다.

      • Solaris 대화식 설치 GUI를 사용하여 설치하려면 1을 입력한 후 Enter를 누릅니다.

      • 바탕화면 세션에서 대화식 텍스트 설치 프로그램으로 설치하려면 3을 입력한 후 Enter를 누릅니다.

        기본 GUI 설치 프로그램을 취소하고 텍스트 설치 프로그램을 실행하려면 이 설이 유형을 선택합니다.

      • 콘솔 세션에서 대화식 텍스트 설치 프로그램으로 설치하려면 4를 입력한 후 Enter를 누릅니다.

        기본 GUI 설치 프로그램을 취소하고 텍스트 설치 프로그램을 실행하려면 이 설이 유형을 선택합니다.

      무인 사용자 정의 JumpStart 설치(옵션 2)를 수행하려면 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치를 참조하십시오.

      Solaris 설치 GUI 및 텍스트 설치 프로그램에 대한 자세한 내용은 시스템 요구 사항 및 권장 사항을 참조하십시오.

      시스템이 장치와 인터페이스를 구성하고 구성 파일을 검색합니다. kdmconfig 유틸리티는 시스템에서 키보드, 디스플레이 및 마우스를 구성하는 데 필요한 드라이버를 찾습니다. 설치 프로그램이 시작됩니다. 단계 6으로 이동하여 설치를 계속합니다.

    • 설치를 시작하기 전에 시스템 관리를 수행하려면 다음 옵션에서 선택합니다.

      • 드라이버를 업데이트하거나 설치시 업데이트(ITU)를 설치하려면 업데이트 매체를 삽입하고 5를 입력한 다음 Enter를 누릅니다.

        시스템에서 Solaris OS를 실행하기 위해 드라이버를 업데이트하거나 ITU를 설치해야 할 수도 있습니다. 드라이버 업데이트 또는 ITU 지침을 따라 업데이트를 설치합니다.

      • 시스템 관리 작업을 수행하려면 6을 입력한 다음 Enter를 누릅니다.

        설치하기 전에 시스템에서 시스템 관리 작업을 수행해야 할 경우 단일 사용자 쉘을 시작할 수도 있습니다. 설치 전에 수행할 수 있는 시스템 관리 작업에 대한 자세한 내용은 System Administration Guide: Basic Administration를 참조하십시오.

      이러한 시스템 관리 작업을 수행한 후에 이전 옵션 목록이 표시됩니다. 해당 옵션을 선택하여 설치를 계속합니다.

  6. 구성 설정을 수정해야 할 것인지 결정합니다.


    주 –

    kdmconfig 유틸리티가 시스템의 비디오 드라이버를 찾을 수 없는 경우 kdmconfig 유틸리티는 640x480 VGA 드라이버가 선택합니다. Solaris 설치 GUI는 640x480 VGA 드라이버로 표시할 수 없습니다. 따라서 Solaris 설치 텍스트 설치 프로그램이 표시됩니다. Solaris 설치 GUI를 사용하려면 kdmconfig 유틸리티를 사용하여 시스템용으로 올바른 비디오 드라이버를 선택합니다.


    • 구성 설정을 수정하지 않으려면 설치를 위한 Windows 시스템 구성 화면을 그대로 두십시오. 단계 12로 이동합니다.

    • 구성 설정을 수정해야 하는 경우 다음을 수행합니다.

      1. ESC 키를 누릅니다.


        주 –

        설치를 중단하고 장치 설정을 수정하려면 반드시 5초 이내에 ESC 키를 눌러야 합니다.


        kdmconfig – 소개 화면이 나타납니다.

      2. kdmconfig – Window System Configuration 보기 및 편집하기 화면의 구성 정보를 검토하고 필요한 경우 수정합니다.

      3. 변경하려는 장치를 선택한 후 F2_Continue를 누릅니다.

      4. 장치용으로 적절한 드라이버를 선택하고 F2_Continue를 누릅니다.

      5. 변경할 각 장치에 대하여 단계 a에서 단계 b까지 반복합니다.

      6. 작업을 완료했으면 No changes needed – Test/Save and Exit를 선택하고 F2_Continue를 누릅니다.

        kdmconfig Window 시스템 구성 테스트 화면이 나타납니다.

      7. F2_Continue를 누릅니다.

        화면이 갱신되고 kdmconfig Window 시스템 구성 테스트 팔레트 및 패턴 화면이 나타납니다.

      8. 포인터를 이동하고 팔레트에 표시된 색상을 조사하여 정확하게 표시되었는지 확인합니다.

        • 색상이 정확히 표시되지 않으면 No를 누릅니다. 가능한 경우 키보드의 다른 키를 누르거나 kdmconfig가 자동으로 kdmconfig Window System Configuration Test 화면을 종료할 때까지 기다립니다. 색상이 정확히 표시되고 포인터를 원하는 대로 움직일 수 있을 때까지 단계 7에서 단계 11까지 반복합니다.

        • 색상이 정확히 표시되면 Yes를 누릅니다.

        잠시 후 언어 선택 화면이 표시됩니다.

  7. 설치하는 동안 사용할 언어를 선택하고 Enter를 누릅니다.

    몇 초 후에 Solaris 설치 프로그램 화면이 나타납니다.

    • Solaris GUI 설치 프로그램을 실행하는 경우 그림 2–5와 같은 화면이 표시됩니다.

    • 바탕화면 세션에서 Solaris 텍스트 설치 프로그램을 실행하는 경우 그림 2–6과 같은 화면이 표시됩니다.

    그림 2–9 Solaris GUI 설치 프로그램 시작 화면

    GUI 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
    그림 2–10 Solaris 텍스트 설치 프로그램 시작 화면

    텍스트 시작 화면은 다음 화면 캡처와 같습니다. 이 화면에는 설치 프로그램이 시스템을 구성할 때 필요한 정보 목록이 표시됩니다.
  8. 다음을 눌러 설치를 시작합니다. 프롬프트가 표시되면 나머지 구성 질문에 대하여 응답합니다.

    구성 질문에 응답한 후, Solaris 시작 대화 상자가 표시됩니다.

    그림 2–11 Solaris 시작 화면

    설치 대화 상자에 Next 및 Exit 버튼이 표시됩니다.
  9. 시스템을 자동으로 재부트할 것인지 디스크를 자동으로 꺼낼 것인지 결정합니다. 다음을 누릅니다.

    매체 지정 화면이 나타납니다.

  10. 설치에 사용할 매체를 지정합니다. 다음을 누릅니다.

    사용권 계약 화면이 나타납니다.

  11. 설치를 계속하려면 사용권 계약에 동의해야 합니다. 다음을 누릅니다.

    Solaris 설치 프로그램이 시스템을 업그레이드할 수 있는지 판단합니다. 업그레이드하려면 시스템에 반드시 기존 Solaris 루트(/) 파일 시스템이 있어야 합니다. Solaris 설치 프로그램이 필요한 조건을 검출한 후 시스템을 업그레이드합니다.

    업그레이드 또는 초기화 설치 선택 화면이 나타납니다.

  12. 초기화 설치를 수행할지 업그레이드를 수행할지 결정합니다. 다음을 누릅니다.


    주 –

    설치를 시작하기 전에 시스템에서 진단 또는 서비스 분할 영역을 복구한 경우 Solaris OS로 업그레이드하지 못할 수 있습니다. 자세한 내용은 Solaris 10 설치 설명서: Solaris Live Upgrade 및 업그레이드 계획업그레이드를 참조하십시오.


    비전역 영역이 설치된 시스템을 업그레이드하는 경우 다음을 수행합니다.

    1. 초기화 설치 또는 업그레이드를 선택하라는 메시지가 표시되면 업그레이드를 선택합니다. 다음을 누릅니다.

    2. 시스템에 루트(/) 분할 영역이 여러 개인 경우 업그레이드할 버전 선택 패널에서 업그레이드할 분할 영역을 선택합니다.

      Solaris 설치 프로그램에서 업그레이드를 사용자 정의할 수 없다는 메시지가 표시됩니다. Solaris 설치 프로그램에서 시스템을 분석하여 업그레이드할 수 있는지 결정합니다. 업그레이드 준비 완료 페이지가 표시됩니다.

      시스템에 루트 분할 영역이 한 개만 있는 경우 Solaris 설치 프로그램에서 업그레이드할 분할 영역을 선택하라는 메시지가 표시되지 않습니다. 분할 영역이 자동으로 선택됩니다.

    3. 업그레이드를 계속하려면 업그레이드 준비 완료 페이지에서 지금 설치를 누릅니다.

      Solaris 설치 프로그램이 시스템을 업그레이드하기 시작합니다. 업그레이드가 완료된 후에는 보존되지 않은 일부 로컬 수정 사항을 보정할 필요가 있습니다. 자세한 내용을 보려면 단계 15단계 a로 이동합니다.

      업그레이드를 계속하지 않으려면 뒤로를 눌러 초기화 설치를 수행합니다.

  13. 수행하려는 설치의 유형을 선택합니다. 다음을 누릅니다.

    • 전체 Solaris 소프트웨어 그룹을 설치 하려면 기본 설치를 선택합니다.

    • 다음 작업을 하려면 사용자 정의 설치를 선택합니다.

      • 특정 소프트웨어 그룹 설치

      • 추가 소프트웨어 설치

      • 특정 소프트웨어 패키지 설치

      • 특정 로켈 설치

      • 디스크 레이아웃 사용자 정의

    소프트웨어 그룹에 대한 자세한 내용은 소프트웨어 그룹의 권장 디스크 공간를 참조하십시오. fdisk 분할 영역 사용자 정의에 대한 내용은 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치분할 권장사항을 참조하십시오.


    주 –

    텍스트 설치 프로그램에서는 기본 또는 사용자 정의 설치 선택 프롬프트가 표시되지 않습니다. 기본 설치를 수행하려면 텍스트 설치 프로그램에 제공된 기본 값을 사용합니다. 사용자 정의 설치를 수행하려면 텍스트 설치 프로그램 화면에서 값을 편집합니다.


  14. 프롬프트가 표시되면 추가 구성 질문에 대하여 응답합니다.

    시스템 설치에 필요한 정보를 입력하면 설치 준비 화면이 표시됩니다.

    그림 2–12 Solaris 설치 준비 화면

    설치 준비 화면은 다음 화면 캡처와 같습니다. 이 화면에 설치하는 동안 입력한 구성 정보 목록이 표시됩니다.
  15. Solaris 소프트웨어를 설치하려면 지금 설치를 누릅니다. 화면의 지침에 따라 시스템에 Solaris 소프트웨어 및 다른 추가 소프트웨어를 설치합니다.

    Solaris 설치 프로그램이 Solaris 소프트웨어 설치를 완료하면 시스템이 자동으로 다시 부트되거나 사용자에게 직접 다시 부트하도록 프롬프트가 표시됩니다.

    설치가 끝나면 설치 로그가 파일에 저장됩니다. 설치 로그는 /var/sadm/system/logs/var/sadm/install/logs 디렉토리에 있습니다.

    • 처음 설치하는 경우 설치가 완료됩니다. 단계 21로 이동합니다.

    • Solaris 소프트웨어를 업그레이드하는 경우 보존되지 않은 일부 로컬 수정 내용을 교정해야 합니다. 단계 a로 이동합니다.

      1. /a/var/sadm/system/data/upgrade_cleanup 파일의 내용을 검토하여 Solaris 설치 프로그램이 보존하지 못한 로컬 수정 내용을 교정해야 하는지 판단합니다.

      2. 보존되지 않은 모든 로컬 수정 사항을 보정합니다.

  16. 설치하는 동안 자동 재부팅을 선택하지 않은 경우 시스템을 다시 부트합니다.


    # reboot
    
다음 단계

시스템에 운영 체제를 여러 개 설치하는 경우 GRUB 부트 로더에 부트하기 위해 이런 운영 체제를 인식하도록 지시해야 합니다. 자세한 내용은 System Administration Guide: Basic AdministrationModifying the Solaris Boot Behavior by Editing the GRUB Menu.

일반 오류

설치 또는 업그레이드하는 동안 문제가 발생하는 경우 Solaris 10 설치 설명서: 사용자 정의 JumpStart 및 고급 설치의 부록 A, 문제 해결(작업)을 참조하십시오.

Posted by 1010
60.Unix2008. 12. 11. 09:30
반응형

[솔라리스/서버환경] 솔라리스 Solaris 10 참고자료 모음

학습 센터
솔라리스 컨테이너
솔라리스 컨테이너는 유연한 소프트웨어 정의 경계를 이용하여 소프트웨어 애플리케이션과 서비스를 안전하게 분리시켜 주며, 단일 솔라리스 OS 인스턴스 환경에서 수많은 별도의 실행 환경을 구축할 수 있게 합니다. 또한 각 환경에는 기본 하드웨어와는 별도로 고유의 해당 ID가 사용됩니다.
http://kr.sun.com/software/solaris/containers_learning_center.html


ZFS
Solaris ZFS(Zettabyte File System)는 혁신적인 데이터 보전 기법과 성능 강화, 그리고 파일 시스템 및 볼륨 관리 기능의 유연한 통합 등을 통해 한 차원 더 진보된 데이터 관리 능력을 제공합니다.
http://kr.sun.com/software/solaris/zfs_learning_center.html


솔라리스 10 컨테이너에서 ZFS 관리하기
ZFS와 솔라리스 컨테이너가 만났을 때 어떤 기능을 발휘하는지 소개합니다. 사용자는 본 가이드를 통해 ZFS 파일 시스템을 컨테이너로 델리게이트하고 컨테이너 내에서 관리하는 방법을 익힐 수 있습니다.
http://kr.sun.com/software/solaris/howtoguides/zfshowto.html


솔라리스 10 설치
속성 솔라리스 10 1/06 OS 설치 방법
썬이 지원하는 x64 또는 x86 시스템에 솔라리스 10 OS를 설치하는 방법을 알려드립니다. 완벽한 스크린 샷을 곁들인 이 매뉴얼은 설치 프로세스를 25개의 단계로 간결하게 나누어 안내합니다.
http://kr.sun.com/software/solaris/howtoguides/installationhowto.html

서버와 애플리케이션 통합하기
사용자, 시스템 관리자, 개발자들을 대상으로 애플리케이션을 단일 서버에 통합하는 방법을 알려드립니다. 또한 사용자는 코드 예제와 설명(또는 도해)이 포함된 통합 프로세스를 통해 가이드를 받게 됩니다.
http://kr.sun.com/software/solaris/howtoguides/containersLowRes.html

DTrace
솔라리스 10 OS의 DTrace 기능 사용법
신규 사용자가 DTrace를 이용하여 시스템 및 애플리케이션 정보를 수집하고 사용하는 방법을 익힐 수 있도록 하며, 솔라리스에서 성능 향상을 위해 사용될 수 있는 애플리케이션의 운영에 관한 유용한 정보를 수집하는 스크립트를 작성합니다.
http://kr.sun.com/software/solaris/howtoguides/dtracehowto.html

솔라리스 10 보안
웹 페이지 하이재킹 방지하기
솔라리스 시스템 관리자와 보안 전문가들에게 공통 웹 서버의 보안 프로세스를 가르칩니다.
http://kr.sun.com/software/solaris/howtoguides/s10securityhowto.html

[영문 백서]
영문 백서
솔라리스 10 및 Zones 상의 IBM WebSphere Application Server
본 자료에서는 글로벌 및 논-글로벌 존에서 솔라리스 10에 IBM WebSphere Application Server (WAS) V6.0.2 이상을 설치하고 구성하는 방법에 관해 설명합니다.
http://www.sun.com/software/whitepapers/solaris10/websphere6_sol10.pdf

솔라리스 OS 네트워킹—비법 공개
솔라리스 10 OS에서 향상된 네트워킹 기능과 기존 릴리즈의 네트워킹 진화 과정을 다룹니다.
http://www.sun.com/bigadmin/features/articles/solaris_networking.html


차의 추종을 불허하는 솔라리스 10 OS
솔라리스 10이 제공하는 혁신적이고 강력한 신기능들을 이용하면 IT 인프라의 관리 방법을 혁신적으로 개선시킬 수 있습니다.
http://www.sun.com/software/whitepapers/solaris10/classbyitself.pdf


솔라리스와 리눅스: Seal Rock 리서치 백서
솔라리스와 리눅스의 주요 차이점을 알고 있으면 AMD Opteron 프로세서 기반 서버를 위한 최고의 운영체제를 선택하는 데 크게 도움이 됩니다.
http://www.sun.com/software/whitepapers/solaris10/sealrock.pdf


파일 시스템 성능 비교 백서
PostMark 파일 시스템 벤치마크에서의 솔라리스 OS와 Novell SUSE LINUX의 초기 성능 비교를 통해 솔라리스의 성능 우위를 확인하십시오.
http://www.sun.com/software/whitepapers/solaris10/self_healing.pdf

솔라리스 10 OS의 조기자가치유 기능
새로운 솔라리스 10 조기자가치유 기술을 비롯하여 자가치유 시스템 구축을 위한 썬의 접근법이 시스템의 가용성을 극대화시켜 줍니다.
http://www.sun.com/software/whitepapers/solaris10/self_healing.pdf

솔라리스 컨테이너: 서버 가상화 및 관리 용이성
솔라리스 컨테이너는 유연한 소프트웨어 정의 경계를 이용하여 소프트웨어 애플리케이션과 서비스를 안전하게 분리함으로써 서버 통합은 물론, 리소스 이용률까지 향상시킬 수 있게 해줍니다.
http://www.sun.com/software/whitepapers/solaris10/grid_containers.pdf

솔라리스 10 OS: 비즈니스 활성화 및 보호를 확실하게 보장해주는 막강한 보안 기능
솔라리스 10은 다양한 레벨에서 기업을 보호하도록 설계된 업계 최강의 비즈니스 크리티컬 보안 기능을 탑재하고 있습니다.
http://www.sun.com/software/whitepapers/solaris10/s10security.pdf

Solaris Volume Manager로의 전환
Solaris Volume Manager 소프트웨어를 이용하면 스토리지 관리를 크게 간소화할 수 있을 뿐만 아니라 작업을 온라인으로 처리할 수 있으므로 고비용이 드는 다운타임을 최소화할 수 있습니다.
http://www.sun.com/software/whitepapers/solaris9/transition_volumemgr.pdf


출저:http://www.50001.com/tt/board/ttboard.cgi?act=read&db=30203&page=6&idx=109

유닉스 솔라리스 전문교육센터 추천

Posted by 1010
60.Unix2008. 12. 10. 19:08
반응형
1.8139랜카드 인스톨후 재부팅
2./etc/hostname.rtls0 이름
3./etc/hosts 사설아이피 이름 loghost
4./etc/defaultrouter 192.168.0.1
5./etc/nsswitch.conf  dns 추가
6./etc/resolv.conf  domain hananet.net 2개의nameserver IP
7.ifconfig rtls0 down
8.ifconfig rtls0 plumb
9.ifconfig rtls0 IP netmask 255.255.255.0 broadcast + up
10.rtls1에대해 똑같이 해주고
11.route add default 192.168.0.1 

실제예
1) ifconfig rtls0 125.140.110.124 netmask 255.0.0.0 broadcast 125.140.110.255
2) vi /etc/hosts (chmod 644 /etc/hosts 하여 쓰기 권한을 준다.)
   # internet host table
   127.0.0.1   localhost
    :: 1    localhost
    125.140.110.123  mains  loghost
:wq!

3) vi /etc/resolv.conf
    nameserver 168.126.63.1
    nameserver 168.125.63.2
:wq!

4) route add default 125.140.110.1
5) route flush (확인)
6) ifconfig -a (네트워크 셋팅 전체 확인)

반드시 sync 먼저 시켜 준 후 poweroff 로 시스템 종료를 한다
Posted by 1010
98..Etc/Etc...2008. 12. 10. 15:31
반응형

웹 사이트 물려받기: 웹 사이트를 유지보수 가능한 상태로 만들기

지나친 부담감 없이 다른 누군가의 웹 사이트를 받아서 유지보수하는 방법

developerWorks
문서 옵션
수평출력으로 설정

이 페이지 출력

이 페이지를 이메일로 보내기

이 페이지를 이메일로 보내기

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Brett McLaughlin, 저자 겸 편집자, O'Reilly Media Inc.

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 5 월 20 일

완벽한 세상에서 여러분은 지금까지 할당된 모든 웹 사이트를 직접 유지보수하고, 개선하고, 새로 설계할 것입니다. 불행하게도 현실 세계에서는 여러분은 종종 누군가 다른 사람이 설계했거나 만든 사이트를 이어 받아야 할 경우가 생깁니다.

새로운 직업, 새 프로젝트, 새로운 책임감은 모두 위험을 안고 다가온다. 새로운 상사, 새 사무실, 새 동료를 맞이하는 동안, 이제 여러분이 보살피고 먹여살릴 웹 사이트를, 어떻게 서로 연결되어 있는지 아무런 힌트도 주지 않고 넘기는 행위보다 더 치명적인 위협은 없다. 종종 특히 경험이 부족한 웹 디자이너나, 더 나쁘게 단순히 내용을 "채워넣기에 급급한" 누군가가 만든 사이트를 넘겨 받으면 내용, 표현, 심지어 몇몇 활동이 뒤죽박죽된 유산을 상속받는 셈이다. 물론 페이지는 추하게 보인다. blink 태그가 없더라도 엉킨 스타일, CSS 스타일과 짬뽕이 되어버린 글꼴 태그, 닫혀 있지 않고 오용된 HTML 태그... 완전히 엉망진창이다.

다행스럽게도 이런 페이지를 깔끔하게 조율되고 쉽게 유지보수가 가능한 웹 사이트로 변신하게 만드는 논리적인 접근 방법이 존재한다. 2부로 나눈 이 글은 엉망진창이고 다루기 힘든 페이지를 제대로 구조화되고 조직화되고 유지보수 가능한 코드로 바꾸는 로드맵을 제공한다. 1부에서 사이트를 유지보수 가능하게 만드는 방법을 배운다. 2부에서 사이트 레이아웃을 조직화하고 효율을 높이고 통제하에 놓여있는지 확인할 것이다.

몇몇 유효성이 증명된 기법이 이런 복잡한 작업을 관리 가능하게 만들며, 성공을 넘어서 탁월한 위치에 이르게 만든다. 이런 기법은 또한 사이트를 연결하는 데 투입되는 시간을 최소로 줄이고, 개선하고, 유지하는 과정에 투입되는 시간을 최대로 높이도록 만든다. 이런 방식으로 만든 사이트를 나중에 새로 단장하거나 심지어 디자인을 새롭게 할 기회가 생기면, 뒤얽힌 스타일로 범벅된 HTML 대신에 잘 나눠진 HTML과 CSS에서 시작할 수 있다.

평가: 자신이 소유한 페이지는?

다른 사람 작업을 이어받은 다음에 가장 먼저 해야 할 일은 정확하게 자신이 소유한 페이지가 어떤지 확인하는 작업이다. 본능적으로 (Windows®용) 노트패드나 손에 익숙한 편집기를 사용해서 바로 작업을 진행하고 싶을 것이다. 하지만 이 시점에서 무턱대고 수정 작업을 하면 상황을 더 꼬이게 만든다. 무엇을 다뤄야 하는지 이해할 필요가 있으며, 5분이나 10분 정도 살펴보면 좀 더 많은 지식이 쌓일 것이다.

사이트 살펴보기

웹 브라우저로 사이트를 열어 보자. HTML과 CSS를 강제로 열지 말고, JPG나 GIF로 저장된 이미지인지 걱정하지 말고 단순히 사이트를 열어보자. 노트패드를 모니터에 띄워놓고, 여러분이 목격한 상황을 갈겨쓰자. 하지만 가장 어려운 주문이지만, 큰 그림에 초점을 맞추자. IE7에서 테이블 사이에 한 픽셀짜리 공백이 보여도 참고 넘어가자. 그 대신 초기에 받은 인상을 기록하자. 상단 배너가 페이지를 압도하고, 수직 스크롤이 짜증나고(항상 그렇긴 하지만!), 기타 등등 말이다.

여기서 요점은 여러분 HTML을 바꿀 작은 항목을 스무 단계로 나누는 데 있지 않다. 단지 전반적인 인상을 파악할 뿐이다. 이 사이트를 좋아하는가? 싫어하는가? 내용이 너무 많은가? 이미지가 흐릿한가? 사이트 디자인 과정에서 반드시 수행해야 하는 아주 일반적인 옵션으로 채워넣어야 한다. 구현 부분을 조금 다루더라도, 전체 그림을 얻기 위한 준비 절차에 그쳐야 한다.

이 단계에서 여러분은 또한 진행해야 할 디자인 작업이 많지 않다. 사이트가 여기서 멋지게 보인다면, 작업은 훨씬 더 쉬워진다. HTML이나 CSS를 파고 들기 앞서 사이트를 점검하도록 권장하는 이유가 바로 여기에 있다. 많은 사이트가 구현 과정에서 재앙이 닥치지만 사이트 자체는 멋지게 보인다. 거꾸로 뒤집어보면, HTML과 CSS로 뒤죽박죽된 장면을 목격하고 사이트를 살피다 보면 관점이 흐려지고, 사이트 구현이 여러분 입맛에 맞지 않기 때문이라는 이유로 필요도 없는 디자인을 다시 할지도 모른다. 사이트를 먼저 살펴보고, 결정을 내리고, 그 다음에 HTML과 CSS를 파고 들자.

표준화

코드로 파고 들기 전에 웹 페이지 유효성을 확인한다는 한 단계가 더 남아있다(물론 이 단계는 구현에 확실히 한 걸음 다가가도록 만들어준다). 유효성은 웹 페이지가 HTML인지 XHTML인지, 여러분 페이지가 순응해야 할 명세가 어떤 버전인지 살펴보는 작업이다. 일반적으로 여러분 웹 페이지가 이미 따르는 명세를 그대로 이어가기를 원할 것이다.

여기서 명심해야 할 목표는 노력을 줄이는 데 있다. 최대한 빨리 사이트 유지보수를 하고 싶으며, 합리적인 수준에서 최소한의 노력으로 사이트를 확장하고 싶기 때문이다. 사이트를 다시 디자인한다면, 여러분이 가장 편한 기술로 이동하기를 원할지도 모르겠다. 예를 들어, 여러분이 XHTML 전문가라면, 이 사이트를 XHTML로 바꿀 수 있는데, 여러분이 선택한 표준이기 때문이다. 하지만 목표가 효율성이라면, 페이지를 현재 형식으로 유지하는 정책을 따르는 방법이 최선이다.

명세에 의미를 더하기

오늘날 사용하는 HTML에는 HTML과 XHTML이라는 두 가지 버전이 있다. HTML은 지난 10년 동안 귀에 못이 박히도록 들어온 표준이다. XHTML은 여러 가지 새로운 규칙과 묘안을 제시한 HTML을 XML화한 버전이다. HTML을 사용한다면 버전이 4.01이다. 이 버전을 사용할 경우 (예전 버전에서 4.01로 쉽게 이동하기 위한 목적으로 만든) 좀 느슨한 traditional과 모든 규칙을 정말로 지켜야 하는 strict로 하위 버전이 나뉜다. XHTML을 사용할 경우 HTML이 요구하지 않는 끝 태그 유지와 같은 XML에 밀접한 몇 가지 사항을 지켜야 한다. XHTML에서는 HTML에서 XHTML로 쉽게 이동하기 위한 1.0 transitional 버전과 모든 사항이 XHTML 규약에 엄격하게 맞아 떨어저야 함을 의미하는 1.0 strict로 하위 버전이 나뉜다. 1.1 명세도 나왔지만 그다지 유용하지 않다. HTML과 XHTML에 대한 세부 사항이 궁금하면 요즘 내가 편집 중이기 때문에 추천하는 Head First HTML with CSS & XHTML을 읽어보기 바란다. 이 기사 참고자료 절에 정리해놓았다.

무엇을 낚았는지 살펴보기

W3C 마크업 유효성 검사기(참고자료 참조)를 사용해 사이트 URL을 입력한다(그림 1 참조).


그림 1. W3C 유효성 검사기
W3C 유효성 검사기

유효성 검사기는 파일을 올릴 수 있을 뿐만 아니라 기존에 구축한 사이트도 처리할 수 있다.


그림 2. 유효성 검사 결과 요약
유효성 검사기는 여러분 페이지가 어떤 명세에 순응하는지 찾아낸다.

이 경우, 유효성 검사기는 여러분 페이지의 인코딩과 doctype을 찾아내며, 이를 통해 다시 유효성 검사를 진행한다.

여러분의 페이지 내부에 doctype 달기

유효성 검사기는 심지어 여러분 페이지에 일치하는 doctype이 없을지라도, 여러분의 페이지가 무엇인지 최선을 다해 감지해내려고 노력한다. 여러분이 XHTML 1.0으로 doctype을 지정했는데, 페이지가 실제로는 HTML 4.01 transitional이라면, 유효성 검사기는 이 사실을 알려준다. 임의의 doctype을 일치시키려고 노력하는 대신(아마도 지나치게 열성적인 웹 디자이너가 미리 입력했을지도 모르겠다), 유효성 검사기가 여러분 페이지가 무엇인지 알려주는 정보로 시작한다. 이게 가장 효율적인 접근 방법이며, 유지 보수 가능하고 유효한 사이트를 재빨리 만드는 과정에서 도움을 줄 것이다.

유효성 검사기는 또한 오류를 보고한다.

페이지가 무엇인지 추측하는 작업 이외에, 유효성 검사기는 이런 추정에 기반을 두고 오류를 보고한다. 특히 사이트를 넘겨받았을 경우는 물론이고 거의 모든 경우에, 여러분 앞에 펼쳐진 페이지가 얼마나 제대로 유지되고 있는지 확신하지 못하면 오류가 존재할 것이다(그림 3은 그림 2에서 나타나지 않는 여러 오류를 보여준다).


그림 3. 유효성 오류
원시 HTML 파일에 존재하는 오류는 검토를 위해 출력된다(결국 이 오류는 수정해야 한다).

다시 한번 말하지만, 실행이 어려운 충고 하나를 제시한다. 바로 이런 오류를 수정하려고 서둘지 말자. 여러분이 수정하고 싶어한다는 사실을 너무나 잘 알고 있다. 하지만 핵심은 다음과 같다. CSS가 HTML에서 분리되어 있지 않고 행 분리(<br>)는 사방에 흩어져 있는 등 웹 사이트가 엉망진창이라면, 여려분이 힘겹게 수행한 모든 작업은 다시 한번 바뀌어야 한다. 여러분이 CSS를 HTML에서 분리해야 한다면, 지금 당장 오류 결과를 수정할 이유가 있는가? 분리한 다음에 나중에 다시 돌아와 유효성 문제를 처리하자.

이런 단계에서 목표는 여러분이 무엇을 추구하는지 생각해내는 데 있다. 여러분 페이지가 XHTML 1.0을 목표로 하면, 아마도 쉽게 XHTML 1.0으로 돌아갈 수 있을 것이다. 또한 가정을 한 가지 하자. 디자이너가 어떤 이유에서인지 XHTML 1.0을 선택했다면, 여러분이 정확한 이유를 모를지라도 이런 판단을 계속 따르는 편이 안전하다.

여러분 사이트가 기본적으로 가장 느슨한 표준인 HTML 4.01 transition로 되돌아간다면, 어찌되었거나 문제는 없다. 충족해야 하는 기준이 낮기 때문이다. 여기서 제시하는 아이디어는 원래 디자이너가 어떤 요구사항을 받았는지 무관하게 이를 충족하는 설계와 구현 양쪽에서 튼튼한 사이트로 가는 최단거리를 찾는 작업이다. 종종 이런 요구사항이 무엇인지 모를 경우에는 유효성 검사가 바로 역공학을 가능하게 만드는 한 가지 방법이다.

하지만 1000페이지가 넘잖아요!

지금까지, 여러분이 유효성 검사기를 수동으로 돌려 사이트에 존재하는 페이지를 모두 하나씩 차례로 돌려봐야 한다고 가정했다. 궁극적으로는 모든 페이지에서 모든 오류를 검출하며, 각 페이지에 적절한 주의를 기울이도록 만드는 방법이 최선이다. 첫 몇 페이지로 작업하다 보면, 종종 (예를 들어 대규모 치환을 통해 헤더 섹션을 변경하는 작업과 같이) 전체 사이트에 적용할 변경 사항이 나오는데, 이를 활용하면 나중에 페이지를 수정하는 작업이 쉬워진다.

하지만 효율성을 강조하면, 유효성 검사를 일괄 작업으로 처리할 필요가 있다. 이런 경우에는 여러분은 W3C 유효성 검사기를 벗어나서 (엄청나게 뛰어난 기술은 아니지만 그럭저럭 쓸만한 기술로 여러 URL을 텍스트 박스에 입력하도록 만들어주는) WDG HTML 유효성 검사기나 (일괄 작업을 수행하도록 만드는 저렴한 프로그램인) CSE HTML 유효성 검사기로 눈을 돌려야 한다(참고자료 참조). 유효성 검사를 일괄 처리할 경우 시간을 절약할지는 몰라도, 대규모 사이트를 다루다 보면 수천 개는 아니더라도 수백 개가 되는 오류에 직면하기 때문에 세부 내역을 놓치기 쉽다는 문제점이 생긴다.

유효성 검사에 목숨을 거는 이유는?

여러분이 대다수 웹 개발자와 같다면, 유효성 검사는 아무리 잘 봐줘도 성가신 존재고, 눈 밖에 나면 끔찍한 악몽이다. 우선 페이지를 유효성 검사기로 돌려야 하며, 수백 개가 넘는 붉은 색 오류 메시지가 나오는데, 사람을 압도해버린다. 하지만 유효성 검사를 하면 페이지 유효성 검사에 들인 노력을 충분히 보상받는 몇 가지 장점이 따라온다.

먼저, 유효한 페이지는 화면에 제대로 출력된다. 유효하지 않은 페이지는 종종 닫는 태그가 빠져 있으며, 부적절한 HTML 태그가 중첩되어 있으며, 심지어 CSS 스타일 태그에 문제도 있다. "있으면 좋은" 항목이 아니라 기대하는 바대로 페이지를 출력하기 위한 사이트 필수 항목이다. bh1 태그가 잘못 놓여있거나 열린 채로 내버려 두면, 갑자기 전체 페이지가 읽기에 너무 큰 글꼴로 도배되며, 놀란 사용자는 즉시 사이트를 벗어난다. 따라서 유효성 검사는 여러분의 페이지에 "예측 가능한"이라는 도장을 찍는 방법이다. 태그를 적절히 사용하면, 페이지는 구조적으로 건전하며, 사용과 탐색도 쉽다.

추가적으로, 유효성 검사는 여러분이 페이지에 가한 변경과 갱신을 항상 점검하는 기능적인 기준점을 제공한다. 페이지가 유효성 검사를 통과한 상태에서 갑자기 유효성이 깨진다면, 단순히 점검하지 않은 변경 내역뿐만 아니라 구조나 심지어 사이트 표현 방법을 엉망으로 만든 원인이 무엇인지 알게 된다. 따라서 코드를 매번 변경한 다음에 컴파일하듯이 유효성 검사를 점검 기능으로 생각하기 바란다. 컴파일(또는 유효성 검사)이 실패하면 뭔가 잘못된 상황이다.

마지막으로 구글, 야후!, MSN과 같은 검색 엔진이 유효한 페이지를 좀 더 쉽게 색인하는지에 대해서는 의견이 분분하다. 이런 검색 엔진이 사용하는 알고리즘은 아주 비밀스럽고 계속 바뀌므로 유효성 검사가 관련이 있다고 말하는 문서를 찾더라도 내용이 바뀌는 바람에 소용이 없어졌다고 말할지도 모르지만, 검색 점수나 색인 결과를 높이는 작용을 한다. 결론은 검색 엔진 개발자가 아닌 이상 우리는 내부 사정을 모르지만 (유효성 검사를 통해) 구조적이고 적절히 출력되는 페이지를 사람들이 좀 더 많이 방문하므로 어떤 검색 순위에서도 상위에 나타나리라 기대한다.




위로


구현: CSS 정리하기

이 시점에서 전반적인 사이트 디자인과 (HTML, XHTML 등) 사이트 설계를 위한 명세 지식을 확보했을 것이다. 이제 마지막으로 사이트 자체를 바꿀 시간이 왔다.

CSS 몰아내기

백업? 테스트? 무대 만들기?

회사마다 프로젝트마다 백업과 개발 절차가 다르다. 하지만 현재 사이트에 구멍을 낼 염려없이 사이트에서 작업을 하려면 뭔가 조치를 취해야 한다. 이런 조치는 사이트를 백업하거나, 사이트 내용을 다른 기계로 중복하는 방법으로 (아니면 http://staging.my-company.com처럼 동일한 기계에 DNS 설정을 다르게 줘서) 진행하는 작업을 의미한다. 여기서 개선 도중에 실제 사이트를 죽이지 않는다는 사실만 확신하면 된다.

HTML transitional, HTML strict, XHTML transitional, XHTML strict 중에 무엇을 택하거나, 페이지에서 스타일을 뽑아내어 외부 CSS 스타일시트로 이동해야 한다. 내용에 표현과 스타일을 섞어 놓은 상황에서, 쉽게 유지보수가 가능한 일관성 있는 사이트를 만드는 간단한 방법은 없다.

CSS와 HTML 분리에 대한 수많은 기사가 웹에 올라와 있으므로 따분한 세부 사항으로 독자들을 괴롭히지는 않겠다(참고자료 참조). 하지만 반드시 지켜봐야 할 몇 가지 항목을 여기에 정리해보았다.

  • 상당히 기계적인 작업이 되어야 한다. 페이지 외형을 개선하려고 노력하지 말자. 단지 HTML 바깥으로 CSS를 몰아내려고 노력하면 된다.
  • 최적화와 CSS 규칙 준수를 걱정하지 말자. HTML 바깥으로 몰아내고 난 다음 단계에서 규칙을 최종 점검하면 된다.
  • 유효성 검사에 대해서 걱정하지 말자. <br />과 닫히지 않은 <p> 태그에 신경쓸 필요가 없다. 언젠가는 하겠지만 지금 당장은 아니다.

작업을 끝내고 나면 HTML 상단은 다음과 같이 보여야 한다.

<![CDATA[
  <head>
    <title>The Starbuzz Bean Machine</title>
    <link rel="stylesheet" type="text/css" href="starbuzz.css" />
    <link rel="stylesheet" type="text/css" href="styledform.css" />
  </head>]]>

이 예제는 다중 스타일시트를 포함한다. 핵심 외향과 느낌에 추가해서 사이트의 특화된 영역이 있다면, 다중 스타일시트를 권장하지만, 이는 어디까지나 선택이다.

CSS 최적화하기

일단 모든 스타일을 HTML 바깥으로 몰아내었다면, CSS 스타일시트가 하나 이상 만들어진다. (CSS 스타일 시트(CSS stylesheet, cascading style sheet stylesheet)라는 이름이 역전앞 거지라고 들리는 사실을 알고 있다. 하지만 어떻게 표현할지 특별한 생각이 없으므로 우스개소리를 계속 즐기기 바란다.) 각각을 골라서 하나씩 각개격파하자. 예를 들어 다음과 같은 스타일 시트가 있다면,

h1 {
  color: #933;
  font: Georgia;
}

h2 {
  color: #933;
  font: Georgia;
}

압축해서 다음과 같은 스타일 시트를 고려해보자.

h1, h2 {
  color: #933;
  font: Georgia;
}

크게 어려운 내용은 없지 않은가? 좀 더 현실적인 사례를 고려해보자. h1, h2 구문이 엄청나게 큰 CSS 스타일 시트에 흩어져 있다고 가정하자. 하나를 바꿨는데, 왜 다른 h1h2에 지정된 글꼴은 잘못 표현되는지 궁금해진다.

이런 문제를 해결하는 한 가지 방법으로 선언을 알파벳 순서로 만든다. 물론 고통스럽긴 하겠지만, h1h2가 하나로 묶이며, table, td, tr이 근처에 놓인다. 비슷한 엘리먼트를 모아놓는 수고를 들여서 스타일을 압축하자.

비슷하게 다음과 같은 선언을 한번 생각해보자.

h1 {
  color: #933;
  font: 16px Georgia;
}

h2 {
  color: #933;
  font: 12px Georgia;
}

공통 엘리먼트를 제거해서 중앙으로 모아야 한다.

h1, h2 {
  color: #933;
  font: Georgia;
}

h1 {
  font-size: 16px;
}

h2 {
  font-size: 12px;
}

이렇게 해도 선언 두 가지가 여전히 존재하지만, 그래도 한 곳에서 공통 부분을 찾을 수 있다(이 경우에는 h1).

CSS 스타일 시트를 훑어보면서 가능한 최고로 조율을 끝내도록 노력하자. 여러분이 만든 규칙을 압축해 대다수 중복을 제거하고, 가능한 규칙을 위로 끌어 올려 정리하자. 예를 들어, 모든 최상위 엘리먼트에 Georgia로 글꼴 설정을 했다면, 이 규칙을 body로 옮겨서 나머지 모든 개별 규칙을 제거하는 방법을 고려하자. 단순함이 미덕이다.

CSS 유효성 검사하기

여기에 두통거리를 줄여주는 선택적인 단계를 제시한다. 일단 CSS 준비가 끝나면, 유효성을 검사한다(그림 4 참조)(참고자료 절에서 CSS 유효성 검사기 링크를 찾아본다). 페이지 유효성 검사기와 마찬가지로, CSS 유효성 검사기는 CSS가 제대로 되어 있는지 확인해준다. 현재 구문 오류도 없고 오탈자도 없다(그림 5 참조).


그림 4. CSS 유효성 검사기
W3C 유효성 검사기는 웹 페이지 유효성 검사기를 보완해주는 서비스다.

그림 5. 성공적인 CSS 유효성 검사 결과
유효한 CSS는 모든 규칙이 올바르며, 구문이 완벽함을 의미한다.

전체 페이지가 유효하다고 확신하는 경우와 비교해서 CSS 유효성은 기술적으로 그렇게 중요하지 않다. 실제로, 유효하지 않은 CSS가 담긴 유효한 HTML(또는 XHTML) 웹 페이지가 존재할 수 있다. 하지만 여전히 CSS 유효성 검사는 모든 사항을 멋지고 깔끔하게 유지하므로 수작업을 통해 CSS를 최적화하도록 만들자.




위로


구현: Doctype 추가하기

여러분의 사이트에 다시 한번 유효성 검사를 수행할 시간이 왔다. 이제 많은 오류가 사라졌으며 CSS는 HTML에서 밖으로 빠졌다(그리고 깨끗하게 정리되어 유효성 검사도 끝났다). 이제 여러분이 작업한 내용을 문서로 만드는 작업을 잊어버리지 말자. 아직 doctype이 없다면, 문자 인코딩 정보와 더불어 추가할 필요가 있다. 이렇게 하면 다음 사람이 유지보수하기가 훨씬 쉬워진다.

doctype 선언 추가하기

유효성 검사기에서 결과를 얻을 때, doctype에 초점을 맞추자(그림 6 참조). 이 결과는 유효성 검사기가 최선을 다해 추측한 결과에 따라 여러분에게 웹 페이지가 무엇을 목표로 하며 어떤 버전인지 알려준다.


그림 6. 유효성 검사기가 doctype을 추측하려고 시도하는 모습
이 웹 페이지에서 문서 유형은 아마 XHTML 1.0 Transitional일 가능성이 높다.

이 경우에, 페이지는 아마 XHTML 1.0 Transitional일 가능성이 높다. 이는 초기에 유효성 검사기를 돌렸을 때 얻은 결과와 다를지도 모르지만, 거의 같다(CSS는 일반적으로 HTML과 XHTML 비교에 영향을 미치지 않는다).

물론 지금 당장은 유효성 검사기가 (대다수 경우에) doctype을 추측하고 있다. 하지만 doctype 선언을 추가해서 이런 추측을 공식화한다. HTML을 열어서 상단에 다음과 같은 내용을 추가하자.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<!-- Rest of your HTML -->
]]>

이 예제는 XHTML 1.0 transitional이다. XHTML 1.0 strict라면 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
]]>

HTML 4.01 transitional은 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
<html>
]]>

HTML 4.01 strict는 다음과 같이 추가한다.

<![CDATA[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
]]>

HTML doctype에서는 html 엘리먼트에 xmlns 속성이 필요하지 않다. 이 속성은 XHTML 전용이다(xmlns는 XML 이름공간이며, 다른 기사에서 다룰 주제다).

이 모든 내용은 유효성 검사기뿐만 아니라 여러분의 웹 사이트를 이어받을 다른 사람에게 여러분 문서의 목표가 무엇인지 선언한다. 유효성 검사기를 다시 한번 돌릴 수 있는데, 유효성 검사기가 추측한 여러분 페이지의 목표와 일치하지 않도록 엉터리로 doctype을 지정하지 않은 이상 큰 차이는 느끼지 못할 것이다. 다시 한번 오류가 발생할 수 있다.

XHTML 청중을 위해: content type

XHTML doctype 중 하나를 사용했다면, 간단한 단계 하나를 더 밟아야 한다. 이 문서에 content type을 지정하는 meta 태그를 붙일 필요가 있다. 예는 다음과 같다.

<![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
 <head>]]>
  <b><meta http-equiv="Content-Type" content="text/html; charset=UTF=8" /></b><![CDATA[
  <title>My Page Title</title>
 </head>
 <!-- etc. -->
]]>

이는 유효성 검사기(아니면 XHTML 순응 웹 브라우저와 같은 기타 프로그램)가 내용을 읽을 때 무엇을 기대할지 알도록 만든다. HTML 페이지에도 content type을 추가할 수 있지만, HTML 4.01 strict에서만 필요한 내용이다. (HTML에서 meta 태그 뒤에 따라나오는 슬래시를 빼야 한다. 이런 규칙은 XTHML 용이다.)




위로


사이트의 유효성 검증하기

CSS와 HTML을 분리했으며, 어떤 HTML/XTHML 버전을 사용하는지 이해하고, doctype과 content type을 지정하고 나면, 미뤄뒀던 오류를 정리할 준비가 되었다.

단순한 오류

다시 한번 유효성을 검사하자. 무엇을 목표로 했는지 명세했으므로 오류를 잡기 시작한다. 그림 7은 HTML 문서에 등장하는 전형적인 문제를 보여준다.


그림 7. 한번에 오류 하나씩 고치기
이런 특정 오류는 form 엘리먼트에서 action 속성이 빠져있음을 알려준다.

이 정도 오류는 고치기가 아주 쉽다. 이 페이지에는 action 속성이 빠진 form 엘리먼트가 있다. 이 속성을 추가하면, 오류가 사라진다. 너무나도 쉽지 않은가?

한번에 오류 하나씩 고치기

일단 첫 오류를 수정했으면, 계속해서 유효성 검사를 진행하자. 시간을 소비해서 오류를 수정하고 유효성 검사를 하고 다른 오류를 잡는 반복적인 작업이 조금 짜증나겠지만 유효성 검사기를 사용하는 가장 효과적인 방법이다. 오류 하나는 다른 오류를 줄줄이 달고 나오므로 오류 하나를 수정하면 여러 오류가 사라지므로 9개나 10개 정도만 수정하면 작업이 끝나게 된다.

HTML 편집기와 여러분 사이트용으로 하나, 유효성 검사기용으로 하나씩 브라우저 창(또는 탭)을 두 개 띄워놓기 바란다. 오류를 수정하고 나서 편집기로 파일을 저장하고, 양쪽 브라우저 탭에서 새로 고침 버튼을 눌러 갱신된 사이트와 유효성 검사 보고서를 살펴본다.

기준점 정의와 잠그기

유효한 페이지를 얻었다면, 이 버전을 잠글 필요가 있다. 백업하고, ZIP 드라이브나 USB 메모리에 복사하자(물론 큰 글씨로 메모를 적어 여러 장소에 분산해 놓아야 한다). 이런 식으로 사이트를 위한 기준점을 확립했다.

이제 변경할 때마다 다음과 같은 몇 가지 작업을 수행해야 한다.

  • 페이지가 여전히 유효한지 확인한다. 유효한 상태로 시작했기에, 새로운 코드와 예전 코드를 동시에 다루는 대신 점진적으로 점검 작업을 수행할 수 있다.
  • 페이지가 제대로 보이는지 확인하자. 여기서도 기준점만 있다면 문제 원인 파악이 쉽다.
  • 재앙에 직면하면 이 기사에 나온 모든 작업을 되풀이할 필요가 없다. 유효하고 내부에 문서화가 되어 있는 버전에서 시작할 수 있다.



위로


사이트 개선은 언제 하지?

이 기사는 (대다수 담당자 입장에서) 따분하고 지루한 과업에 초점을 맞추며, 웹 사이트가 실제로 보이는 방법에 영향을 미치는 내용은 거의 다루지 않는다. 이렇게 하는 이유는 선행 지식이 없는 상황에서도 사이트를 유지 보수 가능하게 만들기 위해서다.

뭔가 개선점을 찾는 대신 업무 부하를 줄이려고 노력하는 경우가 있다. 디자인 변경을 하고 싶다면 그렇게 하자. 하지만 출발점을 잘 닦아 놓았으므로, CSS를 정리하고 XHTML을 사용할지 아니면 HTML strict를 사용할지 아니면 다른 뭔가를 사용할지 고민하면서 디자인 작업에 들어가는 대신 원래 업무에 집중할 수 있다.

사이트 개선을 원하지 않더라도 어쨌거나 작업은 마친 셈이다. 여러분에게는 유효한 사이트가 있다. 하지만 더욱 중요하게, 이 사이트를 유지 보수 가능하게 만들었기에, 문제가 생겨도 찾아서 수정하기가 쉬울 것이다.




위로


결론

명백히 다른 누군가의 웹 사이트를 다루는 작업은 그리 유쾌하지 않다. 디자인, (잠재적으로 잘못된) HTML과 CSS 선택, 색상, 마크업과 구조 선택에 발목이 잡힌다. 따라서 주기적인 유지 보수를 하기 위해 들어가는 시간을 최소로 소비하며, 사이트 디자인 개선과 다른 즐거운 작업에 자신의 시간을 투입하도록 만드는 목표가 핵심이다.

이렇게 하기 위해 주어진 사이트와 안정적이고 이해도가 높은 사이트 사이에 벌어진 격차를 줄이는 최단 거리를 찾아내는 방법이 최선이다. 이는 사이트 상태가 어떤지, 어디로 가야 하고, 도착을 위해 어떤 단계를 밟아야 할지를 인식함을 의미한다. 이 기사는 여러분이 물려받은 사이트가 디자인 대상을 차지하는 대신, 디자인 승부사들이 작업하기 쉽게 만드는 목표로 작성했다. HTML이든 XTHML이든 strict든 tranditional이든 현존하는 사이트 형식을 따라서 완벽하게 CSS와 HTML 구현으로 바꿔 놓으면 중장기적인 관점에서 상당한 시간을 절약할 수 있다.

이 기사 2부에서는 속력, 접근성, 조직성을 소개할 것이다. 여러 가지 다양한 고려 사항이 있지만, 단순한 유지보수라는 목표는 동일하다. 따라서 화끈하고 새로운 디자인을 할 때 두통거리를 없애려면 웹 사이트를 미리 손봐놓자. 다음 달에 더 많은 내용으로 돌아오겠다.



참고자료

교육

제품 및 기술 얻기
  • Head First HTML with CSS & XHTML(Elizabeth and Eric Freeman, O'Reilly Media, Inc.): 표준화된 HTML과 XHTML에 대한 지식과 CSS를 어떻게 HTML에 적용하는지 방법을 소개한다.

  • JavaScript: The Definitive Guide(David Flanagan, O'Reilly Media, Inc.): 이 책은 자바스크립트를 사용해서 동적 웹 페이지로 작업하기 위한 광범위한 내용을 포함한다. 다음 판은 Ajax에 대한 두 장을 추가했다.

  • IBM 평가판 소프트웨어: DB2®, Lotus®, Rational®, Tivoli®, WebSphere® 같은 개발 도구와 미들웨어 제품군 평가판을 실험해보자.


토론


필자소개

Photo of Brett McLaughlin

Brett McLaughlin은 로고(작은 삼각형이 기억나는가?) 프로그래밍 언어 시절부터 컴퓨터로 작업을 해왔다. 최근에 McLaughlin은 자바와 XML 공동체를 통틀어 가장 잘 알려진 저자이자 프로그래머 중 한 명이 되었다. McLaughlin는 넥스텔 커뮤니케이션에서 일하며, 복잡한 엔터프라이즈 시스템을 구현하고 있다. 루트리스 테크놀로지에서는 응용 프로그램 서버를 실제로 작성했다. 가장 최근에는 오라일리 미디어에서 집필과 편집을 맡고 있다. McLaughlin이 선보일 책인 Head Rush Ajax는 수상 경력이 풍부하고 창의력으로 뭉친 Head First 시리즈를 Ajax에 접목한 내용이다. McLaughlin이 가장 최근에 쓴 책인 Java 1.5 Tiger: A Developer's Notebook은 최신 자바 기술을 다루는 책이다. McLaughlin이 쓴 고전적인 Java and XML은 자바 언어에서 XML 기술을 활용하는 모범 답안으로 남아있다.

Posted by 1010
98..Etc/GlassFish2008. 12. 10. 11:32
반응형

대부분의 엔터프라이즈 애플리케이션은 안전한 환경에서 실행할 필요가 있습니다. TLS(Transport Layer Security)/SSL(Secure Sockets Layer)은 포인트 투 포인트 보안 전송 메커니즘으로, 클라이언트 및 서버 간에 교환되는 메시지를 인증하고 메시지의 무결성 및 기밀성(confidentiality) 보장을 위해 사용할 수 있습니다. TLS/SSL(이 팁에서는 간단히 "SSL")은 대부분의 엔터프라이즈 애플리케이션 환경의 보안 요구사항을 충족하며 널리 채택되고 있습니다.

그러나 SSL에 의해 보호된 메시지 교환을 위해서는 서버가 SSL 서버로서 작동할 수 있어야 합니다. 이 팁에서는 GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 방법을 제시합니다.

각 단계별 설명으로 나아가기 전에, 키와 인증서와 같은 SSL의 기본 개념 몇 가지를 이해해야 하며 프로파일이라는 GlassFish v2의 개념도 이해할 필요가 있습니다.

키와 인증서

SSL에서 두 가지 중요한 개념은 키와 인증서입니다. 키는 클라이언트와 서버 사이의 트랜잭션에서 개인 정보 보호(privacy)와 신뢰(trust)를 구축하는 데 사용됩니다. SSL은 공개 키 암호화를 사용하며 이는 키 페어(key pairs)를 기반으로 합니다. 키 페어에는 하나의 공개 키와 하나의 개인 키가 포함됩니다. 데이터가 하나의 키로 암호화된 경우, 그것은 오직 그 페어의 나머지 한 키로만 해독될 수 있습니다.

인증을 위해서는 인증서가 사용됩니다. SSL을 사용하기 위해서는 서버에 연결할 수 있는 각 클라이언트의 IP 주소에 대해 각기 연관된 인증서가 있어야 합니다. 인증서는 서버 사이트의 소유자를 식별하며 관련 정보를 제공합니다. 인증서는 소유자에 의해 디지털로 암호화한 서명이 포함됩니다. 인증이 증요한 사이트의 경우, 인증서는 잘 알려진 신뢰성 있는 인증 기관으로부터 구입할 수 있습니다. 그러나 인증이 크게 중요하지 않은 사이트의 경우에는 자가 서명 인증서(self-signed certificate)를 사용할 수도 있습니다.

GlassFish v2 프로파일

GlassFish v2는 다양한 용도의 프로파일을 지원합니다. 각 프로파일은 애플리케이션 서버에 대한 구성 매개변수를 미리 설정하여 특정 유형의 용도로 최적화합니다. 세 가지 프로파일에는 개발자(developer), 클러스터(cluster) 및 엔터프라이즈(enterprise)가 있습니다.

개발자 프로파일은 개발 환경에서 사용하기 위해 GlassFish v2를 최적화합니다. 이는 구성 매개변수가 빠른 구동(fast startup)과 같은 목표는 지원하지만 로깅 또는 세션 복제와 같은 기능은 지원하지 않는다는 의미입니다. 클러스터 프로파일은 클러스터 생성 및 세션 복제를 가능하게 하는 구성 매개변수를 설정합니다. 클러스터는 GlassFish v2 인스턴스의 그룹으로 단일 논리 개체로서 관리하고 모니터할 수 있습니다. 엔터프라이즈 프로파일은 프로덕션 환경으로 GlassFish v2를 최적화합니다. 또한 로깅 및 기타 보안 관련 기능을 지원합니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키기

GlassFish v2를 SSL 서버로 작동시키는 단계는 애플리케이션 서버를 위해 사용된 프로파일에 따라 결정됩니다. 먼저 개발자 프로파일이 사용되는 경우의 프로세스를 살펴본 다음 엔터프라이즈 프로파일이 사용될 때의 프로세스를 검토합니다.

개발자 프로파일이 사용되는 경우

GlassFish v2 프로파일이 특정 유형의 용도를 위해 구성 매개변수를 미리 설정한다는 점을 상기하십시오. 이들 매개변수 중 하나가 Security Store인데 이것은 인증서와 키와 같은 보안 및 신용 관련 정보가 어떻게 저장되는지를 나타냅니다. 개발자 프로파일의 경우 Security Store 값은 JKS로 설정됩니다. 이 경우 서버에 대한 인증서와 키는 자바 키스토어 파일(keystore.jks)에 저장되며 인증서는 신뢰할 수 있는 CA에 의해 발행되며 인증서 파일(cacerts.jks)에 저장됩니다.

GlassFish v2를 설치할 때 서버 인증서로 자가 서명 인증서가 기본적으로 생성됩니다. 그러나 인증이 사용자의 사이트에서 중요한 경우라면, 자가 서명 인증서를 CA로부터의 디지털 서명 인증서로 교체할 필요가 있습니다. 이 섹션에서는 자가 서명 인증서를 대체하는 방법, CA에서 서버 인증서를 확득하는 방법 및 서버 인증서를 키스토어로 가져오는 방법을 설명합니다.

아래에 기술된 단계에서는 키 및 인증서 관리 툴인 keytool을 사용합니다. Keytool은 여러 버전의 자바 플랫폼, 스탠다드 에디션(자바 SE) 개발 킷(jdk)에서 사용 가능합니다. 한편 자바 SE 6에서는 keytool.에 몇 가지 필수 기능이 추가되었습니다. 아래의 명령은 jdk 6 버전의 keytool을 기반으로 합니다. keytool에 대한 자세한 정보는 JDK 툴 및 유틸리티를 참조하십시오.

다음은 애플리케이션 서버가 개발자 프로파일로 구성될 때 GlassFish v2를 SSL 서버로 작동시키기 위한 명령문입니다.

  1. 다음 명령을 수행하여 기본적으로 설치된 자가서명 인증서를 삭제하십시오(참고: 이 단계와 이후의 단계의 명령문은 포맷을 위해 여러 줄에 걸쳐 표시되었음).        keytool -delete -alias s1as -keystore keystore.jks
           -storepass <store_passwd>

    이 때 <store_passwd>는 키스토어에 대한 비밀번호(예: "mypass")입니다. s1as는 GlassFish v2 키스토어의 디폴트 alias입니다.

  2. 다음 명령을 수행하며 애플리케이션 서버를 위한 새로운 키 페어를 생성하십시오.       keytool -genkeypair -keyalg <key_alg>
          -keystore keystore.jks -validity <val_days> -alias s1as

    이 때 <key_alg>는 키 페어 생성을 위해 사용되는 알고리즘(예: RSA)이며 <val_days>는 인증서의 유효일 수(예: 365)입니다.

    키 페어 생성 외에도 해당 명령문은 공개 키를 자가 서명 인증서로 보호하고 인증서와 비밀 키를 alias에 의해 식별되는 새로운 키스토어 엔트리에 저장한다는 점에 유의하십시오.

    인증서의 이름이 사용자 사이트의 완전한 호스트 이름과 일치하도록 보장하는 것이 중요합니다. 그 이름이 일치하지 않으면 서버에 연결하는 클라이언트는 인증서의 이름이 사이트의 이름과 일치하지 않는다는 보안 경고를 받게 될 것입니다. 기본적으로 설치된 자가서명 인증서의 이름이 완전한 호스트 이름과 일치하는지 알고 있어야 합니다.

  3. 다음 명령을 수행하여 CSR(Certificate Signing Request)을 생성하십시오.       keytool -certreq -alias s1as -file <certreq_file>
          -keystore keystore.jks -storepass <store_passwd>

    여기서 <certreq_file>은 CSR이 저장되는 파일(예: s1as.csr)이며 <store_passwd>는 키스토어에 대한 비밀번호(예: changeit)입니다.

  4. VeriSign과 같은 CA에 CSR을 제출하십시오. 그러면 사용자는 응답으로 서명된 서버 인증서를 받게 될 것입니다. CA의 CA 인증서뿐만 아니라 응답에서 CA가 식별한, 중간에 발생한 모든 인증서를 브라우저로 가져와야 합니다.
  5. CA로부터 받은 서명된 서버 인증서를 마커 -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 를 포함하여 s1as.cert와 같은 파일에 저장하십시오. CA 인증서 및 모든 중간 CA 인증서를 다운로드하고 로컬 파일에 저장하십시오. CA 및 중간 CA 인증서를 브라우저로 가져오는 방법에 대해서는 브라우저 문서를 참조하십시오. Mozilla 및 Internet Explorer와 같은 다양한 브라우저로 CA 인증서를 가져오는 방법에 대한 정보는 CA에서 제공할 수도 있습니다.
  6. 원래의 자가 서명 인증서를 CA로부터 획득한 인증서(s1as.cert와 같은 파일에 저장)로 대체하십시오. 이를 위해 keytool 을 사용할 수 있으나 여러 단계를 필요로 합니다. 다음 자바 프로그램을 수행하면 더 쉽게 대체할 수 있습니다.

          import java.io.*;
          import java.security.Key;
          import java.security.KeyStore;
          import java.security.cert.Certificate;
          import java.security.cert.CertificateFactory;
          import java.security.cert.X509Certificate;
         
           
          public class Main {
              public static void main(String[] args) throws Exception {
                //args[] error checking logic omitted
                //file containing signed cert reply from CA
                String csrReplyFromCA = args[0];    
                //Path to GlassFish keystore.jks
                String keystoreLocation = args[1];  
                //Password for GlassFish keystore.jks
                String keystorePassword = args[2];  
                //The keyalias to be replaced : s1as in our example
                String selfSignedKeyEntry = args[3];
                 
                //create the signed Cert
                Certificate cert = null;
                FileInputStream fis =
                   new FileInputStream(csrReplyFromCA);
                CertificateFactory cf =
                   CertificateFactory.getInstance("X.509");
                cert = cf.generateCertificate(fis);
                 
                //now replace the original entry
                char[] passwordChars =
                   keystorePassword.toCharArray();
                KeyStore keystore = KeyStore.getInstance("JKS");
                keystore.load(new FileInputStream(keystoreLocation),
                   passwordChars);
                Key key = keystore.getKey(selfSignedKeyEntry,
                   passwordChars);
                keystore.setKeyEntry(selfSignedKeyEntry, key,
                   passwordChars, (new Certificate[]{cert}));
                keystore.store(new FileOutputStream(
                   keystoreLocation), passwordChars);
              }
          }

프로그램을 수행한 후에, GlassFish 키스토어 내의 인증서 s1as가 더 이상 원래의 자가 서명 인증서가 아니라 CA로부터 받은 인증서(response certificate)라는 것을 확인해야 합니다. 다음은 VeriSign으로부터 획득한 새 s1as 인증서와 원래의 s1as 인증서를 비교한 예입니다.

원래의 s1as (자가 서명):

Owner: CN=KUMAR, OU=Sun Java System Application Server, O=Sun
Microsystems, L=Santa Clara, ST=California, C=US
Issuer: CN=KUMAR, OU=Sun Java System Application Server, O=Su
n Microsystems, L=Santa Clara, ST=California, C=US
Serial number: 472acd34
Valid from: Fri Nov 02 12:39:40 GMT+05:30 2007 until: Mon Oct
30 12:39:40 GMT+05:30 2017

새로운 s1as (CA로부터 서명된 인증서 포함):

Owner: CN=KUMAR, OU=Terms of use at www.verisign.com/cps/test
ca (c)05, OU=Sun Java System Application Server, O=Sun Micros
ystems, L=Santa Clara, ST=California, C=US
Issuer: CN=VeriSign Trial Secure Server Test CA, OU=Terms of
use at https://www.verisign.com/cps/testca (c)05, OU="For Test
Purposes Only. No assurances.", O="VeriSign, Inc.", C=US
Serial number: 1375de18b223508c2cb0123059d5c440
Valid from: Sun Nov 11 05:30:00 GMT+05:30 2007 until: Mon Nov
26 05:29:59 GMT+05:30 2007

이러한 단계를 수행한 후에 GlassFish v2를 다시 시작하고 CA에 의해 발행된 서명된 서버 인증서를 사용할 수 있습니다.

클러스터 프로파일이 사용되는 경우

애플리케이션 서버가 클러스터 프로파일로 구성되는 경우, GlassFish v2를 SSL 서버로 작동시키려면 개발자 프로파일에 대해 수행했던 것과 동일한 단계를 수행합니다. 그러나 이 경우에 동일한 서버 키가 클러스터 내의 모든 애플리케이션 서버 인스턴스에 복제된다는 것을 확실하게 알아 둘 필요가 있습니다.

엔터프라이즈 프로파일이 사용되는 경우

엔터프라이즈 프로파일을 위한 Security Store 매개변수는 NSS이며 이는 네트워크 보안 서비스(Network Security Services)를 나타냅니다. NSS 보안 인프라에는 JKS 키스토어가 없으며 따라서 디폴트 GlassFish 키스토어가 없습니다.

GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키는 단계는 개발자 프로파일이 사용될 때와 엔터프라이즈 프로파일이 사용될 때가 대체로 유사합니다. 그러나 두 가지의 차이점이 있습니다. 첫 번째 차이는 프로세스의 첫 단계와 관계가 있습니다. JKS 키스토어가 없기 때문에 사용자는 비어 있는 키스토어(keystore.jks)로 프로세스를 시작합니다. 두 번째 차이는 프로세스의 마지막 단계와 관련이 있습니다. 결과로 얻은 서명 인증서를 JKS 키스토어로 가져오는 대신 사용자는 그것을 NSS 스토어로 가져옵니다. 즉, GlassFish v2 애플리케이션 서버를 SSL 서버로 작동시키려면 위에서 설명한 개발자 프로파일이 사용되는 경우와 동일한 단계를 수행하지만 비어 있는 키스토어로 시작하고 6단계를 다음으로 대체합니다.

  1. 다음 명령을 사용하여 키스토어로부터 서버 인증서를 위한 비밀키를 PEM(Privacy Enhanced Mail) 포맷으로 보내십시오.       keyexport.bat -keyfile serverkey.pem
          -keystore keystore.jks -storepass changeit -alias s1as

    이 명령문은 keyexport 유틸리티를 호출합니다. keyexport 패키지에 keyexport가 있습니다. 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

    위 명령에 대한 응답으로 키스토어 비밀번호 입력 프롬프트가 나타날 것입니다. 키스토어 비밀번호는 키 비밀번호와 동일하므로 리턴키를 누르면 됩니다.

    이것은 serverkey.pem 파일을 생성하며 이 파일에는 마커 -----BEGIN PRIVATE KEY----- 와 -----END PRIVATE KEY----- 아래에 서버 비밀 키가 포함됩니다.

  2. CA로부터 응답으로 온 서명 인증서(signed certificate reply)를 마커 -----BEGIN CERTIFICATE----- 와 -----END CERTIFICATE----- 를 포함하여 servercert.pem 파일에 추가하십시오. 마커 END PRIVATE KEY 아래에 그 응답을 추가하십시오.
  3. serverkey.pem 파일을 PKCS#12 파일(확장자가 .pfx인 파일)로 변환하십시오. "PKCS"는 RSA Security에 의해 고안 및 발행된 공개 키 암호화 표준의 그룹을 가리킵니다. PKCS#12는 비밀키와 그에 수반되며 비밀번호 기반의 대칭 키로 보호되는 공개 키 인증서를 저장하는데 흔히 사용되는 파일 형식을 정의합니다.

    serverkey.pem 파일을 PKCS#12 파일로 변환하는데 사용할 수 있는 툴은 여러가지가 있습니다. openssl 툴은 그러한 것 중 하나입니다. 다음은 openss1을 사용하여 파일을 변환하는 명령문입니다.

          openssl pkcs12  -export  -in serverkey.pem -out s1as.pfx

    위 명령에 대한 응답으로 익스포트 비밀번호 입력 프롬프트가 나타날 것입니다. "changeit"과 같은 비밀번호 또는 GlassFish 마스터 비밀번호를 입력하십시오.

    s1as.pfx 파일에는 이제 서명이 있는 서버 인증서 및 비밀 키가 포함될 것입니다.

  4. 원래의 s1as 자가서명 항목이 있으면 다음 명령을 수행하여 삭제하십시오.       certutil -D -n s1as -d $AS_NSS_DB

  5. pk12util 유틸리티를 사용하여 새 s1as.pfx 파일을 NSS 스토어로 가져오는 명령문은 다음과 같습니다.       pk12util -i s1as.pfx -d $AS_NSS_DB

    pk12util은 엔터프라이즈 프로파일을 위한 GlassFish 설치 임시 디렉토리 내에서 이용 가능한 NSS 유틸리티입니다. 그 유틸리티는 PCKS#12 파일을 NSS 스토어로 가져오거나 스토어에서 내보내는 데 사용됩니다.

    명령문에 대한 응답으로, NSS 소프트 토큰 및 PKCS#12 파일에 대한 비밀번호 입력 프롬프트가 나타날 것입니다. 적절한 비밀번호를 입력하십시오. 그러면 가져오기가 성공적으로 수행되었다는 다음과 같은 메시지를 볼 수 있을 것입니다.

          pk12util: PKCS12 IMPORT SUCCESSFUL  

고려해야 할 두 가지 경우가 있습니다.

  • 애플리케이션 서버 프로파일이 엔터프라이즈 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 스토어 내에 alias가 s1as인 항목이 이미 있는 경우에는 "엔터프라이즈 프로파일이 사용되는 경우"에서 설명한 대로 4단계를 수행하여 원래의 항목을 삭제하기만 하면 됩니다.      certutil -D -n s1as -d $AS_NSS_DB

    그리고 나서 5단계를 수행하여 새로운 s1as.pfx 파일을 NSS 스토어로 임포트합니다.

          pk12util -i s1as.pfx -d $AS_NSS_DB

    alias가 s1as인 항목이 스토어에 없으면 5단계만 수행하십시오.

  • 애플리케이션 서버 프로파일이 개발자 프로파일이며 서버 키 페어가 이미 PKCS#12 파일에 있습니다. 이러한 경우에 엔터프라이즈 프로파일이 사용되는 경우 에서 설명한 대로 5단계를 수행하여 원래의 s1as 항목을 삭제하기만 하면 됩니다. 그 후 pkcs12import 유틸리티를 사용하여 PCKS#12 파일을 GlassFish 키스토어로 가져오십시오.      pkcs12import.sh -file s1as.pfx -alias s1as
         -keystore keystore.jks -storepass changeit
         -pass <exp_password>

    이 때 <exp_password>는 PKCS#12 파일이 보내졌을 때 사용되었던 비밀번호(예: changeit)입니다.

    pkcs12import 패키지에 pkcs12import 유틸리티가 있으며 이 패키지는 Project Metro의 XWSS 다운로드 페이지에서 다운로드할 수 있습니다.

자세한 정보

GlassFish와 SSL에 대한 더 자세한 정보는 GlassFish v2로 SSL 및 CRL 확인(SSL and CRL Checking with GlassFish v2)를 참조하십시오.

또한 다음 리소스도 참조하십시오.


저자 정보

Kumar Jayanti는 썬마이크로시스템즈의 공학자 직원이며 웹 기술 및 표준 팀에서 일하고 있습니다. 현재 Kumar는 XML과 웹 서비스 보안 구현 부문에서 주역을 맡고 있으며 또한 최근에는 GlassFish 보안 모듈도 책임지게 되었습니다. 그는 2004년 초반부터 썬에서 웹 서비스 보안 분야에 관여해 왔으며 인도 Mumbai의 IIT에서 Computer Science 공학석사(M.Tech) 학위를 취득했습니다. 그의 관심 영역은 분산 컴퓨팅, CORBA, XML, 웹 서비스 및 보안 분야입니다.



이 글의 영문 원본은
http://java.sun.com/mailers/techtips/en ··· v07.html
에서 보실 수 있습니다.

"Java EE" 카테고리의 다른 글

Posted by 1010
98..Etc/GlassFish2008. 12. 9. 18:37
반응형

https://glassfishplugins.dev.java.net/eclipse33/

 

1. GlassFish V2를 받는다.

https://glassfish.dev.java.net/public/downloadsindex.html

(GlassFIsh 중 최근에 나온 안정버전)

 

2. Eclipse 3.3을 받는다.

http://www.eclipse.org/downloads/

 

3. GlassFIsh V2를 설치한다.

다운 받은 glassfish-installer-v2ur1-b09d-windows.jar 를 설치하려면
시스템에
자바가 설치되어 있어야 한다.

(JDK5 나 그 이상의 버전)

 

그리고 자바가 설치된 곳이 JAVA_HOME으로 설정되어 있어야 한다.

예) E:\java\jdk1.6.0_05\

 

실행에서 cmd로 콘솔을 띄운 후

jar파일이 있는 곳에서 다음을 실행한다.

java -Xmx256m -jar glassfish-installer-v2ur1-b09d-windows.jar 
cd glassfish
lib\ant\bin\ant -f setup-cluster.xml 
(다운 받은 GlassFish V2 UR1 버전이 Clustering 지원 버전일 때)
4. 이클립스 플러그인을 받는다.
다운 받은 이클립스는 압축을 풀면 설치가 끝난다.
자세한 그림과 영문으로 된 설명이 아래 주소에 있다.
https://glassfishplugins.dev.java.net/eclipse33/index.html
1) perspective를 "Java EE"로 바꾼다.
2) Server Tab에서 오른쪽 단추로 "New Server"마법사를 실행한다.
3) "Download addtional server adapters" 링크를 클릭한다.
4) GlassFish Java EE 5 Server를 선택한다.
5) License에 동의하고 GlassFish Adaptor를 받는다.
6) OK를 눌러 다운받는다.
7) 다 받은 후에 이클립스를 재시작한다.
8) 재시작후에 "New Server"마법사에서 GlassFish를 찾을 수 있다.
9) 자신의 원하는 GlassFIsh버전을 선택한다.
GlassFish V2를 선택해보겠다.
10) "Browse..." 버튼을 클릭해서 GlassFish가 설치된 곳을 정해준다.
11) 서버설정을 해 준다.
기본값은 다음과 같다. 나중에 자기가 원하는 값으로 바꿔준다.
Address : localhost
Server port Number : 8080
Admin Server Port Number : 4848
Domain Name : domain1
Administrator Id : admin
Administrator Password : adminadmin
12) new Server (GlassFish V2) 가 Servers 탭에 생겼다.
팝업메뉴에서 서버를 실행시킬 수 있다.
13) 서버를 실행하면 Started로 status가 바뀐다.
Console 탭에서 server log를 볼 수 있다.
14) 이제 Java EE5 Web Application을 만들어보자.
"Dynamic Web Project"를 만들자.
15) 프로젝트 이름을 쓰고,  Target runtime 을 GlassFish V2 Java EE 5로 정한다.
16) 다음단계에서 Web Application을 위한 Servelt 2.5(java EE 5 호환가능) 버전을 확인할 수 있다.
그리고 기본적으로 sun-web.xml을 배치 기술자로 사용하고 싶으면, 선택해라.(기본값이다)
17) 아주 간단한 index.jsp를 만들자.(이클립스에서 기본적으로 만들어주지 않는다.)
18) "Run on Server"를 클릭하면 Web Application이 deploy된다.
그리고 index.jsp 페이지를 브라우저에서 볼 수 있다.
 
만약 다음과 같은 에러가 난다면 eclipse plug-in을 업데이트 해야한다.
--------------------------------------------------------------------------------------------
Publishing to GlassFish V2...(Time of error: March 2, 2008 7:19:57 AM EST)
Reason:
java.lang.NullPointerException.
--------------------------------------------------------------------------------------------
관련 Forum
http://forums.java.net/jive/thread.jspa?messageID=265331&tstart=0
https://bugs.eclipse.org/bugs/show_bug.cgi?id=219627
wst 2.0.2 플러그인이 문제가 있다고 한다.
[Software Updates]-[Find and Install] - [Search for Updates of the currently installed features]
에서 업데이트 하면 자연스럽게 문제가 해결된다.

이 문제로 계속 삽질했음...ㅡ.ㅡ/
Posted by 1010
98..Etc/GlassFish2008. 12. 9. 11:52
반응형

GlassFish Community


GlassFish is an enterprise-quality Java EE 5 application server that offers advanced clustering, centralized administration, and best-in-class performance built by the GlassFish community. The Java EE SDKs contain Sun GlassFish Enterprise Server, previously named Sun Java System Application Server. Read the overview article, The GlassFish Community Delivering a Java EE Application Server.

Sun GlassFish Enterprise Server
Sun GlassFish Enterprise Server and SDKs
Sun GlassFish Enterprise Server v3 Prelude
 

For More Information

 
About the GlassFish Community
 About the GlassFish Community
Learn all about the GlassFish project, why Sun created it and answers to other common questions. Also see the Related GlassFish Technologies page.
» Read more
 
Use the Technology
 Use the Technology
Learn how to use the technology developed by the GlassFish community.
» Read more
 
Get It!
 Get It!
This is the place to download general distribution releases related to Project GlassFish.
» Read more
 
Improve It!
 Improve It!
Help to improve the Java EE 5 application server built by the GlassFish community, or discover how the GlassFish community is implementing technologies and features such as Grizzly, EJB 3.0 and Persistence, admin tools and more.
 
Also see GlassFish documentation, the GlassFish FAQ, the GlassFish Developers Spotlight page, and The Basics of GlassFish article. Use and contribute to Samples for Project GlassFish. And be sure to visit the Project GlassFish Quality page for information about getting and running Quicklook tests, links to bug stats and the latest test reports, details about TestNG, and more.
 

Support and Training

 
 Sun GlassFish Enterprise Server Subscriptions
A subscription is ideal for production deployments. Sun GlassFish Enterprise Server subscriptions offer a one-stop shop for product and service with immediate web access to software support, updates and upgrades, production and code support, training, and much more. Subscriptions are only valid for Sun GlassFish Enterprise Server installations.
 
 Sun GlassFish Enterprise Server: Introduction
Take this training course to learn about Sun GlassFish Enterprise Server's significant new features for ease of development and improved developer productivity, performance, monitoring, administration, clustering, and more.
 
Java EE Training and Certification
Find out about Java EE certification programs and additional Java EE training courses.
 
 
Spotlight

Download GlassFish v2  Download GlassFish v2
Sun GlassFish Enterprise Server v2, previously named Sun Java System Application Server 9.1, has been released as part of Java EE 5 SDK and Java Application Platform SDK. Download either of those SDKs.

» Read more spotlight stories
 
 
What's New

Daily news from the GlassFish Community is available at The Aquarium.
 
November 21, 2008
GlassFish and MySQL, Part 2: Building a CRUD Web Application With Data Persistence Learn how to use the NetBeans IDE with GlassFish and MySQL to build a create, read, update, and delete (CRUD) application.
 
November 21, 2008
Screencast: Build a Simple Web Application Using Eclipse and GlassFish v3 Prelude This screencast shows you how to create a simple Web application using JavaServer Pages and servlets in Eclipse 3.4, debug it, and rapidly deploy it directly on GlassFish v3 Prelude. Watch other Java EE screencasts too.
 
 
November 14, 2008
GlassFish and MySQL, Part 1: A Perfect Combination for Web Applications Learn why the combination of GlassFish and MySQL is a perfect choice for developing and deploying web applications.
 
November 14, 2008
GlassFish Update Center Find and install additional applications for GlassFish v2. View all modules or see the most popular or most recent modules.
 
November 12, 2008
Multilingual Java EE SDKs Now Available Update 6 versions of the Java EE 5 SDKs and Java Application Platform SDKs now offer multilingual support. Documentation for the SDKs is available in Japanese and Simplified Chinese and in several languages for the application server. Download the SDKs now.
 
November 6, 2008
GlassFish v3 Prelude Released Sun GlassFish Enterprise Server v3 Prelude improves productivity with rapid deployment technology and modular architecture based on OSGi. Read the overview and download it now.
 
November 6, 2008
GlassFish v3 Prelude Videos Learn more about GlassFish v3 Prelude in these three videos: Introducing GlassFish v3 Prelude, What's New in GlassFish v3 Prelude?, and Java EE 6 and GlassFish.
 
Posted by 1010
98..Etc/Etc...2008. 12. 9. 09:53
반응형
  ANYBBS(모바일 게시판) 통합 메뉴얼
 
    배포일 : 2008/03/27 [Download]
 
    메뉴얼 상세설명 보기 >>
 
  ANYBBS_ASP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS_PHP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS_JSP(모바일 게시판) 1.0
 
    배포일 : 2008/03/27 [Download]
 
    샘플 상세설명 보기 >>
 
  ANYBBS(모바일 게시판) BETA 0.1
 
    배포일 : 2008/03/05 [Download]
 
    샘플 상세설명 보기 >>
 
  수학 행렬 퀴즈
 
    배포일 : 2007/03/10 [Download]
 
    샘플 상세설명 보기 >>
 
  회사소개 폰페이지
 
    배포일 : 2007/03/12 [Download]
 
    샘플 상세설명 보기 >>
 
  Input Size 동적 처리 샘플
 
    배포일 : 2007/03/13 [Download]
 
    샘플 상세설명 보기 >>
 
  KUN 브라우저용 Table bordercolor 설정 방법
 
    배포일 : 2007/03/18 [Download]
 
    샘플 상세설명 보기 >>
 
  table 응용 가로 막대 그래프 샘플
 
    배포일 : 2007/04/06 [Download]
 
    샘플 상세설명 보기 >>
 
  모바일 미팅 서비스 샘플
 
    배포일 : 2007/05/31 [Download]
 
    샘플 상세설명 보기 >>
 
  모바일 화보 서비스 샘플
 
    배포일 : 2007/05/31 [Download]
 
    샘플 상세설명 보기 >>
 
  JSP 샘플 프로젝트
 
    배포일 : 2007/09/03 [Download]
 
  Calender 샘플
 
    배포일 : 2007/11/30 [Download]
 
    샘플 상세설명 보기 >>
Posted by 1010
05.JSP2008. 12. 8. 18:00
반응형
 

JSP 2.0: 뭐가 바뀌었나? - 2부

원문 : http://www.onjava.com/pub/a/onjava/2003/12/03/JSP2part2.html

by Hans Bergsten, JavaServer Pages, 3판의 저자

번역 손권남(kwon37xi_aT_yahoo dOt co DoT kr

2004/07/29

이것은 JavaServer Pages(JSP) 2.0 명세에 추가된 사항들을 설명하는 시리즈의 두번째 글이다. 1부에서는 새로운 표현식(Expression Language)에 대해서 설명했으나, 알아둘게 더 많이 있다. 이번 회에서는 오류 처리 부문에서의 발전된 모습과 새로운 배치 기술자(deployment descriptor) 기능에 대해 알아볼 것이다. 나는 당신이 JSP 1.2에 익숙하고 JSP Standard Tag Library(JSTL)에 대해 들어보기는 했다고 가정하고 글을 썼다.

JSP Error Pages

JSP나 서블릿에서 JSP 오류 페이지를 사용해 보았다면, 이 페이지를 불러들인 예외에 관해 출력하거나 로그 정보를 보여주기를 바랬을 것이다. 하지만 JSP 1.2에서는 그게 그리 쉬운일이 아니다. 그 이유는 errorPage 선언을 가진 서블릿과 JSP가 예외를 request 속성(attribute으로 전달하고, 서로 다른 속성 이름을 사용하기 때문이다. 오직 JSP 속성 이름으로 전달된 예외만이 자동으로 JSP 오류 페이지에 나타날 뿐이다(exception 스크립트 변수나 ${pageContext.exception} EL을 이용해서).

JSP 2.0에서는 서블릿 명세와 같은 속성이름 - javax.servlet.error.exception으로 변경함으로써 이 문제를 해결했다. 또한, 내장 EL pageContext 변수에 errerData라는 새로운 프라퍼티가 있어, 발생한 문제에 대한 다른 정보들도 제공해 준다. errerData 속성은 javax.servlet.jsp.ErrorData 클래스의 인스턴스이며 다음과 같은 프라퍼티로 빈(Bean)으로써 사용할 수 있다.

프라퍼티 자바 형 설명
requestURI String 요청이 실패한 URI.
servletName String 실패한 JSP나 서블릿의 이름.
statusCode int 실패 상태 코드.
throwable Throwable 오류 페이지를 불러들인 예외.

저 프라퍼티들을 사용하는 JSP 오류 페이지의 예제가 있다 :

<%@ page isErrorPage="true" contentType="text/html" %>
<%@ taglib prefix="log" uri="http://jakarta.apache.org/taglibs/log-1.0" %>

Sorry, but things didn't work out as planned. I've logged as much as
I know about the problem, so rest assured that my master will look
into what's wrong as soon as he's sober.

<jsp:useBean id="now" class="java.util.Date" />
<log:fatal>
  -----
  ${now}
  Request that failed: ${pageContext.errorData.requestURI}
  Status code: ${pageContext.errorData.statusCode}
  Exception: ${pageContext.errorData.throwable}
  -----
</log:fatal>

이 페이지에서 사용자들을 다소 안심시켜주는 메시지와 아파치 자카르타 Taglib 프로젝트의 Log 태그 라이브러리를 사용해서 상세한 로그를 보여준다.

특정 파일이 서블릿과 JSP 페이지의 오류 페이지임을 선언하기 위해, web.xml 파일에서 <error-page> 요소를 사용할 수도 있다.

...
  <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
  </error-page>
  <error-page>
    <exception-code>500</exception-code>
    <location>/error.jsp</location>
  </error-page>
...

특정 JSP 페이지에 대해서 다른 오류 페이지를 보여주고자 한다면, 페이지 지시자의 errorPage 속성을 이용해서 web.xml의 선언을 오버라이드 할 수 있다.

<%@ page errorPage="/other_error.jsp" contentType="text/html" %>

JSP 문법 오류 보고

JSP 1.2와 2.0간의 작지만 중요한 차이점은 JSP 2.0이 JSP 컨테이너가 jsp:id 기능을 지원하도록 한다는 점이다. 이것은 1.2에서는 단지 "권장사항"일 뿐이었다. JSP 개발자들에게 이것이 무엇을 의미하는가? 바로 JSTL이나 커스텀 태그 라이브러리의 문법 오류 내용이 더욱 쓸만해진다는 것이다.

어떻게 작동하냐구? 컨테이너가 JSP 페이지를 실행 가능한 형태(서블릿 클래스)로 변환할 때, 페이지 내에 선언된 모든 태그 라이브러리를 살펴본다. 한 개 혹은 여러개의 태그 라이브러리 선언이 태그 라이브러리 유효성 검사기(TLV; Tag Library Validator)를 가지고 있다면, 컨테이너가 페이지를 받아들이기 전에 TLV가 페이지의 유효성을 검사할 기회를 주게 된다.

이것은 TLV가 페이지를 분석할 때 XML 뷰(View)를 제공 한다. XML 뷰는, 이름에서 보듯이, 모든 정규 JSP 요소와 템플릿 텍스트(HTML 같은..)를 웰 폼드(Well-Formed) XML 문서로 변환한 것이다.

XML 뷰는 TLV가 모든 커스텀 액션이 올바르게 사용되었는지를 확신하도록 파싱 하는 것을 쉽게 만들어 준다.(예를 들어, 엘리먼트들이 올바르게 중첩되었는가, 함께 나와서는 안되는 속성들이 동일한 액션 요소에 같이 사용되지는 않았는가?)

여기 jsp:id가 온 곳이 있다. 컨테이너는 페이지의 각 커스텀 액션 요소에 ID를 부여하고 ID와 요소의 위치(파일, 줄 번호, 행 번호)간의 맵을 유지한다. 컨테이너는 jsp:id 속성을 ID를 값으로 하여 XML 뷰의 모든 커스텀 액션 요소에 추가한다. TLV가 오류를 발견하면, 오류 메시지에 잘못된 액션 요소의 jsp:id 속성 값을 추가하여 컨테이너에 넘겨주게 된다. 컨테이너는 매핑 정보를 이용해서 잘못된 커스텀 액션 요소의 위치 정보를 사용자에게 보여주는 에러 메시지에 추가한다. 이로 인해 문제점을 찾고 수정하기가 쉬워진다.

모든 JSTL 라이브러리는 TLV를 갖고 있다. 나는 당신이 작성할 커스텀 라이브러리에 TLV를 만들고, 당신이 사용할 서드 파티 라이브러리 개발자들에게도 그렇게 하도록 주장할것을 강력히 권한다.

당신이 XML 뷰와 TLV를 잘 모르겠다면, 내가 2001년에 JSP 1.2에 대해 쓴 글에 간단한 설명을 해 뒀으니 보기 바란다.(JSP 1.2: Great News for the JSP Community).

JSP 배치 기술자(deployment descriptor) 새소식

JSP 2.0 은 이전 JSP 명세에서 그랬던 것 처럼 서블릿 명세에 의해 정의된 배치 기술자(web.xml)파일 형식을 사용한다.

어쨌든, JSP 2.0에는 두가지 중요한 변화가 있다: web.xml의 규칙이 XML 스키마(Schema)로 정의되었고, 대부분의 JSP 관련 설정 아이템들이 새로운 XML 요소로 이동해서 JSP 명세의 제어 하에 놓이게 되었다(서블릿과 JSP 명세간의 결합도(coupling)를 최소화 하기 위해서).

XML 스키마는 XML 문서의 문법 규칙을 설명하는 XML 언어이다(예. 요소가 어떻게 중첩되는가, 요소가 어떤 값을 가질 수 있는가, 값이 중복 될 수 있는가, 그리고 그 외 여러가지). 이건 매우 복잡한 명세이지만 운좋게도, 당신이 web.xml을 작성하기 위해 그 XML 스키마의 문법 규칙을 이해해야 할 필요는 없다. 왜냐하면 서블릿과 JSP 명세는 이해하기 쉬운 도표를 제공하기 때문이다(나의 JavaServer Pages, 제 3판 책은 읽기 쉬운 문법 도표를 포함하고 있다). 그래도 XML 스키마를 공부하고 싶다면 W3C 웹 사이트를 참조하라.

규칙을 예전의 DTD 대신 XML 스키마를 이용해서 선언하는 것의 장점은 XML 스키마는 더욱 세부적이라 web.xml 파일을 파싱할 때 더 많은 오류를 찾을 수 있고, 덕분에 컨테이너들 간의 더 나은 이식성을 가져온다는 것이다.

내 생각에 당신이 더욱 기뻐할 다른 장점으로는 XML 스키마가 web.xml의 최상위 요소들이 어떤 순서로 배열되도 상관없게 만들어 준다는 것이다. 이전 버전의 서블릿과 JSP 명세에서는 예를 들어 <error-page> 요소가 <welcome-file-list> 요소보다 먼저 오기라도 하면 오류를 발생시켰지만, 새로운 버전에서는 그런것도 아무 상관 없다. 그렇더라도 최상위 요소 안에 오는 요소들의 순서는 여전히 엄격한 순서에 따라야만 한다. 어쨌든 당신은 최상위 요소들을 마음대로 할 수 있는 자유를 가졌다.

<servlet> 요소 안에 중첩된 <jsp-file> 요소를 제외하고 모든 JSP 관련 요소들은 <jsp-config>라는 최상위 요소 아래에 함께 묶이게 되었다. <jsp-config>안에 중첩해서 <taglib>요소도 JSP 1.2에서와 같은 문법과 의미로 사용할 수 있다. 하지만 사실 JSP 1.2 이후의 컨테이너에서는 <taglib>가 불필요하다. 컨테이너가 배치된 JAR파일로 부터 자동으로 태그 라이브러리 정의를 뽑아내기 때문이다.

새로운 <jsp-property-group> 하위요소(subelement)는 훨씬 더 관심있게 볼만하다. 이 요소는 특정한 URL패턴에 부합하는 JSP 페이지의 집합에 특정한 설정을 적용할 수 있게 한다. 예를 들어보면:

...
  <jsp-config>
    <jsp-property-group>
      <url-pattern>*.jsp</url-pattern>
      <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
  </jsp-config>
...

<url-pattern> 요소는 설정을 적용할 JSP 페이지의 집합을 구분한다.다른 중첩된 요소들은 설정 옵션을 정의한다. 이 예제에서는, <scripting-invalid> 요소가 모든 JSP 페이지에서 JSP 스크립팅 요소(Java 코드 같은)를 사용할 수 없게 만든다.

대체로(all in all), 다음과 같은 설정 요소들을 <jsp-property-group> 요소 안에 중첩해서 <scripting-invalid> 요소와 같은 방식으로 사용할 수 있다:

요소 설명
<el-ignored> true이면, URL 패턴이 일치하는 JSP 페이지 내의 EL 표현식을 EL 표현식이 아니라 일반적인 텍스트로써 다루게 된다. 이것은 JSP 1.2에서 EL 표현식처럼 보이는 텍스트를 JSP 2.0 으로 천천히 마이그레이션 하는데 유용하게 사용될 수 있다. 'elIgnored' 페이지 지시자 속성을 이용해서 JSP 2.0으로 변환한 페이지들에서 선택적으로 EL을 사용하게 만들 수도 있다.
<scripting-invalid> true이면, URL 패턴이 일치하는 JSP 페이지에서 스크립팅 요소를 사용하면 번역시(translation-time) 오류를 발생시킨다.
<page-encoding> URL 패턴이 일치하는 모든 JSP 페이지에 대해 지정된 페이지 문자 인코딩을 사용한다. 모든 JSP 페이지에 인코딩을 지정하는 대신 사용할 수 있고, JSP 페이지에 몇몇 특수한 파일 인코딩(예를들면 EBCDIC)을 지정할 수 있는 유일한 방법이다.
<include-coda> URL 패턴이 일치하는 모든 JSP 페이지의 끝에 자동으로 포함될 파일의 컨텍스트에 상대적인 경로를 지정한다. 한개의 <jsp-property-group> 요소 안에서 여러개의 요소를 사용할 수도 있고, 여러개의 <jsp-property-group> 요소에서 사용할 수도 있다.
<include-prelude> URL 패턴이 일치하는 모든 JSP 페이지의 시작 부분에 자동으로 포함될 파일의 컨텍스트에 상대적인 경로를 지정한다. 한개의 <jsp-property-group> 요소 안에서 여러개의 요소를 사용할 수도 있고, 여러개의 <jsp-property-group> 요소에서 사용할 수도 있다.
<is-xml> true이면, URL 패턴이 일치하는 모든 JSP 페이지가 JSP XML 문법을 사용한다고 지정하는 것이다(이것이 JSP 문서이다).

마무리

이번 회에서는 JSP 2.0 오류 처리방식의 개선점과 새로운 배치 기술자의 기능들을 설명했다. 이 시리즈의 다음번 글에서는 JSP 2.0이 XML 컨텐트를 위해 JSP를 사용하는 것이 어떻게 쉬워졌는지와 커스텀 태그 라이브러리에 관련된 새로운 기능들을 알아볼 것이다.

JSP 2.0의 새로운 기능들을 접해보고 싶다면, Apache Tomcat 5를 사용해보라고 권하고 싶다. 톰캣은 새로운 JSP 스펙을 최초로 구현한 JSP 컨테이너이다. Jakarta Project 사이트에서 구할 수 있다.

1
Posted by 1010
05.JSP2008. 12. 8. 17:49
반응형

JSP 2.0 프로그래밍


java 환경변수 설정

시작 > 설정 > 제어판 > 시스템 > 고급 을 클릭하고 '환경변수'버튼을 클릭.

시스템 변수 부분에서 Path라는 변수 이름을 찾아 선택한 후 '편집' 버튼을 클릭.

변수 값 뒤쪽에 JDK bin 경로를 추가. (오라클을 사용한다면 가장 앞쪽에 추가)


'새로만들기' 버튼을 누르고 JAVA_HOME을 만들고 JDK 경로를 입력.

CLASSPATH를 만들고 %classpath%;. 를 입력.

Request로 checkbox 파라미터 받아오기#

checkbox 사용시 같은 이름의 파라미터의 값이 여러 개 전달 될 수 있기 때문에, getParameter() 메소드로는 모두 다 읽어 오지 못한다. getParameterValues() 메소드를 사용해야 한다.


  1. Enumeration enum = request.getParameterNames();
  2. while(enum.hasMoreElements()){
  3. String name = (String)enum.nextElement();
  4. }

getParameterValues() 메소드의 리턴값은 java.util.Enumeration 이다.


checkbox와 radiobutton의 경우 선택하지 않게 되면 파라미터 자체가 전송되지 않지만 텍스트 입력과 같은 일반적인 입력요소들은 값을 입력하지 않더라도 빈 문자열("")이 파라미터 값으로 전달된다.


한글 파라미터값 인코딩 하기#

알파벳과 숫자 그리고 몇몇 기호를 제외한 나머지 글자들을 URL에 포함시키기 위해서는 인코딩 작업을 해주어야 한다.

  1. String value = "자바"
  2. String encodedValue = URLEncoder.encode(value);
  3. response.sendRedirect("/index.jsp?name="+encodedValue);

최근의 웹 브라우저와 웹 서버들은 한글 파라미터 값을 인코딩하지 않더라도 알맞게 처리해 주지만, 표준에 따라서 인코딩을 해주는 것이 올바른 습관이여, 나중에 서버가 변경되더라도 소스 코드를 변경하는 일이 줄어든다.


pageContext 기본객체#

하나의 페이지와 1대1로 매핑되는 객체로서 다른 기본 객체를 구할때 주로 사용한다.

request 기본 객체를 구하고 싶다면.

  1. HttpServletRequest httpRequest = (HttpServletRequest)pageContext.getRequest();

getRequest() 메소드의 리턴타입은 ServletRequest 이기 때문에 HTTP 요청을 처리하는 경우 형변환을 해준다.


Application 기본객체#

웹 어플리케이션 초기화 파라미터 읽어 오기#

web.xml 파일에 다음 태그를 추가한다.

  1. <context-param>
  2. <description>파라미터 설명(선택)</description>

    <param-name>파라미터 이름</param-name>

  3. <param-value>파라미터 값</param-value>
  4. </context-param>

웹페이지에서 읽어올 수 있다.

  1. application.getInitParameter(initParamName)
로그메세지 기록하기#
  1. application.log("로그메세지 기록")
  2. 또는
  3. log("로그메세지 기록")  //JSP 자체지원 메소드

기본 데이터 타입(int, double)을 기본객체에 속성값으로 지정하기#

기본객체의 속성값은 Object 타입으로 모든 클래스 타입을 지정할 수 있지만 기본 데이터 타입은 래퍼 클래스를 이용해 Object 타입으로 바꿔줘야한다.

  1. Integer intValue = new Integer(100);
  2. request.setAttrubute("ratio",intValue);

읽어올땐

  1. Integer intValue = (Integer)request.getAttribute("ratio");
  2. int value = intValue.intValue();

JSP 페이지 에러 처리#

에러 페이지 지정하기#

jsp 페이지에 에러페이지를 지정한다.

  1. <%@ page errorPage = "/error/viewErrorMessage.jsp" %>

지정한 경로로 보이고 싶은 에러페이지를 작성한다. 에러페이지에는 다음 페이지 디렉티브를 추가한다.

  1. <%@ page isErrorPage = "true" %>
  2. <%=exception.getClass().getName()%> //exception 기본객체 클래스 이름(선택)
  3. <%=exception.getMessage()%> //예외 메세지(선택)

isErrorPage 속성 값을 true 로 지정하면 jsp 페이지가 에러페이지가 되며 exception 기본객체는 에러페이지에서만 사용할 수 있다.

에러 코드별 에러 페이지 지정하기#

web.xml 에서 에러 상태 코드별로 보여줄 페이지를 지정할 수 있다.

  1. <error-page>
  2. <error-code>500</error-code>
  3. <location>/error/error500.jsp</location>
  4. </error-page>

다음 에러 페이지를 작성하는데 다음 구문을 꼭 추가한다.

  1. <% response.setStatus(HttpServletResponse.SC_OK);%>

응답 코드를 200(정상상태)으로 지정한다. 응답 코드를 200 으로 지정하지 않으면 웹 브라우저에는 500 응답 코드가 전달되며, 이 경우 웹 브라우저는 자체적으로 500 에러일 때 보여주는 화면을 출력한다. 따라서 꼭 응답 코드를 지정해 주어야 한다.(웹 콘테이너에 따라서 이렇게 안 해주어도 된다.)


예외 종류별 에러 페이지 지정하기#

에러 코드별 에러 페이지 지정 방법과 거의 같은 방법으로 지정한다.

web.xml에 에러페이지를 지정한다.

  1. <error-page>
  2. <error-type>java.lang.NullPointerException</error-type>
  3. <location>/error/errorNullPointer.jsp</location>
  4. </error-page>

다음 에러 페이지를 작성하는데 다음 구문을 꼭 추가한다.

  1. <% response.setStatus(HttpServletResponse.SC_OK);%>
에러 페이지 우선순위#

우선순위는 다음과 같다.

  1. page 디렉티브의 errorPage 속성에서 지정한 에러 페이지
  2. web.xml 파일의 <exception-type>에서 지정한 예외타입(예외 종류별 에러)
  3. web.xml 파일의 <exception-code>에서 지정한 예외타입

절대 경로와 상대 경로#

절대 경로#

웹 어플리케이션의 폴더를 루트로 사용하는 경로이다.

  1. /to/to.jsp

'/to/to.jsp' 는 '/'로 시작하는데, 맨 앞의 '/'가 절대 경로의 기준점인 웹 어플리케이션 폴더를 의미한다.

상대경로#

현재 JSP 페이지 기준으로 경로를 결정한다. 예를 들어 to.jsp 기준으로 봤을때 from.jsp의 상대경로는 다음과 같다.

  1. ../from/from.jsp

'..'는 상위 디렉터리를 나타낸다.


요청 흐름 제어하기#


<jsp:forward>액션 태그를 이용한 JSP 페이지 이동#

요청 흐름이 이동할때(A1.jsp에서 A2.jsp 로 흐름이 이동할때) A1.jsp 에서 사용한 request 기본객체와 response 기본객체가 A2.jsp로 전달된다.

또 A1.jsp가 아닌 A2.jsp 에서 생성한 응답 결과가 웹 브라우저에 전달된다.(요청 흐름이 이동하면 A1.jsp에서 생성했던 출력 결과는 모두 제거된다.)



A1.jsp의 출력 결과가 웹브라우저에 전송이 되지 않는 이유는 출력 버퍼 때문이다. <jsp:forward>태그를 만나면 출력 버퍼를 비우고 A2.jsp 의 출력 결과를 저장하기 때문에 A1.jsp의 출력 결과는 모두 제거된다.

따라서 페이지에 출력버퍼가 없거나(page 디렉티브에서 쓰지 않도록 설정) 출력 버퍼가 꽉 차서 <jsp:forward>태그를 만나기 전에 비워진다면 페이지는 에러를 발생한다.


또 JSP 코드에서 <jsp:forward>태그를 만나면 이후에 코드는 실행하지 않고 바로 요청 흐름을 이동시키기 때문에 주위 해야 한다.


<jsp:forward>는 웹 콘테이너 내에서 요청의 흐름을 이동시키기 때문에, 웹 브라우저는 전혀 요청의 흐름이 이동됐다는 사실을 알지 못한다. 따라서 웹 브라우저의 주소는 변경되지 않으며 출력결과도 A1.jsp의 결과라고 여기게 된다.


파라미터 전달법

  1. <jsp:forward page="moveTo.jsp">
  2. <jsp:param name="first" value="BK"/> //표현식 사용불가
  3. <jsp:param name="last" value="choi"> //표현식 사용가능
  4. </jsp:forward>

리다이렉트와 자바 스크립트를 이용한 페이지 이동#

<jsp:forward> 태그가 웹 콘테이너 내부에서 이루어지는 페이지 흐름이라면 리다이렉트 방식이나 자바 스크립트 방식은 웹 브라우저 차원에서 페이지가 이동하길 원할 때 쓴다.

  1. <%
  2. response.sendRedirect("/to/move.jsp");
  3. %>

리다이렉트 방식은 웹 브라우저에 어떤 페이지로 이동하라http://subclipse.tigris.org/update_1.0x는 명령를 전달하는 반면, 자바 스크립트 방식은 웹 브라우저가 자바 스크립트를 실행하는 시점에서 페이지를 이동하게 된다.

  1. <script language="JavaScript">
  2. location.href = "/list.jsp";
  3. </script>

파라미터를 전달하는 방법은 get방식으로 주소 뒤에 파라미터를 붙이는 방법이 있다.


보통 글 쓰기 완료 후, 글 목록으로 이동할때 보통 리다이렉트나 자바 스크립트 방식을 사용한다.


Subclipse 설치방법#

이클립스의 메뉴에서

Help -> Software Updates -> Find and Install 을 선택한다.

새로 생긴 창에서 Next를 한번 누르면 New Remote Site 버튼을 볼 수 있다. 클릭한 후

http://subclipse.tigris.org/update_1.0.x 를 주소창에 입력한다.

그러면 프로그램을 다운로드 하여 나머지 설치과정을 진행할 수 있다.


JSP 페이지 모듈화#

<jsp:include> 액션 태그를 이용한 페이지 모듈화#
  1. <jsp:include page="포함할페이지" flush="true"/

flush : 지정한 jsp페이지를 실행하기 전에 출력 버퍼의 플러스 여부를 지정한다. true이면 <jsp:include> 액션 태그를 만나기 전까지 출력버퍼에 쌓여있던 내용이 출력되고 페이지 흐름이 이동된다.


  • 요청 파라미터를 통해서 값 전달하기
  1. <jsp:include page="/module/top.jsp" flush="false">
  2. <jsp:param name="param1" value="value1"/>
  3. <jsp:param name="param2" value="value2"/>
  4. </jsp:include>

request 기본객체를 이용해서도 값을 전달할 수 있다.


레이아웃 템플릿 구현 방법#

useTemplate.jsp                                      -> template.jsp                     ->  left.jsp

(메인페이지를 지정하여 파라미터로 넘겨줌)      (페이지의 레이아웃만 구현)       top.jsp

                                                                                                              내용페이지


include 디렉티브를 이용한 중복된 코드 삽입#
  1. <%@ include file="포함할 파일.jspf" %>

JSP 파일을 자바 파일로 변환하기 전에 지정된 파일의 내용을 해당 위치에 삽입시키고, 그 결과 생긴 자바 파일을 컴파일한다. 따라서 삽입되는 파일에서 선언한 변수를 삽입하는 JSP 에서 사용할 수 있다.

주로 확장자로 jspf를 사용한다.


  • 모든 JSP 페이지에서 사용되는 공용 변수 지정
  • 저작권 표시와 같은 간단하면서도 모든 페이지에서 중복되는 문장

등에 사용된다.


쿠키#

웹 서버가 웹 브라우저에 정보를 전달하는 방법.

'쿠키'는 웹 브라우저가 보관하고 있는 데이터로 웹 서버에 요청을 보낼 때 함께 전송된다. 웹 서버와 웹 브라우저 양쪽에서 생성할 수 있다.

  1. 쿠키 생성 - jsp 에서 쿠키는 주로 웹 서버 측에서 생성, 응답데이터와 함께 웹 브라우저에 전송
  2. 쿠키 저장 - 쿠키 저장소에 보관
  3. 쿠키 전송 - 웹 브라우저는 한번 저장된 쿠키를 매번 요청이 있을 때마다 웹 서버에 전송

일단 웹 브라우저에 쿠키가 저장되면 쿠키가 삭제되기 전까지는 매번 웹서버에 전송되기 때문에, 웹 어플리케이션을 사용하는 동안 지속적으로 유지해야 하는 정보는 쿠키를 사용해서 저장하면 된다.


쿠키의 구성#
  • 이름
  • 유효 시간
  • 도메인 - 쿠키를 전송할 도메인
  • 경로 - 쿠키를 전송할 요청 경로
쿠키의 사용#

쿠키의 생성

  1. <%@ page import = "java.net.URLEncoder" %>
  2. <%
  3. Cookie cookie = new Cookie("cookieName",URLEncoder.encode("하하"));
  4. response.addCookie(cookie);
  5. %>

알파벳과 숫자 등의 값이 아닌 경우 BASE64 인코딩으로 처리해 주어야 한다.


쿠키값 읽어 오기

  1. Cookie[] cookies = request.getCookies();

쿠키는 응답헤더 형태로 웹 브라우저에 전달되기 때문에, 쿠키 역시 출력버퍼가 플러시된 이후에는 새롭게 추가할 수 없다. 쿠키의 추가 및 변경 작업은 반드시 출력 버퍼가 플러시 되기 전에 처리해 주어야 한다.


쿠키의 삭제

  1. cookie.setMaxAge(0);

유효시간을 0으로 지정해주면 웹브라우저가 관련 추키를 삭제.


쿠키의 도메인



Posted by 1010
05.JSP2008. 12. 8. 17:47
반응형

아마도 전에도 이런 질문과 답변이 있었지만.. 중복 질문이 되므로 차후 사용을 위해서 답글을 달아 놓겠습니다.

internal server error에 대한 정답은 없습니다. 왜냐하면 이것은 HTTP 명세에 정의된 것으로 서버의 모든 예외 상황을 나타내는 것이기 때문입니다.
<error-page> <error-code>404</error-code> <location>/errors/404.jsp</location> </error-page>
<error-page> <error-code>500</error-code> <location>/errors/500.jsp</location> </error-page>

<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errors/throwable.jsp</location>
</error-page> 

위는 web.xml 파일에 지정하는 것입니다.

<%@ page isErrorPage="true" errorPage="특정에러발생시.jsp" %>

<%= exception.getMessage() %>

(1) exception 내장 객체는 isErrorPage="true"인 곳에서만 사용 가능

(2) errorPage 속성은 옵션 속성이므로 생략 하면 web.xml에서 지정한 위치로 갈 수 있음. 예를 들어 다른 곳은 모두 같은 기본 에러 페이지를 사용하지만, 로그인에 대해서만 따로 에러 페이지를 지정하려면 위와 같이 지정하게 됨.


Posted by 1010
02.Oracle/DataBase2008. 12. 8. 10:06
반응형
자바 jdbc 드라이버를 이용해서 oracle로 부터 취득하는
Number 타입은 전부 BigDeicimal 타입으로 받아 온다.
잊어 버리지 말자
Posted by 1010