OS/SOLARIS2007. 7. 19. 18:30
반응형

솔라리스 미러링 하기

 

1번 슬롯 파티션 설정

format 0번슬롯 disk 와 1번 슬롯 disk 파티션 일치하게 잡아준다.

 

prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t8d0s2


newfs /dev/rdsk/c0t8d0s0
newfs /dev/rdsk/c0t8d0s5
newfs /dev/rdsk/c0t8d0s6
newfs /dev/rdsk/c0t8d0s4

[metadb 생성]
metadb -c 3 -a -f c0t0d0s3
metadb -c 3 -a -f c0t8d0s3

[root미러]
metainit -f d20 1 1 c0t0d0s0
metainit d30 1 1 c0t8d0s0
metainit d10 -m d20
metaroot d10
lockfs -fa

/etc/vfstab file check!! --> (root 부분이 변경되어있는지 확인)

sync
sync
sync
sync
reboot -- -r

 

[root 붙이기]

metattach d10 d30


[swap,/usr,/var 등등 미러]
metainit -f d21 1 1 c0t0d0s1
metainit d31 1 1 c0t8d0s1
metainit d11 -m d21

metainit -f d24 1 1 c0t0d0s4
metainit d34 1 1 c0t8d0s4
metainit d14 -m d24

metainit -f d25 1 1 c0t0d0s5
metainit d35 1 1 c0t8d0s5
metainit d15 -m d25

metainit -f d26 1 1 c0t0d0s6
metainit d36 1 1 c0t8d0s6
metainit d16 -m d26

 


/etc/vfstab file수정!!

sync;sync;sync;sync;reboot -- -r

[붙이기]

metattach d11 d31
metattach d14 d34
metattach d15 d35
metattach d16 d36


[확인]

metastat

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

/etc/vfstab 체크

반응형
Posted by [PineTree]
OS/SOLARIS2007. 3. 29. 01:04
반응형
요약

썬 마이크로시스템즈의 솔라리스 점프스타트(JumpStart) 기술은 솔라리스 운영체재와 다른 연관 소프트웨어들을 여러개의 네트워크 노드들에 자동으로 설치하는데 사용 되는 기술 입니다.

x86/x64 플랫폼의 솔라리스10 에서 점프스타트 소프트웨어는 SPARC 플랫폼의 솔라리스10 에서와 기본적으로 동일합니다. 그러나 정확한 작업을 위해서는 몇가지 미세한 차이에 대해 언급할 필요가 있습니다.

이 글은 썬의 x86/x64 머신에서 솔라리스10을 위한 점프스타트 서버를 설정하는데 필요한 단계들과 설명들을 제공하고 2 개 혹은 그 이상의 클라이언트를 위한 점프스타트 구성도 직접 해 봅니다.

범용의 참고서로써 썬의 온라인 문서인 Using Custom JumpStart 를 참고하시기 바랍니다.


소개

이 글은 x86/x64 플랫폼의 솔라리스10 을 이용해서 점프스타트 서버를 생성하는 단계별 과정을 제공하고 있습니다. 솔라리스10은 서버와 점프스타트 설치 서버에서 모두 동일한 버전을 사용하고 있습니다. AMD 옵테론과 인텔 프로세서 기반의 머신들이 서버와 클라이언트로 사용되었고 각각에 어떠한 프로세서 타입들이 사용되도록 사용되었고 클라이언트들은 각각 어떠한 프로세서 타입이 사용 되도록 선호도를 주지 않았습니다.

아래와 같은 작업을 하는 명령어들이 제공 됩니다:

  • 점프스타트 설치 서버 생성하기
  • 클라이언트 설정 파일 생성하기
  • 설치, 설정 디렉토리들을 공유하기
  • 클라이언트 tftpboot 파일 생성하기
  • DHCP 서버 설정 및 실행하기
  • 간섭이 필요 없는 점프스타트 설치 시작하기

Pre-boot Execution Environment (PXE) 가 네트워크를 통해 부팅 되기위해 활성화 되어 있어야 합니다. 몇몇 클라이언트들에서 PXE는 BIOS에서 활성화될 필요가 있습니다.

클라이언트 부트 파일을 생성할때의 버그는 마지막 정리작업 섹션에 기재했습니다.


솔라리스 점프스타트 과정

두개의 클라이언트에 x86/x64 플랫폼의 솔라리스10을 설치하기 위해서 점프스타트 설치 서버를 설정하는 명령들이 아래에 나와 있습니다.

이 연습 과정에서 점프스타트 서버의 노드 이름은 stinger2 이고 IP 주소는 172.16.64.194 니다. 기본 라우터의 IP 주소는 172.16.64.1 입니다. 점프스타트 서버가 위치하고 있는 네트워크 주소는 172.16.64.0 입니다.

만약 필요하다면 솔라리스10을 다운로드 받으실 수 있습니다.

1. 점프 스타트 설치 서버 생성하기

a. 서버에 설치 디렉토리를 생성합니다

# mkdir -p /export/install

b. x86/64 플랫폼의 솔라리스10 DVD를 서버의 DVD 플레이어에 집어 넣습니다. DVD의 Solaris_10/Tools 디렉토리로 이동하여 setup_install_server 커맨드를 실행시킴으로써 인스톨 서버를 생성합니다. 솔라리스 소프트웨어는 새롭게 생덩된 디렉토리로 복사 됩니다. 절대 경로명을 매개변수로 지정해 줍니다.

# cd /cdrom/cdrom0/Solaris_10/Tools
  # ./setup_install_server /export/install
  Verifying target directory...
  Calculating the required disk space for the Solaris_10 product
  \|/-\|/-
  Calculating space required for the installation boot image
  \|/-\|/-
  Copying the CD image to disk...
  \|/-\|/-
  Copying Install Boot Image hierarchy...
  \|/-\|/-
  Copying /boot x86 netboot hierarchy...
  \|/-\|/-
  Install Server setup complete
  #

c. install 디렉토리가 제대로 생성이 됐는지 확인합니다.

  # du -sk /export/install

  3083278 /export/install

d. DVD를 DVD 플레이어에서 꺼냅니다.

  # cd /;eject

클라이언트 설정 파일 생성하기

클라이언트 설정 파일들은 일반적인 점프스타트 설치를 제어하는데 사용됩니다.

a. 파일들이 위치할 설정 디렉토리를 생성합니다.

  # mkdir /export/config

b. sysidcfg 파일을 생성합니다:

제일 처음 생성할 파일은 sysidcfg 파일 입니다. 이 파일은 반드시 올바른 정보로 올바르게 포맷되어져 있어야 합니다. 그렇지 않을 경우 파일은 무시 되고 간섭이 필요 없는 점프스타트 설치는 종료 됩니다. 후에 설치 과정은 표준 솔라리스 설치 방식으로 전환됩니다.

점프스타트 클라이언트는 OS 설치를 시작하기 전에 sysidcfg 파일을 찾습니다. 이 파일은 반드시 "sysidcfg" 라는 이름을 가져야 합니다. 그러므로 만약 복수개 버젼의 파일을 가지고 있어야 한다면 각 sysidcfg 파일은 반드시 분리된 디렉토리에 존재해야 합니다. 각 클라이언트는 그들의 고유 sysidcfg 파일을 가질 수 있습니다. 혹은 복수개의 클라이언트가 동일한 sysidcfg 파일을 사용할 수도 있습니다. sysidcfg 파일은 add_install_client 커맨드를 통해서 클라이언트에 지정 됩니다. 다음은 두개의 sysidcfg 파일 생성을 보여 줍니다:

  # cd /export/config
  # mkdir sysidcfg1
  # cd sysidcfg1
  # vi sysidcfg

  system_locale=en_US.ISO8859-1
  timezone=US/Pacific
  timeserver=localhost
  terminal=vt100
  name_service=NONE
  security_policy=NONE
  root_password=<encrypted from /etc/shadow>
  network_interface=bge0 {hostname=client1
                          netmask=255.255.255.0
                          protocol_ipv6=no
                          default_route=172.16.64.1}

  :wq

  # cd ../
  # mkdir sysidcfg2
  # cd sysidcfg2
  # vi sysidcfg

  system_locale=en_US.ISO8859-1
  timezone=US/Pacific
  timeserver=localhost
  terminal=vt100
  name_service=NONE
  security_policy=NONE
  root_password=<encrypted from /etc/shadow>
  network_interface=bge0 {hostname=client2
                          netmask=255.255.255.0
                          protocol_ipv6=no
                          default_route=172.16.64.1}

  :wq

c. rules 파일 생성하기:

다음으로 생성해야할 파일은 rules 파일입니다. 이것은 텍스트 파일로써 솔라리스가 설치될 각 클라이언트 혹은 클라이언트 그룹을 위한 규칙을 포함하고 있습니다. rules 파일의 각 클라이언트 혹은 클라이언트의 그룹에 어떠한 begin, profile, 그리고 finish 파일을 사용해야 할지 알려 줍니다.

오직 하나의 rules 파일 만이 존재 합니다. 이것은 몇개의 유일한 설정들이 존재하느냐에 따라서 여러개의 라인을 가질 수 있습니다. 아래에는 두개의 분리된 클라이언트 정보를 포함하고 있는 rules 파일의 내용 입니다:

  # cd /export/config
  # vi rules

  hostname client1 begin1 profile1 finish1
  hostname client2 begin2 profile2 finish2

  :wq

rules 파일은 체크 스크립트가 rules.ok 파일을 만들때 사용됩니다 일반적인 점프스타트 설치를 위해서는 rules.ok 파일의 성공적인 생성이 필요합니다.

d. begin 파일 생성하기:

begin 파일은 유저가 정의한 Bourne 쉘 스크립트로써 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 일반적인 작업은 파생된 프로파일을 생성하고 업그레이드 전에 파일을 백업하는 것을 포함합니다.

원하다면 복수개의 begin 파일을 사용할 수 있습니다. 다음은 두개의 begin 파일을 생성한 예제입니다:

  # cd /export/config
  # vi begin1

  #!/bin/sh
  echo "Begin Script for JumpStart client1..."

  :wq

  # vi begin2

  #!/bin/sh
  echo "Begin Script for JumpStart client2..."

  :wq

  # chmod 755 begin*

클라리언트에서의 설치 동안 begin 파일의 출력은 /tmp/begin.log 에 쓰여 집니다. 설치가 완료 되면 로그 파일은 /var/sadm/system/logs/begin.log 위치에서 찾을 수 있습니다.

Solaris 10 Installation GuideCustom JumpStart Environment Variables 섹션에 begin 스크립트에서 사용할 수 있는 변수들을 설명하고 있습니다.

e. finish 파일 생성하기:

finish 파일은 유저가 정의한 Bourne 쉘 스크립트로써 솔라리스의 설치가 끝난 다음에 클라이언트 상에서의 작업을 수행하는데 사용 됩니다. 이 스크립트는 일반적으로 추가적인 파일, 패키지 혹은 패치의 설치, 루트 환경 커스터마이즈, 추가 소프트웨어 설치 같은 작업을 하는데 사용 됩니다.

원하다면 복수개의 finish 파일을 사용할 수 있습니다. 다음은 두개의finish파일을 생성한 예제입니다:

  # cd /export/config
  # vi finish1

  #!/bin/sh
  echo "Finish Script for JumpStart client1..."
  echo "Get rid of the nfs prompt during the initial boot"
  touch /a/etc/.NFS4inst_state.domain

  :wq

  # vi finish2

  #!/bin/sh
  echo "Finish Script for JumpStart client2..."
  echo "Get rid of the nfs prompt during the initial boot"
  touch /a/etc/.NFS4inst_state.domain

  :wq

  # chmod 755 finish*

솔라리스 설치 프로그램은 클라인터 파일 시스템을 /a 에 마운트 시킵니다. finish 스크립트는 /a 를 존중하여 파일의 추가 변경 혹은 삭제를 하는데 사용 됩니다. 이러한 파일 시스템은 초기 시스템 재부팅시 까지 /a 에 마운팅 되어 남아 있게 됩니다.

점프스타트 디렉토리 /export/installSI_CONFIG_DIR 변수에 지정된 디렉토리에 마운트 됩니다. 디렉토리는 기본적으로 /tmp/install_config 로 지정 됩니다. 파일들은 점프스타트 디렉토리에서 클라이언트로 finish 스크립트에서 실행되는 명령을 통해 가능합니다. 설치된 시스템에 추가될 파일들은 점프스타트 디렉토리에 위치하게 되고 그 다음에 클라이언트에 의해 접근이 가능합니다.

finish 스크립트의 다음의 라인은 설치된 클라이언트의 파일 시스템에 파일을 복사 합니다:

  cp /tmp/install_config/<file_name> /a/<path_name>/

f. profile 파일 생성하기:

profile 파일은 텍스트 파일로 솔라리스 클라리언트에 어떻게 설치될지 지정합니다.

복수개의 profile 파일이 생성될 수 있습니다. 여러개의 클라이언트들이 동일한 profile 파일을 사용할 수 있습니다. 혹은 각 클라이언트들은 고유의 profile 파일을 가질 수도 있습니다. 다음은 두개의 profile 파일 생성을 보여 줍니다:

  # cd /export/config
  # vi profile1

  # install_type MUST be first
  install_type      initial_install

  # start with the minimal required number of packages
  cluster           SUNWCXall
  cluster           SUNWCapache delete
  cluster           SUNWCpcmc   delete
  cluster           SUNWCpcmcx  delete
  cluster           SUNWCthai   delete
  cluster           SUNWClp     delete
  cluster           SUNWCnis    delete
  cluster           SUNWCppp    delete

  # format the entire disk for Solaris
  fdisk   all   solaris all

  # define how the disk is partitioned
  partitioning      explicit
  filesys           rootdisk.s0 6144  /
  filesys           rootdisk.s1 1024  swap
  filesys           rootdisk.s7 free  /state/partition1

  # install systems as standalone
  system_type standalone

  # specify patches to install
  patch 119281-06 nfs 172.16.64.194:/export/patches

  # specify packages to install
  package SPROcc add nfs 172.16.64.194:/export/packages

  :wq

  # vi profile2

  # install_type MUST be first
  install_type      initial_install

  # start with the minimal required number of packages
  cluster           SUNWCXall
  cluster           SUNWCapache delete
  cluster           SUNWCpcmc   delete
  cluster           SUNWCpcmcx  delete
  cluster           SUNWCthai   delete
  cluster           SUNWClp     delete
  cluster           SUNWCnis    delete
  cluster           SUNWCppp    delete

  # format the entire disk for Solaris
  fdisk   all   solaris all

  # define how the disk is partitioned
  partitioning      explicit
  filesys           rootdisk.s0 6144  /
  filesys           rootdisk.s1 4096  swap
  filesys           rootdisk.s7 free  /state/partition1

  # install systems as standalone
  system_type standalone

  # specify patches to install
  patch 119281-06 nfs 172.16.64.194:/export/patches

  # specify packages to install
  package SPROcc add nfs 172.16.64.194:/export/packages

  :wq

g. check 스크립트 생성하기:

check 스크립트는 rulesprofile 파일들이 올바르게 설정되었는지 확인할때 사용 됩니다. 첫째로 check 스크립트를 아래와 같이 로컬 디렉토리 /export/config 에 복사 합니다:

  # cd /export/config
  # cp /export/install/Solaris_10/Misc/jumpstart_sample/check .

h. check 스크립트 실행하기:

  # ./check
  Validating rules...
  Validating profile profile1...
  Validating profile profile2...
  The custom JumpStart configuration is ok.

어떠한 오류도 발견되지 않았다면 rules.ok 파일이 생성됩니다. 이 파일은 rules 파일과 동일합니다. 그러나 커멘트와 빈줄은 모두 제거 됩니다. check 스크립트는 다음과 같은 커멘트를 rules.ok 파일의 끝에 추가 시킵니다:

  # version=2 checksum=<num>

3. 설치와 설정 디렉토리 공유하기

a. dfstab 을 수정하여 점프스타트 디렉토리들을 공유 시킵니다.

b. /etc/dfs/dfstab 파일을 수정합니다:

  # vi /etc/dfs/dfstab

  #       Place share(1M) commands here for automatic execution
  #       on entering init state 3.
  #
  #       Issue the command 'svcadm enable network/nfs/server' to
  #       run the NFS daemon processes and the share commands, after
  #       adding the very first entry to this file.
  #
  #       share [-F fstype] [ -o options] [-d "<text>"] <pathname>
  #       [resource]
  #       for example,
  #       share  -F nfs  -o rw=engineering  -d "home dirs"  /export/home2

  share -F nfs -o ro,anon=0 /export/install
  share -F nfs -o ro,anon=0 /export/config
  share -F nfs -o ro,anon=0 /export/patches
  share -F nfs -o ro,anon=0 /export/packages

  :wq

c. NFS 서버를 시작시킵니다.

  # /etc/init.d/nfs.server start

d. 디렉토리들을 공유합니다.

  # shareall
  # share
  -               /export/install   ro,anon=0   ""
  -               /export/config   ro,anon=0   ""
  -               /export/patches   ro,anon=0   ""
  -               /export/packages   ro,anon=0   ""

e. 파일 공유를 확인합니다.

  # showmount -e localhost
  export list for localhost:
  /export/install  (everyone)
  /export/config   (everyone)
  /export/patches  (everyone)
  /export/packages (everyone)

4. 클라이언트 tftpboot 파일 생성하기

a. add_install_client 스크립트를 각 클라이언트 마다 실행시킵니다.

b. add_install_client 스크립트 저장 위치로 이동합니다:

  # cd /export/install/Solaris_10/Tools

c. add_install_client 스크립트를 점프스타트 설치를 진행할 네트워크 상의 각 클라이언트에서 실행합니다. -e 변수는 클라이언트의 MAC 어드레스이고 -p 변수는 클아이언트에 의해 이용될 sysidcfg 파일의 디렉토리 이름을 보여 줍니다. 아래에는 두 분리된 클라이언트 들에서 add_install_client 를 실행하는 것을 보여 줍니다:

  # ./add_install_client \
      -d \
      -e 00:0a:e4:37:16:4d \
      -s 172.16.64.194:/export/install \
      -c 172.16.64.194:/export/config \
      -p 172.16.64.194:/export/config/sysidcfg1 i86pc

  enabling tftp in /etc/inetd.conf
  Converting /etc/inetd.conf
  enabling network/tftp/udp6 service
  copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

  If not already configured, enable PXE boot by creating
  a macro named 01000AE429C1FD with:
    Boot server IP (BootSrvA) : 172.16.64.194
    Boot file      (BootFile) : 01000AE429C1FD

  # ./add_install_client \
      -d \
      -e 00:0a:e4:2a:33:f8 \
      -s 172.16.64.194:/export/install \
      -c 172.16.64.194:/export/config \
      -p 172.16.64.194:/export/config/sysidcfg2 i86pc

  enabling tftp in /etc/inetd.conf
  Converting /etc/inetd.conf
  enabling network/tftp/udp6 service
  copying boot file to /tftpboot/pxegrub.I86PC.Solaris_10-1

  If not already configured, enable PXE boot by creating
  a macro named 01000AE42A33F8 with:
    Boot server IP (BootSrvA) : 172.16.64.194
    Boot file      (BootFile) : 01000AE42A33F8

부트 서버 IP 와 부트 파일 값들은 후에 dhcpmgr 가 실행중인 동안에 매크로가 생성될때 사용됩니다.

5. DHCP 서버를 설정하고 실행시키기

a. dhcpmgr 를 실행시키기:

  # /usr/sadm/admin/bin/dhcpmgr
  Java Accessibility Bridge for GNOME loaded.

첫번째 스크린이 나타 남:
(확대 해서 보려면 이미지를 클릭하세요)

b. "Configure as a DHCP Server" 선택후 OK 를 클릭.

DHCP 설정 마법사가 나타납니다:

c. "Text Files" 선택 후 Next 클릭.

d. 저장 경로를 확인한 후 Next 클릭.

e. 네임서비스를 선택 한 후에 Next 를 클릭.

f. 임대 정보를 확인한 후에 Next 를 클릭.

g. DNS 도메인 정보를 확인 한 후 Next 를 클릭.

h. 네트워크 정보를 확인한 후 Next 를 클릭.

i. 네트워크 타입과 라우팅 옵션을 선택한 후 Next 를 클릭.

j. NIS 도메인 정보를 확인한 후에 Next 를 클릭.

k. NIS+ 도메인 정보를 확인한 후 Next 를 클릭.

l. 설정값을 다시 확인 한 후에 Finish 를 클릭.

DHCP 메니저가 나타나고 주소 마법사를 시작하도록 요구 받습니다:

m. Yes 를 클릭.

주소 마법사가 나타납니다:

n. IP 주소의 숫자를 입력한 후에 Next 를 클릭.

o. 서버 정보를 확인한 후에 Next 를 클릭.

p. IP 주소를 확인한 후에 Next 를 클릭.

q. 클라이언트 설정 정보를 확인한 후에 Next 를 클릭.

r. 임대(lease) 타입을 선택한 후 Next 를 클릭.

s. 설정을 확인한 후에 Finish 를 클릭.

dhcpmgr 아직 실행중인 상태에서 BootFileBootSrvA 매크로를 생성합니다. Create Macro 폼에 접근하기 위해 일단 DHCP Manager 폼에 Macros 탭을 선택합니다. 그 다음에 상단 메뉴에서 Edit->Create 을 선택합니다.

Create Macro 폼이 나타납니다:

t. 첫번째 클라이언트를 위해 add_install_client 를 실행함으로써 얻어 졌던 이름을 Name 필드에 적어 넣음으로써 매크로의 BootFile 부분을 생성함. 이 이름은 Option Value 필드에서 또한 사용 됩니다. 정보를 입력한 후에 Add 를 클릭함.

u. Opntion Value 필드에 점프스타트 서버의 네트워크 IP 주소를 적음으로써 매크로의 BootSrvA 부분을 생성함. 정보를 입력한 후에 Add 를 클릭함. 그리고나서 OK 를 클릭해서 첫번째 매크로의 생성을 완료함.

v. 두번째 매크로에 동일한 과정을 반복.

x. Add 를 클릭.

y. Add 를 클릭한 다음 OK 를 클릭함.

z. 두번째 매크로를 생성한 다음 DHCP 메니저 윈도우의 File->Exit 을 선택하여 dhcpmgr 유틸리티를 종료 시킴.

마지막 정리 작업

여러분이 add_install_client 스크립트를 실행시켰을때 스크립트는 a menu.lst<filename> 파일을 각 클라이언트 를 위해 생성하였습니다.

/tftpboot/menu.lst<BootFile: Name> 파일 생성의 버그로 인해, 여러분은 반드시 다음의 부분들을 kernel/unix 의 4번째 줄에 추가시켜야 합니다:

- install dhcp

그런후에 파일의 내용을 아래의 내용에서:

default=0
timeout=30
title Solaris_10 Jumpstart
    kernel /I86PC.Solaris_10-1/multiboot kernel/unix -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
    module /I86PC.Solaris_10-1/x86.miniroot

아래의 내용으로 바꿉니다:

default=0
timeout=4
title Solaris_10 Jumpstart
    kernel /I86PC.Solaris_10-1/multiboot kernel/unix - install dhcp -B \
install_config=172.16.64.194:/export/config, \
sysid_config=172.16.64.194:/export/config/sysidcfg1, \
install_media=172.16.64.194:/export/install, \
install_boot=172.16.64.194:/export/install/boot
    module /I86PC.Solaris_10-1/x86.miniroot

간섭이 필요 없는 점프스타트 설치 수행하기

    클라이언트를 부팅시킵니다.

    프롬프트가 나타난 후에 F12 를 클라이언트의 키보드로 입력합니다.

    Network Boot Request....
    
    CLIENT MAC ADDR: 00 0A E4 2A 33 F8  GUID: 11223344 556 7788 99AA \
                                              BBCCDDEEFF00
    
    DHCP....\|/-\|/-
    

    만약 모든 셋팅이 정상적이라면 설치는 완료될 것입니다. 만약 문제가 발생한다면 인스톨러는 종료 되고 쉘로 떨어질 것입니다. 에러의 원인은 install_log 파일에 기록됩니다.


설치 후 작업

다음의 파일들이 점프스타트의 설치 로그파일들입니다.:

  /var/sadm/system/logs/install_log
                        begin_log
                        finish_log
                        sysidtool.log

저자에 관하여

Craig Winter 와 Dale Layfield 는 썬의 마켓 개발 엔지니이렁팀의 staff 엔지니어들 입니다.

반응형

'OS > SOLARIS' 카테고리의 다른 글

IPMP에 대하여  (0) 2007.07.19
SVM(솔라리스 볼륨메니져) - 미러링  (0) 2007.07.19
솔라리스 dvd 파일합치기  (0) 2006.11.01
솔라리스 백업관련  (0) 2006.10.09
시스템 디스크 교체 후 E3500 부팅 절차  (0) 2006.08.07
Posted by [PineTree]
OS/SOLARIS2006. 11. 1. 07:48
반응형
 Windows systems: copy /b file1 + file2 + file3 + file4 + file5 file.iso
반응형
Posted by [PineTree]
OS/SOLARIS2006. 10. 9. 22:12
반응형
슬라이스정보 복사
 
#############################################################
 
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
 
#############################################################
 
백업

 

명령어 cpio
명령어 설명

아카이브 파일을 복사하여 입출력

사용법

cpio -o [acBvV] [-C bufsize] [-O file] [-M message]

cpio -i [BcdmrtuvVfsSb6k][-C bufsize][-I file][-M message][pattern. ]

cpio -p [ adlmuvV ] directory

Functions:

cpio -o

(복사출력)은 표준 입력으로부터 경로명의 목록을 읽어 들여 그파일을 경로명, 상태 정보와 함께 표준 출력으로 복사한다

cpio -i

(복사입력) cpio -o의 결과를 표준 입력 으로 하여 pattens이 일치하는 파일만을 추출 한다

cpio -p

(패스)는 표준 입력으로부터 경로명을 목록을 읽어 들여 지정한 directory에 조건부로 파일들을 생성하고 복사

Options:

-l

-a

파일의 복사후 입력 파일의 최종 액세스 시각을 현재로 재설정

-B

입출력은 5120바이트의 레코드로 블록화된다(이 항목이 지정되지 않은 경우는 512 bytes 를 사용한다.)

-c

ASCII문자로 파일의 헤더 정보를 작성한다

-C bufsize

입출력은 bufsize바이트로 레코드를 블록화한다

-d

디렉토리가 필요하면 자동적으로 생성한다

-f

patterns과 일치하는 것을 제외한 모든 파일을 복사

-k

파일의 헤더가 망가졌거나 입출력오류시 작업을 종료 하지 않고 다음 현재 파일은skip하고 다음 파일을 읽는다. ( -i 에서만 사용)

 

가능하면 파일을 복사하지않고 링크 시킨다 (-p 에서만 사용)

-m

파일의 최종 수정 시간을 현재 파일이 가지고 있는 시간을 그대로 유지한다.

-M message

백업 미디어 매체 교환이 필요할 때 사용자가 그 메시지

를 정의 하여 사용할 수 있도록 한다

-O file

cpio의 출력을 file에 지정한다 (-o 에서만 사용)

-r

대화식으로 파일명을 변경 한다(-p 에서는 사용불가능)

-b

각 단어 내의 바이트 순서를 바꾼다(-i에서만 사용)

-s

각half word의 두바이트를 서로 교환한다(-i에서만 사용)

-S

각 word의 두half word를 서로교환한다(-i에서만 사용)

-t

입력파일 목록을 출력하고 파일은 생성하지 않는다

-u

restore시에 기존의 디렉토리에 그파일이 존재하더라도 무조건 복사한다. 이 값을 설정하지 않으면 두개의 수정 날자를 비교하여 더최근의 파일을 보존한다.

-v

현재 작업이 진행되고 있는 파일 목록을 표준 출력으로 출력 한다

-V

현재 작업이 진행되고 있는 각 파일을 한 개의'.'으로 출력 한다.

Examples:


$ ls | cpio -ocv >/dev/rmt/0m

$ find . -print | cpio -ovcB >/dev/tape1

$ find . -print | cpio -ovcB -O /tmp/testcpio

$ find /home -print | cpio -ovc >/dev/tape1

$ find $HOME -name "*.c" -print | cpio -ov >/dev/fd0

cpio 에 파일 목록을 파이프에 전달하기 위해 ls cat echo find와 같은 명령들을 사용하고, 출력은 -I, -O 옵션 또는 쉘의 입출력 방향 변경기능인 > , <을 이용하여 일반 파일 또는 device special file로 지정할 수 있다.

$ cpio -ivmucdB </dev/rmt/0m

/dev/rmt/0m 장치에 저장되어 있는 cpio 아카이브 파일을 읽어 들여서 현재 디렉토리에 저장한다.

$ cat newfile | cpio -icd "/memo/al" "/memo/b*"

아카이브 파일 newfile의 내용을 입력 받아서 /memo/a1, /memo/b* 패턴과 일치하는 파일들을 현재 디렉토리에 저장한다. 서브디렉토리가 필요한 경우 생성하돌고 지시하였다.

$ find . -depth -print | cpio -pdlmv new_direc

현재 디렉토리에 있는 모든 파일 리스트를 cpio 의 입력으로 받아서 new_direc 디렉토리에 하드링크 하도록 한다. -m은 수정 시각을 그대로 유지 하게 하며, -d는 필요에 따라 새로운 디렉토리가 만들어진다. cpio시 경로명을 생성하기 위한 find명령의 -depth 옵션은 디렉토리에 쓰기 모드가 허용되어 있지 않은경우에도 디렉토리에 쓰기를 할수 있도록 하기위해 사용된다.

 

명령어 tar
명령어 설명

테이프 파일 아카이버(archiver)

파일을 자기테이프에 저장하며 그기능은 키문자인수(c,r,t,u,v)로 제어 할 수 있다. 출력 방향은 디폴트로 mt0로 지정되어있다. (/etc/default/tar 에 정의 되어 있다)

사용법

tar c [ vwfb [ #s ] ] device block files..

tar r [ vwfb [ #s ] ] device block [files..]

tar t [ vf [ #s ] device

tar u [ vwb [ #s ] ] device block [ files ]

tar x [ lmovwf [ #s ] ] device [ files.. ]

 

키문자기능:

c

생성. 테이프의 처음부터 기록한다. 이기능은 r의 기능을 포함 하고 있다.

r

대체. 지정된 파일을 테이프의 마지막부터 기록된다.

t

테이블. 지정된 파일이 테이프상에서 검출될 때마다 파일명 및 그밖의 정보가 리스트된다. 파일 인수를 지정하지 않으면 테이프에 기록된 모든 정보에 대해 리스트 된다.

u

갱신. 지정된 파일이 테이프에 없을 경우 추가하거나 그 테이프에 기록된 최후의 것으로 갱신하다

x

추출. 지정된 파일을 테이프에서 읽어낸다. 지정된 파일이 디렉토리이고 내용이 테이프에 있는 경우, 이 디렉토리의 내용을 재귀적으로 모두 읽어낸다.

Options:

v

verbose. 보통 tar실행중에 아무런 메세지도 출력하지 않는 다. 이 항목을 사용하면 기능을 나타내는 문자와 처리한 파일명이 출력된다. t기능과 사용하면 명칭 뿐만 아니라 테이프 항목에 관한 정보도 출력된다.

w

확인. 준비된 처리와 파일명을 출력하고 사용자의 확인을 기다린다. y로 시작되는 글자를 입력하면 처리를 수행한다.

f

파일. 다음에 지정된 device인수를 디폴트 출력방향인 /dev/mt/0m 또는 /dev/mt0 대신에 지정한 아카이브명(디바 이스 명칭이나 화일명)으로 사용 한다. 지정한 파일명이 - 인 경우에는 표준 출력으로 출력하거나 표준 입력으로 부터 읽어 들인다.

b

블로킹계수. 지정된 block 인수를 테이프 레코드의 블로킹 계수로 사용한다. 디폴트는 1로 최대 20블록까지 지정할 수 있다.

m

수정을 기존의 파일이 가지고 있는 시간으로 유지하게 한다.

o

소유권. 읽어들인 파일의 사용자, 그룹ID가 테이프 상에 기록 되는것이 아니라 이 명령을 실행하고 있는 사용자의 것으로 변경한다.

Examples:

$ tar cv /home/kys/src

tar가 지정하는 디폴트 장치로 /home/kys/src 디렉토리의 모든 화일과 디렉토리의 내용을 저장한다

$ tar cvf /dev/rmt/0m .

현재의 디렉토리의 모든 화일들을 /dev/rmt/0m 디바이스로 back-up

$ tar xvf /dev/rmt/0m

/dev/rmt/0m 디바이스로 부터 현재 디렉토리로 restore

$ tar tvf /dev/rmt/0m

/dev/rmt/0m 디바이스에 back-up된 내용을 display

$ tar uvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 update한다

$ tar rvf /dev/mt0 /home/src/file1

/home/src/file1을 /dev/mt0에 append 한다

$ tar cvf /dev/mt0 `tar tvf /dev/mt0 | grep file1`

file1이라는 화일만 /dev/mt0로 부터 restore한다


명령어 dd
명령어 설명

화일의 변환과 복사

지정한 입력 화일을 적절한 변환을 거쳐 지정한 출력에 복사한다. 입출력 화일을 생략 하는 경우에는 표준 입,출력이 사용된다.

사용법

dd [ options = value ]..

 

Options:

if=file

입력화일명

of=file

출력화일명

ibs=n

입력블록의 크기를 n bytes(default 512)로 지정

obs=n

출력블록의 크기를 n bytes(default 512)로 지정

bs=n

ibs와 obs를 모두취소하고 입력및 출력블록의 크기를 모두 n바이트로 한다

cbs=n

변환을 위한 버퍼크기 지정 cbs는 conv=ascii또는 conv=ebcidic을 지정하는 경우에만 사용한다.

skip=n

복사시작전 n개의 입력블록을 무시

seek=n

복사전에 출력화일의 선두로부터 n 블록 검색

count=n

n개의 입력블록만 복사

conv=ascii

EBCDIC을 ASCII로 변환ebcdic ASCII를 EBCDIC으로변환

ibm

ASCII를 EBCDIC으로변환(표준방식과 다소다르게)

lcase

알파벳을 소문자로 변환

ucase

알파벳을 대문자로 변환

swab

두개의 바이트를 서로 교환

noerror

오류가 발생해도 처리를 중지하지 않는다

sync

각입력블록을ibs로 padding

...,... 쉼표로 구분한 복수개의 변환

 

Examples:

# dd if=sample of=/dev/rmt/0m

300+0 blocks in

300+0 blocks out

$ dd if=sample of=/dev/rmt/0m ibs=1024 obs=1024

150+0 blocks in

150+0 blocks out

$ dd if=/dev/rmt/0m of=rest_in cbs=1024 conv=ascii

300+0 blocks in

300+0 blocks out

디스크 통째로   복사 (OS 도 복사된다)

dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t8d0s2

FC 타입 디스크는

/etc/path_to_inst 파일 수정해줘야 된다.


 

$ tar cvf - /home/kys/src/*.c | dd of=dd_file conv=lcase

/home/kys/src 디렉토리하의 .c로 끝나는 모든 화일을 tar 아카이브 화일호 생성하여 그결과를 파이프를 통해 dd의 입력으로 전달하고, dd 명령은 입력되는 모든 데이타를 소문자로 변환하여 dd_file로 출력한다.

반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 7. 20:39
반응형

----------------------------------------------------------------------------
                        시스템 디스크 교체 후 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/c1t1d0s0

y <-- 선택

#dd if=/dev/rdsk/c1t0d0s0 of=/dev/rdsk/c1t1d0s0 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

반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 2. 05:51
반응형

방화벽을 위한 Solaris 준비하기
Solaris의 무장화(Armoring Solaris)

인터넷 보안 분야에서 방화벽은 빠르게 성장하고 있는 유능한 도구이다. 그러나, 방화벽은 자신이 탑재되어 있는 OS가 안전한만큼만 안전할 뿐이다. 이 문서는 Sparc과 x86 Solaris를 어떻게 무장화시킬지에 대해 차근차근히 설명해나갈 것이다. 각 단계들은 모든 상황에 적용될 수 있지만, 여기에선 Solaris 2.6에 탑재된 Check Point FireWall-1을 예로 들기로한다. 이 문서의 끝에는 직접 다운로드하여 자동으로 solaris를 무장화시킬 수 있는 스크립트가 있다.

설치(Installation)
OS의 설치는 시스템의 보안을 위한 매우 중요한 과정이다. 방화벽을 설치하기 위한 시스템에 이미 설치된 것들을 믿어선 안 된다. 시스템의 보안도를 높이기 위해 새로 OS를 설치하는 것이 좋다.

시스템을 다른 곳과 연결된 네트웍으로부터 단절시켜라. 아직, 보호되지 않은 시스템을 다른 곳에 연결된 네트웍이나 인터넷 연결시키는 것은 좋지 않다. 새로 깔린 시스템이 인터넷에 연결된지 15분만에 발견되어 root를 뺏기는 일도 있다. 후에 중요한 파일들과 패치들을 받기 위해, 인터넷에 연결된 다른 박스가 하나 필요할 것이다. 이 두번째 박스는 인터넷으로부터 필요한 파일들을 다운받아, 중요한 파일들을 전송하기 위해 당신의 고립된 네트웍-혹은 시스템-에 연결될 것이다.

방화벽 박스가 될 박스를 고립된 네트웍에 놓았다면, 이제 시작할 준비는 된 것이다. 처음으로 할 일은, 설치될 OS 패키지를 선택하는 것이다. 최대의 효율을 유지하기 위한 가장 좋은 선택은 최소 설치를 선택하는 것이다. 박스에 설치되는 소프트웨어가 적을 수록, 잠재적인 취약점이나 구멍들이 줄어든다. 나는 Core 설치(Core Installation)를 추천한다. 내가 Core를 선호하는 이유는 이것이 좀더 안전한 OS를 만들기 위한 최소한의 소프트웨어를 설치하기 때문이다. 오타쿠들을 위해, Core 설치를 조정하는 방법에 대한 두 개의 체크 목록을 만들어봤다. 하나는 Solaris 2.6과 FW-1.4.0을 위한 것이고, 다른 하나는 Solaris 8과 FW-1.4.1을 위한 것이다. 두번째 체크 목록은 아직 beta판이다. 만약, 당신이 GUI를 필요로하거나, solaris에 처음 접한다면, End User 설치(End User Installation)을 고려하는게 좋을지도 모르겠다. Developer 같은 그 이상의 설치 패키지들은 필요도 없고 잠재적인 취약점이 남아있는 소프트웨어들을 설치한다. 설치과정에 "On-Line Manual Pages"를 꼭 선택하는 것이 좋다. 이것은 매우 유용할 뿐더러, 시스템에 별 위험을 끼치지 않는다. 최소 설치를 위한 좀더 많은 정보를 필요로한다면, 보안을 위한 솔라리스 최소화(Solaris Minimization for Security)를 읽어보아라.

설치 과정 중에, 시스템을 파티션해야 할 것이다. 나는 Sun이 /opt와 /usr을 비롯하여 많은 파티션들을 나누는 것을 이해할 수 없다. 작은 파티션을 만들게 되면, 나중에는 항상 그것들을 다 써버리게 된다. 나는 항상 root를 최대한 크게 잡고 모든 것을 그곳에 넣어버리는 것을 좋아한다. 이렇게 하면, 하드를 다 써버리는 일은 없을 것이다. 그러나, root 파티션을 보호하기 위해 몇 개 파티션들을 잡아주어야 한다. 만약, root 파티션을 logging이나 email 같은 자료들로 가득 채워버린다면, 시스템을 crash시킬지도 모르는 DoS가 일어날 수도 있다.

그러므로, /var를 위한 파티션을 따로 나누는 것이 좋다. 이 파티션은 시스템의 모든 logging과 email이 저장되는 곳이다. 방화벽 logging을 위한 파티션을 따로 잡아주는 것도 고려하는 게 좋다. Checkpoint Firewall 1은 기본적으로 모든 logging을 /etc/fw/log(4.0은 /var/opt/CKPfw/log)에 남긴다. 많은 solaris 시스템들이 Ultra 10이나 x86을 위한 2 IDE 같은 두가지 이상의 드라이브(하드디스크)들을 갖는다. 만약, 두번째 드라이브를 미러링하지 않았다면, 그것을 모두 방화벽 logging을 위한 파티션으로 잡아라. 이것은, 방화벽 logging이 넘치는 것으로부터 다른 모든 파티션들을 보호한다. 이와같은 설정을 따르면, 다음과 같은 모양의 파틴션이 나올 것이다.

/                    - everything else
/var              - 400 MB
swap            - 256 MB (or normally 2x amount of RAM)
/etc/fw/log                           - 2nd drive (for CP FW-1 ver 3.0x)
/var/opt/CKPfw/log          - 2nd drive (for CP FW-1 ver 4.0x)
/var/opt/CPfw1-41/log    - 2nd drive (for CP FW-1 ver 4.1x)

설치 후에 리부팅을 한 다음, Sun으로부터 recommended patch cluster를 꼭 설치하도록 한다. 패치들을 얻기 위해, 두번째 박스를 이용하는 것을 잊지 말아라. 아직, 방화벽 박스는 고립된 네트웍에 남아 있어야 한다. 패치들은 안전한 방화벽 유지를 위해 매우 중요하며 적어도 일주일에 한 번씩은 갱신되어야한다. Bugtraq은 최근의 버그와 취약점들을 위한 훌륭한 보고이다.

서비스 제거하기(Eliminating Services)
이제, 설치 패키지와 패치들을 깔고 리부팅하였다면, OS를 무장화하기 위한 준비가 되었다. 무장화는 주로 서비스들을 끄고, logging을 더하고, 몇 파일들을 조정하며, TCP Wrapper를 설치하는 것으로 이루어진다. 먼저, 우리는 서비스를 끄는 것에서 시작할 것이다.

기본적으로, solaris는 많은 유용한 서비스들을 제공하는 강력한 OS이다. 그러나, 이런 서비스들의 대부분은 방화벽을 위해선 필요가 없으며, 잠재적인 위험을 안고 있다. /etc/inetd.conf에서부터 시작해보자. 이 파일은 /usr/sbin/inetd 데몬이 listen할 서비스들을 정해놓고 있다. 기본적으로, /etc/inetd.conf는 35개의 서비스들로 구성되어 있지만, 당신에겐 ftp와 telnet 두 개만 필요할 뿐이다. 다른 필요 없는 서비스들에 대해선 앞에 #를 달아 주석처리한다(example). rexd 같은 inetd에 의해 제공되는 서비스들은 보안적으로 많은 위험을 가하기 때문에 이 과정은 매우 중요하다. 다음 명령을 통해, 어떤 서비스들을 주석처리했는지 확인하도록 한다.(이 명령은 주석처리 되지 않은 모든 서비스들을 보여줄 것이다.)

#grep -v "^#" /etc/inetd.conf

다음으로 건들어야 할 곳은 /etc/rc2.d와 /etc/rc3.d이다. 여기에는 init 프로세스에 의해 부팅시 실행되는 스크립트들이 있다. 이중 많은 것들이 필요하지 않다. 부팅 중에 스크립트가 실행되는 것을 막기 위해, 대문자 S를 소문자 s로 바꾼다. 부팅시에 스크립트를 실행하기 위해선 소문자 s를 다시 대문자 S로 바꾸어주면 된다. 다음 스크립트들은 필요가 없을 뿐더러, 보안적으로 위험한 것들이다.

/etc/rc2.d
S73nfs.client - NFS 마운팅을 위한 것으로, 방화벽엔 필요 없다.
S74autofs      - automount을 위한 것으로, 방화벽엔 필요 없다.
S80lp              - 프린팅을 위한 것으로, 역시 필요 없다.
S88sendmail  - 오는 email을 듣기 위한 것으로, 이것이 실행되지 않더라도 방화벽은 email을 보낼 수 이싸.
S71rpc            - portmapper 데몬으로, 아주 취약한 서비스이다.(CDE를 실행한다면, 필요하다.)
S99dtlogin      - CDE를 기본적으로 시작시키는 CDE 데몬이다.

/etc/rc3.d
S15nfs.server - 파일 시스템 공유를 위한 것으로, 방화벽엔 아주 안 좋다.
S76snmpdx     - snmp 데몬

GUI(CDE나 OpenWindows)를 실행시키는 것은 좋지 않다. 아주 꼭 필요한 경우에만 GUI를 실행시키도록 한다. Solaris 2.6의 기본 GUI인 CDE를 끄기 위해서는 S99dtlogin을 s99dtlogin으로 바꾸어주면 된다(대문자 S를 소문자 s로). CDE가 얼마나 많은 포트들과 서비스들을 필요로하는지 알아보려면, CDE가 실행되고 있을 때 다음을 쳐보아라.

ps -aef | wc - l

S99dtlogin과 S71rpc들을 꺼버린 다음(CDE를 실행시키기 위해선 필요함), 위에 명령을 실행시켜보고 얼마나 많은 서비스와 열려있는 포트가 줄어들었는지 그 전의 결과와 비교해보아라. 더 적은 서비스가 돌고 있을 수록 좋은 것이다. Core 설치를 한 경우에는 GUI가 설치되지 않기 때문에, 이 문제에 대해 신경쓸 필요가 없다.

Logging과 Tweaking(Logging and Tweaking)
가능한 많은 서비스들을 제거했다면, 이제는 logging을 설정할 차례이다. 많은 시스템의 logging이 /var/adm에서 이루어진다. 우리는 여기에 두 개의 log 파일들-sulog와 loginlog를 더할 것이다. /var/adm/sulog에는 su에 대한 모든 성공과 실패들이 기록된다. 이것을 통해 누가 시스템에 root 권한을 얻기 위한 시도를 했는지 모니터링 할 수 있다. /var/adm/loginlog에는 연속으로 실패한 login 시도가 기록된다. 만약, 사용자가 5번 login을 시도하여 모두 실패했다면 기록에 남게된다. 이것을 가능하게 하기 위해서는 /var/adm/loginlog과 /var/adm/sulog를 touch하기만 하면 된다. 두 파일 모두 민감한 정보를 싣고 있으니, chmod 640으로 설정하는 것을 잊지 말아라.

다음으로 할 일은 tweaking이다. 이것은 다양한 파일들의 관리에 관계된다. 먼저 할 일은 /etc/issue 파일을 만드는 것이다. 이 파일은 ASCII text 배너로 telnet login시에 나타난다(example A). 이 합법적인 경고는 누군가가 당신의 시스템에 login을 시도할 때 나타날 것이다.

또한 /etc/ftpusers 파일을 만들어야한다(example B). 이 파일에 열거된 계정들은 시스템에 ftp로 접속할 수 없다. 이것은 root나 bin과 같은 중요 계정들로 ftp session에 접근하는 것을 제한한다. 이 파일은 만드는 쉬운 방법은 다음 명령을 실행하는 것이다.
cat /etc/passwd | cut -f1 -d: > /etc/ftpusers

방화벽에 ftp로 접근하기 위한 계정이 /etc/ftpusers에 포함되지 않았는지 확인하라.
또한, root 계정으로 시스템에 telnet 접근을 할 수 없도록 확인해라. 이것은, 사용자가 시스템에 일반계정으로 login하여 root 권한을 갖기 위해 su를 사용하게 만든다. 대부분 시스템에 기본적으로 설정되어 있지만, /etc/default/login 파일에 console이 주석처리되지 않도록 확인한다(example C).

마지막으로, 나는 telnet OS 배너를 제거하고 ftp를 위한 배너를 만드는 것을 더 좋아한다. telnet OS 배너를 제거하는 건 /etc/default/telnetd 파일을 만들고 다음 문장을 추가하는 것으로 쉽게 된다.
BANNER="" # "SunOS 5.6" 텔넷 배너 제거

ftp를 위한 새 배너를 만들기 위해, /etc/default/ftpd 파일을 만들고, 다음 문장을 추가한다.
BANNER="WARNING:Authorized use only" # ftp를 위한 경고 배너

방화벽에 연결하기(Connetcing to Firewall)
방화벽에 연결하기 위한 안전하고 조정 가능한 길을 만드는 것은 매우 중요하다. 종종, 당신은 관리와 파일의 업로드를 위해 원격으로 방화벽에 접속해야 할 필요가 있을 것이다. 이런 통신들은 안전해야하며, 나는 여기에서 그 대책으로 ssh와 TCP Wrapper에 대해 설명할 것이다.

나는 ssh를 더 좋아한다. ssh는 당신과 방화벽 사이의 모든 통신들을 암호화시켜주지만, TCP Wrapper는 그렇지 않다. 따라서, TCP Wrapper는 스니핑으로부터 당신의 네트웍을 보호해주지 못 한다. 사용자들은 네트웍상에서 당신의 keystroke(패스워드 포함)들을 여전히 캡쳐할 수 있다. 만약, 사용자들의 스니핑이 걱정된다면, telnet/ftp 대신에 ssh를 쓸 것을 권장한다. ssh는 방화벽과의 모든 통신들을 암호화시켜, 당신이 안전한 상태로 파일을 업로드하고 방화벽을 관리할 수 있게 해준다. ssh는 자신만의 logging layer를 갖고 있다는 점과 자신에게 접속할 수 있는 시스템을 제한할 수 있다는 점에서 TCP Wrapper와 비슷하다. ssh에 대한 더 많은 정보를 원한다면, 이곳에서 찾을 수 있을 것이다. 2.x 버전은 라이센스에 제한이 있기 때문에, 1.2.7 버전을 쓰는 것을 권장한다. 95/NT 사용자들은 ssh 클라이언트 프로그램으로 SecureCRT를 사용할 수 있다.

TCP Wrapper는 비록 통신의 암호화는 해주지 않지만, 당신의 시스템에 접근할 수 있는 시스템들을 제한할 수 있고, 그들에 대한 log를 남길 수 있다. TCP Wrapper는 telnet이나 ftp 같은 inetd 서비스들을 보호하는 프로그램이다. TCP Wrapper를 통해 inetd 연결에 대한 wrapper를 띄워서, 모든 log들을 남겨 접근 조절 목록에 반하는 시도들을 가려낼 수 있게 된다. 만약, 연결이 허락되면 TCP Wrapper는 telnet과 같은 적당한 binary로 연결을 넘겨 준다. 접근 제한 목록에 의해 연결이 거절될 경우에는, 연결은 끊어진다.

많은 사람이 방화벽에 왜 굳이 TCP Wrapper가 필요한지 궁금해할 것이다. 대답은 간단하다. 첫째, 방화벽이 침범됐거나 무너졌을 때, TCP Wrapper는 두번째 방어벽을 제공한다. 둘째, TCP Wrapper는 방화벽의 잘못된 조정을 보완해준다. 나는 종종 방화벽이 잘못 세팅되어 있는 것을 보았다. 특히, VPN의 경우 권한이 없는 사용자가 방화벽에 접근할 수 있는 경우가 많았다. 셋째, TCP Wrapper는 다른 시스템 log들을 입증할 수 있는 두번째 logging layer를 제공한다.

Wietse Venema의 Website에서 TCP Wrapper를 얻을 수 있다. 다시 한 번, 당신의 두번째 박스를 사용하여 TCP Wrapper를 받고 컴파일하여라. 방화벽에는 어떤 컴파일러도 필요 없을 뿐더러, 아직은 고립된 네트웍에서 방화벽을 보호해야만 한다. 다운로드가 끝났으면, README 파일을 먼저 읽어보아라. 이것은 TCP Wrapper에 대한 아주 멋진 소개글이다. TCP Wrapper를 컴파일하는데 나는 두가지 옵션을 추천한다. 먼저, go with paranoid로 모든 연결에 대해 reverse lookup이 가능하다. 다음 방법으로, advance configuration을 사용하라. 이것은 매우 간단하다. 이 configuration은 후에 있을 패치들을 위해, 본래 위치에 binary들을 설치한다.

TCP Wrapper를 구동시키기 위해 몇가지 파일들을 편집해야 한다. 먼저, 컴파일이 끝났으면, /usr/local/bin 디렉토리에 tcpd 실행파일이 설치될 것이다. 다음으로, 서비스들을 보호하기 위해/etc/inetd.conf가 조정되어야 한다(example D). 그리고, tcpd logging을 위해 /etc/syslog.conf를 조정하고(example E), /var/adm/tcpdlog를 touch해줘야한다. 마지막으로, /etc/hosts.allow와 /etc/hosts.deny에 접근 제한 목록을 만들어야한다(example F).

이제 모든 파일들이 조정되었다면, /usr/bin/inetd를 kill -HUP를 이용하여 재실행한다. 이로써 TCP Wrapper 데몬이 실행될 것이다. 끝내기 전에 ACLs과 logging이 제대로 남는지 확인해보아라.

오타쿠들을 위해(For the Truly Paranoid)
이제까지 아주 필요한 것들에 대해서만 언급해보았다. 이런 방법들을 통해 당신의 시스템은 아주 안전해졌을 것이다. 축하!! 그러나 불행히도, 당신의 시스템이 100% 안전해진 것은 아닐 뿐더러 그럴 수도 없다(번역자 왈 : lan 선을 뽑아버리고, 컴퓨터를 스위스 은행 금고속에 넣으면 아주 안전하겠지만 --a). 오타쿠들을 위해, 조금더 안전한 시스템을 만들기 위한 몇 가지 방법들을 더해보았다.

먼저 우리는 wheel 그룹을 만들 것이다. wheel 그룹은 /usr/bin/su 같은 강력한 명령을 실행시킬 수 있는 선택된 개인들의 그룹이다. 이런 명령을 실행시킬 수 있는 사람들을 제한함으로써, 시스템의 안전도를 더 높일 수 있다. group을 생성하기 위해, /etc/group 파일을 편집해라. wheel 그룹을 만들고, 거기에 시스템 admin들을 추가시켜라. 그런다음 /usr/bin/su 같은 중요한 시스템 실행파일들을 찾아, 이 파일들의 그룹을 wheel로 바꾸고 실행 권한을 소유주와 그룹에게만 주어라. /usr/bin/su의 예를 들어, 다음과 같이 하면 된다.

/usr/bin/chgrp wheel /usr/bin/su
/usr/bin/chmod 4750 /usr/bin/su

*주의:(su가 /sbin 디렉토리에도 있다는 것을 잊지 말아라. 2.6에서는 /sbin/su.static로 되어 있다. 이 파일은 /usr/bin/su와 똑같지만, 라이브러리가 정적으로 링크되어 있어 파일 크기가 조금 더 크다. 이 파일 역시 위와 같이 바꾸어 주어야한다.)

다음으로, 우리는 .rhosts, .netrc, /etc/hosts.equiv 같은 파일들을 잠굴 것이다. r 명령들이 시스템에 접근하기 위해 이런 파일들을 사용한다. 이 파일들을 잠그기 위해, 퍼미션을 0으로 주어라. 이렇게 함으로써, 아무도 이 파일들을 변경시키거나 생성시킬 수 없게 된다. 예를 들어 다음과 같이 하면 된다.

/usr/bin/touch /.rhosts /.netrc /etc/hosts.equiv
/usr/bin/chmod 0 /.rhosts /.netrc /etc/hosts.equiv

또, TCP initial sequence number 생성 파라미터를 설정한다. 모든 TCP 연결에 대한 ISN을 랜덤하게 설정함으로써, 세션 하이재킹이나 ip 스푸핑 공격에 대해 대비를 할 수 있다. /etc/default/inetinit 파일에 TCP_STRONG_ISS=2로 설정함으로써 이것이 가능해진다(example G). 기본적으로, 시스템이 설치될 때 1로 설정되어있는데 이거은 결코 안전하지 않다.

가능한 버퍼오버플로우 공격을 막기위해, /etc/system에 다음 줄을 추가하여라.

set noexec_user_stack=1
set noexec_user_stack_log=1

(번역자 왈 : 이것은, stack 영역에서 code가 실행되지 않게 할 뿐더러 그러한 시도에 대해 log를 남긴다.)
마지막으로, IP 모듈에 대해 약간의 변경을 가하자. 다음의 명령들을 당신의 시작 스크립트에 추가하여라. ndd와 보안을 위한 ip 모듈 튜닝에 대한 자세한 정보는 Network Settings for Security에서 참고하여라.

### Set kernel parameters for /dev/ip
ndd -set /dev/ip ip_respond_to_echo_broadcast 0
ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_respond_to_timestamp 0
ndd -set /dev/ip ip_respond_to_timestamp_broadcast 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_ignore_redirect 1

결론(Conclusion)
solaris 무장화를 위한 다소 기본적인 방법들을 살펴보았다. 안전한 시스템을 위한 열쇠는 최소의 소프트웨어 설치와 TCP Wrapper 등을 통한 layer들의 보호이다. 아직도 sudo(시스템 관리자가 root 권한을 몇몇 사용자에게만 주고 그들의 활동을 모두 log로 남길 수 있게한다), tripwire(시스템 실행파일들의 변경을 감지한다), swatch(자동으로 log를 모니터하고 경고해준다) 등과 같은 취할 수 있는 많은 방법들이 남아 있다. 시스템은 절대 100% 안전할 수 없다는 것을 명심하여라. 그러나, 위에 설명된 방법들을 통해, 위험을 크게 감소 시켰음은 틀림없다.

당신의 solaris 시스템을 더욱 무장화하기 위한 정보로, Sun Microsytems blueprint 글들, 특히 Solaris Security를 읽어 보는 것이 좋다.

보안을 위해, Brad Powell의 armoring script Titan을 검토해볼 것을 적극 권장한다. 이 전문적인 도구는 내가 여기에 써 놓은 것들보다도 더 강력하고 모듈적이면서, 훨씬 더 자세하게 보안에 대해 기술해 놓았다. 또한, YASSP-Yet Another Security Solaris Paper-를 검토해 보는 것도 좋을 것이다.

다운로드(Downloads)
당신의 시간과 노력을 덜어주기 위해, 여기에 쓰인 모든 것들을 자동으로 해주는 스크립트 하나를 만들어보았다. 이 스크립트는 바뀌기 전의 모든 파일들을 백업한 다음, 위에 쓰인데로 시스템을 바꿀 것이다. 또한, TCP Wrapper 역시 당신을 위해 구현할 것이다. 이 스크립트는 당신의 프로세서를 적절히 탐지하여 적당히 알아서 행동할 것이다. 이 스크립트는 꼭 새로이 설치된 시스템에만 쓰길 바란다. 의견이나 충고는 lance@spitzner.net로 보내면 된다.

Download armor-1.3.tar.Z

solaris 배포판에 uncompress가 기본으로 설치되기 때문에, gzip 대신에 compress를 사용하였다.
MD5 체크섬은 295e47ee993f4acc3b78333680fde1e5 이다.

Author's bio
Lance Spitzner는 집에서 그의 Unix 시스템을 날려 먹으면서 공부하는 것을 즐기고 있다. 이 전에는, 그는 Rapid Deployment Force의 장교였다. 그곳에서 그는 다른 어떤 것을 날려먹었다. lance@spitzner.net을 통해 그에게 연락할 수 있다.

 

 

반응형
Posted by [PineTree]
OS/SOLARIS2006. 8. 1. 00:19
반응형

1. /etc/hosts
2. /etc/net/ticlts/hosts
3. /etc/net/ticots/hosts
4. /etc/net/ticotsord/hosts
5. /etc/nodename
6. /etc/hostname.xxx(첫번째 랜카드)

 

위파일을vi로 열어서 호스트 네임을 변경해준다.^^

반응형
Posted by [PineTree]
OS/SOLARIS2006. 7. 24. 04:16
반응형
Reference:
Title: How to backup Operating System in Multi-user mode safely
http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-9-79286-1

Title: ufsdump(1M) should not be done on a live (mounted) filesystem.
http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-9-74065-1

 

0. 주의 사항
시스템의 Run Level 3 상태에서 ufsdump 혹은 dd 를 이용한 Boot device 백업은
Data Corruption 의 위험을 포함하고 있다.(비록 대부분의 경우는 문제가 발생하지
않지만... 왜 머피의 법칙이 있지 않은가...ㅠㅠ)
Run Level 3에서 Boot device의 Disk-To-Tape, Disk-To-Disk 백업은 반드시 아래 절차를
따라야 함.

 

1.0 Disk-To-Tape 백업/복구
fssnap -o bs=/export/home /
/* " /"  파일시스템에 대한 Snapshot을 /export/home 디렉토리 아래에 만든다.
bs, 즉 Snapshot이 생성될 디렉토리는 반드시 Snapshot 대상과 별도의 파일시스템에
존재해야 한다. */

 

fssnap -i #snapshot 생성 확인

 

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


fssnap -d /  #deleting snapshot


rm /export/home/snapshot0 #실제로 디렉토리에서 snapshot 파일 지우기


ufsrestore tf /dev/rmt/0 # 테이프 내용 확인


ufsrestore tf /dev/rmt/9 ./bin/pwd #/bin/pwd 파일이 있는지 테이프 내용 확인

 

/*************** 복구 ****************/
/* Solaris 8 OS Software CD 1번을 넣고, boot cdrom -s 명령으로 부팅한다.
ufsrestore rvf /dev/rmt/0 #파일을 복원하고자 하는 디렉토리에서 이 명령을 치면 됨.
rm restoresymtable


/* Boot Block 을 OS Disk의 첫번째 블럭에 설치한다.
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/devicename

 

2.0 Disk-To-Disk 백업/복구
prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
/* Boot device c0t0d0s2 를 유휴 디스크 c0t1d0s2 로 파티셔닝 정보를 복사한다. */


newfs /dev/rdsk/c0t1d0s0; mount /dev/dsk/c0t0d0s0 /a
ufsdump 0f - /dev/rfssnap/0 | ( cd /a ; ufsrestore -xf -)
/* ufsdump, ufsrestore 를 이용한 디스크 복사 */


rm restoresymtable


/* Boot Block 을 OS Disk의 첫번째 블럭에 설치한다.
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/devicename


/* 복사된 Disk umount */
umount /a

반응형
Posted by [PineTree]
OS/SOLARIS2006. 7. 24. 04:14
반응형

 
Disk 관리

1) ufsdump를 이용한 Disk 관리

: * slice단위의 data이동에 사용, 하나의 디스크에 여러개의 슬라이스가 있을 땐 사용 불편
* 소스, 타켓 의 슬라이스 크기나, 디스크 type 틀려도 사용 가능
* ufs file system에서만 사용가능

1. target disk에 slice 생성

:동일한 Disk Type일 경우

# /usr/sbin/prtvtoc /dev/rdsk/소스디스크s2 | /usr/sbin/fmthard [ -n 볼륨이름 ] -s - /dev/rdsk/타켓s2

:Disk type이 틀릴땐, format 으로 해당 slice 생성

2. target disk의 slice format 요

#newfs /dev/rdsk/타켓디스크각각의 slice


3. ufsdump | ufsrestore로 cp

: cdrom으로 부팅하여, 소스디스크- 타켓디스크 dump 하는 경우를 권장하지만, normal booting도 괜찮음
대신 dump 시 Disk I/O는 없어야 함

# mkdir /tmp/root2
# mount /dev/dsk/타켓디스크_슬라이스 /tmp/root2
# cd /tmp/root2
# ufsdump 0f - /dev/rdsk/소스_슬라이스 | ufsrestore rvf -

(주의) "ufsrestore rvf /dev/rdsk/타켓_슬라이스" 같이 mount 하지 않고, 바로 dump 불가!!


4. Os Disk 라면 Boot Block 추가

# cd /usr/platform/`uname -m/lib/fs/ufs
# installboot bootblk /dev/rdsk/타켓Disk_s0


etc> * swap 슬라이스는 공간만 맨들어 두면 된다.
* 디스크의 슬라이스가 여러개일때, 자동으로 dump 하는 shell script 이용 가능
그러나, 이런 경우는 dd가 편리
* logger 를 이용하여, shell script을 만들어 두고, dump 소요 시간을 /var/adm/message에서 확인한다.
# logger -p "user.notice" "dump Start......."
# ufsdump ...............
# logger -p "user.notice" "dump End.........."


5. 모든 작업이 끝나면, init 0으로 가서, 소스디스크를 빼고, 타켓디스크로 교환한다.
spare로 가지고 있을려면, 타켓Disk의 vfstab 변경

6. 광Disk 를 OS Disk 로 사용할때

: Fiber 인터페이스를 가지는 디스크는 , 시스템의 각각의 slot별로 wwn no.를 가지고 있으므로, cdrom
부팅하여, 다음의 과정을 거친후, 디스크를 교환해야 한다.


www.sun.co.kr/ - 기술문서 메뉴
-------------------------------------------------------------

FCAL disk를 boot disk로 사용할 경우 disk가 WWN을 가지고 있기 때문에
disk교체시 WWN을 바꿔주어야만 error없이 booting을 할수 있다.

다음과 같은 순서대로 실행 하여야 한다.

1) disk를 교체 한다.

2) OS cdrom 을 이용하여 single user mode 로 booting한다.

3) disk partition을 만든후 filesystem을 creation하고, mount한후 data를
restore한다.

4) "installboot" command를 이용하여 bootblock을 install 한다.

5) root partition을 mount한후 device tree를 re-build한다.
# drvconfig -r /a -p /a/etc/path_to_inst
# cd /devices
# find . -print | cpio -pduVm /a/devices
# disks -r /a
# devlinks -r /a

6) luxadm command를 사용하여 EEPROM의 "boot-device" parameter를 수정한다.
# luxadm set_boot_dev /dev/dsk/{root slice entry}
(가능하면, EEPROM의 "boot-device" parameter로 같이 수정한다.)

7) system을 rebooting한다

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


2) dd 를 이용한 Disk 관리

* 디스크에 여러개의 slice가 있는 경우, 디스트를 통으로 cp 할때 사용
* ufs 가 아닌 다른 파일 시스템일때도 사용 가능 ( vfs )
* dd 는 low-level로 disk cp 를 하므로, type 틀린 Disk에서는 사용을 자제한다.
* 대용량 hdd에서 , 적은 data만을 사용하고 있을땐 , ufsdump가 더 빠르다.
* OS Disk일 경우, installboot 가 필요 없다.

1. cdrom 부팅이나, 싱글모두 부팅을 권장하지만, 일반 레벨 부팅도 상관 없다.

2. # dd if=/dev/rdsk/소스디스크s2 of=/dev/rdsk/타켓디스크s2 bs=128k

cf> tape cp : if=/dev/rmt/0 of=/dev/rmt/1
floppy cp : if=이미지파일 of=/vol/dev/aliases/floppy bs=1440k

3. logger 를 이용하여, 셀스크립으로 만들어서 사용

 

3) tape 을 이용한 Network backup/ Restore 를 연습해 두면 , 쓸모가 많다.

: * .rhosts 과 tar 를 사용해서 Remote dat에 백업
* 백업할 곳을, root 퍼미션으로 share한뒤, ufsdump하는게 더 편하다.
aaa 10.0.0.1 : s0 : os
bbb 10.0.0.2 : s7 : 덮프 뜰 곳 : tmp/root2로 mount

bbb > share -o root=aaa /tmp/root2
aaa > cd /net/aaa/tmp/root2; touch aaa <- write test
aaa > ufsdump 0f - /dev/rdsk/c0t0d0s0 | ufsrestore rvf -


4) tar를 이용한 Disk 관리

: OS을 자주 설치해야할 경우, 동일 모델의 Sparc 이라면, 초기 설치시의 모든 파일을
tar 로 묶어 둔뒤, 필요할때, 다시 풀면, OS 설치랑 동일한 효과를 가진다.
만약 A 랑 B가 동일한 모델의 시스템이라면, A에서 Os 깔고, 패치하고, 이런 저런 세팅
한후, tar로 OS 슬라이스를 통채로 묶고, 압축한뒤, 이 파일만 B 시스템으로 옮겨서
압축 풀고, vfstab 설정하고, installboot 만 하면, 새로 설치한 거랑 동일하게 작동한다.
<-- cd 로 싱글 부팅해서 작업해야 겠죠?


* 기회가 되면 Veritas Netback 를 이용한 backup도 눈여겨 본다.

반응형

'OS > SOLARIS' 카테고리의 다른 글

솔라리스 호스트네임변경  (0) 2006.08.01
Sun Solaris Server 온라인중 root 파일시스템 백업  (0) 2006.07.24
DAT 관련 명령어  (0) 2006.07.14
NIC 카드 추가하기  (0) 2006.06.22
스왑용량 늘리기  (0) 2006.06.17
Posted by [PineTree]
OS/SOLARIS2006. 7. 14. 01:04
반응형

# # mt -f /dev/rmt/0 status                  (tape 상태 표시)

        # mt -f /dev/rmt/0 eom                  (맨 끝으로 이동, 끝부분 헤더로 이동)

        # mt -f /dev/rmt/0 rewind                (처음으로 되감기)

        # mt -f /dev/rmt/0n fsf count             (count만큼 뒤로 이동)

        # mt -f /dev/rmt/0n nfsf count            (count+1만큼 뒤로 이동)

        # mt -f /dev/rmt/0n bsf count            (count만큼 앞으로 이동)

        # mt -f /dev/rmt/0n nbsf count           (count+1만큼 앞으로 이동)

        # mt -f /dev/rmt/0 erase                  (모든 내용 삭제)

        # mt -f /dev/rmt/0 offline                  (eject)

 

# mt -f /dev/rmt/0 rew

    테이프를 처음으로 감음

 

 # ufsrestore tf /dev/rmt/0n

   첫번째 백업 내용을 출력하고 테이프는 그 다음 백업 받은 것을 가리킴

 

 # ufsrestore tf /dev/rmt/0n

   두번째 백업 내용을 출력. 테이프는 그자리.

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

 mt 명령어

 

목적: 마그네틱(Magnetic) 테이프 드라이버를 조정하기 위해 사용한다.
사용법:  mt  command
명령어 사용법:
fsf  n :  forward space count files
bsf  n : backward space count files
rewind : Rewind the tape
ret : Retension the tape
status : Print status information about the tape unit
feom : 테이프에 파일을 추가할 수 있는 장소로 이동한다.


[/home] mt  ret
[/home] mt  rewind
[/home] mt  -f  /dev/rmt0  sf  1
[/home] mt  -f  /dev/rmt0  bsf  1
[/home] mt  -f  /dev/rmt0  feom

 

 

유닉스를 주로 사용하는 기계는 많은 종류의 자기테이프를 씁니다.

옛날에 쓰던 1/2 인치 릴 테이프... 이건 아마도 아니겠죠?
이건 옛날 교환기에서는 아직도 쓸지 모르지만... 전 안써봐소 모릅니다.
이건 아닐거고..

1/4인치짜리 카트리지로 나온게 있습니다. 수십메가에서 백몇메가까지
백업이 가능한데... 이건 90년대 초에 많이 쓰던겁니다. 이건 테이프
드라이브에 꼽아 넣기만 하면 됩니다.

다음 8미리 비디오테잎(같이 생긴것)이 있습니다. 이건 용량때문에
잠시 쓰다가 바로 DDS(Digital Data Storage?)테입 일명 다트 테잎으로
바뀌었습니다.

대부분이 아마도 이 DDS테잎인데.. .이것도 그냥 테잎드라이브에 넣으면
됩니다.

또 대용량 고속 백업시스템에 많이 쓰는 DLT, 이것도 그냥 테잎드라이브에
넣으면 됩니다.


넣고 나서는 그 안의 파일을 가져와야 하는데, 그것이 어떠한 방식으로
넣었느냐에 따라 다릅니다.

대부분이 아마도 tar (Tape ARchive)유틸리티로 만들어진 것일 겁니다.
그럼 tar xvf /dev/mnt/0m 정도로 내용을 풀 수 있습니다.
/dev/mnt/0m 은 디바이스 파일로 시스템마다 다를 수 있으니 시스템에
맞는 테이프 디바이스 파일을 지정해 주시면 됩니다.

그 다음 카세트 테이프 작동법 처럼 fast forward, rewind, eject 같은
작동을 시키는 명령어가 mt 라는 명령어 입니다.

mt rew : 되감기
mt fsf : 다음 파일로
mt offl : 꺼내기

이런 명령어들이 대충 먹을 겁니다. (이건 mt 매뉴얼을 보세요... man mt)
 

반응형
Posted by [PineTree]