'60.Unix'에 해당되는 글 89건

  1. 2008.12.16 솔라리스 10 오라클 10g 설치
  2. 2008.12.16 솔라리스10 x86에서 오라클 10g 설치 하기
  3. 2008.12.15 Solaris 정보확인 명령어
  4. 2008.12.15 Solaris 10 Public Ftp 구축 하기
  5. 2008.12.15 솔라리스에서 호스트 이름 혹은 IP 주소 변경하기
  6. 2008.12.15 시스템 디스크 교체 후 E3500 부팅 절차
  7. 2008.12.15 솔라리스 네트워크 명령어
  8. 2008.12.15 솔라리스 아이피 설정 3
  9. 2008.12.15 솔라리스 랜카드 설정 (solaris lan card setting)
  10. 2008.12.15 웹 서버를 위한 솔라리스 튜닝
  11. 2008.12.12 솔라리스 10 설치하기 1
  12. 2008.12.11 Solaris 9 Installation Process
  13. 2008.12.11 솔라리스 시스템을 종료하는 명령어
  14. 2008.12.11 솔라리스 시스템 관리자
  15. 2008.12.11 SVM(Solaris Volume Manager)을 이용한 RAID구성하기
  16. 2008.12.11 solaris disksuite simple manual
  17. 2008.12.11 Solaris metadb 구성
  18. 2008.12.11 Veritas volume manager RAID 0+1 구성
  19. 2008.12.11 초보 UNIX 관리자를 위한 ADMIN 강의
  20. 2008.12.11 RAID 구성하기 - solaris
  21. 2008.12.11 RAID란 무엇인가?
  22. 2008.12.11 솔라리스 10의 주요 기능
  23. 2008.12.11 IV. 시스템 관리 II
  24. 2008.12.11 III. 시스템 관리 I
  25. 2008.12.11 II. 솔라리스 설치
  26. 2008.12.11 Solaris ZFS 파일 시스템
  27. 2008.12.11 ZFS 1
  28. 2008.12.11 Solaris 10 1/06 OS를 빠르게 설치하는 방법
  29. 2008.12.11 Solaris 설치 프로그램을 사용하여 설치(작업)
  30. 2008.12.11 [솔라리스/서버환경] 솔라리스 Solaris 10 참고자료 모음
60.Unix2008. 12. 16. 09:18
반응형
1. 가장 먼저 오라클 홈페이지에서 데이터베이스를 다운받아야 한다.

   www.oracle.co.kr 에 가서 계정을 만든다. 그런 다음 메인 페이지에서 오른쪽 위에 다운로드가 보인다. 

다운로드 페이지에서 Accept License Agreement 에 체크한 뒤 다운로드 리스트에서 SPARC 을 지원하는 오라클 데이터베이스를 선택한다

사용자 삽입 이미지

이동하면 그 곳에 10gr2_db_sol.cpio.gz 가 보일 것이다. Accept 에 체크한 뒤 다운로드 받는다.

설치 시 오라클 계정으로 설치하기 위해 /export/home/oracle 폴더에 다운로드 받는 것을 권장한다.

사용자 삽입 이미지


2. 오라클은 모두 /export/home/oracle 에 설치해야 한다.

   오라클에서 권장하는 사양은 512MB 이상의 램, 1GB 이상의 스왑공간이 필요하다.

   시스템 커널 파라미터를 변경해야 한다. 주로 공유 메모리와 관련된 파라미터를 늘려야한다.  /etc/system 파일은 매우 중요하므로 백업받은 후 수정하도록 한다.

 

  -bash-3.00$ cp /etc/system /etc/systemold

  -bash-3.00$ vi /etc/system

 

  vi 편집기로 파일을 연 뒤 맨 아래 부분에 다음을 추가해준다.

 

  set semsys:seminfo_semmni=100

set semsys:seminfo_semmns=1024

set semsys:seminfo_semmsl=256

set semsys:seminfo_semvmx=32767

set shmsys:shminfo_shmmax=4294967295

set shmsys:shminfo_shmmin=1

set shmsys:shminfo_shmmni=100

set shmsys:shminfo_shmseg=10

사용자 삽입 이미지

위와 같이 수정한 뒤 저장한다. 그리고 reboot 을 시켜야 한다.

 

 -bash-3.00$ sync; sync; reboot

 

3. 오라클 계정을 생성한다. 오라클은 root 로 설치할 수 없다. 오라클 설치를 위해 oinstall 그룹, dba 그룹, oracle 유저를 생성하는 것을 권장한다.

 

   -bash-3.00$ groupadd  g 101 oinstall

   -bash-3.00$ groupadd  g 102 dba

   -bash-3.00$ useradd  -d /export/home/oracle g oinstall G dba m u 103 s /usr/bin/bash oracle

   -bash-3.00$ passwd oracle

 

4. 오라클 계정의 환경을 설정한다.

 

-bash-3.00$ /usr/openwin/bin/xhost +   ß 디스플레이 활성화

-bash-3.00$ su oracle

-bash-3.00$ mkdir oraapp     ß 오라클 어플리케이션이 설치될 곳.

-bash-3.00$ mkdir oradata    ß 오라클 데이터가 설치될 곳.

-bash-3.00$ chmod R 755 oraapp

-bash-3.00$ vi .profile

 

.profile 을 연 뒤 다음과 같이 수정한다. 편집기를 사용하면 편리하다.

 

DISPLAY=localhost:0.0; export DISPLAY

 ORACLE_HOME=/export/home/oracle/oraapp/product/10.2.0; export ORACLE_HOME;

 ORACLE_SID=orcl; export ORACLE_SID;

 ORACLE_OWNER=oracle; export ORACLE_OWNER;

 NLS_LANG=KOREAN_KOREA. K016KSC5601; export NLS_LANG;

 ORA_NLS=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS

 PATH=$PATH:$ORACLE_HOME/bin; export PATH

 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib


사용자 삽입 이미지

수정이 끝났으면 활성화시킨다.

 

-bash-3.00$ source .profile

 

5. 이제 파일의 압축을 풀고 설치를 시작해야 한다.

 

-bash-3.00$ cksum 10gr2_db_sol.cpio.gz

-bash-3.00$ gunzip 10gr2_db_sol.cpio.gz

-bash-3.00$ cpio idcmv < 10gr2_db_sol.cpio

 

runInstaller 를 실행하면 GUI 화면이 뜨고 이제 설치를 시작한다.

-bash-3.00$ ./runInstaller

    UNIX DBA 그룹을 dba 로 선택한다.

사용자 삽입 이미지

인벤토리 및 인증서 지정

사용자 삽입 이미지

제품별 필요조건 검사를 수행한다.

사용자 삽입 이미지

일부 권장사항 검사에 실패하였어도 설치에 문제가 없다.


구성옵션 선택에서 데이터베이스 생성을 선택한다.

사용자 삽입 이미지

설치 요약 화면이다. 설치를 눌러 설치한다.

사용자 삽입 이미지

설치중인 화면이다.

사용자 삽입 이미지

데이터베이스 생성 화면

사용자 삽입 이미지

데이터베이스 생성 완료

사용자 삽입 이미지

설치가 완료되고 실행할 스크립트를 보여주는 화면이 뜬다.

사용자 삽입 이미지

화면에 나온대로 root 로 로그인한 뒤 스크립트를 실행하고 돌아와서 확인버튼을 클릭한다.

반드시 루트 계정으로 실행한다.

 

 -bash-3.00$ su

-bash-3.00$ /export/home/oracle/oraInventory/orainstRoot.sh

-bash-3.00$ /export/home/oracle/oraapp/product/10.2.0/root.sh

 

모든 설치가 완료된 화면이다.

사용자 삽입 이미지

종료버튼을 눌러 종료하면 설치가 끝난다.

Posted by 1010
60.Unix2008. 12. 16. 09:17
반응형
1. 오라클 사이트에서 오라클 10g를 다운로드(2008년1월31일현재 연결됨)


2. 오라클에서 권장하는 사양은 메모리 512MB 이상, 스왑 공간 1GB 이상 필요.

공유메모리와 관련된 시스템 커널 파라메터를 수정한다.

# cd /etc

# mv system system_old

# cp system_old system

# vi system

system 파일의 끝에 추가해 준다.

set noexec_user_stack=1

set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10

system 파일을 수정 저장한 후 시스템을 리부팅한다

# sync; sync; reboot



3. 오라클 계정을 생성한다. 오라클은 root 로 설치할 수 없다.
오라클 설치를 위해 oinstall 그룹, dba 그룹, oracle 유저를 생성한다.

# groupadd oinstall

# groupadd dba

# useradd  -d /export/home/oracle -g oinstall -G dba -m -s /usr/bin/bash oracle

# passwd oracle

(오라클 비밀번호 설정)


4.오라클 계정의 환경 설정.

# /usr/openwin/bin/xhost +   // 디스플레이 활성화
# su - oracle       // 오라클 계정으로 로그인
$ mkdir oraapp     // 오라클 어플리케이션이 설치될 곳.
$ mkdir oradata    // 오라클 데이터가 설치될 곳.
$ chmod -R 755 oraapp
$ vi .profile

DISPLAY=localhost:0.0; export DISPLAY

ORACLE_HOME=/export/home/oracle/oraapp/product/10.2.0; export ORACLE_HOME;
ORACLE_SID=orcl; export ORACLE_SID;
ORACLE_OWNER=oracle; export ORACLE_OWNER;
LNS_LANG=KOREAN_KOREA.KO16MSWIN949; export NLS_LANG;
ORA_NLS=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS
PATH=$PATH:$ORACLE_HOME/bin; export PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib


수정된 .profile 를 적용한다.
$ source .profile
$ vi .profile





5. 이제 파일의 압축을 풀고 설치 시작.

$ cksum 10gr2_db_sol.cpio.gz
$ gunzip 10gr2_db_sol.cpio.gz
$ cpio -idcmv < 10gr2_db_sol.cpio

$ ./runInstaller 을 해서 오라클 설치를 시작하면 된다.


주의 : 다시 설치해야 할때는 디스 플레이를 다시 활성화를 시켜줘야 한다

# /usr/openwin/bin/xhost +   // 디스플레이 활성화





- 일부 권장사항 검사에 실패하였어도 설치에 문제가 없다.








화면에 나온대로 root 로 로그인한 뒤 스크립트를 실행하고 돌아와서 확인버튼을 클릭한다.

반드시 루트 계정으로 실행한다.

$ su -
# /export/home/oracle/oraInventory/orainstRoot.sh
# /export/home/oracle/oraapp/product/10.2.0/root.sh




데이터베이스 설치중에 에러가 발생함.

시스템은 UTF-8 로 되어있고, oracle 계정의 .profile 에는

NLS_LANG  이 KOREAN_KOREA.K016KSC5601(euc-kr) 로 정의되어 있기 때문이었다.

그래서 재설치를 강행했다.


1.시스템 문자셋 euc-kr 로 변경
- root 로 로그인
# vi /etc/default/init
LANG=ko_KR.UTF-8 을
LANG=ko 로 수정한 후 저장

2.설치된 폴더 삭제

- oracle 계정으로 로그인

- oraInventory 폴더 삭제

$ rm -rf oraInventory
- oraapp 폴더안의 product 폴더 삭제

$ cd oraapp

$ rm -rf product

$ cd ..

3.NLS_LANG 변경
- NLS_LANG 을 KOREAN_KOREA.K016KSC5601 에서
  KOREAN_KOREA.KO16MSWIN949 으로 변경. (표현되는 문자가 더 많다고 해서)
$ vi .profile
..
LNS_LANG=KOREAN_KOREA.KO16MSWIN949
- .profile 적용
$ source .profile

4. 다시 설치 시작
$ ./runInstaller

설치 과정에서 "제품별 필요 조건 검사"에서
"사용 가능한 교체 공간 요구 사항을 확인하는 중..." 에서
예상결과보다 실제결과가 적게 나와서 swap 공간을 늘려 줬다.



출처 : http://frucyan.tistory.com/4?srchid=BR1http%3A%2F%2Ffrucyan.tistory.com%2F4
Posted by 1010
60.Unix2008. 12. 15. 17:02
반응형

1. 기본적인 정보 확인
 ■ CDE 환경에서 정보 확인 (GUI)
 ■ uname 명령어를 통한 정보 확인
 ■ /etc/release 파일을 통한 정보 확인
 ■ ipcs 명령어를 사용한 큐, 공유메모리, 세마포어 설정 확인

2. 시스템 장치의 정보 확인
 ■ /usr/platform/`uname -i`/sbin/prtdiag

3. 시스템 패치 정보 확인
 ■ 모든패치에 대한 확인
 ■ 커널 패치에 대한 확인

4. 가상 메모리의 확인
 ■ swap

5. 디스크 정보의 확인
 ■ 장착된 디스크(인식된 디스크, Device Reconfiguration)
    /etc/path_to_inst, prtconf | grep -v not
 ■ 디스크별 제조사와 모델명 확인
    iostat -nE, format(inquiry)

6. 파티션 정보 확인
 ■ prtvtoc

7. 여러가지 장치에 대한 확인
 ■ 인식된 모든 장치에 대한 목록 확인
 ■ 그래픽카드 확인
 ■ 네트워크 카드

8. CPU 정보 확인
 ■ psrinfo

9. Memroy 정보 확인
 ■ Physical Memory 확인(prtconf | grep Memory)
 ■ File Buffering Memory(prtmem)
 ■ Kernel Memory 확인(sar -k 1 1)
 ■ Free Memory(vmstat 3)
 ■ 각 프로세스 메모리 정보
 ■ 한개의 프로세스 메모리 사용량

10. 커널 모듈 정보 확인
 ■ sysdef | more

11. 네트워크 정보 확인
 ■ netstat

12. 사용자의 Disk 사용량에 대한 정보
 ■ quot -af

13. 서버의 모델 출력
 ■ prtconf -vp | grep banner-name

14. PROM Mode 현재 설정 정보 확인
 ■ eeprom




(공지사항)
- 테스트는 "VMWare Solaris 9 x86 / Sun Enterprise 3500" 에서 테스트 하였습니다.
- 운영체제 전반적인 장치들에 정보를 확인 한것이다.
  사용량을 점검 및 성능에 관련한 부분은 "백승찬"님의 다른 문서를 참고하기 바란다.
- /root/docs/Reference/성능에관련한문서.txt



1. 기본적인 정보 확인
________________________

■ CDE 환경에서 정보 확인 (GUI)
■ uname 명령어를 통한 정보 확인
■ /etc/release 파일을 통한 정보 확인
■ ipcs 명령어를 사용한 큐, 공유메모리, 세마포어 설정 확인


(1). CDE 환경에서 정보 확인 (GUI)

CDE > Pannel > System Info
- 사용자 이름
- 호스트이름
- 시스템 종류
- IP
- HostID
- Domain
- Physical Memory(RAM)
- Virtual Memory(SWAP)
- Virtual Memory in Use
- OS Release, Kernel Patch, CDE Version
- System Last Booted Time


(2). uname 명령어를 통한 정보 확인

# uname -a
SunOS solaris91 5.9 Generic_118559-11 i86pc i386 i86pc

(At E3500)
# uname -a
SunOS sun02 5.9 Generic_118558-11 sun4u sparc SUNW,Ultra-Enterprise


(3). /etc/release 파일을 통한 정보 확인

# cat /etc/release
                         Solaris 9 9/05 s9x_u8wos_05 x86
           Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 01 August 2005

(At E3500)
# cat /etc/release
                        Solaris 9 9/05 s9s_u8wos_05 SPARC
           Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
                        Use is subject to license terms.
                            Assembled 04 August 2005


(4). ipcs 명령어를 사용한 큐, 공유메모리, 세마포어 설정 확인

# ipcs
IPC status from <running system> as of Mon Oct 15 04:44:52 KST 2007
T         ID      KEY        MODE        OWNER    GROUP
Message Queues:
Shared Memory:
Semaphores:

[참고] sysdef 명령어를 사용해서도 확인이 가능하다.

(At E3500)
# ipcs
IPC status from <running system> as of Mon Feb 25 18:07:40 KST 2008
T         ID      KEY        MODE        OWNER    GROUP
Message Queues:
Shared Memory:
m          0   0x5e002f32 --rw-------     root     root
Semaphores:
s          0   0x1        --ra-ra-ra-     root     root



2. 시스템 장치의 정보 확인
_______________________________

# /usr/platform/`uname -i`/sbin/prtdiag | more

주의) Intel Platform 인 경우 명령어가 존재하지 않는다.
- 시스템의 종류(범주)와 시스템 클럭
- 총 메모리 크기
- 구성되어 있는 시스템 보드의 수
- 각 시스템 보드의 CPU와 메모리의 수와 종류
- 메모리 읽기 방식(Interleave)
- 설치된 I/O 카드(네트워크나 채널 I/O 등)
- 시스템에 구성된 보드 중 발생한 장애와 현재 구성되어 있지만 사용하지 않는 시스템
  정보도 언급된다. (이 경우 썬 서버만)

# /usr/platform/`uname -i`/sbin/prtdiag -v
# /usr/platform/`uname -i`/sbin/prtdiag -l

     -l    Log output. If failures or errors exist in the system,
           output this information to syslogd(1M) only.

     -v    Verbose mode. Displays the time of the most recent  AC
           Power  failure,  and  the  most  recent hardware fatal
           error information, and (if  applicable)  environmental
           status. The hardware fatal error information is useful
           to repair and manufacturing for  detailed  diagnostics
           of FRUs.

예) Brd Type MHz Slot Name Model
    1   SBus 25  0    SUNW,sbus-gem
SUNW,sbus-gem 모델의 네트워크 카드가 Sbus 타입의 I/O 보드 1번의 0번 슬롯에 설치 되
어 있는것을 의미한다. SUNW,sbus-gem은 썬에서 제작한 sbus용 gem(기가비트 멀티모드
파이버 연결)카드다.

(At E3500)
# prtdiag -v
System Configuration:  Sun Microsystems  sun4u 5-slot Sun Enterprise E3500
System clock frequency: 100 MHz
Memory size: 2048Mb

========================= CPUs =========================

                    Run   Ecache   CPU    CPU
Brd  CPU   Module   MHz     MB    Impl.   Mask
---  ---  -------  -----  ------  ------  ----
 7    14     0      400     8.0   US-II    10.0
 7    15     1      400     8.0   US-II    10.0
 9    18     0      400     8.0   US-II    10.0
 9    19     1      400     8.0   US-II    10.0


========================= Memory =========================

                                              Intrlv.  Intrlv.
Brd   Bank   MB    Status   Condition  Speed   Factor   With
---  -----  ----  -------  ----------  -----  -------  -------
 7     0    1024   Active      OK       60ns    2-way     A
 9     0    1024   Active      OK       60ns    2-way     A

========================= IO Cards =========================

     Bus   Freq
Brd  Type  MHz   Slot        Name                          Model
---  ----  ----  ----------  ----------------------------  --------------------
 1   SBus   25            0  SUNW,qfe                      SUNW,sbus-qfe
 1   SBus   25            0  SUNW,qfe                      SUNW,sbus-qfe
 1   SBus   25            0  SUNW,qfe                      SUNW,sbus-qfe
 1   SBus   25            0  SUNW,qfe                      SUNW,sbus-qfe
 1   SBus   25            3  SUNW,hme
 1   SBus   25            3  SUNW,fas/sd (block)
 1   SBus   25           13  SUNW,socal/sf (scsi-3)        501-3060
 3   SBus   25            0  cgsix                         SUNW,501-2325
 3   SBus   25            1  QLGC,isp/sd (block)           QLGC,ISP1000
 3   SBus   25            3  SUNW,hme
 3   SBus   25            3  SUNW,fas/sd (block)
 3   SBus   25           13  SUNW,socal/sf (scsi-3)        501-3060

No failures found in System
===========================

No System Faults found
======================

Most recent AC Power Failure:
=============================
Thu Feb 14 11:09:20 2008


========================= Environmental Status =========================
Keyswitch position is in Secure Mode
System Power Status: Redundant
System LED Status:    GREEN     YELLOW     GREEN
Normal                 ON        OFF       BLINKING


Fans:
-----
Unit   Status
----   ------
Disk    OK

System Temperatures (Celsius):
------------------------------
Brd   State   Current  Min  Max  Trend
---  -------  -------  ---  ---  -----
 1      OK       47     35   49  stable
 3      OK       54     43   57  stable
 7      OK       39     27   44  stable
 9      OK       42     30   47  stable
CLK     OK       42     30   44  stable


Power Supplies:
---------------
Supply                        Status
---------                     ------
1                                OK
3                                OK
5                                OK
PPS                              OK
    System 3.3v                  OK
    System 5.0v                  OK
    Peripheral 5.0v              OK
    Peripheral 12v               OK
    Auxilary 5.0v                OK
    Peripheral 5.0v precharge    OK
    Peripheral 12v precharge     OK
    System 3.3v precharge        OK
    System 5.0v precharge        OK
AC Power                         OK


========================= HW Revisions =========================

ASIC Revisions:
---------------
Brd  FHC  AC  SBus0  SBus1  PCI0  PCI1  FEPS  Board Type      Attributes
---  ---  --  -----  -----  ----  ----  ----  ----------      ----------
 1    1    5    1      1                 22   Dual-SBus-SOC+  100MHz Capable
 3    1    5    1      1                 22   Dual-SBus-SOC+  100MHz Capable
 7    1    5                                  CPU             100MHz Capable
 9    1    5                                  CPU             100MHz Capable

System Board PROM revisions:
----------------------------
Board  1:   FCODE 1.8.24 1999/12/23 17:30   iPOST 3.4.24 1999/12/23 17:34
Board  3:   FCODE 1.8.24 1999/12/23 17:30   iPOST 3.4.24 1999/12/23 17:34
Board  7:   OBP   3.2.24 1999/12/23 17:31   POST  3.9.24 1999/12/23 17:35
Board  9:   OBP   3.2.24 1999/12/23 17:31   POST  3.9.24 1999/12/23 17:35



3. 시스템 패치 정보 확인
___________________________

■ 모든패치에 대한 확인
■ 커널 패치에 대한 확인


(1). 모든패치에 대한 확인

# showrev -p | more
......
Patch: 114433-10 Obsoletes: 115485-01 Requires:  Incompatibles:  Packages: SUNWcsu,
        SUNWcsl, SUNWesu, SUNWtoo, SUNWmdb, SUNWscpu, SUNWtnfc, SUNWcpcu, SUNWrcapu,
 SUNWrmwbu
......

위의 내용을 해석하여 보면 114433-10 설치 되어 있으며 이 패치의 설치로 인해서
115485-01 쓸모없이 제거되었고(Obsoletes), 이 패치를 설치 하기위해서 먼저 필요한
패치는 없고(Requires), 관련 패키지는 SUNWcsu, SUNWcsl, SUNWesu....등이다.


(2). 커널 패치에 대한 확인

# uname -srv
SunOS 5.9 Generic_118559-11
위의 내용을 해석하여 보면 설치된 운영체제 커널에 적용된 최신패치를 보여준다.
uname 명령어의 -a 옵션을 사용한 경우에도 보여 준다. 그 부분을 참고 하자.



4. 가상 메모리의 확인
________________________

# swap -s
total: 45544k bytes allocated + 18984k reserved = 64528k used, 722236k available

# swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c1d1s1     102,129      8 1048936 1048936

[참고] SolarisMemroyAdmin.txt 파일 참조

(At E3500)
# swap -s
total: 198296k bytes allocated + 59680k reserved = 257976k used, 5585912k available

# swap -l
swapfile             dev  swaplo blocks   free
/dev/dsk/c0t0d0s1   118,25     16 8392048 8392048



5. 디스크 정보의 확인
__________________________

■ 장착된 디스크(인식된 디스크, Device Reconfiguration
■ 디스크별 제조사와 모델명 확인


(1). 장착된 디스크(인식된 디스크, Device Reconfiguration)

# ls -l /dev/rdsk/*s2
lrwxrwxrwx   1 root     root          54 Dec  7 04:20 /dev/rdsk/c0d0s2 -> ../../devices/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0:c,raw
lrwxrwxrwx   1 root     other         54 May 12 08:18 /dev/rdsk/c0d1s2 -> ../../devices/pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0:c,raw
lrwxrwxrwx   1 root     other         54 May 14 03:08 /dev/rdsk/c1d1s2 -> ../../devices/pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0:c,raw
lrwxrwxrwx   1 root     root          52 Dec  7 04:20 /dev/rdsk/c1t0d0s2 -> ../../devices/pci@0,0/pci-ide@7,1/ide@1/sd@0,0:c,raw

# cat /etc/path_to_inst | grep sd
"/pci@0,0/pci-ide@7,1/ide@1/sd@0,0" 0 "sd"
"/pci@0,0/pci1000,30@10/sd@0,0" 1 "sd"
"/pci@0,0/pci1000,30@10/sd@1,0" 2 "sd"
"/pci@0,0/pci1000,30@10/sd@2,0" 3 "sd"
"/pci@0,0/pci1000,30@10/sd@3,0" 4 "sd"
"/pci@0,0/pci1000,30@10/sd@4,0" 5 "sd"
"/pci@0,0/pci1000,30@10/sd@5,0" 6 "sd"
"/pci@0,0/pci1000,30@10/sd@6,0" 7 "sd"
"/pci@0,0/pci1000,30@10/sd@7,0" 8 "sd"
"/pci@0,0/pci1000,30@10/sd@8,0" 9 "sd"
"/pci@0,0/pci1000,30@10/sd@9,0" 10 "sd"
"/pci@0,0/pci1000,30@10/sd@a,0" 11 "sd"
"/pci@0,0/pci1000,30@10/sd@b,0" 12 "sd"
"/pci@0,0/pci1000,30@10/sd@c,0" 13 "sd"
"/pci@0,0/pci1000,30@10/sd@d,0" 14 "sd"
"/pci@0,0/pci1000,30@10/sd@e,0" 15 "sd"
"/pci@0,0/pci1000,30@10/sd@f,0" 16 "sd"

# cat /etc/path_to_inst | grep dad

# cat /etc/path_to_inst | grep cmdk
"/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0" 0 "cmdk"
"/pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0" 1 "cmdk"
"/pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0" 2 "cmdk"


# prtconf | grep -v not
System Configuration:  Sun Microsystems  i86pc
Memory size: 352 Megabytes
System Peripherals (Software Nodes):

i86pc
    options, instance #0
    isa, instance #0
        asy, instance #0
        asy, instance #1
        fdc, instance #0
        i8042, instance #0
            mouse, instance #0
            keyboard, instance #0
    pci, instance #0
        pci-ide, instance #0
            ide, instance #0
                cmdk, instance #0
                cmdk, instance #1
            ide, instance #1
                cmdk, instance #2
                sd, instance #0
        display, instance #0
        pci1000,30, instance #0
        pci1022,2000, instance #0
    objmgr, instance #0
    pseudo, instance #0
    xsvc, instance #0


(At E3500)
# ls -l /dev/rdsk/*s2
lrwxrwxrwx   1 root     root          78 Apr 30  2007 /dev/rdsk/c0t0d0s2 -> ../../devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e08f1,0:c,raw
lrwxrwxrwx   1 root     root          78 Apr 30  2007 /dev/rdsk/c0t1d0s2 -> ../../devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e563b,0:c,raw
lrwxrwxrwx   1 root     root          78 Apr 30  2007 /dev/rdsk/c0t2d0s2 -> ../../devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e573e,0:c,raw
lrwxrwxrwx   1 root     root          78 Apr 30  2007 /dev/rdsk/c0t3d0s2 -> ../../devices/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e586f,0:c,raw
lrwxrwxrwx   1 root     root          54 Apr 30  2007 /dev/rdsk/c1t4d0s2 -> ../../devices/sbus@3,0/SUNW,fas@3,8800000/sd@4,0:c,raw

# cat /etc/path_to_inst | grep sd

"/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e586f,0" 0 "ssd"
"/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e563b,0" 1 "ssd"
"/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e573e,0" 2 "ssd"
"/sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020376e08f1,0" 3 "ssd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@0,0" 15 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@1,0" 16 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@2,0" 17 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@3,0" 18 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@4,0" 19 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@5,0" 20 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@6,0" 21 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@8,0" 22 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@9,0" 23 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@a,0" 24 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@b,0" 25 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@c,0" 26 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@d,0" 27 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@e,0" 28 "sd"
"/sbus@3,0/SUNW,fas@3,8800000/sd@f,0" 29 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@0,0" 0 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@1,0" 1 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@2,0" 2 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@3,0" 3 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@4,0" 4 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@5,0" 5 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@6,0" 6 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@8,0" 7 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@9,0" 8 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@a,0" 9 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@b,0" 10 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@c,0" 11 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@d,0" 12 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@e,0" 13 "sd"
"/sbus@6,0/QLGC,isp@1,10000/sd@f,0" 14 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@0,0" 30 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@1,0" 31 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@2,0" 32 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@3,0" 33 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@4,0" 34 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@5,0" 35 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@6,0" 36 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@8,0" 37 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@9,0" 38 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@a,0" 39 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@b,0" 40 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@c,0" 41 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@d,0" 42 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@e,0" 43 "sd"
"/sbus@7,0/SUNW,fas@3,8800000/sd@f,0" 44 "sd"


# cat /etc/path_to_inst | grep dad

# prtconf | grep -v not

System Configuration:  Sun Microsystems  sun4u
Memory size: 2048 Megabytes
System Peripherals (Software Nodes):

SUNW,Ultra-Enterprise
    options, instance #0
    central, instance #0
        fhc, instance #4
            zs, instance #0
            zs, instance #1
            clock-board, instance #0
    fhc, instance #0
        ac, instance #0
        simm-status, instance #0
        environment, instance #0
        sram, instance #0
    fhc, instance #1
        ac, instance #1
        simm-status, instance #1
        environment, instance #1
        sram, instance #1
    sbus, instance #0
        SUNW,socal, instance #0
            sf, instance #0
                ssd, instance #0
                ssd, instance #1
                ssd, instance #2
                ssd, instance #3
            sf, instance #1
        sbusmem, instance #0
        sbusmem, instance #1
        sbusmem, instance #2
    fhc, instance #2
        ac, instance #2
        environment, instance #2
    sbus, instance #1
        SUNW,hme, instance #0
        SUNW,fas, instance #0
            sd, instance #19
            st, instance #12
        SUNW,qfe, instance #0
        SUNW,qfe, instance #1
        SUNW,qfe, instance #2
        SUNW,qfe, instance #3
        sbusmem, instance #3
        sbusmem, instance #4
    sbus, instance #2
        SUNW,socal, instance #1
            sf, instance #2
            sf, instance #3
        QLGC,isp, instance #0
        sbusmem, instance #5
        sbusmem, instance #6
        sbusmem, instance #7
    fhc, instance #3
        ac, instance #3
        environment, instance #3
    sbus, instance #3
        SUNW,hme, instance #1
        SUNW,fas, instance #1
        cgsix, instance #0
        sbusmem, instance #8
        sbusmem, instance #9
    pseudo, instance #0


(2). 디스크별 제조사와 모델명 확인

# iostat -nE
c1t0d0          Soft Errors: 4 Hard Errors: 0 Transport Errors: 0
Vendor: NECVMWar Product: VMware IDE CDR10 Revision: 1.00 Serial No: VMware IDE CDR10
Size: 0.47GB <468254720 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 4 Predictive Failure Analysis: 0

     -n    Display names  in  descriptive  format  (for  example,
           cXtYdZ, rmt/N, server:/export/path).

     -E    Display all device error statistics.


[참고] format 명령어의 하위 명령어(inquirey)로도 확인이 가능하다.


(At E3500)
# iostat -nE
c1t4d0          Soft Errors: 6 Hard Errors: 0 Transport Errors: 0
Vendor: TOSHIBA  Product: XM6201TASUN32XCD Revision: 1103 Serial No: 
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 6 Predictive Failure Analysis: 0
c0t3d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE  Product: ST318203FSUN18G  Revision: 034A Serial No: 0017G03542
Size: 18.11GB <18110967808 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t1d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE  Product: ST318203FSUN18G  Revision: 034A Serial No: 0017F98616
Size: 18.11GB <18110967808 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t2d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE  Product: ST318203FSUN18G  Revision: 034A Serial No: 0017G01935
Size: 18.11GB <18110967808 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t0d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE  Product: ST318203FSUN18G  Revision: 034A Serial No: 0016F68092
Size: 18.11GB <18110967808 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
rmt/0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: HP       Product: C1537A           Revision: L706 Serial No:   62


# format
c0t0d0 -> inquiry

Vendor:   SEAGATE
Product:  ST318203FSUN18G
Revision: 034A

c0t1d0 -> inquiry

Vendor:   SEAGATE
Product:  ST318203FSUN18G
Revision: 034A

c0t2d0 -> inquiry

Vendor:   SEAGATE
Product:  ST318203FSUN18G
Revision: 034A

c0t3d0 -> inquiry

format> inquiry
Vendor:   SEAGATE
Product:  ST318203FSUN18G
Revision: 034A



6. 파티션 정보 확인
___________________________

# prtvtoc /dev/rdsk/c0d0s2
* /dev/rdsk/c0d0s2 partition map
.....
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00    5148360  15796620  20944979
       1      3    01       2835   1048950   1051784
       2      5    00          0  20944980  20944979
       7      8    00    1052730   4095630   5148359
       8      1    01          0       945       944
       9      9    01        945      1890      2834


# df -h
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c1d1s0        7.4G   2.7G   4.6G    37%    /
/proc                    0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
fd                       0K     0K     0K     0%    /dev/fd
swap                   703M    32K   703M     1%    /var/run
swap                   703M   316K   703M     1%    /tmp
/dev/dsk/c1d1s7        1.9G   2.0M   1.8G     1%    /export/home


특정 슬라이스(파티션)의 폴더 단위의 용량 점검

# cd /export/home
# du -sh *
   7K   hacker
   8K   lost+found
   7K   mail01
   7K   mail02
   6K   mail03
   7K   permuser
  16K   quotas
   1K   snap_test.txt
   6K   team01
   6K   team02
 624K   test
   7K   user01



7. 여러가지 장치에 대한 확인
______________________________

■ 인식된 모든 장치에 대한 목록 확인
■ 그래픽카드 확인
■ 네트워크 카드


(1). 인식된 모든 장치에 대한 목록 확인

# cat /etc/path_to_inst
#
#       Caution! This file contains critical kernel state
#
"/options" 0 "options"
"/pci@0,0" 0 "pci"
"/pci@0,0/pci-ide@7,1" 0 "pci-ide"
"/pci@0,0/pci-ide@7,1/ide@0" 0 "ata"
"/pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0" 0 "cmdk"
"/pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0" 1 "cmdk"
"/pci@0,0/pci-ide@7,1/ide@1" 1 "ata"
"/pci@0,0/pci-ide@7,1/ide@1/sd@0,0" 0 "sd"
"/pci@0,0/pci-ide@7,1/ide@1/st@0,0" 0 "st"
"/pci@0,0/pci-ide@7,1/ide@1/cmdk@1,0" 2 "cmdk"
.....


(2). 그래픽카드 확인

(예) m64 그래픽카드라면
# prtconf | grep -i m64
(일반적인 그래픽카드 관리 명령어) : ffbconfig
 해상도, 수직 주파수등을 알아 낼수 있다.
(m64 그래픽카드 관리 명령어) : m64config
# m64config -prconf


(3). 네트워크 카드

# grep -i hme /etc/path_to_inst
# ifconfg -a

(At E3500)
# cat /etc/path_to_inst | grep hme
"/sbus@3,0/SUNW,hme@3,8c00000" 0 "hme"
"/sbus@7,0/SUNW,hme@3,8c00000" 1 "hme"

# cat /etc/path_to_inst | grep qfe
"/sbus@3,0/SUNW,qfe@0,8c00000" 0 "qfe"
"/sbus@3,0/SUNW,qfe@0,8c10000" 1 "qfe"
"/sbus@3,0/SUNW,qfe@0,8c20000" 2 "qfe"
"/sbus@3,0/SUNW,qfe@0,8c30000" 3 "qfe"



8. CPU 정보 확인
______________________

[/]# psrinfo
0       on-line   since 10/15/2007 03:24:27
1       on-line   since 10/15/2007 03:24:30


[/]# psrinfo -p
2

[/]# psrinfo -pv
The i386 physical processor has 1 virtual processor (0)
The i386 physical processor has 1 virtual processor (1)

[/]# psrinfo -v
Status of virtual processor 0 as of: 10/15/2007 04:00:02
  on-line since 10/15/2007 03:24:27.
  The i386 processor operates at 2400 MHz,
        and has an i387 compatible floating point processor.
Status of virtual processor 1 as of: 10/15/2007 04:00:02
  on-line since 10/15/2007 03:24:30.
  The i386 processor operates at 2400 MHz,
        and has an i387 compatible floating point processor.

[참고] uname -X


(At E3500)
# psrinfo 
14      on-line   since 02/14/2008 12:01:22
15      on-line   since 02/14/2008 12:01:30
18      on-line   since 02/14/2008 12:01:30
19      on-line   since 02/14/2008 12:01:30

# psrinfo -v
Status of virtual processor 14 as of: 02/25/2008 18:35:19
  on-line since 02/14/2008 12:01:22.
  The sparcv9 processor operates at 400 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 15 as of: 02/25/2008 18:35:19
  on-line since 02/14/2008 12:01:30.
  The sparcv9 processor operates at 400 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 18 as of: 02/25/2008 18:35:19
  on-line since 02/14/2008 12:01:30.
  The sparcv9 processor operates at 400 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 19 as of: 02/25/2008 18:35:19
  on-line since 02/14/2008 12:01:30.
  The sparcv9 processor operates at 400 MHz,
        and has a sparcv9 floating point processor.

# psrinfo -p
4

# psrinfo -pv
The UltraSPARC-II physical processor has 1 virtual processor (14)
The UltraSPARC-II physical processor has 1 virtual processor (15)
The UltraSPARC-II physical processor has 1 virtual processor (18)
The UltraSPARC-II physical processor has 1 virtual processor (19)



9. Memroy 정보 확인
_________________________

 ■ Physical Memory 확인
 ■ File Buffering Memory
 ■ Kernel Memory 확인
 ■ Free Memory
 ■ 각 프로세스 메모리 정보
 ■ 한개의 프로세스 메모리 사용량


(1). Physical Memory 확인

# prtconf | grep Memory
Memory size: 352 Megabytes

(At E3500)
# prtconf | grep Memory
Memory size: 2048 Megabytes


(2). File Buffering Memory

File Buffering Memory는 MemTool을 이용하여 알아 볼수 있다. 결과는 다음과 같다.

# prtmem
Total Physical Memory: 384 Megabytes
Buffer Cache Memory: 112 Megabytes
Kernel Memory: 63 Megabytes
Free Memory: 17 Megabytes

[참고] prtmem 명령어는 솔라리스 기본 내장 명령어가 아니다. 설치 해서 사용해야 한다.
패키명은 RMCmem 이다.


(3). Kernel Memory 확인
sar명령어를 이용하여 byte단위로 알아 볼수 있다.

# sar -k 1 1
SunOS ns 5.7 Generic_106541-15 sun4u    08/16/01
09:56:59 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail
09:57:00 7798784 7207416     0 10035200 9554856     0     2580480     0


(At E3500)
# sar -k 1 1

SunOS sun02 5.9 Generic_118558-11 sun4u    02/25/2008

18:38:06 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail
18:38:07 8200512 6409848     0 100450304 79821800     0    19595264     0


(4). Free Memory

Free Memory는 거의 항상 0 이다. 왜냐 하면 Buffer cache가 있기 때문이다.
Free Memory는 vmstat 명령어로 알아 볼수 있다.
vmstat 결과 나오는 첫번째 라인은 bootinf후 나오는평균치 이기 때문에 2번째 라인 부터
가 실질적인 결과이다.

# vmstat 3
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr f0 s2 s3 s4 in sy cs us sy id
0 0 0 81832 74792 0 12 75 4 93 0 36 0 1 1 1 265 1940 303 5 1 93
0 0 0 560248 12920 0 0 0 0 0 0 0 0 0 0 0 217 872 296 0 0 100
0 0 0 560248 12920 0 0 0 0 0 0 0 0 0 0 0 205 870 296 0 0 99


(At 3500)
# vmstat 3
 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s1 sd sd sd   in   sy   cs us sy id
 0 0 0 5619304 1674408 2  1  2  0  0  0  0  0  0  0  0  725   96  175  0  0 100
 0 0 0 5583176 1647216 0  2  0  0  0  0  0  0  0  0  0  719  107  223  0  0 100
 0 0 0 5583176 1647216 0  0  0  0  0  0  0  0  0  0  0  717  102  219  0  0 100
 0 0 0 5583176 1647216 0  0  0  0  0  0  0  0  0  0  0  717  117  220  0  0 100


(5). 각 프로세스 메모리 정보

# ps -el | more
 F S   UID   PID  PPID  C PRI NI     ADDR     SZ    WCHAN TTY      TIME CMD
19 T     0     0     0  0   0 SY fec28df4      0          ?        0:03 sched
 8 S     0     1     0  0  40 20 d3c11808    331 d403ee16 ?        0:00 init
19 S     0     2     0  0   0 SY d3c11108      0 fec530a0 ?        0:00 pageout
19 S     0     3     0  0   0 SY d3c10a08      0 fed0d818 ?        0:00 fsflush
 8 S     0   422     1  0  40 20 d3c10308    463 d4033d68 ?        0:00 sac
 8 S     0   425   422  0  40 20 d45d6128    462 d4a40b16 ?        0:00 ttymon
 8 S     0    61     1  0  40 20 d3c0f508    634 d403e2b6 ?        0:00 sysevent
 8 S     0   676     1  0  50 20 d4d71748    564 d4cac592 ?        0:00 rpcbind
 8 S     0    75     1  0  40 20 d3c0d110    694 d41e2cb6 ?        0:00 picld
 8 S     0   212     1  0  40 20 d3c0ca10    933 d4035dc2 ?        0:00 automoun
 8 S     0   679     1  0  50 20 d45c7038    585 d4035cc2 ?        0:00 keyserv
 8 S     0   187     1  0  40 20 d3c0d810    624 d4035e82 ?        0:00 inetd
 8 S 60001   412   377  0  40 20 d45d2830   1329 d47622d0 ?        0:00 httpd
 8 S     0   191     1  0  40 20 d3c0b510    863 d4035ac2 ?        0:00 in.named
 8 S     0   206     1  0  40 20 d3c0a010    550 d3a0647a ?        0:00 lockd
 8 S    71   270   268  0  40 20 d45e3718    712 d44f0640 ?        0:00 httpd
 ..... (중략) .....

SZ 필드의 값이 프로세스가 사용하고 있는 가상메모리(Virtual Memory) 총량이다. 이 안
에는 매핑된 파일과 디바이스가 포함된다. 단위는 페이지 단위로 되어 있다.(pagesize(1))

예) PID 번호가 676번인 rpcbind 프로세스의 SZ 필드의 값은 564이다.

# pagesize
4096

# expr 4096 \* 564
2310144

# expr 2310144 / 1024
2256

위의 결과와 같이 약 2M(2256 Kbytes) 정도의 메모리를 사용하고 있다는 것을 알수 있다.


(At E3500)
# ps -el | more
 F S   UID   PID  PPID  C PRI NI     ADDR     SZ    WCHAN TTY      TIME CMD
19 T     0     0     0  0   0 SY        ?      0          ?        0:01 sched
 8 S     0     1     0  0  40 20        ?    167        ? ?        0:00 init
19 S     0     2     0  0   0 SY        ?      0        ? ?        0:00 pageout
19 S     0     3     0  0   0 SY        ?      0        ? ?       13:28 fsflush
 8 S     0   585     1  0  40 20        ?    229        ? ?        0:00 sac
 8 S     0   301     1  0  40 20        ?    137        ? ?        0:00 utmpd
 8 S     0   119     1  0  40 20        ?    424        ? ?        0:01 picld
 8 S     0    13     1  0  40 20        ?   1392        ? ?        0:04 vxconfig
 8 S     0    68     1  0  40 20        ?    329        ? ?        0:00 sysevent
 8 S     0   200     1  0  40 20        ?    303        ? ?        0:00 rpcbind
 8 S     0   167     1  0  40 20        ?   2742        ? ?        0:01 vxsvc
 8 S     0   290     1  0  40 20        ?    191        ? ?        0:00 powerd
 8 S     0   247     1  0  40 20        ?    431        ? ?        0:00 automoun
 8 S     0   285     1  0  40 20        ?    448        ? ?        0:04 nscd
 8 S     0   470     1  0  39 20        ?    242        ? ?        0:00 auditd
 8 S     0   250   247  0  40 20        ?    542        ? ?        0:00 automoun
 8 S     0   555     1  0  40 20        ?    285        ? ?        0:00 snmpdx
 8 S     0   242     1  0  40 20        ?    322        ? ?        0:01 inetd
 8 S     0   243     1  0  40 20        ?    279        ? ?        0:00 lockd
 8 S     1   244     1  0  40 20        ?    316        ? ?        0:00 statd
 8 S     0   263     1  0  40 20        ?    495        ? ?        0:01 syslogd
 8 S     0   269     1  0  40 20        ?    303        ? ?        0:00 cron
 8 S     0   867   866  0  40 20        ?    255        ? ?        0:00 Xsession
 8 S     0  2066  2038  0  70 30        ?    452        ? ?        0:00 remotedp
 8 S     0   347   345  0  40 20        ?    414        ? ?        0:00 htt_serv
 8 S     0  2063  2038  0  70 30        ?    473        ? ?        0:00 remotedp
 8 S     0   345     1  0  40 20        ?    135        ? ?        0:00 htt
 8 S     0  2058  2038  0  70 30        ?    451        ? ?        0:00 remotedp
 8 S    25   323     1  0  40 20        ?    565        ? ?        0:00 sendmail
 8 S     0   324     1  0  40 20        ?    568        ? ?        0:00 sendmail
..... (중략) .....

# pagesize
8192

# expr 8192 \* 167
1368064

# expr 1368064 / 1024
1336


(6). 한개의 프로세스 메모리 사용량

[/]# echo $$
925
[/]# /usr/proc/bin/pmap -x 925
925:    dtksh
 Address  Kbytes     RSS    Anon  Locked Mode   Mapped File
08045000      12      12       4       - rwx--    [ stack ]
08050000     532     388       -       - r-x--  dtksh
080E4000      52      52       8       - rwx--  dtksh
080F1000       8       -       -       - rwx--  dtksh
080F3000      88      84      12       - rwx--    [ heap ]
D2380000       4       4       -       - rwx--    [ anon ]
D2390000      12      12       -       - r-x--  libmp.so.2
D23A3000       4       4       -       - rwx--  libmp.so.2
D23B0000      72      56       -       - r-x--  libICE.so.6
D23D2000       4       4       -       - rwx--  libICE.so.6
D23D3000       8       -       -       - rwx--  libICE.so.6
D23E0000       4       4       4       - rwx--    [ anon ]
D23F0000      32      32       -       - r-x--  libSM.so.6
D2408000       4       4       -       - rwx--  libSM.so.6
D2410000      80      56       -       - r-x--  libXext.so.0
D2434000       4       4       -       - rwx--  libXext.so.0
..... (중략)......
D2960000     496     420       -       - r-x--  libtt.so.2
D29EC000      12      12       -       - rwx--  libtt.so.2
D2A00000     344     224       -       - r-x--  libDtSvc.so.1
D2A66000       8       8       -       - rwx--  libDtSvc.so.1
D2A68000       8       4       -       - rwx--  libDtSvc.so.1
D2A70000       4       4       4       - rwx--    [ anon ]
D2A80000     220     200       -       - r-x--  libDtWidget.so.2
D2AC8000      16      16       -       - rwx--  libDtWidget.so.2
D2ACC000       8       -       -       - rwx--  libDtWidget.so.2
D2AD0000     460      92       -       - r-x--  libDtHelp.so.1
D2B52000      28      28       -       - rwx--  libDtHelp.so.1
D2B6D000       4       4       4       - rwx--  libdl.so.1
D2B70000       4       4       -       - r--s-  dev:102,0 ino:36861
D2B80000       4       4       4       - rwx--    [ anon ]
D2B90000     324     324       -       - r-x--  ld.so.1
D2BF1000      16      16       4       - rwx--  ld.so.1
D2BF5000       8       8       4       - rwx--  ld.so.1
-------- ------- ------- ------- -------
total Kb    7092    5756      60       -

pmap명령의 결과 ksh 프로세서가 5756k의 real memory를 사용 한다는 것을 알수 있다.
60k는 시스템의 다른 프로세서와 shared한다는 것도 알수 있다.


(At E3500)
# echo $$
8060

# pmap -x 8060
8060:   -ksh
 Address  Kbytes     RSS    Anon  Locked Mode   Mapped File
00010000     200     200       -       - r-x--  ksh
00052000       8       8       8       - rwx--  ksh
00054000      40      40       8       - rwx--    [ heap ]
FF180000     688     688       -       - r-x--  libc.so.1
FF23C000      24      24       -       - rwx--  libc.so.1
FF242000       8       8       -       - rwx--  libc.so.1
FF280000     568     568       -       - r-x--  libnsl.so.1
FF31E000      40      40       -       - rwx--  libnsl.so.1
FF328000      24      16       -       - rwx--  libnsl.so.1
FF360000      16      16       -       - r-x--  libmp.so.2
FF374000       8       8       -       - rwx--  libmp.so.2
FF380000       8       8       8       - rwx--    [ anon ]
FF390000      40      40       -       - r-x--  libsocket.so.1
FF3AA000       8       8       -       - rwx--  libsocket.so.1
FF3B8000      16      16       -       - r-x--  libc_psr.so.1
FF3C0000     192     192       -       - r-x--  ld.so.1
FF3F0000       8       8       8       - rwx--  ld.so.1
FF3F2000       8       8       8       - rwx--  ld.so.1
FF3FA000       8       8       8       - rwx--  libdl.so.1
FFBFC000      16      16       8       - rw---    [ stack ]
-------- ------- ------- ------- -------
total Kb    1928    1920      56       -
 



10 커널 모듈 정보 확인
____________________________

# sysdef | more
.....
* Hostid
* Devices
* Loadable Objects
* Loadable Object Path = /kernel
* Loadable Object Path = /usr/kernel
* System Configuration
* Tunable Parameters
* Utsname Tunables
* Process Resource Limit Tunables (Current:Maximum)
* Streams Tunables
* IPC Semaphores
* IPC Shared Memory module is not loaded
* Time Sharing Scheduler Tunables
.....

# modinfo
 Id Loadaddr   Size Info Rev Module Name
  5 fe933000   3f32   1   1  specfs (filesystem for specfs)
  7 fe9383cd   2fea   1   1  TS (time sharing sched class)
  8 fe93af33    888   -   1  TS_DPTBL (Time sharing dispatch table)
 10 fe93afab    fad   -   1  pci_autoconfig (PCI BIOS interface 1.39)
 11 fe93bea4  30e2a   2   1  ufs (filesystem for ufs)
 12 fe96a962    18f   -   1  fssnap_if (File System Snapshot Interface)
 13 fe96aa99   3086   1   1  rootnex (i86pc root nexus 1.115)
 14 fe96d98b   1d83   -   1  busra (Bus Resource Allocator (BUSRA) )
 15 fe96f4ae    170  57   1  options (options driver)
 16 fe96f5ba   1267  12   1  sad (STREAMS Administrative Driver ')
 17 fe9706b1    4db   2   1  pseudo (nexus driver for 'pseudo')
 18 fe970acc    67a 104   1  objmgr (Object Manager 1.23)
 19 fe97105e   1fd9 102   1  cmdk (Common Direct Access Disk Drive)
 20 fe972b9f   22e2   -   1  snlb (Solaris Disk Label Object)
 21 fe974d9d   1f61   -   1  dadk (Direct Attached Disk Object)
 22 fe9766d6    6fd   -   1  gda (Generic Direct Attached Device )
..... (중략).....


# modinfo -i 5
 Id Loadaddr   Size Info Rev Module Name
  5 fe933000   3f32   1   1  specfs (filesystem for specfs)




프로세스의 정보 확인
___________________________

메모리를 많이 사용하고 있는 프로세스 10개정도 확인

# ps -elf | head -1 ; ps -elf | sort -k 10 -r | head
 F S      UID   PID  PPID  C PRI NI     ADDR     SZ    WCHAN    STIME TTY      TIME CMD
 8 S     root   378   329  0  40 20 d461a728   4376 d4a5ce0a 10:09:27 ?        0:05 /usr/openwin/bin/Xsun :0 -nobanner
 8 S     root   486   468  0  50 20 d4bce038   2431 d4a5c84a 10:10:17 pts/3    0:01 /usr/dt/bin/dtsession
 8 S     root   493   486  0  40 20 d4bcca40   2374 d4a5c58a 10:10:17 ?        0:01 dtwm
 8 S     root   519   495  0  40 20 d4bcae40   2162 d4d46d68 10:10:45 ?        0:00 dtfile -session dtdpaqSe
 8 S     root   495   486  0  50 20 d4bcfc38   2162 d4a5c5ca 10:10:22 ?        0:00 dtfile -session dtdpaqSe
 8 S     root   494   486  0  50 20 d4bcf538   1852 d4a5c60a 10:10:22 ??       0:00 /usr/dt/bin/dtterm -session dt89aOP
 8 S     root   496   486  0  40 20 d4bd0338   1803 d4a5c4ca 10:10:22 ?        0:01 /usr/dt/bin/sdtperfmeter -f -H -t c
 8 S     root   389   329  0  40 20 d3c0fc08   1645 d3c0fc74 10:09:35 ?        0:00 /usr/dt/bin/dtlogin -daemon
 8 S     root   448   447  0  40 20 d4bd1838   1438 d4a5c88a 10:10:13 ?        0:00 htt_server -nosm
 8 S   nobody   363   339  0  40 20 d461e020   1329 d476dc10 10:09:25 ?        0:00 /usr/apache/bin/httpd

[참고] 사용하고 있는 메모리 계산하는 방법
메모리 사용량 = SZ * `pagesize`
예) 4376 * 4096(or 8192) = 17924096 bytes(약 17Mbytes)




11. 네트워크 정보 확인
___________________________

(1). IP 설정 확인

[/]# ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
pcn0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.8.2 netmask ffffff00 broadcast 192.168.8.255
        ether 0:c:29:7e:d2:e2


(2). Routing Table 확인

[/]# netstat -nr
 
Routing Table: IPv4
  Destination           Gateway           Flags  Ref   Use   Interface
-------------------- -------------------- ----- ----- ------ ---------
192.168.8.0          192.168.8.2          U         1     61  pcn0
224.0.0.0            192.168.8.2          U         1      0  pcn0
default              192.168.8.254        UG        1     62 
127.0.0.1            127.0.0.1            UH       21  74190  lo0


(3). DNS Client 설정 확인

[/]# cat /etc/nsswitch.conf
......(생략).....

[/]# cat /etc/resolv.conf
nameserver 168.126.63.1


(4). 네트워크 활동량 점검

# netstat -an | more
UDP: IPv4
   Local Address         Remote Address     State
-------------------- -------------------- -------
      *.111                                 Idle
      *.*                                   Unbound
      *.32771                               Idle
      *.37                                  Idle
      *.7                                   Idle
      *.9                                   Idle
      *.13                                  Idle
      *.19                                  Idle
      *.32772                               Idle
      *.32773                               Idle
      *.32774                               Idle
      *.512                                 Idle
      *.517                                 Idle
......


# netstat -s
RAWIP
        rawipInDatagrams    =     0     rawipInErrors       =     0
        rawipInCksumErrs    =     0     rawipOutDatagrams   =     0
        rawipOutErrors      =     0

UDP
        udpInDatagrams      =   349     udpInErrors         =     0
        udpOutDatagrams     =   431     udpOutErrors        =     0

TCP     tcpRtoAlgorithm     =     4     tcpRtoMin           =   400
        tcpRtoMax           = 60000     tcpMaxConn          =    -1
        tcpActiveOpens      =    49     tcpPassiveOpens     =    32
        tcpAttemptFails     =     0     tcpEstabResets      =     0
        tcpCurrEstab        =     7     tcpOutSegs          = 44111
        tcpOutDataSegs      = 38060     tcpOutDataBytes     =3921161
        tcpRetransSegs      =     0     tcpRetransBytes     =     0
        tcpOutAck           =  6050     tcpOutAckDelayed    =  2050
        tcpOutUrg           =     0     tcpOutWinUpdate     =     0
        tcpOutWinProbe      =     0     tcpOutControl       =   158
        tcpOutRsts          =     3     tcpOutFastRetrans   =     0
        tcpInSegs           = 44161
        tcpInAckSegs        = 33136     tcpInAckBytes       =3921213
        tcpInDupAck         =    51     tcpInAckUnsent      =     0
        tcpInInorderSegs    = 27773     tcpInInorderBytes   =1581770
.....


# netstat -m (# netstat -mv)
streams allocation:
                                         cumulative  allocation
                      current   maximum       total    failures
streams                   238       272        1794           0
queues                    674       740        3895           0
mblk                      791      1270       39888           0
dblk                      788      1271      230872           0
linkblk                     9       169          10           0
strevent                   12       169        7944           0
syncq                      18        36          54           0
qband                       2       127           2           0

496 Kbytes allocated for streams data


# netstat -i 2
    input   pcn0      output           input  (Total)    output
packets errs  packets errs  colls  packets errs  packets errs  colls
44725   0     44926   0     0      45538   0     45739   0     0    
11      0     11      0     0      11      0     11      0     0    
11      0     11      0     0      11      0     11      0     0    
11      0     11      0     0      11      0     11      0     0    
12      0     11      0     0      12      0     11      0     0




12. 사용자의 Disk 사용량에 대한 정보
______________________________________

[/]# quot -af
/dev/rdsk/c1d1s0 (/):
2866444 97724   root   
153291   6286   bin    
91117    1895   #10     
12778     118   #36413  
 2554      11   adm    
 1244       8   nobody 
  801      46   uucp   
  137      56   lp     
   48       3   #21782  
    5       5   daemon 
    2       2   smmsp  
    1       1   user01 
    1       1   mail02 
    1       1   mail03 
    1       1   team01 
    1       1   team02 
    1       1   hacker 
    1       1   #104    

/dev/rdsk/c1d1s7 (/export/home):
  650       6   root   
   14      21   #104    
    7       7   mail01 
    7       7   mail02 
    7       7   permuser
    7       7   user01 
    6       6   hacker 
    6       6   mail03 
    6       6   team01 
    6       6   team02



13. 서버의 모델 출력

# prtconf -vp | grep banner-name
    banner-name:  '5-slot Sun Enterprise E3500'



14. PROM Mode 현재 설정 정보 확인

(At E3500)
# eeprom
disabled-memory-list: data not available.
disabled-board-list: data not available.
memory-interleave=max
configuration-policy=component
scsi-initiator-id=7
keyboard-click?=false
keymap: data not available.
ttyb-rts-dtr-off=false
ttyb-ignore-cd=true
ttya-rts-dtr-off=false
ttya-ignore-cd=true
ttyb-mode=9600,8,n,1,-
ttya-mode=9600,8,n,1,-
sbus-specific-probe: data not available.
sbus-probe-default=d3120
mfg-mode=off
diag-level=max
powerfail-time=1202954960
#power-cycles=1426063608
fcode-debug?=false
output-device=screen
input-device=keyboard
load-base=16384
boot-command=boot
auto-boot?=false
watchdog-reboot?=false
diag-file: data not available.
diag-device=disk diskbrd diskisp disksoc net
boot-file=kernel/sparcv9/unix
boot-device=disk
local-mac-address?=true
ansi-terminal?=true
screen-#columns=80
screen-#rows=34
silent-mode?=false
use-nvramrc?=true
nvramrc=devalias andydisk /sbus@2,0/SUNW,socal@d,10000/sf@0,0/ssd@0,0

security-mode=none
security-password: data not available.
security-#badlogins=0
oem-logo: data not available.
oem-logo?=false
oem-banner: data not available.
oem-banner?=false
hardware-revision: data not available.
last-hardware-update=
diag-switch?=true

Posted by 1010
60.Unix2008. 12. 15. 15:50
반응형
 구축할 Ftp 서버 – vsftpd with openssl

A.     버전 vsftpd-2.0.7

B.      http://vsftpd.beasts.org/#download

C.      http://www.scary.beasts.org/security/   à 취약점에 대한 내용 (참고)

D.     http://vsftpd.beasts.org/vsftpd_conf.html  à On-Line 설명서

 

E.      * 지원 및 테스트된 OS

 

- Linux (Redhat, SuSE, Debian)

- Solaris (버전에 따라 IPv6 inet_aton함수때문에 설치가 잘 안될 수 있음)

- FreeBSD, OpenBSD

- HP-UX

- IRIX

 

F.      * 주요 기능

 

- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)

- 가상 사용자 설정

- 전송 대역폭 지정

- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)

- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원

- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원

- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)

 

1.     설치

 

Solaris10에서 일반적인 형태로 (ssl 와 익명접속 제외,  tcp_wrappers 포함) 설치하는 것을 정리해 볼까 합니다.

 

간단설명

VsFTPD Very Secure FTP Daemon의 약자이며, 이름에서 그대로 나오듯이 보안에 매우 신경을 쓴 데몬입니다. 레드햇, 데비안 등의 기본 패키지에 포함이 될 정도라고 하며 사이트에서도 그렇게 홍보하고 있군요. 제 개인적으로는 별다른 신경을 안써도 손쉽게 컴파일 및 설치가 된다는 장점이 가장 큰 것 같습니다.

 

http://vsftpd.beasts.org/ 에서 최신버전의 소스를 받아온다.

# gunzip vsftpd-1.2.0.tar.gz

# tar xf vsftpd-1.2.0.tar

# cd vsftpd-1.2.0

 

한글을 위한 소스 수정

기본적으로 UTF8같은 유니코드를 지원하지 않으므로 source 파일을 수정해 주어야 한글이 제대로 로그파일이나 전송처리가 됩니다. 그렇지 않으면 표준 ASCII 문자 외에는 모두 ?(물음표)로 처리해 버립니다.

 

logging.c 파일을 vi로 불러들여 아래 라인을 주석처리합니다. (157 라인입니다.)

 

원본 : str_replace_unprintable(p_str, '?');

변경 : /* str_replace_unprintable(p_str, '?'); */

 

postlogin.c 파일을 vi로 불러들여 아래 라인을 주석처리합니다. (121 라인입니다.)

 

원본 : str_replace_unprintable(&proctitle_str, '?');

변경 : /* str_replace_unprintable(&proctitle_str, '?'); */

 

또한 tcp_wrappers를 지원하기 위해서는 builddefs.h 파일을 불러서 아래와 같이 수정합니다.

 

원본 : #under VSF_BUILD_TCPWRAPPERS

변경 : #define VSF_BUILD_TCPWRAPPERS

 

그리고 solaris PAM을 지원하지 않으므로 바로 밑에 있는 PAM 지원부분을 무효화시켜줍니다.(이 부분을 설정하지 않으면 컴파일시 에러가 줄줄줄주루루루루루 뜹니다.)

 

원본 : #define VSF_BUILD_PAM

변경 : #undef VSF_BUILD_PAM

 

vsftpd 컴파일 및 설치

vsftpd는 기본적으로 configure 작업이 없습니다. 그냥 make 하시면 됩니다. 조심하실 것은 INSTALL 문서에 있는대로 make install 을 하시면 안됩니다. vsftpd는 리눅스 계열의 운영체제를 기본으로 만들어져 있으므로 xinetd 등을 이용하도록 설정되어 있는데, solaris에서는 해당 데몬이 존재하지 않습니다. 게다가 solaris10으로 올라오면서 서비스 관리를 svcs 또는 svcadm, inetadm 등 패키지로 분리되어 운영됩니다. 그러므로 make 만 실행하셔서 컴파일만 하시고 나머지 설치작업은 수동으로 하셔야 합니다.

 

 

[root@unknown vsftpd-2.0.7]# make

gcc -c prelogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ftpcmdio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c postlogin.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c privsock.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c tunables.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ftpdataio.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c secbuf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ls.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c postprivparent.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c logging.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c str.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c netstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c sysstr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c strlist.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c banner.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c filestr.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c parseconf.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c secutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ascii.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c oneprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c twoprocess.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c privops.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c standalone.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c hash.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c tcpwrap.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ipaddrparse.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c access.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c features.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c readwrite.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c opts.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c ssl.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c sysutil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -c sysdeputil.c -O2 -Wall -W -Wshadow  -idirafter dummyinc

gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh`

만일 위의 builddefs.h 부분에서 PAM 부분을 undeine 시켜주시기 않았다면 아래와 같은 경고가 뜨고 운영중에 로그인이 안되거나 에러가 발생하는 경우가 생깁니다.(PAM undefine 시키면 shadow 모드로 동작하는 듯 합니다.)

 

 

[root@unknown vsftpd-2.0.7]# ls -al vsftpd

-rwxr-xr-x 1 root root 105K 2008-12-12 01:29 vsftpd

 

컴파일이 무사히 넘어갔다면 vsftpd 파일이 생성되어있습니다.

 

vsftpd 파일의 생성을 확인하셨다면 아래와 같이 관련 파일들을 세팅합니다.

 

# mkdir /usr/local/sbin   ;; 없는 경우만 만들어 주시면 됩니다.

# cp vsftpd /usr/local/sbin

# chmod 755 /usr/local/sbin/vsftpd

 

# cp vsftpd.conf.5 /usr/share/man/man5   ;; vsftpd.conf 매뉴얼 복사

# cp vsftpd.8 /usr/share/man/man8          ;; vsftpd 매뉴얼 복사

# mkdir /usr/share/empty

# chown root:root /usr/share/empty

# chmod 755 /usr/share/empty

# cp vsftpd.conf /etc                 ;; 설정파일 복사

 

 

vsftpd Solaris 10 SMF에 연결

이젠 남은것은 실행하는 방법입니다.

solaris10 에서는 inetd 서비스가 SMF(Service Management Facility)로 통합운영되어 집니다. 모든 서비스 관리는 svcadm 명령으로 제어할 수 있는데, 네트워크 관련 서비스는 inetadm 이라는 명령을 이용하여 특별히 관리할 수 있습니다. vsftpd SMF 서비스로 등록하여 이용하면 편리하게 관리할 수 있도록 합니다. (자세한 기타 내용은 마지막에 참고사이트를 보세요.)

 

우선 첫번째로 /etc/services 파일 내용중 ftp 가 기술되어 있는지 확인합니다.

[root@unknown vsftpd-2.0.7]# grep ftp /etc/services

ftp-data        20/tcp

ftp             21/tcp

tftp            69/u

 

현재 디렉토리에 아래와 같은 내용을 inet.ftp 라는 내용으로 저장합니다.

 

ftp stream tcp nowait root /usr/sfw/sbin/tcpd /usr/local/sbin/vsftpd

 

※ 미리 tcp_wrappers 가 설치되어 있어야 합니다.

 

그리고 아래 명령을 수행하면 smf 관련 명령으로 확인하거나 관리하실 수 있습니다.

 

# inetconv -i inet.ftp

ftp -> /var/svc/manifest/network/ftp-tcp.xml

ftp-tcp.xml() 가져오는 중 ...완료

# svcs -a | grep ftp

online          21:02:07    svc:/network/ftp/tcp:default      <== vsftpd 데몬이 서비스로 등록된 모습

 

이후부터 서비스의 시작과 중지를 아래와 같이 수행할 수 있습니다.

 

# svcadm enable /network/ftp/tcp:default     ;; vsftpd 서비스 시작

# svcsadm disable /network/ftp/tcp:default  ;; vsftpd 서비스 중지

 

svcs 명령으로 보았을 때 online 은 동작중, offline은 중지된 상태, maintenance 는 문제가 있어서 작업이 필요하다는 의미입니다. online 상태로 서비스를 시작하고 localhost 로 접속하여 정상적으로 FTP 접속이 되는지 확인합니다. 현재는 제대로 설정이 되어 있지 않으므로 anonymous (익명)으로 접속하셔야 하며, 접속되더라도 OOPS! 라는 메세지가 보입니다.(웁스~)

[root@unknown vsftpd-2.0.7]# ftp localhost

Connected to localhost.

500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp

ftp> quit

 

 

vsftpd.conf 설정

구글링이나 기타 인터넷상에 올라온 자료들을 검색해 본 결과 예전 버젼이거나 linux 계열의 운영체제에 맞게 설정되어 있어서 제가 사용할려는 solaris 운영체제에는 전혀 맞지가 않더군요. 로그처리 부분도 마찬가집니다. 그래서 제가 사용하는 Solaris 10 환경에 맞게 나름대로 설정파일을 세팅하는 과정에서 겪은 시행착오을 줄이기 위해 vsftpd.conf 파일의 옵션을 정리해 보았습니다. SSL 은 사용하지 않으므로 자세한 설명은 생략하며 익명도 사용하지 않는 환경임을 미리 인지하시고 참고하여 주시면 되겠네요. (해당 환경과 관련된 옵션은 설명에서 몽땅 제외입니다. ~~~~)

 

또한 위에서 manpage 파일을 정상적으로 설치하셨다면 man vsftpd.conf 명령으로도 옵션들을 확인하실 수 있습니다.

 

옵션을 사용하기 전에 주의할 점 : 반드시 옵션명=값 으로 설정하셔야 합니다. =(equal) 좌우에 공백이 있어서는 절대 안됩니다. 반드시 옵션과 값사이에 =(equal)을 딱!!! 붙여서 주셔야 합니다.

 

 

anonymous_enable=NO ( 기본값 : YES )

  익명 사용자의 접속을 허용할 것인지를 결정합니다.

 

listen=YES ( 기본값 : NO )

background=YES ( 기본값 : NO )

listen_port=21 ( 기본값 : 21 )

listen_ipv6=NO ( 기본값 : NO )

  기본적으로 vsftpd inetd 또는 xinetd 또는 Solaris10의 서비스로 등록하여 사용이 가능하도록 설정되어있습니다. 위 옵션대로 설정하게 되면 standalone(proftpd standalone 동작과 동일) 모드로 동작합니다. Solaris10에서는 위에서 서비스로 등록해 놓았으므로 모두 주석처리합니다. 일반적으로 FTP 접속이 그리 많지가 않는 경우에는 기본 동작모드(inetd )가 유리하며 FTP 접속자가 많은 경우에는 standalone 모드가 유리하다고 합니다.

 

listen_address=none ( 기본값 : none )

listen_address6=none ( 기본값 : none )

  standalone 모드로 동작시 대기할 IP를 지정합니다.(멀티 IP 서버를 이용할때) address6 IPV6 상황에서 사용합니다.

 

pasv_address=none ( 기본값 : none )

  Use this option to override the IP address that vsftpd will advertise in response to the PASV command. Provide a  numeric IP address, unless pasv_addr_resolve is enabled, in which case you can provide a hostname which will be DNS resolved for you at startup. (해석불가)

 

nopriv_user=nobody ( 기본값 : nobody )

  vsftpd가 구동할 유저명을 지정합니다.

 

max_clients=50 ( 기본값 : 0 )

  최대 접속자수를 결정합니다. 0으로 두면 무제한입니다.

 

max_per_ip=5 ( 기본값 : 0 )

  하나의 IP에서 동시에 접속할 수 있는 수를 결정합니다.

 

local_max_rate=0 ( 기본값 : 0 )

  로컬 사용자의 접속시 업/다운로드 속도 제한을 지정합니다. 단위는 초당 Bytes 입니다.

 

trans_chunk_size=0 ( 기본값 : 0 )

  한번에 전송할 크기를 지정합니다. 단 일정단위로 묶어서 전송하게 되는데 이 항목은 전송량 조절 옵션인 rate 관련 옵션들과 연관성이 있습니다. 되도록이면 이 옵션은 수정하지 않는 것이 좋다고 제작자는 밝히고 있군요. 다만 8192로 하면 부드럽게 대역폭 제한이 가능하다고 하는데 당최 무슨 뜻인지;;;;;;

 

use_localtime=YES ( 기본값 : NO )

  파일의 시간을 보여줄 때 시스템의 Local time에 맞춰서 보여줍니다. 기본적으로 vsftpd GMT를 따르고 있습니다. 우리나라의 시간은 GMT + 9 입니다.

 

setproctitle_enable=YES ( 기본값 : NO )

  FTP의 현재 상황을 PS 로 볼 수 있도록 해줍니다. 즉 현재 세션의 상황을 ps 명령으로 나오는 값을 조작하여 접속자 등을 파악할 수 있습니다.

 

user_config_dir=none ( 기본값 : none )

  특정 사용자의 접속 환경을 vsftpd.conf 가 아닌 파일로 저장시켜 두고 적용시킬 수 있게 해줍니다. 여기서 지정하는 값은 디렉토리를 의미합니다. 예를 들어 /etc/vsftpd_user/chris 라는 파일을 생성한 후 파일속에 vsftpd.conf 와 같은 각종 지시어를 이용하여 환경을 구축해 놨을 때 chris라는 사용자가 접속하면 vsftpd.conf 가 아닌 /etc/vsftpd_user/chris 라는 파일의 환경에 적용을 받습니다. 물론 /etc/vsftpd_user/chirs 안에 없는 옵션은 vsftpd.conf 옵션에 적용을 받습니다. 다만 /etc/vsftpd_user/chris 파일내에 유저의 환경과는 관계가 없는 옵션들(banner_file, max_per_ip, max_clients, xferlog_file )은 무시됩니다.

 

local_enable=YES ( 기본값 : NO )

  시스템에 등록된 유저의 접속을 허용합니다.

 

userlist_enable=NO ( 기본값 : NO )

  유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 허용합니다. 이 옵션은 userlist_deny 옵션이 비활성화된 상태에서만 효과가 있습니다.(userlist_deny 옵션과 반대역활입니다.)

 

userlist_deny=YES ( 기본값 : YES )

  유저 목록을 담고 있는 파일속의 내용에 있는 사용자만 접속을 불허합니다. userlist_enable 옵션과 반대 역활을 합니다. 특정 유저의 접속을 허용하지 않고자 할때 주로 사용합니다.

 

userlist_file=/etc/vsftpd.user_list ( 기본값 : /etc/vsftpd.user_list )

  userlist_enable 옵션과 userlist_deny 옵션에서 사용되는 유저 목록을 담고 있는 파일입니다.

 

text_userdb_names=YES ( 기본값 : NO )

  디렉토리 목록을 보여줄 때 유저명과 그룹명을 문자로 표시할 것인지를 결정합니다. 성능상과 보안문제상 NO로 되어 있는 듯 하며 개인적으로는 YES를 좋아라 합니다.

 

pam_service_name=vsftpd ( 기본값 : ftp )

  Solaris10과는 관계없는 옵션이며, pam 사용자 인증을 할때 사용할 인증파일을 지정합니다.

 

tcp_wrappers=YES ( 기본값 : NO )

  TCP wrappers에 의해서 FTP 접속을 제어할 것인지를 설정합니다. 미리 tcp_wrappers가 설치되어 있어야 하며, sunfreeware 에서는 현재날짜 기준으로(2008. 08. 04) 7.6 버젼이 공개되어 있으므로 vsftpd 설치전에 tcp_wrappers를 설치하시길 바랍니다. 참고로, solaris10 을 기본으로 설치할 경우 tcp_wrappers가 설치되어 있습니다만, 버젼이..... 7.6 버젼을 새로 설치하였습니다.

 

ssl_enable=NO ( 기본값 : NO )

  ssl 접속을 허용할 것인지를 결정합니다. 이 옵션을 사용할려면 컴파일 하기전에 builddefs.h 파일에서 SSL 옵션을 활성화시켜야 하며 관련 라이브러리 및 데몬들도 설치가 되어 있어야 합니다. 솔라리스에서는 SSL 연결이 좀 까탈스럽더군요. OTL;;;;;;

 

ssl_tlsv1=NO ( 기본값 : YES )

ssl_sslv2=NO ( 기본값 : NO )

ssl_sslv3=NO ( 기본값 : NO )

  ssl 접속시 어떤 프로토콜을 사용할 것인지를 결정합니다. 각각 TLS, V2, V3 를 의미하며 ssl_enable 옵션이 활성화되어 있을 때 기본 프로토콜은 SSL v1 프로토콜을 이용하여 접속합니다.

 

dsa_cert_file=none ( 기본값 : none - RSA certificate suffices 를 사용 )

  SSL의 암호화 접속시 사용할 DSA 인증서의 위치를 지정합니다.

 

dsa_private_key_file=none ( 기본값 : none )

  SSL의 암호화 접속시 사용된 DSA 개인키 파일의 위치를 지정합니다.

 

rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem ( 기본값 : none )

  SSL 접속시 RSA 인증서를 지정합니다.

 

rsa_private_key_file=none ( 기본값 : none )

  SSL 접속시 RSA 인증에 사용할 RSA 개인키 값 파일을 지정합니다.

 

force_local_data_ssl=YES ( 기본값 : YES )

  ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 데이터를 전송시 SSL을 사용하도록 강제적으로 규정합니다.

 

force_local_logins_ssl=YES ( 기본값 : YES )

  ssl_enable 옵션이 활성화되어 있을때만 활성화되는 옵션이며, 로컬 사용자가 로그인시 강제적으로 SSL을 이용하도록 합니다.

 

connect_timeout=60 ( 기본값 : 60 )

  Port 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. 지정된 시간내에 접속이 완료되지 않으면 접속이 끊어집니다.

 

accept_timeout=60 ( 기본값 : 60)

  Pasv 모드로 접속시 사용자의 접속 허용 시간을 설정합니다. connect_timeout 옵션과 동일하게 동작합니다.

 

data_connection_timeout=300 ( 기본값 : 300)

  데이타를 전송한 후 (/다운) 지정된 시간동안 아무런 동작이 없을 경우 접속을 끊습니다.

 

idle_session_timeout=300 ( 기본값 : 300)

  접속 완료 후 지정된 시간동안 아무런 동작을 하지 않으면 접속을 끊습니다.

 

banner_file=/etc/vsftpd.banner_file ( 기본값 : none )

  사용자가 접속했을 때 보여줄 환영 메세지를 가진 파일을 지정합니다.

 

ftpd_banner=Welcome to FTP Service ( 기본값 : none - vsftpd의 기본 메세지가 보입니다.)

  사용자가 접속했을 때 보여줄 안내 메세지를 지정합니다.

 

dirmessage_enable=NO ( 기본값 : NO )

  디렉토리로 접속할때 해당 디렉토리에 message_file 옵션에서 지정한 파일의 내용을 보여줄 것인지를 결정합니다.

 

message_file=.message ( 기본값 : .message )

  dirmessage_enable 옵션이 YES로 되어있다면 읽어서 보여줄 파일명을 지정합니다.

 

port_enable=YES ( 기본값 : YES )

  FTP Port 모드를 활성화홥니다. 일명 Active 모드라고도 합니다.

 

connect_from_port_20=YES ( 기본값 : NO )

  Port 모드로 동작시 데이터 전송의 기본 포트인 20번 포트의 사용 여부를 결정합니다.

 

ftp_data_port=20 ( 기본값 : 20 )

  Port 모드로 동작시 데이터 전송에 사용할 포트 번호를 지정합니다. 이 옵션은 connect_from_port_20 옵션이 활성화되어 있어야 정상적으로 작동합니다.

 

port_promiscuous=NO ( 기본값 : NO )

  Port 모드에서의 보안 체크 기능을 해제합니다. FXP(서버대 서버전송) 기능 사용시 활성화시켜줍니다.

 

pasv_enable=YES ( 기본값 : YES )

  Pasv 모드로 동작할 것인지를 결정합니다.

 

pasv_promiscuous=NO ( 기본값 : NO )

  동일한 IP에서 접속이 이루어질때 PASV 보안체크를 해제시켜 줍니다? 영어가 딸려서 해석이 꼬이네요. FXP (서버 대 서버 전송) 기능을 사용할 때나 SSH를 이용한 터널링 기능을 이용할 때 활성화시켜주는 옵션입니다.

 

pasv_min_port=0 ( 기본값 : 0 )

pasv_max_port=0 ( 기본값 : 0 )

  Pasv 모드로 접속시 할당할 최저(min) 포트번호와 최고(max) 포트번호를 지정합니다. 기본값인 0을 설정하게 되면 1024 이상 무작위로 할당합니다. 1024 이하의 포트번호는 일반적으로 well kown port 번호라고 하여 부르며 root 권한만 해당 포트를 제어할 수 있도록 되어있습니다. ( /etc/services 파일 참고 )

 

ascii_download_enable=NO ( 기본값 : NO )

ascii_upload_enable=NO ( 기본값 : NO )

  ASCII 모드로 전송을 허용할 것인지를 결정합니다. 일반적으로 UNIX 모드의 텍스트 파일과 PC(or Windows) 모드의 텍스트 파일은 LF/CR 처리부분에서 다르므로 이 옵션을 활성화(YES)시켜주면 전송시 자동으로 변환이 됩니다. 하지만 요즘 텍스트 에디터들은 자동으로 변환해주므로 크게 문제되지 않는다면 보안문제상 기본값으로 설정된 NO로 해주심을 권장합니다.

 

local_umask=022 ( 기본값 : 077 )

  파일 생성 umask 값을 지정합니다. 이 값을 보면 vsftpd가 보안에 까칠하다는게 확실히 알 수 있겠군요. 기본적으로 파일 생성시 할당되는 퍼미션은 최대퍼미션 - umask 의 값을 가집니다. 최대퍼미션은 디렉토리의 경우 0777, 파일인 경우 0666 으로 결정됩니다. 그러므로 디렉토리의 경우 vsftpd의 기본 umask를 적용하면 0700 ( 0777 - 077 = 0700 ) 으로 설정됩니다. 즉 올린 사람외에는 손대지마!!! 라는 것이 되죠. 다만 이렇게 된다면 웹서버를 운영할 경우 웹상에서 접근을 못하게 되는 사태가 벌어집니다. 일반적인 umask 옵션인 022 로 정해줍시다.

 

file_open_mode=0644 ( 기본값 : 0666 )

  업로드되는 파일의 기본 퍼미션을 지정합니다. 이 옵션은 반드시 local_umask 옵션보다 뒤에서 지정되어야 하며, 기본값을 주게 되면 업로드된 파일이 아무나 읽기쓰기로 되어버리기 떄문에 가능하면 0644 로 설정하는 것이 좋습니다.

 

dirlist_enable=YES ( 기본값 : YES )

  디렉토리 목록을 볼 수 있게 합니다. NO로 할 경우 목록을 볼 수가 없게 됩니다.

 

force_dot_files=NO ( 기본값 : NO )

  .(dot)로 시작하는 파일들의 표시 여부를 결정합니다. 보안관계상 기본 값은 NO로 되어있습니다.

 

tilde_user_enable=NO ( 기본값 : NO )

  일반적으로 사용하는 ~crhis/pics 와 같은 지정을 해석할 수 있도록 합니다. 사용자 계정명앞에 ~(틸드)가 오게 되면 해당 사용자 계정의 홈디렉토리를 의미하게 되는데 이것을 해석할 수 있도록 해주는 것입니다. 다만 이 옵션은 /etc/passwd 파일을 찾을 수 있을 경우에 정상적으로 작동합니다.

 

hide_ids=NO ( 기본값 : NO )

  이 옵션이 활성화되면 모든 파일의 사용자는 FTP로 표시됩니다. 보안에 도움이 될 수도 있는 옵션입니다.

 

write_enable=YES ( 기본값 : NO )

  사용자가 기록을 할 수 있도록 합니다. (STOR, DELE, RNFR, RNTO, MKD, RMD, APE, SITE 등의 명령이 실행가능해 집니다.)

 

download_enable=YES ( 기본값 : YES )

  파일을 다운로드할 수 있게 합니다.

 

chmod_enable=YES ( 기본값 : YES )

  로컬 사용자가 퍼미션을 변경할 수 있도록 합니다. 익명 접속 사용자는 불가능합니다.

 

use_sendfile=YES ( 기본값 : YES )

  서버 운영체제의플랫폼에서 sendfile() 시스템 호출을 허용합니다. 내부 세팅인것 같은데 그냥 YES~~~

 

cmds_allowed=none ( 기본값 : none )

  사용자에게 허용할 명령어를 지정합니다. 이 명령은 지정한 명령만 사용할 수 있도록 만드는 것입니다. 적용하지 않으면 모든 명령을 사용할 수 있으며 지정하게 되면 지정한 명령어만 사용가능합니다. 단 로그인 전의 명령어나 로그아웃 등의 명령어는 해당되지 않습니다. ( USER, PASS, QUIT )

 

deny_file=none ( 기본값 : none )

  업로드를 거부할 파일명을 지정합니다. { } 으로 묶으며, 와일드 카드 ( ? , * )를 사용할 수 있습니다. 각각의 파일은 ,(comma)로 구분하도록 되어있습니다. ) deny_file={*.mp3,*.mov,.private}

 

hide_file=none ( 기본값 : none )

  숨길 파일명을 지정합니다. 즉 존재는 하되 파일목록에서는 보이지 않습니다. deny_file 옵션과 동일한 형식으로 지정가능합니다.

 

async_abor_enable=NO ( 기본값 : NO )

  특정 클라이언트가 파일 전송중 취소했을 때 정상적으로 취소되지 않는 경우가 발생하는데 이때 이 옵션을 enable 하게 되면 이런 증상을 막을 수 있습니다. 제작자는 오직 ill adviced FTP clients가 이런 증상을 발생시킨다고 하며 보안관계상 NO를 권장하고 있습니다.

 

ls_recurse_enable=NO ( 기본값 : NO )

  ls 명령의 옵션중 하위 디렉토리의 구조까지 모두 읽어올 수 있는 -R 옵션 사용 여부를 결정합니다. 서버에 대한 부하가 크므로 기본적으로 NO 로 설정되어 있습니다.

 

chroot_local_user=YES ( 기본값 : NO )

  로컬 사용자가 접속하면 자신의 상위 디렉토리로 접근할 수 없도록 설정합니다.

 

passwd_chroot_enable=YES ( 기본값 : NO )

  If enabled, along with chroot_local_user,  then a chroot() jail location may be specified on a per-user basis. Each user's jail is derived from their home directory  string in /etc/passwd. The occurrence of /./ in the home directory string denotes that the jail is at that particular location in the path. (해석불가 -.-;;)

 

chroot_list_enable=NO ( 기본값 : NO )

  이 옵션을 활성화하면 명시된 사용자만이 자신의 홈상위 디렉토리에 접근할 수 없게 되어 있습니다. chroot_local_user 옵션이 비활성화되어 있어야 작동합니다.

 

chroot_list_file=/etc/vsftpd.chroot_list ( 기본값 : /etc/vsftpd.chroot_list )

  chroot_list_enable 옵션이 활성화되어 있다면 chroot() 기능을 적용시킬 사용자 목록을 가지게 되며, chroot_local_user 옵션이 활성화되어 있다면 chroot() 기능에서 제외할 사용자 목록을 가지게 됩니다.

 

secure_chroot_dir=/usr/share/empty ( 기본값 : /usr/share/empty )

  secure chroot()에서 사용될 디렉토리를 지정하며 반드시 비어있어야 합니다. 또한 ftp user에 대한 쓰기 권한이 없어야 합니다. (이게 왜 있는건지......) 참고로, 저 디렉토리는 반드시 생성되어 있어야 하며 조건에 맞지 않게 되어 있다면 vsftpd 실행시 에러가 발생합니다. 그냥 /usr/share/empty 디렉토리를 만들고 root:root 로 권한을 주고 755로 퍼미션 주시면 됩니다.

 

check_shell=YES ( 기본값 : YES )

  이 옵션은 non-PAM 시스템에서만 정상적으로 동작하며, 접속자의 Shell 체크 여부를 결정합니다.

 

delay_failed_logins=5 ( 기본값 : 1 )

  로그인이 실패하고 난 뒤 다음 로그인 시도까지의 딜레이 시간을 지정합니다.

 

delay_successful_logins=0 ( 기본값 : 0 )

  로그인이 성공하고 난 뒤 다음 과정으로 넘어가기 전까지의 딜레이 시간을 지정합니다.

 

max_login_fails=3 ( 기본값 : 3 )

  지정한 횟수만큼 연속적으로 로그인을 실패하면 연결을 끊어버립니다.

 

local_root=none ( 기본값 : none )

  로컬 사용자(익명 사용자가 아닌) 로그인을 하게 되면 해당 디렉토리로 이동시킵니다. 로그인을 실패한 경우에는 아무런 동작을 하지 않습니다.

 

lock_upload_files=NO ( 기본값 : NO )

  이 옵션을 활성화하면 모든 업로드되는 파일들은 기록 lock이 설정됩니다. 단 모든 다운로드 파일들은 공유 읽기 lock이 설정되는데 이 옵션을 활성화화면 악의적인 목적으로 업로드를 방해할 수 있으므로 주의해서 사용해야 합니다.

 

mdtm_write=YES ( 기본값 : YES )

  mdtm 기능을 사용할 수 있게 합니다. mdtm은 업로드되는 파일의 시간과 날짜를 변경할 수 있게 하는 기능힙니다.

 

pasv_addr_resolv=NO ( 기본값 : NO )

  이 옵션을 사용하게 되면 IP 주소가 아닌 호스트 네임을 pasv_address에서 사용할 수 있게 합니다.

 

vsftpd_log_file=/var/log/vsftpd.log ( 기본값 : /var/log/vsftpd.log )

  vsftpd의 로그파일을 지정합니다. xferlog_enable 옵션이 활성화되고 xferlog_std_format 옵션이 비활성화되어야 동작합니다. 또는 dual_log_enable 옵션아 활성화될 경우에도 동작합니다. 주의할 점은 syslog_enable 옵션이 활성화되면 모든 로그들은 system log로 보내어지므로 vsftpd_log_file 옵션에 기록된 파일에는 로그가 기록되지 않습니다.

 

dual_log_enable=YES ( 기본값 : NO )

  이 옵션이 활성화되면 /var/log/xferlog /var/log/vsftpd.log 파일 둘다 로그 기록에 사용합니다.

 

syslog_enable=NO ( 기본값 : NO )

  이 옵션이 활성화되면 모든 로그들은 system log(syslogd 데몬을 이용한)에 기록되며 /var/log/vsftpd.log 파일은 사용되지 않습니다.

 

xferlog_file=/var/log/xferlog ( 기본값 : /var/log/xferlog )

  이 옵션 wu-ftpd 형식의 로그들을 기록할 파일을 지정하는 것입니다. 반드시 xferlog_enable 옵션이 활성화되어야 정상적으로 동작하며 xferlog_std_format 옵션과 연관성이 있습니다. 또는 dual_log_enable 옵션이 활성화되어도 본 옵션이 동작합니다.

 

xferlog_enable=YES ( 기본값 : NO )

  상세한 파일의 전송상황을 로그파일에 기록할 것인지를 결정합니다. 기본값은 /var/log/vsftpd.log 에 기록하며, 이 파일의 위치는 xferlog_file 옵션에서 변경가능합니다.

 

xferlog_std_format=NO ( 기본값 : NO )

  xferlog_enable 옵션으로 기록되는 로그 형식을 표준으로 할 것인지를 결정합니다.

 

log_ftp_protocol=YES ( 기본값 : NO )

  아주 상세한 FTP 이용 상황을 로그에 기록할 지를 결정합니다.

 

no_log_lock=NO ( 기본값 : NO )

  로그 파일을 기록할 때 로그 파일에 lock 을 걸 것인지를 결정합니다. 일반적으로 걸지 않아도 되지만, 솔라리스 OS에서 베리타스(Veritas) 파일 시스템을 사용할 경우 문제점이 발생할 수 있으므로 해당 OS와 파일시스템을 사용하고 있을 경우 YES로 설정하시기 바랍니다.

 

session_support=YES ( 기본값 : NO )

  세션 기록을 wtmp 또는 utmp 에 남길것인지를 결정합니다. wtmp/utmp를 이용하게 되면 last 명령으로 접속여부를 확인할 수 있으므로 YES를 권장합니다.

 

one_process_model=NO ( 기본값 : NO )

  하나의 접속자에 하나의 프로세스 모델을 생성하여 할당합니다. 효율면에서는 좋으나 보안면에서는 조금 떨어질 수 있다고 제작자는 밝히고 있습니다. 단 리눅스 커널이 2.4 이상일때만 권장하는 것 같군요. 솔라리스10에서 서비스로 등록을 해 놓았으므로 이 옵션과는 무관하게 접속자별로 2개씩의 프로세스가 생성됩니다. OTL;;;;;;

 

기타 설명하지 않은 옵션들

  가상 사용자나 익명사용자에 대한 설정은 본인이 사용하지 않으므로 설명을 생략합니다. 인터넷상에 많이 알려져 있으므로 해당 문서를 검색하시거나 아래 참고사이트를 이용하시면 상세하게 설명되어 있습니다.

guest_enable=NO

guest_username=ftp

virtual_use_local_privs=NO

user_sub_token=none

allow_anon_ssl=NO

deny_email_enable=NO

banned_email_file=/etc/vsftpd.banned_emails

secure_email_list_enable=NO

email_password_file=/etc/vsftpd.email_passwords

ftp_username=ftp

no_anon_password=NO

anon_root=none

anon_max_rate=0

anon_upload_enable=NO

anon_world_readable_only=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

chown_uploads=NO

chown_username=root

anon_umask=077

force_anon_data_ssl=NO

force_anon_logins_ssl=NO

 

 

참고용 설정파일

제가 사용하고 있는 옵션들을 간단하게 옮겨봅니다. Solaris10에서 익명과 SSL을 사용하지 않으며, 웹서버 운영 용도로 사용하고 있는 서버입니다. 이중 로그파일을 한 이유는 xferlog.log 에서 전송량을 체크하기 위함이며, vsftpd.log 에서는 접속현황 및 계정 관리를 위해서 세팅하였습니다.

 

anonymous_enable=no

max_clients=50

max_per_ip=10

use_localtime=YES

setproctitle_enable=YES

local_enable=YES

ftpd_banner=Welcome to KYUNGSUNG University Web server......

port_enable=YES

max_login_fails=1

write_enable=YES

local_umask=022

file_open_mode=0644

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog.log

session_support=YES

xferlog_std_format=NO

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

text_userdb_names=YES

tcp_wrappers=YES

 

 

참고사이트

 

기존 vsftpd 관련 자료들이 많긴 합니다만, 대부분 티니님의 자료를 옮겨 놓은 듯 하더군요. 다만 티니님의 자료는 1.0.1 버젼을 기준으로 하여 없는 옵션이나 내용이 조금 바뀐 옵션들이 있어서 따로 정리를 해봤습니다. 정말 항상 글을 쓸때마다 느끼는 것이지만, 글 제대로 쓰시는 분들 존경스럽네요. ;;;;;

 

- VsFTPD FTP 서버 설치 by 티니님 ( http://coffeenix.net/board_view.php?bd_code=1470 )

- FTP 설정하기 by 아햏햏님 ( http://blog.naver.com/ssanzing2?Redirect=Log&logNo=140025729151 )

 

 

2008.10.21 추가사항......................................

 

vsftp를 설치하고 난 뒤 아래의 메세지가 표시되면서 접속이 안되는 경우가 있다.

 

500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in

: 위의 메세지는 sunfreeware.com 에서 다운받아서 pkgadd 로 설치했을 경우 tcp_wrapper가 지원되지 않도록 컴파일되어 있기 때문입니다. 결론은, 소스 받아서 컴파일 하세요~

 

500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp

: 위의 메세지는 ftp라는 그룹과 유저가 생성되어 있어야 합니다. 아래 명령으로 유저와 그룹을 생성하세요.

: groupadd -g 199 ftp

: useradd -u 199 -g 199 -s /bin/false -m ftp

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

순서


개요

이 테크 팁은 운용중인 솔라리스 시스템의 호스트 이름 혹은 IP 주소를 바꾸는 방법에 대해 설명합니다.

이 정보는 썬 InfoDoc 21252, "How to Change the hostname and/or IP Address Without Running the sys-unconfig Command" 를 기반으로 만들어 졌습니다. (좀 더 자세한 정보는 SunSolve 를 참고하시기 바랍니다; 컨텐츠는 썬 서비스 플랜을 계약 하신 분께 공개되어 있습니다.)


옵션 1: sys-unconfig 이용하기

sys-unconfig 를 사용하면 여러개의 파일들을 기본값으로 되돌릴 수 있고, 그 다음에 호스트를 셧다운 시킵니다. 재부팅에 관해서 멘 페이지에서 설명되지 않은 것은 이러한 파일들을 재생성하도록 설정에 관한 질문을 받는 다는 것입니다. 이러한 질문들은 서버가 처음 배달 됐을때 혹은 운영체제를 제일 처음 로딩 시켰을때 받는 질문과 동일 합니다.

이제 부팅 과정에서 다음과 같은 화면을 보게 될 것입니다:

 Select the language you want to use: <select your language>
 
 Select a Locale,
 Please make a choice (0 - 59), or press h or ? for help: 
<select your location>
 
 What type of terminal are you using?
 Type the number of your choice and press Return: 
<select your terminal type, I use a DEC VT100>
 
 F2 continue, F2 continue
 
 Network Connectivity
       Networked [X] Yes
 
 DHCP
       Use DHCP [X] No
 
 Primary Network Interface
       Primary network interface [X] eri0
 
 Host Name <hostname>
 
 IP Address <ipaddress>
 
 Subnets
       System part of a subnet [X] Yes
 
 Netmask
 <netmask>
 
 IPv6
       Enable IPv6 [X] No
 
 Set a default Route
       [X] Specify one
 Default Route IP Address
       Router IP Address: <defaultrouter>
 
 Confirm Information
       F2 continue
 
 Configure Security Policy:
       Configure Kerberos Security [X] No
 
 Confirm Information
       F2 continue
 
 Name Service
       Name service [X] DNS
 
 Domain Name
       <dnsdomain>
 
 DNS Server Address
       Servers IP Address: <nameserver1>
       Servers IP Address: <nameserver2>
       Servers IP Address:
 
 DNS Search List
       Search Domain: <dnsdomain>
       Search Domain:
       Search Domain:
       Search Domain:
       Search Domain:
 
 Confirm Information
       F2 continue
 
 Time Zone
       Regions [X] <select your region>
 
 Time Zone
       Time zones [X] <select your time zone>
 
 Date and Time
   > Accept the default date and time or enter new values.

옵션 2: 파일 수정하기

호스트 이름 변경

솔라리스7 이전 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/nodename
/etc/hostname.<interface>

여기서 <interface> 는 프라이머리 인터페이스의 이름입니다, 예를 들어 bge0.

/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts

이제 시스템을 재부팅 합니다.

솔라리스7 에서 9 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/nodename
/etc/hostname.<interface>

여기서 <interface> 는 프라이머리 인터페이스의 이름입니다, 예를 들어 bge0.

/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts
/etc/inet/ipnodes

이제 시스템을 재부팅 합니다.

솔라리스10 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/nodename
/etc/hostname.<interface>

여기서 <interface> 는 프라이머리 인터페이스의 이름입니다, 예를 들어 bge0.

/etc/inet/ipnodes

이제 시스템을 재부팅 합니다.

IP 주소 변경

솔라리스7 이전 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/hostname.<interfaces>

여기서 <interfaces> 는 인터페이스의 이름들 입니다, 예를 들어 bge0, bge1, eri0.

/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts

만약 새로운 서브넷으로 이동하려 한다면 다음의 파일들을 수정합니다:

/etc/inet/netmasks
/etc/defaultrouter
/etc/resolv.conf

이제 시스템을 재부팅 합니다.

솔라리스7 에서 9 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/hostname.<interfaces>

여기서 <interfaces> 는 인터페이스의 이름들 입니다, 예를 들어 bge0, bge1, eri0.

/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts
/etc/inet/ipnodes

만약 새로운 서브넷으로 이동하려 한다면 다음의 파일들을 수정합니다:

/etc/inet/netmasks
/etc/defaultrouter
/etc/resolv.conf

이제 시스템을 재부팅 합니다.

솔라리스10 버전은 다음의 파일들을 수정합니다:

/etc/inet/hosts
/etc/hostname.<interfaces>

여기서 <interfaces> 는 인터페이스의 이름들 입니다, 예를 들어 bge0, bge1, eri0.

/etc/inet/ipnodes

만약 새로운 서브넷으로 이동하려 한다면 다음의 파일들을 수정합니다:

/etc/inet/netmasks
/etc/defaultrouter
/etc/resolv.conf

이제 시스템을 재부팅 합니다.


저자에 관하여

Ross Moffatt 은 10년 이상 UNIX 시스템 관리자로 실한 경험이 있습니다. ross.stuff [at] telstra.com 로 연락 가능합니다.


이 아티클의 영문 원본은
http://www.sun.com/bigadmin/content/submitted/change_hostname.jsp

에서 볼수 있습니다.

"관리자코너" 카테고리의 다른 글

Posted by 1010
60.Unix2008. 12. 15. 12:08
반응형
----------------------------------------------------------------------------
                        시스템 디스크 교체 후 E3500 부팅 절차
----------------------------------------------------------------------------
시스템 디스크 교체 후 E3500 부팅

개요: 시스템 디스크 교체 후 E3500 부팅
상세 설명:

E3500의 내부 부트 디스크 교체 지침(광채널 디스크)
이 지침은 A5000으로도 알려진 SENA(Solstice Enterprise Network Array)의 부트 디스크에도 적용됩니다.
그러나 SEVM 또는 SDS에 의해 미러링된 부트 디스크에는 적용되지 않습니다
(Solstice Enterprise Volume Manager 또는 Solstice Disk Suite).
Ultra Enterprise 3500의 내부 부트 디스크에 문제가 발생하여 다른 드라이브로 교체했습니다.
새 드라이브는 newfs가 수행되었으며 원본 디스크의 덤프 테이프로부터 복원되었습니다.
새 디스크의 월드 와이드 번호(WWN)를 반영하기 위해 Open Boot Prom의 부트 디바이스 변수를 변경했습니다.

STOP + A

boot cdrom -sw

일반적인 절차에 따라 새 디스크에 적합한 디스크 파티션과 파일 시스템을 생성하고 백업 덤프를 복원합니다.
그런 다음, 아래와 같은 명령을 수행합니다.
이제, 새 디스크로 시스템을 부팅할 수 있도록 교체 디스크의 WWN이 적절한 경로에 생성됩니다.


기존 생성된 디바이스 정보를 삭제한다.

/a/devices/.... <-- 파일 삭제
/a/dev/....  <-- 파일 삭제

drvconfig -r /a/devices -p /a/etc/path_to_inst
disks -r /a
devlinks -r /a

버그 ID 4161768로 인해 다음과 같은 두 명령이 필요합니다.
cd /devices
find . -print | cpio -pduvm /a/devices

(cdrom의 /device 트리를 마운트된 파일시스템으로 복사)
마지막으로, 부트 디스크를 설치합니다.

installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/cXtXdXsX

#installboot /usr/platform/sun4u/lib/fs/ufs/bootblk /dev/rdsk/cXtXdXs0
# ls -l /dev/rdsk/cXtXdXsX

lrwxrwxrwx 1 root root 50 Aug 1 10:48 /dev/rdsk/cXtXdXsX -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw

여기서 주의 : 윗라인의 pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw 부분을 꼭 기억 하세요.

--부팅 디스크 앨리어스 지정하기
STOP + A (prom mode)

OK prompt

ok nvalias mirror /pci@1f,0/pci@1,1/ide@3/dad@1,0:a,raw ; --앨리어스 지정함.

ok boot mirror --새로구성된 디스크로 부팅함.


--A5000으로 구성된 경우
마운트된 파일시스템을 해제합니다.모든 파일시스템에 최종 fsck 검사를 수행합니다.
luxadm 명령을 사용하여 부트 디바이스를 생성합니다.
luxadm -v set_boot_dev -y /dev/dsk/cXtXdXs0
시스템이 정지되고 부팅이 제대로 수행되어야 합니다.


----------------------------------------------------------------------------
              기존 디스크 / 에서 새 디스크 / dd copy
----------------------------------------------------------------------------
boot_disk 만들기

1)root 장치 확인
#df -k /

2)디스크 정보 확인
#format  --파일 크기가 동일해야 한다.
0.c1t0d0  <-- 원본
1.c1t1d0  <-- 백업
--원본디스크 와 백업디스크 확인하기

3)백업 디스크 확인
#fdisk /dev/rdsk/c1t1d0p0

y <-- 선택

#dd if=/dev/rdsk/c1t0d0p0 of=/dev/rdsk/c1t1d0p0 bs=8192k


4)백업 디스크에 boot 환경 설정

어떤 디스크로 booting 하는지 부팅패스 확인
#eeprom | grep bootpath
bootpath=/pci@1,0/pci1014,8f@3/sd@0,0:a

두번째 디스크 물리 장치명 확인
#ls -l /dev/rdsk/c1t1d0s0
--경로명확인


5)모든 파일 시스템 체크함

#fsck -y /dev/rdsk/c1t1d0s0
#fsck -y /dev/rdsk/c1t1d0sX --기존 파일시스템 모두 체크함



6)두번째 디스크를 root를 마운트 한다.

#mount /dev/dsk/c1t1d0s0 /mnt

7)boot path 설정

#vi /mnt/boot/solaris/bootenv.rc
--기존 셋팅
setprop bootpath=/pci@1,0/pci1014,8f@3/sd@0,0:a
--변경 셋팅
setprop bootpath=/pci@1,0/pci1014,8f@3/sd@1,0:a

8)자동 마운트 포이트 수정
#vi /mnt/etc/vfstab
--기존 마운트 포인터 수정함

--------------------------------------------------------------------------
                      슬라이스  dd로 copy test
--------------------------------------------------------------------------
# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
      0. c1t0d0 <DEFAULT cyl 1302 alt 2 hd 255 sec 63>
          /pci@0,0/pci1000,30@10/sd@0,0
      1. c1t1d0 <DEFAULT cyl 1788 alt 2 hd 128 sec 32>
          /pci@0,0/pci1000,30@10/sd@1,0
      2. c1t2d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@2,0
      3. c1t3d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@3,0
      4. c1t4d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@4,0
      5. c1t5d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@10/sd@5,0
      6. c2t0d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@11/sd@0,0
      7. c2t1d0 <DEFAULT cyl 1020 alt 2 hd 64 sec 32>
          /pci@0,0/pci1000,30@11/sd@1,0
Specify disk (enter its number): 2
selecting c1t2d0
[disk formatted]


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
        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
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !<cmd>    - execute <cmd>, then return
        quit
format> p


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
        !<cmd> - execute <cmd>, then return
        quit
partition> p
Current partition table (original):
Total disk cylinders available: 1020 + 2 (reserved cylinders)

Part      Tag    Flag    Cylinders        Size            Blocks
  0 unassigned    wm      0              0        (0/0/0)          0
  1 unassigned    wm      0              0        (0/0/0)          0
  2    backup    wu      0 - 1019    1020.00MB    (1020/0/0) 2088960
  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        1.00MB    (1/0/0)      2048
  9 unassigned    wm      0              0        (0/0/0)          0

partition> 0
Part      Tag    Flag    Cylinders        Size            Blocks
  0 unassigned    wm      0              0        (0/0/0)          0

Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: $
partition>
partition>
partition> p
Current partition table (unnamed):
Total disk cylinders available: 1020 + 2 (reserved cylinders)

Part      Tag    Flag    Cylinders        Size            Blocks
  0 unassigned    wm      0 - 1019    1020.00MB    (1020/0/0) 2088960
  1 unassigned    wm      0              0        (0/0/0)          0
  2    backup    wu      0 - 1019    1020.00MB    (1020/0/0) 2088960
  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        1.00MB    (1/0/0)      2048
  9 unassigned    wm      0              0        (0/0/0)          0

partition> q

# prtvtoc /dev/rdsk/c1t2d0s2 | fmthard -s - /dev/rdsk/c1t3d0s2
fmthard:  New volume table of contents now in place.
#
#
#
# newfs /dev/rdsk/c1t2d0s0
newfs: construct a new file system /dev/rdsk/c1t2d0s0: (y/n)? y
/dev/rdsk/c1t2d0s0:    2088960 sectors in 1020 cylinders of 64 tracks, 32 sectors
        1020.0MB in 64 cyl groups (16 c/g, 16.00MB/g, 7680 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 32832, 65632, 98432, 131232, 164032, 196832, 229632, 262432, 295232,
 1771232, 1804032, 1836832, 1869632, 1902432, 1935232, 1968032, 2000832,
 2033632, 2066432,
#
#
# newfs /dev/rdsk/c1t3d0s0
newfs: construct a new file system /dev/rdsk/c1t3d0s0: (y/n)? y
/dev/rdsk/c1t3d0s0:    2088960 sectors in 1020 cylinders of 64 tracks, 32 sectors
        1020.0MB in 64 cyl groups (16 c/g, 16.00MB/g, 7680 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
 32, 32832, 65632, 98432, 131232, 164032, 196832, 229632, 262432, 295232,
 1771232, 1804032, 1836832, 1869632, 1902432, 1935232, 1968032, 2000832,
 2033632, 2066432,
#
#
#

#
# mkdir backup1
# mkdir backup2
#
#
# mount /dev/dsk/c1t2d0s0 /backup1
# mount /dev/dsk/c1t3d0s0 /backup2
#
#
# df -k 
Filesystem            kbytes    used  avail capacity  Mounted on
/dev/dsk/c1t0d0s0    9524711 1348982 8080482    15%    /
/proc                      0      0      0    0%    /proc
mnttab                    0      0      0    0%    /etc/mnttab
fd                        0      0      0    0%    /dev/fd
swap                  316836      20  316816    1%    /var/run
swap                  317116    300  316816    1%    /tmp
/dev/dsk/c1t0d0s7    483151    1048  433788    1%    /export/home
/dev/dsk/c1t2d0s0    981999    1041  922039    1%    /backup1
/dev/dsk/c1t3d0s0    981999    1041  922039    1%    /backup2
# cd /backup1
# pwd   
/backup1
# mkdir folder
#
# mkfile 100m ddfiletest
#
# dd if=/dev/rdsk/c1t2d0s0 of=/dev/rdsk/c1t3d0s0 bs=8192k
127+1 records in
127+1 records out
#
# fsck -y /dev/rdsk/c1t3d0s0

FILE SYSTEM IS CURRENTLY MOUNTED.  CONTINUE?  yes

** /dev/rdsk/c1t3d0s0
** Currently Mounted on /backup2
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE?  yes

4 files, 102474 used, 980957 free (13 frags, 122618 blocks, 0.0% fragmentation)

***** FILE SYSTEM WAS MODIFIED *****

# cd /backup2
# ls -l
total 204946
-rw------T  1 root    other    104857600 Mar  3 17:32 ddfiletest
drwxr-xr-x  2 root    other        512 Mar  3 17:28 folder
drwx------  2 root    root        8192 Mar  3 16:44 lost+found
# pwd
/backup2
#

--dd copy 됨


----------------------------------------------------------------------------
                        테이프 명령어
----------------------------------------------------------------------------

테이프 명령어
명령:mt - 자기 테이프 용도:테이프 상태 확인, 되감기, 지우기 등 경로:/usr/bin/mt

구문:mt [ -f 테이프 장치 이름 ] 명령 [ 반복 횟수] 여기서 테이프 장치 이름은 보통
   /dev/rmt/0입니다.

   명령은 다음과 같습니다.

   status  -테이프 드라이브의 상태 정보를 표시합니다
   rewind  -테이프를 되감습니다.
   retension  -테이프를 팽팽한 상태로 만듭니다.
   erase  -테이프 전체를 지웁니다.
   fsf   -지정된 반복 횟수만큼 파일을 앞으로 건너뜁니다.
   bsf   -지정된 반복 횟수 만큼 파일을 뒤로 건너뜁니다.
   eom   -기록된 미디어의 끝부분으로 건너 뜁니다.

   반복 횟수는 요청된 작업을 수행하는 횟수를 말합니다.
   기본적으로 mt는 명령을 한 번 수행합니다.
   하나의 명령을 두 번 이상 반복하려면 반복 횟수를 지정하면 됩니다.

   예:mt -f /dev/rmt/0 status ---> 테이프의 상태를 표시합니다.
   mt -f /dev/rmt/0 rewind ---> 테이프를 되감습니다.
   mt -f /dev/rmt/0n fsf 2 ---> 첫 번째 두 개의 파일을 건너뜁니다.
   mt -f /dev/rmt/0n bsf 2 ---> 두 개의 파일만큼 뒤로 건너뜁니다.

명령: tar - 테이프 아카이브
용도: 테이프 아카이브를 만들거나 복원합니다.
    디렉토리 구조를 유지하면서 하나 또는 여러 개의 파일을 백업하는데 사용합니다.
경로: /usr/bin/tar
구문: tar [옵션] [장치 이름] [파일 이름]

   옵션은 다음과 같습니다.
   c    tar 파일을 새로 만듭니다.
   r    기존 tar 파일을 대체합니다.
   t    테이프 아카이브의 목차를 표시합니다.
   u    업데이트합니다.
       업데이트할 파일이 tar 파일에 없거나 마지막으로 tar 파일을 쓴 후
       수정된 경우에는 tar 파일의 끝에 씁니다. 업데이트 수행은 다소
       느릴 수 있습니다. 5.x 시스템에서 만든 tar 파일은 4.x 시스템에서
       업데이트할 수 없습니다.
   x    추출하거나 복원합니다.
      추출하거나 복원할 파일은 tar 파일에서 추출하고 현재 디렉토리에서
      tar 파일에 지정된 디렉토리에 씁니다. 추출할 파일 및 디렉토리에
      대해 상대 경로 이름을 사용하십시오.
   v    자세한 정보를 표시합니다.
      기능 문자 다음에 각 파일의 이름을 출력합니다.

여기서 장치 이름은 대개 /dev/rmt/0입니다. 또는 파일 이름일 수도 있습니다. 파일
이름은 아카이브로 만들 파일 이름입니다.

예:
tar cvf /dev/rmt/0 /export/home/user1 --> /dev/rmt/0 테이프에 /export/home/user1의
테이프 아카이브를 만듭니다.
tar tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.
tar xvf /dev/rmt/0 ---> /dev/rmt/0에서 데이터를 복원합니다.

참고: 위의 명령에서 /dev/rmt/0 대신 /dev/rmt/0n을 사용할 수 있습니다.
/dev/rmt/0n을 사용하면 백업 수행 후 테이프를 되감지 않습니다.
명령: ufsdump
용도: 파일 시스템, 파일 또는 디렉토리를 백업하는데 사용합니다.
   전체 백업이나 증분 백업을 수행할 수 있습니다.
경로: /usr/sbin/ufsdump
구문: ufsdump [옵션] [장치 이름] [덤프할 파일]

옵션은 다음과 같습니다.

0 ~ 9 덤프 레벨 옵션을 지정합니다.
    레벨 0은 가장 낮은 수준으로 전체 백업을 수행합니다. 레벨 1 ~ 9는 증분
    백업을 수행합니다.
u   현재 백업의 날짜와 덤프 레벨을 /etc/dumpdates 덤프 기록에 업데이트합니다.
f   파일이 쓰여질 장치를 지정합니다.이 옵션은 장치 이름이 필요합니다.
v   테이프에 있는 데이터를 파일 시스템에 있는 데이터와 비교하고 검사합니다.

여기서 장치 이름은 /dev/rmt/0입니다.
덤프할 파일은 초기 파일 시스템 /dev/rdsk/c0t2d0s0이나 블록 파일 시스템
/dev/dsk/c0t2d0s0입니다. 또한 /export/home과 같이 파일 시스템 이름이나
/export/home/user1과 같이 파일 이름 또는 디렉토리 이름을 사용할 수도 있습니다.

예:
ufsdump 0uf /dev/rmt/0 /export/home ---> /export/home 파일 시스템을 /dev/rmt/0
으로 덤프하고 전체 백업을 수행합니다.

ufsdump 1uf /dev/rmt/0 /dev/dsk/c0t2d0s4 --> /dev/dsk/c0t2d0s4 파일 시스템을
/dev/rmt/0로 덤프합니다. 이 명령은 레벨 1의 증분 백업을 수행합니다.

ufsdump 4uf dbserver:/dev/rmt/0 /export/home/user1 --> /export/home/user1에 대한
레벨 4의 증분 백업을 Remote Box dbserver에 마운트된 dev/rmt/0 테이프 장치에 덤프
합니다.   여기서 테이프 장치는 로컬 시스템이 아니라원격 시스템인 dbserver에 있는
장치입니다.

명령: ufsrestore
용도: ufsdump 명령으로 만들어진 백업본에서 파일을 복구하거나 추출하는데 사용합니다.
경로: /usr/sbin/ufsrestore
구문: ufsrestore [옵션] [장치 이름] [복원할 파일]

옵션은 다음과 같습니다.
i    대화형 모드로 파일을 복원합니다.
r    백업 전체를 복원합니다.
t    백업의 목차를 표시합니다.
x    명령행에서 지정한 파일을 복원합니다.
f    /dev/rmt/0과 같이 장치 이름을 지정합니다.
v    파일을 복원하고 있는 경로 이름을 표시합니다(세부 정보 표시 모드).

참고: 이 옵션은 ufsdump 명령에서 사용하는 v(verify) 옵션과 다릅니다.

예:
ufsrestore xvf /dev/rmt/0 ./etc/hosts ---> /etc/hosts 파일을 현재 디렉토리로
                   복원합니다.   
ufsrestore ivf /dev/rmt/0 ---> 복원될 파일을 선택합니다.
ufsrestore rvf /dev/rmt/0 ./opt ---> /opt 파일 시스템을 현재 디렉토리로 복원합니다.
ufsrestore tvf /dev/rmt/0 ---> /dev/rmt/0의 목차를 표시합니다.


----------------------------------------------------------------------------
                        ufsdump & ufsrestore & tape 응용편
----------------------------------------------------------------------------
#sync;sync;sync;
#shutdown -i0 -y -g0

stop + A
ok setenv auto-boot? false

ok boot cdrom -sw

#ufsdump 0uf /dev/rmt/0 /dev//rdsk/c0t0d0s0
--백업 완료후..
#poweroff (파워를 내리고 디스크 교체)

또는 새 디스크 교체후

ok boot probe-scsi  -scsi disk 정보 인식시킴 (prom mode)
ok boot probe-ide  -ide disk 정보인식시킴
format  --디스크 인식여부 확인후 작업
ok reset  (or)
ok reset-all


운영중에 인식시키기
#drvconfig;disks;devlinks;
#devfsadm;


#shutdown -i5 -y -g0
ok setenv auto-boot? true

ok boot cdrom -sw

#format

#newfs /dev/rdsk/c0t0d0s0

--(y/n)?  y

#fsck -y /dev/rdsk/c0t0d0s0
--파일 시스템 이상여부 체크함


#mount /dev/dsk/c0t0d0s0 /a

#cd /a

#ufsrestore rvf /dev/rmt/0

--복원시킴


#rm restoresymtable

#installboot /usr/platform/'uname -m'/lib/fs/ufs/bootblk /dev/rdsk/c0t0d0s0

#cd /

#umount /a

#shutdown -g0 -y -i6

--shutdown command
종료 shutdown -y -i0 -g0
-y (yes or no)
-i (default run level S를 다른 레벨로 지정가능함)
-g (default 60초 -g0 바로 셧다운)
리붓 shutdown -y -i6 -g0


----------------------------------------------------------------------------
                백업 4가지 방법 간단히 마무리 정리
----------------------------------------------------------------------------

1. tar
2. cpio
3. dd
4. ufsdump/ufsrestore

1. tar

tar를 화일 또는 디렉토리 전체를 백업 받는데 사용된다.

1.1 화일 시스템에서 테이프로 백업 받기

# tar cvf /dev/rmt/0 .

1.2 테이프에서 화일 시스템로 백업 받기

# tar xvf /dev/rmt/0

1.3 테이프 내용 보기

# tar tvf /dev/rmt/0


2. cpio

2.1 화일 시스템에서 테이프로 백업 받기

# find . -print | cpio -ocvB -O /dev/rmt/0

2.2 테이프에서 화일 시스템로 백업 받기

# cpio -icvBmd -I /dev/rmt/0

2.3 테이프 내용 보기

# cpio -ict -I /dev/rmt/0


3. dd

3.1 화일을 테이프로 백업 받기

# dd if=file1 of=/dev/rmt/0 bs=4096k

3.2 테이프에서 화일로 백업 받기

# dd if=/dev/rmt/0 of=file1 bs=4096k


4. ufsdump/ufsrestore

4.1 화일시스템에서 테이프로 백업 받기

# ufsdump 0cuf /dev/rmt/0 /

4.2 테이프에서 화일 시스템으로 백업 받기

# ufsrestore rvf /dev/rmt/0

4.3 테이프 내용 보기

# ufsrestore tvf /dev/rmt/0

4.4 Interactive restore

# ufsrestore ivf /dev/rmt/0
[이 게시물은 아쿠아님에 의해 2007-05-05 21:24:07 시스템자료실에서 이동 됨]
Posted by 1010
60.Unix2008. 12. 15. 12:04
반응형
arp
arp(1M) 명령을 사용하면 주소 확인 프로토콜에 사용되는 인터넷 대 이더넷 변환 표를 표시하고 수정할 수 있습니다. arp 명령의 Trusted Solaris 버전을 -d, -s, -f 등의 옵션과 함께 실행하려면 sys_net_config 특권을 상속해야 합니다. -a 옵션은 유효 UID 0을 사용해서 ADMIN_HIGH로 실행되어야 합니다. file_mac_read 특권과 file_dac_read 특권은 이 제한에 우선합니다.

ifconfig
ifconfig(1M) 명령을 사용하면 네트워크 매개변수를 구성하고 네트워크 인터페이스에 주소를 할당할 수 있습니다. ifconfig 명령의 Trusted Solaris 버전을 사용하려면 sys_net_config 특권이 필요합니다. ether, auto-revarp, plumb 등의 옵션으로 루트만이 읽을 수 있는 ADMIN_HIGH 네트워크 장치를 열어야 합니다. 이 옵션들은 유효 사용자 ID 0을 사용해서 ADMIN_HIGH로 호출될 수 있고, file_dac_read 특권과 file_mac_read 특권을 사용해서 이 옵션에 대한 제한을 무시할 수 있습니다.

ndd
드라이버 매개변수를 설정하기 위해서는 ndd(1M) 명령에 대한 -set 옵션은 sys_net_config 특권을 상속해야 합니다.

netstat
netstat(1M) 명령을 사용하면 소켓, 라우팅 테이블 및 기타 구조를 포함하여 네트워크 관련 데이터 구조의 내용이 여러 가지 형식으로 표시됩니다. 다른 네트워크에 있는 호스트와 통신을 할 때 netstat -rn 명령을 사용하면 게이트웨이가 구성되었는지 확인할 수 있습니다. netstat 명령의 Trusted Solaris 버전을 사용하려면 ADMIN_HIGH 민감도 레이블을 사용해야 커널 및 네트워크 구성 정보에 액세스할 수 있습니다. file_mac_read 특권을 사용하면 이 제한을 무시할 수 있습니다.

-R 옵션을 사용하여 동적 라우팅 테이블에서 각 경로의 메트릭 정보는 물론 보안 정보를 얻을 수 있습니다. -R 옵션에는 net_rawaccess 특권이 추가로 필요합니다. 예제는 "라우팅 명령 사용"을 참조하십시오.

rdate
rdate(1M) 명령이 제대로 실행되려면 sys_config 특권이 필요합니다.

route
route(1M) 명령을 사용하면 emetrics(보안 정보)의 추가 및 삭제를 포함하여 네트워크 라우팅 테이블에 대한 관리 작업을 수행할 수 있습니다. route 명령의 Trusted Solaris 버전이 제대로 실행되려면 sys_net_config 특권을 상속해야 합니다. Trusted Solaris 환경에서는 다음과 같은 세 가지 추가 옵션이 있습니다.

-m - 확장 메트릭 정보를 명령줄에 지정합니다.

-e - 확장 메트릭 정보를 포함하는 파일을 지정합니다.

-t - 추가할 경로(단순 또는 확장 메트릭 포함)를 포함하는 파일을 지정합니다.

경로를 추가하거나 삭제하기 위해 IP 장치를 열려면 이 프로그램이 sys_net_config 특권을 상속받아 ADMIN_HIGH의 민감도 레이블과 유효 사용자 ID 0 또는 sys 그룹에서 실행되어야 합니다. file_mac_read 특권은 ADMIN_HIGH MAC 정책을 무시할 수 있습니다. file_dac_read 특권은 UID 0 또는 sys 그룹 DAC 요구 사항을 무시할 수 있습니다. "Trusted Solaris에서의 라우팅"을 참조하십시오.

snoop
snoop(1M) 명령을 사용하면 네트워크로부터 패킷을 포착해서 그 내용을 표시할 수 있습니다. 네트워크 장치를 열 때 snoop 명령의 Trusted Solaris 버전은 민감도 레이블 ADMIN_HIGH와 유효 UID 0을 사용하여 실행되어야 합니다. 단, 프로세스에 file_mac_read 특권과 file_dac_read 특권이 있는 경우 이들 두 가지 요건이 필요 없습니다. snoop 명령을 사용하려면 sys_net_config 특권을 상속해야 합니다. -i 옵션을 사용하면 네트워크 장치를 열지 않고 파일을 열기 때문에 요건이 위와 동일하지는 않습니다.

snoop 명령은 패킷의 SAMP 보안 속성과 IP 옵션을 표시할 수 있습니다.

spray
spray(1M) 명령은 RPC를 사용하는 지정된 호스트로 단방향 패킷 흐름을 전송하고 수신된 패킷 수를 전송 속도와 함께 보고합니다. 호스트가 브로드캐스트 주소인 경우 이 프로그램이 제대로 실행되려면 net_broadcast 특권을 상속해야 합니다.
ping 같은 경우에는 호스트가 제대로 작동하지 않더라도 반응한다.
하지만 spray는 좀더 자세한 반응을 점검하는데 사용할 수 있다.

root@ntech # ping v440 (hostname)
v440 is alive
root@ntech #
root@ntech #
root@ntech # ping -s v440
PING v440: 56 data bytes
64 bytes from v440 (192.168.0.180): icmp_seq=0. time=0.430 ms
64 bytes from v440 (192.168.0.180): icmp_seq=1. time=0.282 ms
^C
----v440 PING Statistics----
2 packets transmitted, 2 packets received, 0% packet loss
round-trip (ms)  min/avg/max/stddev = 0.282/0.356/0.430/0.10
root@ntech #
root@ntech #
root@ntech # spray v440
sending 1162 packets of length 86 to v440 ...
        no packets dropped by v440
        56241 packets/sec, 4836745 bytes/sec
root@ntech #

root@ntech # spray -d 20 -c 100 -l 2048 v440
sending 100 packets of length 2048 to v440 ...
        no packets dropped by v440
        5640 packets/sec, 11552346 bytes/sec
root@ntech #
Posted by 1010
60.Unix2008. 12. 15. 11:40
반응형
1) 현재 ip-address 확인 방법
  # ifocnfig -a     (모든 interface 확인)
  # ifconfig  eri0   (eri0 네트웍 카드만 확인 )
  # man eri         (eri 네트웍 카드를 알 수 있음.)
2) 현재 eri 네트웍 카드의 ip-address 변환 방법
  # ifconfig eri0 inet 10.1.1.60
3) ethernet address 변환 방법
  # ifconfig eri0 ether 0:3:ba:4e:3c:4c
4) netmask 변경
  # ifconfig eri0 netmask 255.255.0.0 broadcast +
5) 네트웍 카드 enable /disable
  # ifconfig eri0 down      <== disable
  # ifconfig eri0 up        <== enable
6) 네트웍 카드 plumb /unplumb
  # ifconfig eri0  unplumb    <== 네트웍 카드 제거
  # ifconfig eri0  plumb      <== 네트웍 카드 설정
7) 네트웍 카드 초기화
  # ifconfig eri0 plumb 203.234.247.60 netmask 255.255.255.0 broadcast + up
8) rebooting 후에도 계속 사용하고자 할 때 설정하는 파일
  # vi /etc/hostname.eri0     <== 네트웍 카드 이름으로된 파일을 생성
   203.234.247.60      
   또는
  sun60
9) 만일 'sun60' 처럼 host이름으로 사용시 hosts 파일에 기록
  # vi  /etc/hosts
   203.234.247.60   sun60
10) 가상 interface 설정 방법 (복수의 ip-address 설정)
  # ifconfig  eri0  addif 10.1.1.10  up
  # ifconfig  eri0  addif 10.1.1.11  up
11) 가상 interface 제거 방법
  # ifconfig  eri0:1 unplumb
   또는
  # ifconfig eri0 removeif  10.1.1.11
12) booting 시 자동으로 가상 Interface 설정 방법
  # vi  /etc/hostname.eri0
   sun60 up
   addif  10.1.1.1 netmask 255.255.255.0 broadcast + up
   addif  10.1.1.2 netmask 255.255.255.0 broadcast + up
  # init 6
2)default gateway 설정
#netstat -nr   //현재 라우팅 테이블을 보여줌
#route flush
#route add default  gateway ip(부여된 게이트웨이 주소)
#netstat -nr   //재확인
===========================================
#cat /etc/defaultrouter  <-- 확인하여 내용이 안나오면 추가 합니다. 나오면 됐음
#vi /etc/defaultrouter
~~ 게이트웨이 아이피~~
저장후 나오시면 됩니다.
#vi /etc/nsswitch.conf
또는

default router를 설정한다.
default router는 외부 네트워크를 사용하기 위해서는 필수로
필요한 것으로 설정하는 방법은 두가지다.
우선 /etc/defaultrouter 파일을 만들어 그안에 라우터의 IP Address를
적어 주는 것이고 두번째는 /etc/rc.local 파일에 /usr/etc/route 명령을
사용하여 직접 써주는 방법이다. 다음과 같이 하면된다.

/usr/etc/route add default 210.108.179.254 1
Posted by 1010
60.Unix2008. 12. 15. 10:21
반응형
LAN 카드 설정, /dev/hme

스팍 플랫폼에서 솔라리스는 100Mbps 고속 이더넷 인터페이스 카드를 /dev/hme로
정의한다. 그런데 이 인터페이스는 자동으로 10/ 100Mbps를 맞추는 오토
센싱(auto-sensing) 기능을 지원하지만 이것이 잘 안 될 때가 종종 있다. 특히
스위치가 풀 듀플렉스를 지원하는데 하프 듀플렉스로 맞춰지는 일이 비일비재한데
이럴 때는 수동으로 설정해줘야만 한다. hme를 100Mbps 풀 듀플렉스로 설정하는
방법은 ndd 커맨드를 이용하는 방법과 /etc/system에 파라미터 값을 넣어주는 두 가지
방법이 있는데, 그중 ndd를 이용하는 방법은 다음과 같다.

# ndd -set /dev/hme adv_autoneg_cap 0 (오토 센싱 기능 off)
# ndd -set /dev/hme adv_100fdx_cap 1 (100Mbps 풀 듀플렉스 기능 on)
# ndd -set /dev/hme adv_100hdx_cap 0
# ndd -set /dev/hme adv_100T4_cap 0

이는 재부팅시에는 설정 값이 지워진다. 이를 방지하기 위해서는
/etc/init.d/inetsvc에 다음과 같은 명령문을 넣어주면 된다.

/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1

또 다른 방법은 /etc/system에 커널 파라미터 값을 넣어 주는 것인데, /etc/system
끝에 다음과 같은 줄을 넣어주고 재부팅하면 된다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1
Posted by 1010
60.Unix2008. 12. 15. 10:20
반응형
[출처] http://maso.zdnet.co.kr/maso/2000/10/11/014004,971241222,178.html

Novice] 진정한 엔터프라이즈급 운영체제, 솔라리스 매력탐구

웹 서버를 위한 솔라리스 튜닝

그동안 웹 서버 최적화라고 하면 아파치 설정 파일의 파리미터 값의 최적화나 컴파일
전에 소스의 HARD_SERVER_LIMIT 값을 변경하는 정도 의 애플리케이션 내에서의 작업이
주류를 이뤘다. 하지만 그동안 이런 애플리케이션 튜닝 외에 운영체제(솔라리스)
레벨에서 웹 서버 최적화를 위해 제공할 수 있는 성능 개선책에 대해서는 튜닝법은
고사하고 실제로 운영체제의 어느 부분을 튜닝해야 성능을 개선할 수 있는지에 대한
것조차도 관련 자료를 구하기 힘들었다. 그래서 이번호에서는 그동안 우리가 웹 서버
환경을 설계할 때 오해하기 쉬운 여러 가지 환경적 요소에 대해 하나씩 짚어가면서,
실제 운영 경험을 토대로 웹 환경에서의 솔라리스의 특징과 튜닝법에 대해 소개하고자
한다.

김민형 한국외대 전산소

연재 순서
1회(2000. 09): 솔라리스엔 뭔가 특별한 것이 있다
2회:(2000. 10): 웹 서버를 위한 솔라리스 튜닝
3회: 엔터프라이즈 환경의 오라클을 위한 솔라리스 튜닝

--------------------------------------------------------------------------------

실제 웹 서버 튜닝에 들어가기 전에 반드시 다시 짚고 넘어가야 할 세 가지가 있다.
먼저 네트워크에 대한 실전 감각을 다져야 한다는 것이다. 제아무리 웹 서버가
최적화돼 있다 하더라도 라우터의 라우팅 경로가 잘못돼 있거나, 자기가 속한
네트워크의 특성을 파악하지 못하고 있다면, 심하게 말하면 웹 서버 튜닝은 헛수고가
되고 만다. 필자의 경험에 비춰볼 때 심지어 복수 회선을 쓰고 있음에도 그에 대한
trunking 에러 등으로 한 회선을 아예 쓰지 못하는 사이트도 있었다. 이 사이트
운영자는 서버가 느리기 때문이라고 생각하고 있었다.

그 다음으로 최적화(튜닝)에 대한 우선 순위의 기초를 정리해야 한다. 일반적으로
시스템 튜닝 과정에서 OS 튜닝은 가장 나중에 하는 영역이다. 예를 들어 초기 CERN 웹
서버를 이용하면 OS 파라미터들이 튜닝돼 있다고 해도 최근에 나온 아파치 웹 서버의
1/10에도 미치지 못하는 성능을 낸다. 또한 최근에 나온 웹 엔진들 역시 퍼포먼스를
고려하지 않은 것을 이용하게 되면 마찬가지 결과를 가져온다. 예를 들어 HP-UX에서
OSDK(Oracle Servlet development kit) 웹 엔진을 이용할 때 원하는 퍼포먼스가
나오지 않는다고 제아무리 전문가들을 불러 OS를 최적화한다 해도 앞서 말한 CERN
서버의 경우처럼 성능 개선의 여지는 좁다.

끝으로 OS 튜닝을 하기 전 염두해 둬야 할 것이 있는데, 우리는 지금 솔라리스8을
이용한다는 것이다. 솔라리스8은 이전의 SunOS 4.X나 솔라리스 2.5.1 이전의 버전처럼
이용자가 반드시 튜닝해야 할 파라미터들이 극히 줄었다. 한 마디로 초기 설정이 점차
최적화돼 나오고 있다는 것이다(퍼포먼스 분석가/튜닝 전문가에게는 상당히 아쉬운
일이 아닐 수 없지만). 그와 더불어 하드웨어 드라이버에 있어서도 최신의 드라이버를
사용함으로써 하드웨어적인 성능 개선을 얻을 수 있을 뿐 아니라 솔라리스8에는
SUNWncar, SUNWncarx, SUNWncau라는 Solaris Network and Cache Accelerator가 포함돼
있어 네트워크와 관련해서는 그 이전의 어떤 버전보다 나은 환경을 제공하고 있다.
기존의 솔라리스를 이용하는 환경에서 퍼포먼스를 생각한다면 반드시 최신의 버전을
이용해야 하며, 필자의 주관적인 견해로는 현재 나온 HP-UX, AIX, 디지털
유닉스(OSF1) 등 상용 유닉스 중에서 웹 환경에 있어서는 솔라리스가 그 자체만으로도
가장 나은 성능을 얻을 수 있다고 생각한다.

대역폭과 속도는 정비례하지 않는다

먼저 http 환경은 무엇보다도 네트워크 같은 환경적인 요소에 가장 큰 영향을 받는다.
그러므로 네트워크에 관련해 오해의 소지가 많은 부분에 대해 설명하면서 웹 환경의
특성을 살펴본 후 튜닝법에 들어가기로 하겠다.

먼저 웹 환경의 컨텐츠는 크게 두 가지로 분류할 수 있다. 그 중 하나는 html
파일같은 작은 조각에서부터 100~200KB 단위까지의 웹 링크를 간단히 하기 위한
이미지맵 gif, jpg 파일이 중심이 되는 부류이고, 다른 하나는 요사이 멀티미디어 웹
컨텐츠라고도 불리는 ASF나 리얼 비디오, mpeg, avi 같은 동영상 자료, 리얼 오디오
같은 음악 자료나 200KB∼1MB 미만의 gif, jpeg 파일 같은 대용량 파일이 중심이 되는
부류이다. 이 두 가지 부류는 단순히 파일 크기만 다른 것이 아니라, http 환경에서
서로 다른 특징을 가지고 있다.

먼저 가장 중요한 것은 대부분의 사이트가 해당되는 작은 크기의 파일이 중심이 되는
http 환경에서 브라우징 속도는 기본적으로 네트워크 대역폭과는 ‘별다른’ 관련이
없다는 점이다. 이에 대해 실제로 간단한 실험을 한 번 해보자. 아파치만 기본 설치한
두 서버를 가진 환경에서 한 서버는 10Mbps 스위치에, 다른 하나는 100Mbps 스위치에
연결한 후 두 서버의 아파치 초기 화면을 띄워보자. 물론 한 서버에 접속하고 나서
로컬 캐시를 삭제한 후 다른 서버에 접속해야 한다는 점을 잊지 말자. 이 두 가지
경우에서 브라우징 속도에 차이가 있을까?

결과를 살펴보면 거의 느낄 수 없다. 이렇게 작은 사이즈 파일 위주의 환경에서는
서비스 제공자 입장에서 볼 때 자신의 네트워크의 부하가 적고 이용자의 네트워크가
일정 수준 이상의 대역폭을 확보하고 있다면, 이용자들의 브라우징 속도를 빠르게
해주기 위해서는 엄청난 규모의 확장이 아니고서는 큰 대역폭의 회선을 얻는 것은 별
도움이 되지 않는다.

아직까지 이에 익숙하지 않기 때문에 상당히 생소하게 들릴 수도 있는데 실제 속도를
계산해보면 쉽게 이해가 갈 것이다. 예를 들어, 우리가 관리하는 곳이 어느 증권회사
지사로 이 곳은 내부 전용선(T1)으로 객장 고객에게 본사의 정보를 웹으로 제공한다고
가정하자.

그런데 주가 정보는 돈을 다루면서 리얼타임으로 변하므로 직접 연결로 접속을 하는데
요새 들어 객장 고객들에게 느리다는 불평을 받아 우리는 대책을 강구해야 한다.
그런데 회선 증설을 하기 전에 얼마나 실효가 있는지 수치를 계산해 보면, 일반적으로
html 웹페이지는 대개 평균 5KB 정도의 크기이므로 한 페이지를 보여줄 때 현재는 5KB
/ 1.5Mbps(T1) = 2.5ms 정도의 시간이 걸린다. 이 수치는 라우터마다 다르지만,
라우터를 거칠 때마다 대략 1.5ms 정도의 지연이 발생하므로 6개 정도를 지난다면 총
11.5ms의 지연이 발생한다. 그런데 이를 T3(45Mbps)로 증설하면 0.83ms + 9ms(라우터)
= 9.83ms로 전체 네트워크 지연시간을 줄일 수 있다.

하지만 이 수치는 T1과 비교해서는 대략 20% 정도 밖에 속도 개선을 가져오지 못한다.
필자가 알기로 국내에서 일반적으로 T3 라인의 연이용료는 대형 통신업체는 정가가
1억을 호가하는 것으로 알고 있다(KREN 자료 인용). 게다가 특별한 경우가 아니면
회선 업체에서 T3를 연결해주지도 않지만 말이다.

이 정도로는 아직 감이 안 오는 독자들도 있을텐데 잠시 필자의 경험을 예로 들면,
필자는 얼마 전 친분이 있는 업체의 썬 장비에 KIDC에서 운영하고 있는 DB 서버를
복제하는 일을 하기 위해 인도네시아에 다녀온 적이 있다. 그 곳 역시 이제 막 웹
서비스를 시작하려고 준비하는 회사여서 전용회선 선정을 놓고 고심하고 있었다.
인도네시아의 경우 한국과 비교해 통신 환경, 특히 인터넷 환경이 극도로 열악해
INDOSAT이라는 최대 회선 제공 업체의 128K 라인 운영료가 국내 E1급의 가격과 맞먹을
정도였다. 낮은 회선 속도를 감수할지, 아니면 코로케이션 서비스를 받을 건지
고민하는 상황에서 갑자기 혜성처럼(?) 등장한 PSN이라는 통신업체가 512k를 약간
비싼 가격에 제공한다고 해 한번 테스트하기로 했다. 테스트 결과 512K의 대역폭은
맞았지만, 우리는 그 업체의 상품을 포기하고 INDOSAT의 256K를 이용하기로 했는데,
왜 그랬을까?

PSN의 경우 연결 방식을 마이크로웨이브를 통해 주변 오피스까지 연결한 다음, 몇
군데 마이크로웨이브 릴레이를 거쳐 중앙과 연결한 다음 인공위성을 통해 인터넷을
이용하는 방식이었는데, 문제는 마이크로웨이브 연결 방식의 특성 때문에 엄청난
네트워크 지연 시간을 감수해야 하는데다, 오히려 회선의 대역폭이 커질수록 지연
시간이 길어졌다. 이로 인해 홈페이지 첫 화면 로딩 시간이 128K와 비교해 오히려
길어지는 결과를 가져왔기 때문에 우리는 과감히 포기한 것이다.

그럼 이에 대한 대안은 무엇일까? 고급 라우터와 인텔리전트 스위칭 장비, 그리고
IDC에 서버 입주 등이 바로 그것이다. 중대형 사이트에서 고급 장비를 쓰는 이유는
비단 돈이 많아서가 아니다. 앞서 본대로 라우터를 거칠 때마다 생겨나는 지연 시간을
최소화하기 위함이고, IDC에 장비를 입주시키는 것은 관리의 편리함이나 네트워크
대역폭의 확보뿐만 아니라 서버를 가장 빠르게 접속할 수 있는 통신사업자의 백본에
바로 붙임으로서 라우팅 홉수를 줄이기 위함이기도 하다.

그렇다고 웹 환경에서는 대역폭을 고려하지 않아도 될까? 물론 그것도 아니다. 최근
새롭게 등장한 멀티미디어 컨텐츠를 가진 웹 환경의 경우와 httpop/s이 높은 사이트의
경우엔 사정이 약간 다르다. 멀티미디어 컨텐츠의 경우 요새는 ASF나 리얼
오디오/비디오처럼 조각화(fragmentation)해 연결 기간 동안 적은 패킷량이
오고가도록 하지만 이용자의 수가 어느 정도에 이를 경우, 더 이상 다른 이용자가
접속하지 못할 뿐만 아니라 이더넷의 특성상 대역폭의 한계에 다다르면 느려져 서비스
품질이 극도로 떨어진다. 이 특성은 이런 멀티미디어 컨텐츠 뿐만 아니라 엄청나게
붐비는 사이트의 경우도 마찬가지이므로 최대한의 대역폭을 확보해줘야 서비스 품질을
일정하게 해준다.

솔라리스 네트워크 튜닝

지금까지 환경적 장애 요인에 대해 충분히 설명했으니 이제 본론인 솔라리스 네트워크
튜닝으로 들어가겠다.

물론 웹 서버 튜닝에는 네트워크 튜닝만이 포함되는 것은 아니다. 모든 시스템 튜닝은
CPU, 메모리, I/O(디스크와 네트워크)가 유기적으로 얽혀 있기 때문에 모든 부분에서
골고루 설명해야 하는데, 지면 관계상 주요 부분만 살펴본다.

하지만 달리 생각하면, 요사이 컴퓨팅 환경에서는 네트워크 튜닝시 네트워크 그
자체의 튜닝 부분을 제외하고는 CPU나 디스크 I/O같은 다른 환경적 요소를 덜 받게
됐다는 점도 간과할 수 없다. CPU의 경우, 예전의 SunOS 4.X 대역에서는 TCP/IP
프로토콜 통신도 커다란 CPU - bound 프로세스였다. 하지만 솔라리스가 날로 발전하고
CPU 성능의 급성장으로 인해 이젠 아무리 바쁜 사이트라도 서버 사이징(Server
Sizing)만 잘해놓으면, CPU가 네트워크에 대해 문제를 일으키지 않는다. 참고로
솔라리스 2.5.1까지만 해도 초당 수백 건의 접속만 감당할 수 있었다가 2.6에
이르면서 초당 수천 건의 접속을 감당하게 됐으며, 이 수치는 날로 늘어나고 있다.
물론 단순 웹 서버가 아닌 자바 서블릿이나, CGI 같은 서버 사이드 프로세싱 요소가
있긴 하지만, 이는 엄밀히 말하지만 웹 서버 자체의 기능이 아니라, 웸 서버와 연동된
다른 애플리케이션의 퍼포먼스와 관련된 문제이다. 참고로 필자가 속한 기관의 웹
전용 시스템은 운영이나 기타 다른 업체의 웹 서버 중, 아직까지 CPU 부하로 인해
지연된 적은 거의 없었다.

또한 메모리 역시 GB 급으로 가고 있고, 웹 컨텐츠 전체를 물리적 메모리나 스왑으로
올릴 정도로 메모리가 커짐에 따라, Disk-bound 프로세스에서도 벗어나게 됐다.
그러므로 우리는 일반적인 웹 서버 환경에서는 이제 네트워크 튜닝에만 전념할 수
있게 됐다.

우선 솔라리스에서 네트워크 튜닝은 기본적으로 거의 모든 플랫폼에서 공통적으로
적용할 수 있다는 특징이 있다. 달리 표현하자면, 그만큼 적다는 말이 된다. 앞서
말한 것처럼 솔라리스가 최신판으로 올라갈수록 OS 자체가 점차 최적화돼가고 있기
때문에 몇 가지 고정된 파라미터 값을 제외하고는 손댈 영역이 점점 없어지고 있는
것이다.

LAN 카드 설정, /dev/hme

스팍 플랫폼에서 솔라리스는 100Mbps 고속 이더넷 인터페이스 카드를 /dev/hme로
정의한다. 그런데 이 인터페이스는 자동으로 10/ 100Mbps를 맞추는 오토
센싱(auto-sensing) 기능을 지원하지만 이것이 잘 안 될 때가 종종 있다. 특히
스위치가 풀 듀플렉스를 지원하는데 하프 듀플렉스로 맞춰지는 일이 비일비재한데
이럴 때는 수동으로 설정해줘야만 한다. hme를 100Mbps 풀 듀플렉스로 설정하는
방법은 ndd 커맨드를 이용하는 방법과 /etc/system에 파라미터 값을 넣어주는 두 가지
방법이 있는데, 그중 ndd를 이용하는 방법은 다음과 같다.

# ndd -set /dev/hme adv_autoneg_cap 0 (오토 센싱 기능 off)
# ndd -set /dev/hme adv_100fdx_cap 1 (100Mbps 풀 듀플렉스 기능 on)
# ndd -set /dev/hme adv_100hdx_cap 0
# ndd -set /dev/hme adv_100T4_cap 0

이는 재부팅시에는 설정 값이 지워진다. 이를 방지하기 위해서는
/etc/init.d/inetsvc에 다음과 같은 명령문을 넣어주면 된다.

/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1

또 다른 방법은 /etc/system에 커널 파라미터 값을 넣어 주는 것인데, /etc/system
끝에 다음과 같은 줄을 넣어주고 재부팅하면 된다.

set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_100fdx_cap=1

웹 환경에 맞는 TCP 튜닝 파라미터

이제 우리는 TCP 튜닝 파라미터 값을 웹 서버 환경의 특성에 맞게 변경해 OS의 TCP
환경을 웹 서버에 최적화하는 작업을 하겠다. 먼저 솔라리스에서는 네트워크
드라이버나 TCP 프로토콜의 파라미터 값을 보여주거나 변경할 때 ndd를 사용한다. ndd
커맨드는 물론 HP-UX 등과 마찬가지로 파라미터를 보는 것은 누구나 이용할 수
있지만(#ndd [-get] /dev/OOO), 파라미터 값 변경은 오직 root만이 할 수 있다(#ndd
-set /dev/OOO OOOO 형태). 영구히 변경할 때는 이 ndd 커맨드를 앞서 LAN 카드
설정에서 말한 대로 /etc/init.d/inetsvc에 다음과 같은 형태로 넣어준다.

/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000

또는 /etc/system에 약간 변형된 형태(set ip:ip_forwarding =0)로 파라미터 값을
등록하면 된다. 단 /etc/system에 등록할 때 주의할 점은 이 파일을 편집할 때 잘못된
변수 값이나, 잘못된 형식 등으로 인해 부팅이 되지 않는 경우가 종종 있는데, 이럴
때는 스팍 플랫폼의 경우엔 ok prom 프롬프트에서 ‘boot -i’으로 인터페이스 부팅을
한 다음 [/etc/system]을 참조하겠느냐는 부분에 /dev/null을 참조한다고 하면 된다.
이는 출시 설정에는 /etc/ system은 거의 모두 주석 처리돼 있어 이 파일을 참조하지
않으면 OS는 일단 무리 없이 부팅되기 때문이다. 솔라리스 x86 역시 부트 옵션에서
boot -i 하면 가능하다.

그리고 TCP 프로토콜도 hme(100Mbps 인터페이스, 스팍 플랫폼)와 마찬가지로
/dev/tcp이다. 먼저 /dev/tcp에서 튜닝이 가능한 파라미터들의 정보를 확인하는
명령은 다음과 같다.

#ndd [-get] /dev/tcp ?

[ ]안의 내용은 솔라리스에서는 언제나 생략할 수 있는 옵션이다. 이 옵션을 치면
다음과 같은 tcp 튜닝 파라미터들의 리스트가 출력된다.

<리스트 1>에 나온 수많은 TCP 파라미터 중 우리가 주로 이용할 수 있는 것은
몇 가지가 있는데 하나씩 알아보자.

tcp_time_wait_interval(솔라리스 2.6 이전까지는 tcp_close_wait_inter val이었음) :
메모리에서 TCP 연결이 끊어져도 tcp가 쓰던 소켓 정보를 일정 기간 대기 상태로
가지고 있고, 이를 가지고 있는 시간인데 기본값은 240,000ms(4분)이지만, 이는 tcp
소켓을 많이 요구하는 서버, 즉 웹 서버에서는 너무 길게 waiting하는 것이 메모리
낭비이므로 60,000ms(1분)정도로 줄이는 것이 좋다. 그러나 이를 너무 줄일 경우,
커넥션 품질 자체가 불안할 수 있으므로 더 이상 줄이지 않는 것이 바람직하다.
tcp_conn_req_max_q0 : TCP/IP 프로토콜 통신에서 half-open connection 상태, 즉
마지막 ACK를 받지 못한 상태의 커넥션을 몇 개까지 가지고 있을지에 대한 파라미터
값이다. 기본값은 1024인데 이 파리미터는 뒤에 설명할 tcp_conn_req_max_q와 형태가
비슷하다고 무조건 늘리는 경우가 있는데 불필요하며, 이 파라미터는 completed
connection마저도 listen queue에 들어가지 못하는 경우를 제외하고는 변경할 필요가
없다.
tcp_conn_req_max_q : 바로 웹 서버 튜닝에서 가장 많이 사용하는 파라미터이다.
기본값은 128인데, 1024 이하 정도로 늘려주는 것이 바람직하다. 이는 completed
connection이 실제 처리되기까지 받아주는 큐 크기로 너무 부족하면 상당히 바쁜 웹
서버의 경우, 사용자의 요청을 놓치는 경우가 발생할 수 있기 때문이다.
tcp_slow_start_initial : TCP 프로토콜 통신에서 처음에 테스트용으로 보내는 초기화
패킷 수를 말한다. 썬의 기본값은 1인데 다른 벤더들(특히 MS)이 2개를 사용하므로
이를 2로 변경해주는 것이 바람직하다. 솔라리스 8의 경우 가끔 4인 사례를 발견할 수
있었다.
네트워크 모니터링

#netstat -s -Ptcp 커맨드를 이용하면 모든 프로토콜의 정보를 출력하는데 -Ptcp라는
옵션을 추가하면 우리가 TCP 프로토콜의 파라미터를 변경하기 전 TCP와 관련한 정보만
출력해준다.

여기서 우리가 주목해 봐야 할 것은 tcpListenDropQ0와 tcpList enDrop인데,
tcpListenDropQ0는 accept() system call시 drop된 것의 카운트(갯수)이고
tcpListenDrop(Q)은 three-way handsha ke라고도 불리는 처음 두번째 ACK를 받기 전
incompleted connection이 큐에 들어가지 못한 카운트다.

글을 맺으며

지난호의 솔라리스 기사를 보고 격려의 메일을 보내온 독자들께 감사드린다. 사실
국내외에서 엔터프라이즈급 환경이건 중소규모 환경이건 간에 가릴 것 없이 상당히
많은 환경에서 썬 기종을 사용하고 있고, 거의 예외 없이 솔라리스를 기본 운영체제로
사용하고 있음에도 불구하고 이에 대한 자료를 찾기가 힘들었다.

이번 연재가 부족하나마 그동안 솔라리스에 관한 자료에 목말라하던 여러 솔라리스
이용자들에게 조금이나마 보탬이 됐으면 한다.

필자 연락처 : security@hufs.ac.kr, http://security.hufs.ac.kr
정리 : 송우일 wooil@sbmedia.co.kr

김민형
Posted by 1010
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