1. 서론
하드디스크는 믿을 수 없는 저장 매체다. 언제든 데이터가 유실될 수 있다.
유닉스(unix) 서버 시스템도 예외는 아니다. 따라서, 백업 시스템은 필수적이다.
하지만, HA와 같은 실시간 이중화 시스템을 구성하기 위해서는 적지 않은 비용을 감수해야 한다.
금융 시스템과 같이, 무중단 서비스가 필수적이라면, 고가의 비용을 들여서 HA를 구성해야하지만,
그렇지 않다면, 하드디스크의 백업 만으로 시스템 운용 비용을 효과적으로 줄일 수 있다.
이 문서를 이해하기 위해서는 유닉스(솔라리스) 시스템의 기본적인 admin 경험이 있어야 한다.
2. 운용 방안
가. 시스템 백업
먼저, 서버에 OS를 설치하고, 응용프로그램을 설치하고, 환경 설정을 완료한다.
그리고, 이 상태의 하드디스크를 그대로 백업해서 보관한다.
나. 데이터 백업
상기 “가.”항의 하드디스크는 시스템 운용환경은 모두 설치되어 있지만,
시스템 운용 중에 매일 매일 생성되는 데이터는 보관하고 있지 않다.
따라서, 운용 데이터는, cron 등의 배치작업으로 매일매일 별도로 백업을 받아야 한다.
(예) 오라클 데이터 백업
(1) data export → (2) data 압축 → (3) ftp script 로 백업 서버에 전송
여기서는 상기 “가.”항의 방법을 설명한다.
3. 구성도
하기 t0의 HDD를 t4에 복사한다.
![]() |
상기 유닉스 서버 시스템은, 솔라리스(Solaris) 운영시스템을 예로 들었다.
SCSI controller card가 2개 있으며,
0번 card에는 target 0 ~ target 3 에 HDD가 장착되어 있으며,
1번 card에는 target 4 ~ target 5 에 HDD가 장착되어 있다.
target 0 HDD는 2개의 파티션(partition)으로 분할되어 있다.
(일반적으로, 유닉스 시스템에서는 파티션이라는 용어 보다는
슬라이스(slice)라는 용어를사용한다.)
슬라이스 0 (c0t0d0s0)에는 OS(Solaris)가 설치되어 있고,
슬라이스 6 (c0t0d0s6)에는 응용프로그램이 설치되어 있다.
솔라리스 유닉스 명령으로 디스크를 복사하기 위해서는,
t4 하드디스크를 t0 와 똑같은 구성(슬라이스 2개)으로 분할하고,
슬라이스 각각을 복사해야 한다.
4. 복사 대상 하드디스크 분할
t4 하드디스크를 format 명령을 사용하여, 2개의 슬라이스로 나눈다.
|
# format
|
root 권한에서 format 명령을 입력한다.
|
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000004cf2023bc,0
1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> concord
/sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000004cf2028be,0
2. c0t2d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w2100002037bed0e9,0
3. c0t3d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/sbus@3,0/SUNW,socal@d,10000/sf@0,0/ssd@w21000020372a6262,0
4. c1t4d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w21000020372a8b93,0
5. c1t5d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
/sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w21000020372aab36,0
Specify disk (enter its number): 4
selecting c1t4d0
[disk formatted]
|
상기 리스트의 하드디스크에서 4를 선택한다.
0은 원본 디스크이고, 4는 대상(target) 디스크이다.
|
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
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 메뉴를 선택한다.
|
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> m
|
슬라이스(slice)를 분할하기 위해서 modify 메뉴를 선택한다.
|
Select partitioning base:
0. Current partition table (original)
1. All Free Hog
Choose base (enter number) [0]? 1
|
슬라이스(slice)를 초기화하고 다시 분할하기 위해서 1. All Free Hog를 선택한다.
|
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180
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 usr wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
Do you wish to continue creating a new partition
table based on above table[yes]?
|
디폴트 [yes]를 선택하기 위해서, [Enter] 키를 입력한다.
|
Free Hog partition[6]?
|
디폴트 [6]를 선택하기 위해서, [Enter] 키를 입력한다.
|
Enter size of partition '0' [0b, 0c, 0.00mb, 0.00gb]: 10gb
Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: 5gb
Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]:
Enter size of partition '7' [0b, 0c, 0.00mb, 0.00gb]:
|
슬라이스(slice) '0' 에는 10 giga byte 를 할당한다. (OS가 복사될 슬라이스이다.)
슬라이스(slice) '1' 에는 5 giga byte 를 할당한다. (swap 영역으로 사용할 슬라이스이다.)
슬라이스(slice) '6' 에는 나머지 용량이 할당된다.
|
Part Tag Flag Cylinders Size Blocks
0 root wm 0 - 7259 10.00GB (7260/0/0) 20974140
1 swap wu 7260 - 10889 5.00GB (3630/0/0) 10487070
2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180
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 usr wm 10890 - 24619 18.91GB (13730/0/0) 39665970
7 unassigned wm 0 0 (0/0/0) 0
Okay to make this the current partition table[yes]?
|
디폴트 [yes]를 선택하기 위해서, [Enter] 키를 입력한다.
참고로, 슬라이스(slice) 2 는 따로 할당하는 슬라이스가 아니라,
하드디스크 전체 용량을 보여주는 슬라이스이다.
|
Enter table name (remember quotes): c1t4d0
|
format 명령 후 선택했던, 하드디스크 이름을 입력한다.
|
Ready to label disk, continue? y
|
y 를 입력한다.
|
partition> ?
Expecting one of the following: (abbreviations ok):
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> name
Enter table name (remember quotes): c1t4d0
partition> label
Ready to label disk, continue? y
|
name을 선택하고, format 명령 후 선택했던, 하드디스크 이름을 입력한다.
label을 선택하고, y를 입력한다.
|
partition> quit
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
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> save
Saving new disk and partition definitions
Enter file name["./format.dat"]:
format> quit
|
quit 명령으로 초기 메뉴로 돌아간 후, save 한다.
|
# newfs /dev/rdsk/c1t4d0s0
# newfs /dev/rdsk/c1t4d0s1
# newfs /dev/rdsk/c1t4d0s6
|
newfs 명령으로 파일시스템을 생성한다.
5. 하드디스크 복사
하드디스크 복사는 각각의 슬라이스(slice) 별로 복사해야 한다.
|
# mkdir temp1
# mkdir temp2
# mount -F ufs /dev/dsk/c1t4d0s0 /temp1
# mount -F ufs /dev/dsk/c1t4d0s6 /temp2
|
슬라이스를 복사하기 위해서,
복사 대상(target)인 하드디스크의 슬라이스를 임시로 mount 한다.
|
# cd /temp1
# ufsdump 0f - /dev/rdsk/c0t0d0s0 | ufsrestore xvf -
# cd /temp2
# ufsdump 0f - /dev/rdsk/c0t1d0s6 | ufsrestore xvf -
Set directory mode, owner, and times.
set owner/mode for '.'? [yn] y
set owner/mode for '.'? [yn] y
|
복사 대상(target)인 하드디스크의 슬라이스로 이동 후에,
(cd /temp1)
복사 원본(source)인 하드디스크의 슬라이스를 복사해 온다.
(ufsdump 0f - /dev/rdsk/c0t0d0s0 | ufsrestore xvf -)
|
# installboot /usr/platform/`uname -m`/lib/fs/ufs/bootblk /dev/rdsk/c1t4d0s0
|
복사 대상(target)인 하드디스크의 0번 슬라이스를 bootable로 만든다.
|
# vi /temp1/etc/vfstab
|
/temp1/etc/vfstab 을 수정한다.
복사 대상(target)인 하드디스크의 vfstab은
원본 하드디스크의 슬라이스 정보를 그대로 가지고 있기 때문에,
대상(target) 하드디스크의 슬라이스 정보에 맞게 수정해야 한다.
위에서는 원본 하드디스크로 부팅한 상태에서,
복사 대상인 하드디스크의 슬라이스를, 임시로 /temp1 에 mount 했기 때문에,
vfstab의 경로가 /temp/etc/vfstab 로 나타나지만,
복사 대상(target)인 하드디스크로 다시 부팅한다면,
/etc/vfstab 의 경로로 나타날 것이다.
|
# init 0
ok nvalias disk9 /sbus@3,0/SUNW,socal@d,10000/sf@1,0/ssd@w21000020372a8b93,0
|
Init 0 명령으로 boot prompt (ok prompt)로 빠져 나온 후,
백업 하드디스크 alias를 추가한다.
슬라이스 분할을 위해 앞서 사용한 format 명령에서 취득한 정보이다.
이 문서의 초기에 다음과 같은 내용이 있다.
|
# format
…
4. c1t4d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
|
5. 백업 디스크로 부팅
이제 모든 작업이 완료되었다.
원본 하드디스크가 손상되었을 경우,
다음과 같은 절차로 백업 하드디스크로 부팅할 수 있다.
|
[stop] + a
ok boot disk9
|
[stop] + a 키를 입력하여, 강제로 boot prompt (ok prompt) 로 빠져 나온 후,
boot disk9 명령으로 백업 하드디스크로 부팅한다.
또는, 다음과 같이 시스템을 정상으로 종료 시킨 후, 백업 하드디스크로 부팅한다.
|
# init 0
ok boot disk9
|
당연한 얘기지만, boot prompt 에서 다음과 같이 입력하면, 원본 하드디스크로 부팅된다.
|
ok boot
|
[출처] www.codesoft.co.kr (재배포 시에는 출처를 밝히셔야 합니다.)
