20th Anniversary
  회원가입   회원찾기
  ID PW
 
  공통
  Solaris x86
  Solaris
  이전 나만의 팁
 

   제 목 : Disk Suite 강의 자료
   작성자 : 장중혁 날짜 : 2004-03-17
   분류 : Solaris 조회수 : 13099

강의 자료라, 설명없이는 이해가 조금 힘들지만.....

그래도 도움이 되시길 바랍니다.

By www.itsem.net

------------------------------------------------------------------------
Solstice Disksuite 설정하기

-------------------------------------------------------------------------
1) MetaDB

- DiskSuite의 전체의 config정보와 metadevice의 상태 정보를 가지고 있는 DB
- slice 당 20M 정도면 충분하고, 최소2개의 DB 복사본(Replicas) 요구 된다.
권장 사항 : Disk 1 - 3 Replcas
Disk 2~4 - 각 Disk 당 2 Replias (총 4 ~ 8 )
Disk 5이상 - 각 Disk당 1 Replicas
- MetaDB를 생성할 공간이 없으면, swap를 조금 줄이고, 공간을 확보한다.
- Os Mirror시에는 , 두 Disk에 각각 2개 이상의 MetaDB를 생성한다.


< metadb 확인시 Replica를 1개만 만들어서, metatool 에서 \"urgent\" 상태 확인 >
#metadb ; metatool
#metadb -a -f -c1 c0t0d0s7 [c0t1d0s7 ]
; -a 는 adding, 초기화 또는 추가로 더할때 사용
-f 는 Force, 초기 생성시나, 삭제시 사용
-c는 각각의 Slice에 database Replicas의 copy본을 생성한다.


<한번 생성된 slice에는 Replicas를 추가로 더할수가 없으므로, 지우고 새로 만들어 준다>
#metadb -d -f c0t0d0s7; metadb
;metatool 에서 \"critical \" 상태 확인 <- 치명적 에러
#metadb -a -f -c3 c0t0d0s7;metadb
; metatool 에서 \"Attention\" 상태 확인후 commit 버튼을 눌러서 Attention의
이유를 확인한다. Or \"Problem List\"에서 확인 가능

[ 추가 Control가 있을 경우, 실험한다.]
#metadb -a -c3 c1t0d0s7;
;여전히 \"Attention\"이다 T_T, DiskSuite 4.2의 권고 사항은 Controler 3개 이상이다.

-------------------------------------------------------------------------------

2) Cancate

- Random I/O 성능이 좋다 <- Seek Time이 줄어 들어서 ..
- /var, /usr , / 등 모든 mount point에 사용가능하다. --> 미리 Mirror되어 있을 것을 권장
한 번 늘인 놈을 다시 줄일 수는 없다.
- ufs expand시 Encapsulate 지원 --> Mirror,Cancate만이 기존의 data 유지

[ c0t0d0s3 = 100m, c0t1d0s3=100m 라고 가정하고 실험한다. ]

< 한 slice를 사용하다가, 공간이 부족해서 cancate 로 늘일 때 >
# newfs /dev/dsk/c0t0d0s3
# mount /dev/dsk/c0t0d0s3 /test
# cd /test; mkfile 90m file1;touch test
# mkfile 50m file2 <-- Disk 공간 부족으로 Fail

# umount /test
# metainit d100 2 1 c0t0d0s3 1 c0t1d0s3
# metastat Or metastat -p (간단히 표시); 상태 확인
# mount /dev/md/dsk/d100 /test
# df -k ; 아직 200m 가 되지 않았음을 확인한다.
# growfs -M /test /dev/md/rdsk/d100 ; c0t1d0s4가 자동으로 format된다.
cf> growfs /dev/md/rdsk/d100 ; mount 되어 있지 않을때
# df -k ; 200m 됨을 확인
# cd /test;mkfile 50m file2; touch test2 <--만들어 짐을 확인

- cancate 뽀개기
# umount /test
# metaclear d100; metastat
# mount /dev/dsk/c0t0d0s3 /test
# cd /test;ls;more test2 <-- 모든 파일이 존재 하지만, I/O Error 발생
<-- 이 사실로 Cancate의 작동 원리를 생각해 보라 ...


<미리 생성되어 있는 cancate에 또 다른 Slice붙여서 용량 늘이기>
# metattach d100 c3t4d0s0
# growfs -M /test /dev/md/rdsk/d100


< System slice (var) Cancate 하기 >

c0t0d0s3 = /var :1g , c0t1d0s3=2g 로 가정

# metainit -f d20 2 1 c0t0d0s3 1 c0t1d0s3 ; system slice는 -f option 필요
# /etc/vfstab에서 \"/dev/md/dsk/d20 /dev/md/rdsk/d20 /var .... \" 확인
바뀌지 않았으면 수정해 둔다.
# reboot ;system mount point 이므로...
# df -k ; 용량이 아직 변하지 않았다.
# growfs -M /var /dev/md/rdsk/d20
# df -k ; 용량 증가 확인

--------------------------------------------------------------------------

3) Stripe

- Sequential I/O 성능이 좋다, 대용량 Av 파일 편집등에 탁월
- Encapsulate 지원되지 않는다. Stripe구성시 기존 정보 파괴
- interlace 설정값(default 16k) 에 따라, 성능이 좌우 된다.

[ c0t0d0s3=1g,c0t0d0s4=1g, c0t1d0s3=1g,c0t1d0s4=1g ]
;interlace가 틀린 두개의 stripe 를 만들어서, /tmp에 복사 시간을 비교해 본다.

# metainit d50 1 2 c0t0d0s3 c0t1d0s3 ;newfs /dev/md/rdsk/d50
# metanit d60 1 2 c0t0d0s4 c0t1d0s4 i=1024k ;newfs ~

#mkdir d50; mount /dev/md/dsk/d50 /d50
#mkdir d60; mount /dev/md/dsk/c60 /d60

#cd d50;mkfile 500m ;cp 500m /tmp <- cp 시간 잰다.
# rm /tmp/500m
# cp d60l;mkfile 500m; cp 500m /tmp <-- cp 시간 비교..


---------------------------------------------------------------------------

4) Mirror

- Encapsulate 지원된다.
- Read Option : Round Robin(교대로 읽기), Geometric( sequential 에 빠름 ) ,
First ( target hdd의 성능이 느릴때 )
- Write option : Parallel , Serial ( Write 시간 길어짐 )
- Pass Number : Reboot 시 Sync단계 0 - none
Mirror하는 Slice가 여러개 있을땐, 이 값을 틀리게 줘야 병목이 줄어든다.
swap은 항상 \'0\' 로 준다.

* Root DIsk Mirror 하기

[c0t0d0s0 = root, c0t0d0s1 = swap , c0t1d0 은 target 이라 가정 ]
- System Mount point : /, /swap, /var, /usr ...은 meta device에 일단 넣어둔후
Reboot 한뒤, md로 OS를 시작시킨후, target Disk를 붙여서 미러링 해야 한다.

-백업 & target Disk slice 생성
# cp /etc/vfstab /etc/vfstab_before_md
# cp /etc/system /etc/system_before_root_mirror
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -n os_mirror -s - /dev/rdsk/c0t1d0s2

- 진행하면서, Metatool & 로 변하는 모양을 잘 본다.
<root>
# metainit -f d10 1 1 c0t0d0s0 ; sub Disk d10
# metainit d20 1 1 c0t1d0s0 ; sub Disk d20
# metainit d50 -m d10 ; meta device d50 속에 sub disk d10 넣기
#metaroot d50 ; vfstab의 / 부분을 자동으로 변경하고, system file로 변경
<swap>
# metainit -f d11 1 1 c0t0d0s1 ; swap
# metainit d21 1 1 c0t1d0s1
# metainit d51 -m d11

..... /var 나 다른 놈이 있으며 계속 작업

#vi /etc/vfstab 수정; / 이외의 부분은 자동으로 안 바뀐다.

# Reboot

- 이제 target disk를 source에 붙여서 동기화 시킨다.
이때, disk I/O 작업이 없어야 한다.

# lockfs -fa ; ufs lock 걸기 , i/o 발생이 없으면 안 해도 무방
# metattach d50 d20
# metattach d51 d21 ...

#metastat 나 metatool 에서 Sync 되는 것을 확인한다.

- OBP에 mirror Disk 정보 입력

# cd /usr/platform/sun4u/sbin
# format 명령으로 Mirror Disk의 물리적 주소를 적어 둔다.
# eeprom use-nvramrc\\?=true
# eeprom nvramrc=\'devalias os_mirr /pci@1f,4000/scsi@3/disk@3,0\'
; > ok mode에서 reset해야 설정됨

또는 okmode에서 devlias 로 작업...


- Boot Test

; 소스, 미러 디스크를 둘 다 장착되어 있는 상태에서
ok> boot os_mirr 로 test

; 소스 디스크를 빼고, test 할 경우, 간혹 metadb가 소스디스크 쪽을
사용하고 있으면, 싱글모드로 빠져서 정상 부팅이 안 될때가 있다.
이때는, 싱글 상태에서 빠져버린 디스크쪽의 metadb를 지우면 된다.
# metadb -d -f c0t0d0s7


* Root disk unmirror 하기
; 미러링을 제거 할때는, 미러링 할때의 반대 순서로 하면 된다.

#metadetach d50 d20
#metadetach d51 d21
#metaroot /dev/dsk/c0t0d0s0
; /etc/vfstab에서 / 이외의 부분은 자동으로 바뀌지 않으므로,
/dev/md을 원 OS 영역으로 바꿔준다.
# Reboot

# df -k 로 / 에서 md가 사라진 것을 확인
# metaclear -r d50; metaclear d10
# metaclear -r d51; metaclear d11
# metaclear d20; metaclear d21...

; 더 이상 md 기능을 사용치 않으려면,metadb를 다 지우고
pkg를 찾어서 제거한다.


cf> Swap 은 Sync 할 필요성이 없어서 mirror 목록에서 빼 버려도 될 것 같은데...,
Swap가 없어도 Boot 하는덴, 지장이 없을텐데....왜 사용할까?


------------------------------------------------------------------------

5) Raid 5

- Read 성능은 좋으나, Write성능은 나쁘다.
- Raid3 은 sequential I/O에 좋으나, random i/o는 나쁘다.

# metainit d5 -r c3t4d0s3 c3t5d0s3 c3t6d0s3 [ -i 16k ]
# newfs /dev/md/rdsk/d5
# mount .... /raid5 ; mkfiles 500m 500m;touch raid5


* hot spare pool

# metahs -a hsp01 c0t7d0s3
# metaparam -h hsp01 d5

cf >복수개의 Raid Metadevice를 하나의 spare에 둘수 있다.
- hot spare설정후, 강제로 disk(c3t4d0s3) 를 하나 빼고, 미리 만들어 두었던
raid5 파일을 수정하여, hot spare에 Volume이 자동으로 Re-sync
됨을 확인한다.
<-- 자동 sync 가 안 될땐, raid5 mount 자리에, 작은 파일을 하나 맨들어서
I/O를 발생시킨다.
<-- gui에서 volume의 Attention 표시와 빠진 디스크 자리에 spare가 들어감을
확인


* hot spare로 넘어 가 있을 때 file Disk 교환
# metareplace -e d5 c3t4d0s3
- 다시 Resync 되고, Attention이 사라진다.

* hot spare가 없을때, Disk 수동 교환하기
# metareplace d5 c3t4d0s3 c3t7d0s4

-----------------------------------------------------------------------
6) UFS logging

- 대용량 FS가 깨졌을때, 복구 시간을 단축시키기 위하여 저널링 log 사용하기
- log : Fs= 1M:100M
- / , /var/ ,/usr/ opt 등 System Mount point은 사용 불가
- Raid5에서 사용하는 것은 성능 때문에 권장 하지 않는다.

* 기존의 fs에 ufs logging 기능을 더할때
/data = c0t3d0s6,

# umount /data
# metainit d60 -t c0t3d0s6 c0t4d0s3
# vfstab 수정, mount

* 첨부터 ufs logging meta device 만들기
# metainit d61 -t c0t3d0s5 c0t4d0s3
# newfs /dev/md/rdsk/d61
# mount



7) 기 타

- 사용하지 않은 기능이 있을때, boot시 경고 메세지가 출력되므로
/etc/system 파일에서 주석 처리한다.

- 제거하기

1. 무식하게 제거하기
- md 실행전에 백업해 두었던 system 파일을 restore시키고,
vfstab을 restore 시킨후, reboot 한다.


2. 깔끔하게 제거하기
- 모든 meta device를 제거한다.
단, system mount point (특히 OS 미러시 ), 바로 제거할수 없으므로
생성한 반대 순서로 차례 차례 제거해 나가야 한다.
vfstab에서 모든 md를 원래 slice로 변경하고,
특히 / 부분은 \"metaroot /dev/rdsk/오리지날 슬라이스\" 를 꼭 해준뒤
Reboot 하여, 모든 meta device를 제거한다.

- 모든 slice가 md에서 빠진후, metadb를 제거하고, pkg를 제거한다.


[목록보기]  [출력]  
  사이트 소개  |  연락처  |  사이트 맵  |  이메일주소 무단 수집 거부 Copyright (c) 2021 Solaris School. All rights reserved.