Etc2007.12.13 11:13
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  (재배포 시에는 출처를 밝히셔야 합니다.)
Posted by is윤군

댓글을 달아 주세요