Etc2008.01.02 12:40

우선 기본적인 RAID1 설정법은 인터넷에 마니 돌고 있는것을 참조 합니다.

여기서 부터
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

저자 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도 상관 없습니다)의 작은 슬라이스를 만듭니다.

전 그냥 1G정도로 잡았습니다. 1TB 를 미러링 하는 관계로...

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

포멧으로 들어 가셔서서 해당 슬라이스 사이즈 줄이시고 추가 하시면 간단히 됩니다.
그리고 여기 원본 문서에는 소스 디스크와 타켓 디스크 명칭이 불분명 해서 .. 저의 기준으로
약간 수정하겠습니다.
소스 (c1d0s0) 타켓(c2d0s0) 입니다.

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

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/c1d0s0 | fmthard -s - /dev/rdsk/c2d0s0

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

# metadb -f -a -c3 c1d0s6(Slice 6 is my small slice here)
# metadb -a -c3 c1d0s6 (Slice 6 on rootmirror) 저는 이건 실행 안했습니다.

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

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

# metainit -f d10 1 1 c1d0s0  

# metainit d20 1 1 c2d0s0

(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작업이 끝나면 루트 디스크를 제거 하고 시스템을 시험해 보시기 바랍니다.

여기서 잠깐.. 일단 부트 영역을 미러링 하기는 했지만...

솔라리스 10 x86버젼을 쓰시면 grub가 기본적으로 깔린다 이거죠;; (전 그랬습니다)

위에 처럼.. 해서 원본을 제거 하고.. 백업 디스크로 부팅을 하니..

안되더구요..

그냥 sparc 에선
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1d0s0
이렇게 하면 되는듯 했으나..

grub라서 이건.. 실행하면..
Error: installboot is obsolete. Use installgrub(1M)
이런걸 뿌립니다.. ㅡㅡ;

한동안 삽질 하다가..

installgrub   /boot/grub/stage1   /boot/grub/stage2   /dev/rdsk/c2d0s0 (타켓 디스크)
요놈이 있다는걸 알았습니다 .

grub 재 설치.. ㅡㅡ ;
음.. 저렇게 한방 날려주고 재부팅..

역시나... 안되더군요..

음... 그래서 다시 한번 고민을 했죠;;

바보 같이.. 파티션에 부트영역설정을 안해준거였습니다.

간단히 fdisk c2d0s0 (타켓디스크/부트영역슬라이스입니다.) 

엔터;;; 그럼 이상한 영어 나옵니다. y 로 간단히 넘어가고;;

거기서 2번 누르시고 해당... 슬라이스 선택하시고... 5번 누르고 저장 하시면 됩니다 .

그러구 원본 빼고 부팅~~~

그럼 타켓으로 부팅이 됩니다.. 전 이렇게 해서 되었습니다.

인터넷에 이런 내용이 없어서 나름 고민 했습니다.  혹시나 안되더라도 너무 욕하지 마세요..

전 이렇게 해서 잘 쓰고 있습니다..

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

회색 글씨는 퍼온거구요..

나머지는 저의 ... ㅡㅡ 잡담입니다..

Posted by is윤군

댓글을 달아 주세요