솔라리스 부트 매니저를 이용한 부트 디스크 미러링 방법

저자 Sivakanth Mundru

적용 가능한 OS 버젼: Solaris 9 Operating System (OS), Solaris 8 OS 와 Solstice DiskSuite 4.2.1 Patch 108693-06 (SPARC 플랫폼)

주의: 모든 경우에 이 방법이 동작한다고 보장할 수는 없습니다. 몇가지 조작이 필요할 수도 있습니다.

다음 단계들은 랜덤한 컨트롤러와 타겟을 사용했습니다. 이것은 호스트 마다 다를 수 있습니다.

또한 같은 컨트롤러로의 미러링 보단 서로 다른 컨트롤러로의 미러링이 좋습니다.

1) 시작하기전에 중요한 것:

/etc/vfstab/etc/system 을 백업합니다:

cp -p /etc/system /etc/system.orig."date"

cp -p /etc/vfstab /etc/vfstab.orig."date"

/etc/system 이 엉망이 될 경우 OK 프롬프트에서 boot -a 를 이용하여 복구가 가능합니다.:

/etc/system.orig."date"

2) 루트 디스크를 미러링 하기 위한 별도의 디스크가 있고 안에는 데이터가 존재하지 않아야 합니다.

3) "루트디스크"의 볼륨 데이터 베이스를 저장하기 위한 25M(10M도 상관 없습니다)의 작은 슬라이스를 만듭니다.

만약 루트 디스크에 전혀 공간이 없다면 swap 스페이스를 약간 지우고 다시 추가 하는 방법으로 공간을 확보합니다.

머신에서 작업이 별로 이루어지지 않고 있을때에 다음과 같이 작업합니다.

3.1) 스왑 상태를 보기 위해 다음 명령어를 사용합니다: swap -l

(스왑이 하나 이상의 슬라이스에 설정되 있다면 더 좋습니다.)

3.2) 다음과 같이 실행합니다:

swap -d swap-name ( /dev/dsk/c?ct?d?s?)

스왑 파티션의 용량이나 실린더 길이를 줄이기 위해 파티션 테이블을 변경합니다.

3.3) 다음과 같이 실행합니다:

swap -a swap-name ( /dev/dsk/c?t?d?s?) 

4) 루트 디스크의VTOC (volume table of contents) 와 미러링할 루트 디스크는 동일해야 합니다.prtvtocfmthard를 이용하여 VTOC를 복사합니다.

# prtvtoc /dev/rdsk/c?t?d?s2 | fmthard -s - /dev/rdsk/c?t?d?s2

5) 루트디스크의 작은 슬라이스에 메타데이타베이스를 생성합니다:

# metadb -f -a -c3 c?t?d?s6 (Slice 6 is my small slice here)
# metadb -a -c3 c?t?d?s6 (Slice 6 on rootmirror)

6) 이제 파티션테이블의 모든 슬라이스의 미러를 생성할 수 있습니다.

루트 또는 / 파티션을 위해:

# metainit -f d10 1 1 c?t?d?s? 

# metainit d20 1 1 c?t?d?s?

(create a md d0 and attach one submirror)
# metainit d0 -m d10 

(set up system files for root (/) metadevice, that is, 
     changes to /etc/system and /etc/vfstab)
# metaroot d0 

# lockfs -fa (clear improper file locks on all mounted UFS file systems) 

7) 다른 메타디스크의 네이밍 규칙을 따릅니다.. (이 소프트웨어를 사용해보지 않은 사람들을 위한 주의: 우리는 metarootlockfs 단계를 다른 파일시스템에서 사용하지 않을 것입니다.)

서브비러들은 10, d20, 과 같은 이름을 가집니다..

예를들어 d10 에서 1 은 서브미러의 번호이고, 0은 슬라이스 번호 입니다.

만약 스왑이 partition/slice 1에 있다면 다음과 같이 합니다:

# metainit -f d11 1 1 c?t?d?s1

# metainit d21 1 1 c?t?d?s1

# metainit d1 -m d11

8) 부트 디스크에 가지고 있는 파일 시스템 만큼 다음을 반복합니다.

9) /etc/vfstab을 변경합니다. 루트의 md 엔트리는 metaroot 명령에 의해 이미 업데이트 되어 있습니다.

/etc/vfstab 의 샘플 카피는 다음과 같습니다:

#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
##/dev/dsk/c1t1d0s1 - - swap - no -
/dev/md/dsk/d1 - - swap - no -
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no -
##/dev/dsk/c1t1d0s7 /dev/rdsk/c1t1d0s7 /export/home ufs 2 yes -
/dev/md/dsk/d7 /dev/md/rdsk/d7 /export/home ufs 2 yes -
##/dev/dsk/c1t1d0s3 /dev/rdsk/c1t1d0s3 /opt/uc4 ufs 2 yes -
/dev/md/dsk/d3 /dev/md/rdsk/d3 /opt/uc4 ufs 2 yes -
swap - /tmp tmpfs - yes -

10) dumpadm을 이용하여 덤프 디바이스를 설정합니다.

11) /etc/system 파일 안에 mdd 정보 섹션에 다음과 같은 엔트리를 추가합니다:

set md:mirrored_root_flag=1

만약 루트 디스크가 사용이 불가능해 진다면 루트 디스크의 데이타 베이스 또한 사용이 불가능해집니다.

솔라리스 볼륨 메니저는 50%이상의 데이타베이스에서 정상적으로 부팅 되고 몇몇 경우에는 부족한 데이타베이스 리플리카 숫자에 대한 에러가 발생합니다. 다음의 단계들은 적어도 50%이상의 카피에서 솔라리스 볼륨 매니저가 부팅 하기 위한 셋팅에 대해 설명합니다..

12) 다음과 같이 실행합니다:

sync; sync; init 6

13) 파일 시스템이 올라오면 다른 서브 미러들을 부착시킵니다:

# metattach d0 d20

(주의: "metattach"임을 유의하십시오 "metaattach"가 아닙니다.)

# metattach d1 d21 

계속 나머지 서브 미러들에 대해 작업합니다.

14) 파일 시스템이 syncing됐는지 아닌지 알아보기 위해 다음과 같은 명령을 실행합니다:

metastat | grep progress 

15) 기본, 미러링된 부트 디바이스의 패스를 지정해 줍니다:

ls -l /dev/dsk/c1t1d0s0 /dev/dsk/c1t0d0s0
lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c1t0d0s0 -> \
   ../../devices/pci@1c,600000/scsi@2/sd@0,0:a
lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c1t1d0s0 -> \
   ../../devices/pci@1c,600000/scsi@2/sd@1,0:a

# eeprom "nvramrc=devalias rootdisk /pci@1c,600000/scsi@2/disk@1,0 
devalias rootmirror /pci@1c,600000/scsi@2/disk@0,0"

(ls -l 출력의 "sd" 에서"disk"로의 변화를 주의해서 보시기 바랍니다)

# eeprom "use-nvramrc?=true"

또한 부트 디바이스 값을 변경 시켜서 둘중에 하나가 사용불가능해 질때 다른 하나를 부팅 시킬 수 있습니다..

# eeprom boot-device="rootdisk rootmirror net"

16) syncing작업이 끝나면 루트 디스크를 제거 하고 시스템을 시험해 보시기 바랍니다.


출처 : http://kr.sun.com/developers/solaris/techdocs/svm_mirroring.html


복구 명령어

Metareplace e d0 c0t0d0s0

Metareplace e d1 c0t0d0s1

Metareplace e d5 c0t0d0s5

 

디스크 밀러 삭제 명령어

 

Metadetach d0 d20

Metadetach d1 d21

Metadetach d5 d25

Metaroot /dev/dsk/c0t0d0s0

Vfstab 원복 및 system 파일 원복

 

*Df k / 에서 md 가 사라진 것 확인

Metaclear r d0; metaclear d10(해당 가상 디바이스 지워지지 않음)

Metaclear r d1; metaclear d11(해당 가상 디바이스 지워지지 않음)

Metaclear r d5; metaclear d15(해당 가상 디바이스 지워지지 않음)

Metclear d20; metclear d21; metclear d25(위의 t1의 가상 디바이스만 지워짐)

*Metadb 삭제

Metadb df c0t0d0s3 c0t1d0s3

Sync

reboot

'IT > Unix' 카테고리의 다른 글

AIX 점검 명령어  (0) 2008.04.30
[SPARC] SUN 시스템의 하드웨어 점검방법  (0) 2008.04.25
Missing Solaris disks  (0) 2008.04.25
AIX 시스템 명령어 & grep, sed, awk  (0) 2008.04.04
Boot process  (0) 2008.04.02

+ Recent posts