disksuit 주무르기?

disksuit 주무르기?

DiskSuit으로 디스크 묶기…
참고문서: http://www.adminschoice.com/docs/solstice_disksuite.htm

작업환경: Sun EP250, 18GB(OSdisk), 9GB(3개), Solaris9, DiskSuit 4.2.1(solaris8 패키지)


===================================================
# format
Searching for disks…done
AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@1f,4000/scsi@3/sd@0,0
1. c0t8d0
/pci@1f,4000/scsi@3/sd@8,0
2. c0t9d0
/pci@1f,4000/scsi@3/sd@9,0
3. c0t10d0
/pci@1f,4000/scsi@3/sd@a,0
===========================================================

1. 9GB디스크의 파티션을 다음과 같이 동일하게 만든다.
(각디스크의 슬라이스 0을 status database가 이용할 것이며, 슬라이스6번을 메타디바이스가 사용할 것이다.)
Current partition table (original):
Total disk cylinders available: 4924 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 – 5 10.52MB (6/0/0) 21546
1 unassigned wu 0 0 (0/0/0) 0
2 backup wm 0 – 4923 8.43GB (4924/0/0) 17682084
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 unassigned wm 6 – 4923 8.42GB (4918/0/0) 17660538
7 unassigned wm 0 0 (0/0/0) 0
2. State database를 만든다.
#metadb -a -f -c 3 /dev/dsk/c0t8d0s0 /dev/dsk/c0t9d0s0 /dev/dsk/c0t10d0s0

3. meta database를 생성한다.두가지 방법이 있는데, 명령어를 직접 입력하는 방법과, /etc/opt/SUNWmd/를 편집하는 방법이다. 명령어를 입력하여 생성하겠다.

# metainit d0 3 1 /dev/dsk/c0t8d0s6 1 /dev/dsk/c0t9d0s6 1 /dev/dsk/c0t10d0s6

d0 – metadevice name
3 – Total Number of Slices
1 – Number of Slices to be added followed by slice name.

d0: Concat/Stripe is setup

4. 만든 메타디바이스(/dev/md/rdsk/d0)에 화일시스템을 작성한다.
# newfs /dev/md/rdsk/d0
newfs: construct a new file system /dev/md/rdsk/d0: (y/n)? y

5. 마운트한다.
# mount -F ufs /dev/md/dsk/d0 /mnt

6. df -h명령어로 확인해본다.

# df -h
Filesystem size used avail capacity Mounted on
/dev/dsk/c0t0d0s0 1.8G 1.2G 603M 67% /
/proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
fd 0K 0K 0K 0% /dev/fd
swap 594M 40K 594M 1% /var/run
swap 594M 312K 594M 1% /tmp
/dev/dsk/c0t0d0s7 6.0G 14K 5.9G 1% /export/home
/dev/md/dsk/d0 25G 9K 25G 1% /mnt

여기까지가 concatnated metadb의 구성이었다.(디스크 크기가 달라도 연결할 수 있다)

7. 다음은 9GB 디스크를 하나 더 추가하고, 두개낏 stripe로 묶은다음 미러링을 해 보았다.
하나 더 추가한 디스크도 역시 같은 크기로 파티셔닝을 했다.

먼저, status database에서 디스크를 삭제한다.(비슷한 명령을 세번 내렸다. 한번에 할 줄 몰라서…)
# metadb -d -f /dev/dsk/c0t8d0s0

다시 생성한다.
# metadb -a -f -c 4 /dev/dsk/c0t8d0s0 /dev/dsk/c0t9d0s0 /dev/dsk/c0t10d0s0 /dev/dsk/c0t12d0s0

# metainit d0 1 2 c0t8d0s6 c0t9d0s6 -i 32k
metainit: solaris: d0: unit already set up
이전에 생성한 metadevice가 지워지지 않았다!!!

# metaclear -a
d0: Concat/Stripe is cleared
메타디바이스가 삭제되었다!!!

# metainit d10 1 2 c0t8d0s6 c0t9d0s6 -i 32k
d10: Concat/Stripe is setup
# metainit d11 1 2 c0t10d0s6 c0t12d0s6 -i 32k
d11: Concat/Stripe is setup

d10과 d11 두개의 메타디바이스를 생성했다.

8. 미러 디바이스(d20)의 생성하고 second submirror(d10)을 부착(?)한다.
# metainit d20 -m d11
d20: Mirror is setup

# metattach d20 d10
d20: submirror d10 is attached

9. 화일시스템을 생성하고 마운트한다.
# newfs /dev/md/rdsk/d20
# mount -F ufs /dev/md/dsk/d20 /mnt

# df -h
Filesystem size used avail capacity Mounted on
/dev/dsk/c0t0d0s0 1.8G 1.2G 603M 67% /
/proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
fd 0K 0K 0K 0% /dev/fd
swap 672M 40K 672M 1% /var/run
swap 672M 0K 672M 0% /tmp
/dev/dsk/c0t0d0s7 6.0G 14K 5.9G 1% /export/home
/dev/md/dsk/d20 17G 9K 16G 1% /mnt

여기서 의문이 생긴다. d20에 데이타를 기록하면, d10에 데이타가 미러(백업)되나?
확인할 방법을 모르겠다. 개념상으로는 미러가 자동으로 되겠지?
# metastat
d20: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d10
State: Resyncing
Resync in progress: 8 % done
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 35317485 blocks

d11: Submirror of d20
State: Okay
Size: 35317485 blocks
Stripe 0: (interlace: 64 blocks)
Device Start Block Dbase State Hot Spare
c0t10d0s6 0 No Okay
c0t12d0s6 0 No Okay
d10: Submirror of d20
State: Resyncing
Size: 35317485 blocks
Stripe 0: (interlace: 64 blocks)
Device Start Block Dbase State Hot Spare
c0t8d0s6 0 No Okay
c0t9d0s6 0 No Okay
10. Raid 5 구성
Raid5 메타디바이스는 최소 3개이상의 슬라이스를 사용한다.
같은 크기의 디스크 슬라이스를 사용해야 한다.
존재하는 화일시스템을 이용면 기존 데이타는 삭제된다.
Raid5 메타디바이스는 concate, stripe, mirror할 수 없다.
기타 여러 주의 사항이 존재한다.
참고: http://docs.sun.com/app/docs/doc/805-5961/6j5kfkm2q?a=view

위에서 작성한 메타디바이스를 삭제한다(다시작성하기 위해서).
# metaclear -a
d20: Mirror is cleared
d11: Concat/Stripe is cleared
d10: Concat/Stripe is cleared

# metainit d10 -r c0t8d0s6 c0t9d0s6 c0t10d0s6 c0t12d0s6
d10: RAID is setup

이시점에서 화일시스템을 생성하려고 했더니 에러가 난다. 이유는(?)

# newfs /dev/md/rdsk/d10
/dev/md/rdsk/d10: Resource temporarily unavailable

재부팅후 상태 확인했더니…

# metastat
d10: RAID
State: Initializing
Initialization in progress: 5% done
Interlace: 32 blocks
Size: 52978023 blocks
Original device:
Size: 52980576 blocks
Device Start Block Dbase State Hot Spare
c0t8d0s6 330 No Initializing
c0t9d0s6 330 No Initializing
c0t10d0s6 330 No Initializing
c0t12d0s6 330 No Initializing

초기화 시간이 상당히 오래 걸린다!!!!!!!!

# metastat
d10: RAID
State: Okay
Interlace: 32 blocks
Size: 52978023 blocks
Original device:
Size: 52980576 blocks
Device Start Block Dbase State Hot Spare
c0t8d0s6 330 No Okay
c0t9d0s6 330 No Okay
c0t10d0s6 330 No Okay
c0t12d0s6 330 No Okay

# newfs /dev/md/rdsk/d10
newfs: construct a new file system /dev/md/rdsk/d10: (y/n)?

화일시스템을 생성하고 마운트하여 사용한다.
# df -h
Filesystem size used avail capacity Mounted on
/dev/dsk/c0t0d0s0 1.8G 1.2G 603M 67% /
/proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
fd 0K 0K 0K 0% /dev/fd
swap 673M 40K 673M 1% /var/run
swap 673M 0K 673M 0% /tmp
/dev/dsk/c0t0d0s7 6.0G 14K 5.9G 1% /export/home
/dev/md/dsk/d10 25G 9K 25G 1% /mnt

9GB디스크를 4개 붙였는데, 용량이 25GB인 이유는?
Raid level 5의 특성(사용가능한 디스크 크기 = 모든 디스크 슬라이스 크기의 합 – 한개 디스크슬라이스 크기)을 이해하면 된다.

11. Trans meta device의 생성
Trans meta device는 ufs logging을 가능하게 한다. 하나의 logging 디바이스와 마스터 디바이스..
화일시스템의 변화는 logging 디바이스에 기록되고 마스터디바이스에 등록(?)된다.
큰 화일시스템에서 logging 디바이스만을 검사해서 fsck의 수행을 빠르게 한다.
root 파티션은 지원되지 않는다.

Trans meta device는 두가지 경우로 나누어진다.
화일시스템을 언마운트할 수 있는경우와 언마운트할 수 없는경우

먼저, 언마운트할 수 있는경우다.
그래서, /export/home/을 언마운트하겠다.

# metainit d10 -t c0t8d0s6 c0t0d0s7
d10: Trans is setup
# metastat
d10: Trans
State: Okay
Size: 17660538 blocks
Master Device: c0t8d0s6
Logging Device: c0t0d0s7

Master Device Start Block Dbase
c0t8d0s6 0 No

c0t0d0s7: Logging device for d10
State: Okay
Size: 2097152 blocks

Logging Device Start Block Dbase
c0t0d0s7 2050 No

뭔가 되긴 된것 같은데, 어떤 의미인지 자세하게 모르겠다..
한계가 마구 마구 느껴진다!!!
누구 아는사람은 코멘트좀 달아주시길!!!!!!!

미러를 사용하기위한 Trans metadevice도 구성할 수 있다고하는데.
이것역시 개념이 혼동스럽다…..

요부분은 그냥 넘어간다..

12. HotSpare pool
이부분도 역시 어렵다! 그러나 개념을 좀 적어본다면…

HotSpare pool은 submirror나 raid5 메타디바이스가 실패할 경우에 자동으로 대체되도록 디스크슈트가 예약해놓은 슬라이스의 모임(?) 이다. 핫스페어는 미러와 raid5 메타디바이스의 증가된 데이타 availability를 제공한다고 한다.(뭔소리지?)

핫스페어는 메타디바이스일수 없고 반드시 슬라이스여야만 한다.
(그런데, 핫스페어풀에는 메타디바이스가 사용되는것같다. 정말 혼동된다.)

기타 여러특성이 있는데, 개념잡기가 어렵다.. Mmmmmmm….

아무튼, 핫스페어풀을 만들려면 다음과 같은 명령어를 사용한다.

# metainit hsp001 c2t2d0s2 c3t2d0s2
하지만, 슬라이스를 따로 잡아놓지 않았기대문에 말을 들을리가 없을것이다!
그럼, 먼저 디스크들의 슬라이스를 하나씩 더 만들기로 할까? – 아니다.
c0t12d0s6을 핫스페어로 잡기로 했다.

# metainit hsp001 c0t12d0s6
hsp001: Hotspare pool is setup

# metastat
hsp001: 1 hot spare
c0t12d0s6 Available 17660538 blocks

다음에는?
모든 메타디바이스를 이전에 지웠으므로 나머지 9GB 디스크 세개를 Raid5로 묶기로 한다.
# metainit d10 -r c0t8d0s6 c0t9d0s6 c0t10d0s6
d10: RAID is setup

# metastat
d10: RAID
State: Initializing
Initialization in progress: 2% done
Interlace: 32 blocks
Size: 35317485 blocks
Original device:
Size: 35320384 blocks
Device Start Block Dbase State Hot Spare
c0t8d0s6 330 No Initializing
c0t9d0s6 330 No Initializing
c0t10d0s6 330 No Initializing

hsp001: 1 hot spare
c0t12d0s6 Available 17660538 blocks

역시 꽤 오랜시간이 걸린다.

마지막으로 Raid5 메타디바이스를 핫스페어풀에 연결시키면 끝난다.
(정말로? – 핫스페어의 역할에 대해 쉽고 자세하게 설명해주실분은 댓글을 달아주시기 바란다.)

# metaparam -h hsp001 d10

# metastat
d10: RAID
State: Initializing
Initialization in progress: 10% done
Hot spare pool: hsp001
Interlace: 32 blocks
Size: 35317485 blocks
Original device:
Size: 35320384 blocks
Device Start Block Dbase State Hot Spare
c0t8d0s6 330 No Initializing
c0t9d0s6 330 No Initializing
c0t10d0s6 330 No Initializing

hsp001: 1 hot spare
c0t12d0s6 Available 17660538 blocks

13. DiskSet
diskset은 한 호스트의 장애 발생에 대비해 하나 또는 두개의 호스트가 디스크슈트 오브젝트를 공유하도록 하는 것이다.
디스크셋을 사용하려면 각 호스트에 disksuit이 설치되어 있어야 한다.

이것도 여기까지.. 한대 더 작업하려면 꽤 많은 시간이 걸릴듯 하므로…..
그냥 문서나 한번 읽어본다.

댓글 남기기

Your email address will not be published.

%d 블로거가 이것을 좋아합니다: