본문 바로가기

개발/unix

solaris 정리 8 - [ 맞춤식 점프스타트, 백업과 복구 ]

맞춤식 점프스타트
- 점프스타트 서버 -
setup_install_server 명령어 : 첫번째 CD에 있는 파일을 하드디스크에 복사.
-B 옵션 : 생략시 CD의 모든 파일을 복사한다.
         설정시에는 부트 서버로 동작하기 위한 최소한의 파일만 복사한다. 부트서비스           를 제공하는 시스템과 설치 서비스를 제공하는 시스템이 다를 경우에 사용한다.
add_to_install_server 명령어 : 두번째 CD와 lang CD에 있는 파일을 하드디스크에 복사.
-s 옵션 : 생략시 CD의 모든 파일을 복사한다.
          설정시에는 CD의 일부 파일만 선택하여 복사할 수 있다.
modify_install_server 명령어 : 대화식이 아닌 웹 스타트 방식으로 설치하도록 설정.
첫 번째 CD에서 setup_install_server 명령어를 실행하여 파일을 복사한 후 설치 CD에서
modify_install_server 명령어를 실행하여 웹 스타트 설치 프로그램을 별도로 복사하면 웹 스타트 방식으로 설치되고, 그렇지 않으면 대화형 방식으로 설치된다.
ex)
# cd /cdrom/cdrom0/s0/Solaris_8/Tools; ./setup_install_server /export/install  (CD1)
# cd /cdrom/cdrom0/Solaris_8/Tools; ./add_to_install_server /export/install  (CD2)
# cd /cdrom/cdrom0/Tools; ./add_to_install_server -s /export/install  (lang CD)
# cd /cdrom/cdrom0/s0; ./modify_install_server /export/install /cdrom/cdrom0/s1  (설치 CD)

- 점프스타트 클라이언트 -
ok boot net - install [nfs://NFS_server_hostname or IP_address/jumpstart_directory
[/tarfile]] [nowin]
boot net - install 까지만 입력하면 점프스타트 클라이언트가 스스로 부트 서버를 찾고, 부트 서버에서 전달받은 정보르 이용하여 설정 서버, 식별 서버, 설치 서버에서 필요한 데이터를 받아서 솔라리스를 자동으로 설치한다.
boot net - install 뒤의 형식을 사용하기 위해서는 설정 서버와 식별 서버에서 제공하는 모든 파일을 비롯하여 시작 스크립트, 종료 스크립트와 이들 스크립트들이 실행할 때 필요한 모든 파일들도 하나의 파일로 만들고, 그 이름을 별도로 명시해야 한다. 사용할 수 있는 파일형식은 tar파일, compress로 압축한 tar파일, bzip2 명령어로 압축한 tar파일, zip파일 등이 사용된다. 파일 이름 생략시 jumpstart.tar 파일이라 간주한다.
nowin : 설치 과정에 GUI환경이 아닌 text 환경을 사용할 때 명시한다.
ex)
ok> boot new - install
or
# reboot -- 'net - install'
ok> boot net - install nfs://ultra60/export/config/grandprix.tar
or
# reboot -- 'net - install nfs://ultra60/export/config/grandprix.tar'
점프스타트 클라이언트의 설정을 위한 파일과 식별을 위한 파일은 NFS 서버인 ultra60의 /export/config/grandprix.tar 파일에 모두 존재한다.
ok> boot net - install nfs://192.168.0.6/export/home/config nowin
or
# reboot -- 'net - install nfs://192.168.0.6/export/home/config nowin'
점프스타트 클라이언트의 설정을 위한 파일과 식별을 위한 파일은 IP 주소가 192.168.0.6인 NFS 서버의 /export/home/jumpstart.tar 파일에 모두 존재한다.
점프스타트 방식으로 설치된 시스템은 /var/sadm/system/logs/install_log 파일에 설치시 출력된 모든 사항이 저장되어 있다.


- 점프스타트 이용하여 Solaris 설치 -
jumstart_server : ultra60
jumstart_client : ultra60-1
- jumstart_server -
# hostname
ultra60
# cd /cdrom/cdrom0/Solaris_8/Tools  (CD1)
# ./setup_install_server /export/install
# eject cdrom
# cd /cdrom/cdrom0/Solaris_8/Tools  (CD2)
# ./add_to_install_server /export/install
# eject cdrom
# cd /cdrom/cdrom0/Tools  (lang CD)
# ./add_to_install_server -s /export/install
6번 Korean 선택
# vi /etc/hosts
127.0.0.1    localhost
192.168.0.6  ultra60  loghost
192.168.0.7  ultra60-1
(클라언트인 ultra60-1의 hostname과 ip 주소를 추가하고 기준 시간을 제공하는 시스템에 timehost를 추가한다.)
# vi /etc/ethers
8:0:20:cf:31:f1 ultra60-1
# cp -r /export/install/Solaris_8/Misc/jumpstart_sample /export/jumpstart
(구성 service를 하기 위한 파일을 모두 복사한다.)
# vi /export/jumpstart/rules
any  -  -  host_class  -
# vi /export/jumpstart/host_class  (설정 내용은 대소문자를 반드시 구분한다.)
install_type    initial_install   
system_type   standalone
root_device    c0t0d0s0   (root 파일시스템에 사용할 파티션을 명시한다.)
usedisk        c0t0d0    
(디스크가 여러개 있을때 솔라리스를 설치할 디스크 선택한다. dontuse와 함께 사용할 수 없다. 둘 중에 한개만 사용한다.)
[dontuse       c0t3d0]      (솔라리스 설치시 사용하지 않을 디스크를 명시한다.)
locale         ko
cluster        SUNWCXall  (전체배포용으로 설치한다.)
partitioning    explicit   (파티션을 고정한다.)
filesys        c0t0d0s0       free       /  (남은 영역을 전부 할당한다.)
filesys        c0t0d0s1       1024     swap  (size는 Mbyte 단위)
filesys        c0t0d0s3       100       /p1      
filesys        c0t0d0s4       100       /p2
filesys        c0t0d0s5       100       /p3
filesys        c0t0d0s6       100       /p4
filesys        c0t0d0s7       100       /p5
# cd /export/jumpstart
# ./check  (host_class 파일의 구성을 확인 및 test 한다.)
# ls rules.ok  (아무 이상이 없으면 rules.ok 파일이 생성된다.) 
# vi /export/jumpstart/sysidcfg  (클라이언트 식별)
system_locale=ko
timezone=ROK
timeserver=localhost
terminal=dtterm
name_service=NONE
security_policy=NONE
network_interface=hme0 { netmask=255.255.255.0 protocol_ipv6=no }
root_password=L89niy4Uo6HtM  (/etc/shadow 파일의 root password를 그대로 써 줌.)
# vi /etc/dfs/dfstab
share -o ro /export/jumpstart
share -o ro /export/install
# /etc/init.d/nfs.server stop
# /etc/init.d/nfs.server start
# dfshares
# cd /export/install/Solaris_8/Tools
# ./add_install_client -c ultra60:/export/jumpstart -p ultra60:/export/jumpstart -s
ultra60:/export/install ultra60-1 sun4u
(/tftpboot 디렉토리에 네트워크로 부팅할 수 있는 부트프로그램을 복사한다. 차례대로 구성서버, 식별서버, 설치서버, 클라이언트 이름, 플랫폼이다.
# rm_install_client ultra60 명령어로 제거할 수 있다.)
- jumpstart_client -
ok> boot net - install


백업과 복구
- 백업 테이프 드라이브
/dev/rmt/<unit-number>[<density>][<no-rewind>]
<unit-number>
몇 번째 백업 테이프 드라이브인지 숫자를 이용하여 나타낸다. 0일 경우에는 첫 번째 백업테이프 드라이브임.
<density>
l(low), m(medium), h(high), u(ultra), c(compressed) 중 하나를 사용한다.
생략시 일반적으로 가장 높은 밀도를 사용해서 데이터를 기록한다.
<no-rewind>
백업이나 복구 명령어 수행 후 테이프가 되감기지 않고 현재 상태에서 가만히 둔다. 하나의 백업 테이프에 여러 내용을 백업하여 기록하기 위하여 사용한다.

- ufsdump 명령어
ufsdump [[0123456789]unvloSf] dump_name (file or directory or partition)
ufs 파일 시스템에서만 사용 가능하다.
백업할 파일이나 디렉토리 외에 다른 이름을 입력하지 않으면 9uf /dev/rmt/0를 기본 사용.
옵션
0~9
u
n
l
o
s
v
f
의  미
/etc/dumpdates를 참조해서 완전백업 및 증분백업을 결정한다.
레벨은 항상 자신보다 이전의 레벨을 참조한다. 이전의 레벨이 자신보다 작으면 그 레벨 이후의 변경 내용을 백업하고, 자신과 레벨이 같거나 크면 자신보다 작은 레벨을 찾아서 그 레벨 이후의 변경 내용을 백업한다.
update) /etc/dumpdates 파일의 내용을 갱신한다. 백업하는 대상이 반드시 파일이나 디렉토리가 아닌 파티션을 입력해야 정보가 남는다. /etc/dumpdates 파일은 백업을 시작한 시간이 기록된다.
notify) sys그룹에 속한 사용자들 중에서 현재 로그인한 사용자가 있을 경우 해당 사용자에게 메시지를 전달 할 수 있다.
autoloading) 하나의 백업 매체에 데이터를 모두 기록하지 못하면 자동으로 다른 백업 매체로 바꾸어서 기록한다.
offline) 백업이 끝나면 백업 매체를 자동으로 배출한다.
estimate) 주로 증분백업을 하기 전에 사용한다. 백업하는 데이터의 양을 출력하므로 그 양에 따라 필요한 백업 매체를 선택할 수 있다.
verify) 백업한 데이터와 하드디스크에 있는 데이터를 비교한다. 데이터가 정확하게 기록되었는지 다시 한 번 확인하기 위해 사용한다. 단 데이터를 백업하는 파티션이 반드시 마운트 되어 있어야 한다.
file) f 다음에는 백업 장치명을 적는다. 생략시 /dev/rmt/0를 기본으로 사용한다.
하드디스크를 언마운트한 후에 백업하는 것이 좋다. 언마운트하지 않고 백업을 하면 파일시스템에 있는 데이터가 변경될 가능성이 있다.
remote로 백업시 백업 장치가 연결된 시스템의 .rhosts에 백업을 실행할 host가 추가되어 있어야 한다. 또한 /etc/default/login 파일에서 console 이외의 터미널에서도 로그인이 가능하도록 한다.
<백업스케줄>
 
매월 1일
첫째주
둘째주
세째주
네째주
 
매월 1일
첫째주
둘째주
세째주
네째주
유동
월요일
화요일
수요일
목요일
금요일
0
 
 
 
 
 
 
9
9
9
9
5
 
9
9
9
9
5
 
9
9
9
9
5
 
9
9
9
9
5
 
 
 
 
 
 
a
 
 
 
 
 
 
b
b,c
b,c,d
b,c,d,e
b,c,d,e,f
 
g
g,h
g,h,i
g,h,i,j
b,c,d,e,f,g,h,i,j,k
 
l
l,m
l,m,n
l,m,n,o
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p
 
q
q,r
q,r,s
q,r,s,t
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u

 
매월 1일
첫째주
둘째주
세째주
네째주
 
매월 1일
첫째주
둘째주
세째주
네째주
유동
월요일
화요일
수요일
목요일
금요일
0
 
 
 
 
 
 
9
9
9
9
3
 
9
9
9
9
4
 
9
9
9
9
5
 
9
9
9
9
6
 
 
 
 
 
 
a
 
 
 
 
 
 
b
b,c
b,c,d
b,c,d,e
b,c,d,e,f
 
g
g,h
g,h,i
g,h,i,j
g,h,i,j,k
 
l
l,m
l,m,n
l,m,n,o
l,m,n,o,p
 
q
q,r
q,r,s
q,r,s,t
q,r,s,t,u

 
매월 1일
첫째주
둘째주
세째주
네째주
 
매월 1일
첫째주
둘째주
세째주
네째주
유동
월요일
화요일
수요일
목요일
금요일
0
 
 
 
 
 
 
3
4
5
6
2
 
3
4
5
6
2
 
3
4
5
6
2
 
3
4
5
6
2
 
 
 
 
 
 
a
 
 
 
 
 
 
b
c
d
e
b,c,d,e,f
 
g
h
i
j
b,c,d,e,f,g,h,i,j,k
 
l
m
n
o
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p
 
q
r
s
t
b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u

- ufsrestore 명령어
ufsrestore (i|r|x|t)vf
ufsdump 명령어로 백업한 파일을 다시 원복하기 위해 사용한다.
옵션
i
r
x
t
v
f
의   미
interactive) 백업 데이터를 돌아다니면서, 백업 데이터 안에 있는 파일이나 디렉토리의 목록도 직접 보고, 또한 복구할 파일을 마음대로 선택할 수 있는 기능을 제공한다.
ls, cd, add, delete, extract, quit, marked 명령어를 사용한다.
add : 복구할 파일 목록에 현재 디렉토리나 특정 파일을 추가한다.
delete : 복구할 파일 목록에서 현재 디렉토리나 특정 파일을 삭제한다.
extract : 선택한 모든 파일과 디렉토리를 복구한다.
marked : 현재 디렉토리에서 선택된 파일의 목록을 출력한다.
restore) 백업 데이터를 원래대로 복원한다. 현재 디렉토리를 기준으로 복구하므로 원하는 위치로 이동후 데이터를 복원한다.
명령어 실행시 디렉토리에 restoresymtable 파일이 생성된다. 복구되는 모든 파일의 목록,백업 레벨, 날짜 등의 정보를 제공한다. 증분 백업한 백업 데이터에서 파일을 복구할 경우 참조하고 갱신하는 파일이다.
extract) 원하는 파일이나 디렉토리만 복구할 때 사용한다. 반드시 복구할 파일이나 디렉토리의 이름을 아규먼트로 명시해야 한다.
list) 백업 데이터에 있는 파일과 디렉토리의 목록을 i-node 번호와 함께 출력한다. x 옵션을 사용하기에 앞서 원하는 파일을 확인하는데 주로 사용한다.
verbose) 백업 데이터에 있는 파일이나 디렉토리를 복구할 때 목록을 함께 출력한다.
file) 백업한 데이터가 /dev/rmt/0 장치가 아닌 다른 곳에 있을 경우에 그 위치를 명시한다.

-원칙은 unmount 후에 백업을 하여야 하지면 여기에서는 생략한다.-
# vi /etc/vfstab  (/p3에 파티션 할당.)
# mount /p3
# cd /p3
# cp -r /etc/init.d /p3 
# ufsdump 0uf dump00 /p3  (완전백업)
# cp -r /etc/default /p3
# ufsdump 1uf dump01 /p3  (이전 레벨0 이후의 증분백업)
# more /etc/dumpdates  (레벨별 백업 시작 시간 기록)
# cp -r /etc/mail /p3
# ufsdump 4uf dump04 /p3 (이전 레벨1 이후의 증분백업)
# cp -r /etc/nfs /p3
# ufsdump 2uf dump02 /p3 
(이전 레벨4가 아닌 레벨1 이후의 증분백업. 레벨4의 내용도 백업한다.)
# cp -r /etc/skel /p3
# ufsdump 2uf dump02 /p3
(이전 레벨2가 아닌 레벨1 이후의 증분백업. 레벨4뿐만 아니라 이전의 레벨2의 내용도 백업한다. 동일한 백업 레벨을 사용할 경우 /etc/dumpdates 파일에 있던 이전 내용이 삭제되고 새로운 내용이 추가된다.)
# cp -r /etc/dfs /p3
# ufsdump 8uf dump08 /p3  (이전 레벨2 이후의 증분백업)
# ufsdump 6Suf dump06 /p3 
(S 옵션을 사용하면 백업을 하지 않고 백업후 생성되는 파일의 크기만 출력한다.)
# ufsdump 1uf dump11 /p3  (맨 처음의 레벨0 이후의 모든 내용을 증분백업)
# ufsdump 5f dump05 /p3 
(이전 레벨1 이후의 증분백업. /etc/dumpdates 파일에 기록이 남지 않는다.)
# ufsdump u /p3 
(기본적으로 레벨9, /dev/rmt/0으로, 이전 레벨5가 아닌 레벨1 이후의 증분백업.
/etc/dumpdates 파일에 기록이 되어 있지 않아서 레벨1을 이전 레벨로 인식한다.)
hostA# rsh hostB cat /.rhosts  (hostB의 .rhosts에 등록이 되어 있다.)
  hostA root
hostA# ufsdump 0uf hostB:/dev/rmt/0 /p3  (remote 백업이 가능하다.)
# cd /p4
# ufsrestore tf /p3/dump00 (dump00을 복구하지 않고 내용만 확인한다.)
# ufsrestore rf /p3/dump00
(dump00을 복구한다. v 옵션이 없으므로 작업 진행 과정은 출력되지 않는다.)
# ufsrestore vrf /p3/dump04
(dump01 이후만 백업했으므로 dump01이 복구된 후에 복구가 가능하다.)
# ufsrestore vrf /p3/dump01  (dump00이 복구되어 있으므로 복구가 가능하다.)
# ufsrestore vrf /p3/dump04  (dump01이 복구되어 있으므로 복구가 가능하다.)
# ufsrestore ivf /p3/dump00
ufsrestore> cd mail  (백업 파일내의 mail 디렉토리로 이동한다.)
ufsrestore> add aliases sendmail.cf submit.cf  (복구 파일 목록에 추가한다.)
ufsrestore> marked  (복구 파일 목록에 있는 파일이나 디렉토리 목록만 출력한다.)
ufsrestore> delete submit.cf (복구 파일 목록에서 삭제한다.)
ufsrestore> extract (선택한 파일이나 디렉토리만 복구한다.)
Specify next volume#: 1
Set directory mode, owner, and times.
Set owner/mode for '.'? [yn] y
(디렉토리(.)의 권한과 소유주를 백업 파일의 내용과 비교한다. y 로 대답하면 현재 디렉토리의 권한과 소유주가 백업 파일의 내용과 동일하게 변경된다.)
ufsrestore> q
# ufsrestore rvf hostB:/dev/rmt/0 (remote 복구)



- 스냅샷(snapshot)
ufsdump 명령어는 데이터를 백업하면서 실시간으로 정보를 수집하지 않고 미리 필요한 정보를 완전하게 구축한 후에 데이터를 백업하므로 정보를 구축한 이후에 변경된 내용은 전혀 반영되지 못한다.
S 런 레벨에는 시스템에서 필수적으로 필요한 서비스와 파티션을 마운트하여 사용하기 때문에 백업과 복구용으로 가장 좋다. 하지만 외부에서 필요한 서비스를 제공할 수 없기 때문에 사용자의 불편을 초래한다. 이런 환경에 대처하기 위해서 snapshot 기능을 사용한다. snapshot 기능을 사용하면 snapshot을 만든 이후에 변경되거나 제거된 파일이 있어도 안전하게 데이터를 백업할 수 있다. 파일시스템의 변화가 많으면 snapshot의 크기도 커진다.
snapshot은 /tmp나 NFS로 공유된 디렉토리에도 만들 수 있다. 여유공간이 넉넉한 파일시스템을 사용한다. 하지만 snapshot 저장 파일이 있는 파티션은 snapshot으로 지정할 수 없다.
fssnap 명령 수행시 /dev/fssnap(가상 block device), /dev/rfssnap(가상 raw device)가 생성된다. 이 가상 장치 파일은 어떤 백업 명령어에서도 사용 가능하다.

옵션
-i
-d
-o
 
 
 
 
의   미
information) 스냅샷 정보 보기.
delete) 스냅샷 삭제.
여러 조건을 명시할 수 있다.
bs=path
스냅샷을 저장할 경로명 지정. 백업 대상이 되는 파일에 만들 수 없다.
unlink
스냅샷을 위한 가상 장치 파일은 생성한 후에 스냅샷 파일을 지운다.
maxsize=n[kmg]
스냅샷의 최대 크기를 지정한다.
raw
스냅샷을 위한 raw 가상 장치 파일의 경로명을 출력한다.