SVM을 이용해 디스크 미러링 하기
미러링을 하고자 하는 디스크 2개의 slice가 동일하여야 한다.
format 명령어를 이용해 완전히 동일하게 디스크 2개가 구성되어 있는지 확인하고 작업을 시작한다.
1. 대상 디스크에 파일시스템 구성
# format : 슬라이스 정보 확인 / format 되어 있음 확인. Slice6 사용
# newfs /dev/rdsk/c0t2d0s6
# newfs /dev/rdsk/c0t3d0s6
# fsck -y /dev/rdsk/c0t2d0s6
# fsck -y /dev/rdsk/c0t3d0s6
# mkdir /home
# mount /dev/dsk/c0t2d0s6 /home
# vi /etc/vfstab
/dev/dsk/c0t2d0s6 /dev/rdsk/c0t2d0s6 /home ufs 1 yes -
2. Data 용 Disk Mirroring : 작업준비를 위해 설정 파일을 백업
# cp /etc/vfstab /etc/vfstab.100123
# cp /etc/system /etc/system.100123
# eeprom > eeprom.20100123
# df -k
3. Data 용 Disk Mirroring : 현재 metastat 확인, 디스크 네임 확인
# metainit -f d41 1 1 c0t2d0s6
d41: Concat/스트립이 설정됨
* 만약 d41과 c0t2d0s6이 잘못 연결한 경우, "metaclear d41" 명령을 이용해 삭제한다.
# metainit -f d42 1 1 c0t3d0s6
d42: Concat/스트립이 설정됨
# metainit d40 -m d41
d40: 이중화가 설정됨
# vi /etc/vfstab -> /dev/md/dsk/d40 /dev/md/rdsk/d40 /home ufs 1 no -
# vi /etc/system -> set md:mirrored_root_flag=1
# sync
# reboot
# metattach d40 d42
d40: 하위 미러 d42 is attached
# metastat | grep Resync
# metastat | grep Resync
Resync 처리 중: 0 % 완료
4. 기타 주요 유용한 명령어
# metaclear d41
# metaclear -p c2t3d5s2
# metadetach d9
# metareplace -e d11 c1t4d0s2
# metattach d45 /dev/dsk/c3t0d0s2
5. 중요 잠조 사이트
http://www.wowunix.com/cgi-bin/CrazyWWWBoard.cgi?mode=read&num=1121&page=1&db=solaris&fval=attached&backdepth=2
출처 : http://seongsoo.com/70048476763
radi 0, 1, 5, 0+1
metadb : Solaris Volume Manager에서 볼륨에 대한 정보가 저장되는 영역.
기본적으로 4메가.. 어떤 디스크 몇 개가 레이드를 어떤 구조가 이루고 있는지.
ex) # metadb -a -f c1t2d0s0
// t2 디스크에 s0 영역에 metadb 영역을 만들겠다.
// s0는 20메가로 적게 파티션을 나누었다고 가정.
// 왜냐하면 s0에는 파티션 영역과 부팅정보와 함께 metadb를 취급하는 슬라이스로, 중요한 정보가 덮어씌워지면 안되기때문에 데이터를 저장하지않는 slice0을 따로 20메가 정도로 적게 만들어 관리하는 것.
metadb 명령어로 각 디스크에 먼저 metadb 영역을 만들어놓은 후 (만든 직후 아무 정보가 안들어있다) metainit 명령어로 RAID구성을 하면 그 정보가 metadb파일에 저장이 된다.
bash-3.00# metadb
metadb: apache: 기존 데이터베이스 없음
bash-3.00# metadb -a -f c1t2d0s0
bash-3.00# metadb -a c1t3d0s0
bash-3.00# metadb -a c1t4d0s0
bash-3.00# metadb -a c1t5d0s0
metainit : 볼륨을 구성
ex) raid0 striped volume 구조 만들기
# metainit d10 1 2 c1t2d0s1 c1t3d0s1 // d10 : 볼륨의 이름, 1 : stripe개수, 2 : stripe를 이루는 disk개수
raid0 concatenated volume 구조 만들기
ㅁ ㅁ
c1t2d0s1 c1t3d0s1
# metainit d20 2 1 c1t4d0s1 1 c1t5d0s1 // d20 : 볼륨의 이름, 2 : stripe개수(병렬구조), 1: stripe를 이루는 disk개수 (그 뒤에는 그 숫자만큼 디스크가 나열되어야 함.)
ex) # metainit d30 2 1 c1t4d0s1 3 c1t5d0s1 c1t6d0s1 c1t7d0s1
ㅁ c1t4d0s1
ㅁ c1t5d0s1
metastat : 구성된 볼륨의 상태정보 보기.
bash-3.00# metastat
d20: Concat/Stripe
크기: 4091904 블록(2.0 GB)
스트립 0:
장치 시작 블록 Dbase Reloc
c1t4d0s1 0 아니 예
스트립 1:
장치 시작 블록 Dbase Reloc
c1t5d0s1 0 아니 예
d10: Concat/Stripe
크기: 4091904 블록(2.0 GB)
스트립 0: (인터레이스: 32 블록) // 인터레이스가 있으면 striped(병렬) 구조.
장치 시작 블록 Dbase Reloc
c1t2d0s1 0 아니 예
c1t3d0s1 0 아니 예
metaclear : 볼륨을 제거
bash-3.00# metainit -f d11 1 1 c1t0d0s3
d11: Concat/스트립이 설정됨
bash-3.00# metadb -a -f c1t0d0s3
metadb: apache: c1t0d0s3: : d11 사양에 두 번 이상 나타났음
bash-3.00# metaclear d11
d11: Concat/스트립이 지워짐
<mirror 구성 실습>
bash-3.00# metainit -f d11 1 1 c1t0d0s0
d11: Concat/스트립이 설정됨
bash-3.00# metainit -f d21 1 1 c1t0d0s1
d21: Concat/스트립이 설정됨
bash-3.00# metainit d12 1 1 c1t6d0s0
d12: Concat/스트립이 설정됨
bash-3.00# metainit d22 1 1 c1t6d0s1
d22: Concat/스트립이 설정됨
bash-3.00# metainit d11 -m d12
metainit: apache: d11: 장치가 이미 설치되어 있음
bash-3.00# metainit -f d11 -m d12
metainit: apache: d11: 장치가 이미 설치되어 있음
bash-3.00# metainit d100 -m d11
d100: 이중화가 설정됨
bash-3.00# metatach d100 d12
bash: metatach: command not found
bash-3.00# metattach d100 d12
metattach: apache: c1t0d0s0: : /에 마운트됨 // 재부팅 하고나서 attach를 해야 제대로 붙음.
왜냐하면 현재 d11의 루트 시스템이 되어있기때문에, metaroot d100 을 해주고 재부팅을 한 후, 다시 metattach d12로 붙이면 root 에 대한 동기화 완료.
bash-3.00# metainit d200 -m d21
d200: 이중화가 설정됨
bash-3.00# metattach d200 d22
d200: 하위 미러 d22 is attached
bash-3.00# metaroot d100 // root에 대한 미러링을 하기 위해 metaroot 명령어 후 재부팅 후 metattach d12 명령 재실행 필요.
metatach
metadetach
metaroot
metahs : hotspare pool 을 만들 수 있음 (장애시)
metaparam : hotspare 적용?
OS Mirror를 하기 위해..
x86의 경우 eeprom 명령어 사용 altbootpath(변수에 대한 정의)
SPARC의 경우.. nvalias setenv
* OS Mirroring 참조
# dd if=INPUT_DEVICE of=OUTPUT_DEVICE
# dd if=/dev/rdsk/c1t0d0s8 of=/dev/rdsk/c1t1d0s8 // slice8(0cylinder의 0sector(파티션정보))를 포함하는 슬라이스를 이미지 떠서 다른 디스크에 그 정보를 적용시키기 위함.
* Raid 구성 시 디스크 구성 정보 다른 디스크에 편하게 한번에 적용시키기
# fdisk -B /dev/rdsk/c1t2d0p0
# prtvtoc /dev/rdsk/c1t2d0s2 | fmthard -s - /dev/rdsk/c1t3d0s2
** c1t2d0p0 ???
p0 : x86 시스템에서의 전체공간을 의미 (교재 p.63 필기 참조)
** dd? 이미지를 뜨는 것?
예를들어 1개의 섹터에서 정보를 빼낼 때 사용.
어떤 파일에서 특정 영역을 이미지 뜨기 위해 사용.
http://docs.sun.com/app/docs/doc/820-7540/luplanning-6?a=view