Raid 개념정리!!!

e.t.c 2011. 5. 3. 15:20

[ Raid 0 ]
concatenation volume

abc

 

 

 

a

 

+

 

=

b

 

 

 

 

c

- 최소 disk : 1개
- redundancy : 없음
- performance : read :+
                       write : +
- 사용률 : 100%
남은 disk 용량을 모아서 1개의 큰 disk를 만듬.
I/O : random I/O(2~8kbyte) : 약간의 read 성능 향상.
       sequantial I/O(8kbyte 이상) : 거의 효과 없음. 

stripe volume

a

 

b

 

a

c

+

 

=

b

 

 

 

 

c

stripe unit size

64kb=

128block

 

 

stripe width

128kb

 

 

 

- 최소 disk : 1개
- redanduncy : 없음
- performance : read : +++
                      write : +++
- 사용률 : 100%
stripe unit size * disk개수 = 128kb (application I/O performance 프로그램으로 측정)
random I/O일 경우 : disk 개수를 늘려줌.(사용한 물리disk보다 크면 안 됨)
sequance I/O일 경우 : stripe unit size를 늘려줌.
각 disk의 controller가 다를 경우 성능이 더 향상.


[ Raid 1 ]
Mirroring volume

a

 

a

 

1 1

 

a

b

+

b

+

1 1

=

b

c

 

X

 

1 0

 

c

                                 log disk
- 최소 disk : 2개
- redundancy : 있음
- performance : read : ++
                      write : --
- 사용률 : 50%
disk낭비가 심함.
log disk : disk에 정보를 넣었는지 안 넣었는지에 대한 정보 기록.
command line에서 default로 nolog이므로 옵션을 추가해서 설정해야 함.
ex) layout=mirror,log
vmsa GUI에서는 default로 log 만들어 줌.
read policy : round robin : 각 disk를 번갈아가며 읽음.
                  select(default) : 부하가 적은 disk를 먼저 읽음.
                  prefer : read 성능이 좋은 disk를 사용자가 선택. 


[ Raid 5 ]
Striping with Distributed Parity volume

a

 

b

 

p1

 

 

 

a b

d

+

p2

+

c

+

 

=

c d

p3

 

e

 

f

 

log disk

 

e  f

                                           
- 최소 disk : 3개 (log plex 추가되면 최소disk 4개 필요, default=log)
- redundancy : 있음
- performance : read : ++
                       write : -
- 사용률 : n-1/n
log disk : mirror와 달리 log disk에 실제정보를 기록 후 volume으로 옮겨 기록.
1개의 disk fail시 degrade 모드로 실행. 성능 저하.
write가 20% 이상일 경우 성능 저하. write시 XOR연산이 발생한다.
vxrelocd 데몬이 작동해서 복구함.
- vxrelocd : spare가 없어도 여분의 공간이 많은 disk로 fail이 발생한 disk의 data를 옮겨준다.(VxVM3.2 이상 버전)
- vxsparecheck : VxVM3.2 이전 버전.
                         spare가 있어야만 relocation 해 준다.
                          /etc/rc2.d/S95vxvm-recover 에 정의되어 있다.

vxsparecheck

vxrelocd (default)

Hot spare 꼭 필요

Hot spar가 있으면 먼저 사용하고 다른 disk의 남은 용량을 사용한다. Hot spare가 없어도 가능.

전체 disk 내용 이동

fail이 발생한 subdisk만 이동

/etc/rc2.d/S95vxvm-recover에서 주석처리를 없애거나 표시하는 것으로 실행 및 중단이 가능하다. default로 vxrelocd가 실행.

 [ Raid 0+1 ]
Mirror-Stripe volume

striping

 

 

 

 

 

 

 

 

 

 

 

disk1

 

disk2

 

 

 

 

 

 

 

 

 

 

 

mirroring

 

 

 

 

 

 

 

 

 

 

 

 

 

 

stripng

 

 

 

 

 

 

 

 

 

 

 

disk3

 

disk4

 

 

 

 

 

 

 

 

 

 

 

log disk

 

 

 

- 최소 disk : 4개
- redundancy : 있음
- performance : read : ++
                       write : ++
- 사용률 : 50%
lay-out이 단순하다.
복구타임이 느리다. disk1이 fail시 disk2의 데이터도 모두 fail 된다. 즉 1개 disk fail시 2개의 disk를 복구해야 한다.
Raid1+0보다 약간의 성능이 좋기는 하지만 별로 효과는 없다. 


 [ Raid 0+1 ]
Stripe-Mirror volume

mirroring

 

 

 

 

 

 

 

 

 

 

 

disk1

 

disk2

 

 

 

 

 

 

 

 

 

 

 

striping

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mirroring

 

 

 

 

 

 

 

 

 

 

 

disk3

 

disk4

 

 

 

 

 

 

 

 

 

 

 

log disk

 

 

 

- 최소 disk : 4개
- redundancy : 있음
- performance : read : ++
                      write : ++
- 사용률 : 50%
lay-out이 복잡하다.
복구타임이 Raid0+1보다 빠르다. disk1이 fail시 data2의 데이터를 가지고 복구를 한다.
Raid0+1은 1개의 disk fail시 2개 disk를 복구해야 하지만 Raid1+0은 대상 disk 1개만 복구하면 된다.

해당내용은 "Itbank Solaris 강의자료에서 발췌한 내용입니다." 상업적 이용은 불가능하며 불법적인
스크랩은 허용하지 않습니다. 양해바랍니다.(__)꾸벅

AND

[ Disk 의 슬라이스 하나를 이용하여 rootdg를 생성 ]
volume을 만들기 전 disk에 10M정도의 용량을 준비한다.
volume manager 설치 전 OS와 array에 맞는 패치를 먼저 해준다. (sunsolve.sun.com)

1. Volume Manager software를 설치한다.

2. Volume Manager License를 확인한다.

3. vxconfigd를 disable mode로 시작시킨다.
   # vxconfigd -d   or   # vxconfigd -m disable

4. vxconfigd mode를 확인한다.
   # vxdctl mode

5. /etc/vx/volboot 파일을 초기화한다.
   volboot 파일에는 Host-name과 rootdg에 속한 disk의 list가 들어있고
   아래 명령어는 
새로운 host-name과 비어있는 disk list를 구성한다.
   # vxdctl init

6. License를 입력한다. license 하나당 다음 명령을 하나씩 수행한다.
   # vxlicense -c baselicense (/etc/vx/elm 에 저장)
   # vxlicense -c raid5license
   # vxlicense -p (license를 display)

7. rootdg를 만든다.
   # vxdg init rootdg
   # vxdg list

8. /etc/vx/volboot 파일에 disk를 추가한다. 슬라이스가 하나만 있으므로 simple type으로 등록
   # vxdctl add disk c0t0d0s7 type=simple (vi로 편집하면 안됨)
   vxvm:vxdctl WARNING:Device c0t0d0s7:Not currently in the Configuration
   (error가 나와야 정상, rootdg는 뒤에서 10번에서 만들므로 error가 뜬다. 경고메세지는 무시)

9. 슬라이스 영역에 헤더를 인스톨한다.
   # vxdisk -f init c0t0d0s7 type=simple
   (init을 해주면 private(3번)영역 생성)

10. disk를 rootdg에 추가한다.
   # vxdg adddisk c0t0d0s7
   # vi /etc/vfstab
    (c0t0d0s7을 주석처리한다.)

11. 부팅시 Volume Manager starting을 막는 install-db 파일을 삭제
   # rm /etc/vx/reconfig.d/state.d/install-db

12. vxconfigd를 실행한다.
   # vxdctl enable (/etc/vx/volboot에 저장된 volume정보를 가져옴)

13. 재부팅을 진행하고
부팅시 VxVM starting on boot mode.. 가 떠야 정상
   ※ <rootdg 손상시> error 발생시 3번에서 daemon 죽이고 6,7번 skip하고 다시 진행


[ Veritas Volume Manager 설치 및 환경설정 ]

- Veritas Volume Manager 설치 -


1. Volume Manager를 설치

2. patch install

3. rootdg 생성
   vxinstall (disk를 통째로 rootdg로 사용, OS mirror 시만 사용)
   command line에서 수동생성 (slice 단위로 rootdg에 포함)

4. disk initialization
   1) initialization : data 모두 삭제. disk를 초기화
   2) encapsulation : data가 있을 경우 사용 (OS mirror시 사용, 빈슬라이스 2개 존재. 1실린더 1개 이상 필요)

5. 일반 disk group 생성
   동일한 disk group은 생성 불가

6. volume 생성

7. file system 생성

8. mount


- Veritas Volume Manager 환경설정 -
1. PATH/MANPATH/LD_LIBRARY_PATH 설정
# vi .profile
=================================================================================================================
 stty erase ^?
 PS1=`uname -n`' $PWD#'
 PATH=/usr/sbin:/usr/bin:usr/dt/bin:/usr/openwin/bin:/etc/vx/bin:/opt/VRTSvmsa/bin:/usr/lib/vxvm/bin:
          /opt/VRTSvxfs/sbin:
/usr/lib/fs/vxfs:/opt/SUNWcluster/bin          //편의성을 위해 줄바꿈 하였어요 이어서 쓰세요.
 MANPATH=/usr/share/man:/usr/local/man:/opt/VRTS/man
 ENV=~/.kshrc

 export MANPATH PATH EDITOR PS1 ENV
================================================================================================================= 


 [ Veritas Volume Manager 사용법 ]

- Volume 이란? -
  OS 영역

 

 

 

 

 

uninitialization 영역

 

 

 

 

물리disk

 

 

 

free disk pool 영역

 

 

 

 

 

 

 

 

VMdisk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

free

disk영역

 

 

 

 

 

 

 

 

 

3

 

3

 

 

 

 

물리disk

 

 

 

4

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[ Volume Disk 생성/삭제 ]
1)
# vxdisksetup -i Disk_Name(c?t?d?)
     -
physical disk를 volume manager가 인식 가능(free disk pool 영역)한 disk 로 생성

2) # vxdiskunsetup -C Disk_Name(c?t?d?)
     - volume manager에서 인식된 디스크를 물리적인 인식이 되도록 volume disk 정보를 삭제


[ Volume Group 생성/삭제 ]

1)
# vxdg init Disk_Group_Name Alias_Name=c?t?d? ... ...
    - "
Disk_Group_Name" 에 볼륨그룹의 이름을 넣고, "Alias_Name=c?t?d?" 에 볼륨disk도 Alias 화 시켜서 해당 그룹에
         넣어주며 볼륨 그룹을 생성한다. 복수도 가능.(ex : disk01=c?t?d?, disk02=c?t?d? ...)
         ※ 단, 그룹을 생성하는 경우는 적어도 1개 이상의 볼륨 disk를 넣어야 함

2) # vxdg destroy Disk_Group_Name
    - "
Disk_Group_Name" 에 볼륨그룹의 이름을 가진 그룹을 삭제
         ※ 단, 그룹을 삭제하는 경우는 그룹내 포함된 볼륨 disk가 1개가 있는 상태에서 하는 것을 권장함


[ Volume Group Disk 추가/제거 ]
1)
# vxdg -g Disk_Group_Name adddisk Alias_Name=c?t?d? ... ...
    - "Disk_Group_Name" 에 볼륨그룹내 "Alias_Name=c?t?d?" 라는 볼륨disk를 Alias화 시켜 디스크를 추가
        복수도 가능.(ex : disk01=c?t?d?, disk02=c?t?d? ...)
         ※ 단, "-g" 옵션으로 group을 지정하지 않으면 default로 rootdg에 생성되므로 주의

2) # vxdg -g Disk_Group_Name rmdisk Alias_Name ... ...
    - "Disk_Group_Name" 에 볼륨그룹내 "Alias_Name" 라는 볼륨disk를 제거
        복수도 가능.(ex : disk01, disk02 ...)
         ※ 단, 그룹내
마지막 disk는 빠지지 않으니 vxdg destroy 를 이용한다


[ Volume 생성/삭제 ]
1) # vxassist -g Disk_Group_Name make Volume_Name 100m layout=raid5 Alias_Name ... ...
    - "Disk_Group_Name" 에 볼륨그룹내 "Volume_Name" 라는 볼륨을 100m 라는 용랑으로 raid5 형식으로 생성
         ※ 단, 용량을 설정하지 않으면 블럭단위로 생성되며, 1block = 512byte / layout 생략시 default로 concat가 생성.
             또한, raid5 의 경우 layout 부분에 "nolog" 를 입력하지 않으면 기본적으로 로그 디스크를 생성하게 된다.

2) # vxedit -g Disk_Group_Name -rf rm Volume_Name
    - "Disk_Group_Name" 에 볼륨그룹내 "Volume_Name" 라는 볼륨을 삭제
         ※ 단, 
삭제시에는 volume 삭제 -> diskgroup 삭제 -> disk초기화 순 진행


[ Volume 구성정보 확인 ]
1) # vxdisk list
    - Volume Disk 와 Disk_Group_Name 구성 정보를 출력
2) # vxdisk -o alldgs list
    - deport 된 Volume Disk 와 Disk_Group_Name 까지 출력시켜 줌
3) # vxdg list
    - Disk_Group_Name 을 출력
4) # vxprint -ht
    - Disk_Group_Name 과 Volume_Name 까지 함께 출력


[ File System 생성 및 마운트 ]
1) # newfs /dev/vx/rdsk/Disk_Group_Name/Volume_Name
    - 구성된 볼륨을 포맷하여 마운트될 수 있도록 파일 시스템을 생성

2) # mount /dev/vx/dsk/Disk_Group_Name/Volume_Name /mount_point
    - 파일 시스템으로 생성된 볼륨을 MountPoint 에 마운트하여 사용




[ Veritas Volume Manager Tip & Tech ]

<Disk_Group 소유권 설정>

1) # vxdg deport Disk_Group_Name 
    - Disk_Group_Name 의 소유권 포기

2) # vxdg import Disk_Group_Name 
    - Disk_Group_Name 의 소유권 적용

3) # vxrecover -g Disk_Group_Name -s
    - 2번에서 적용된 Disk_Group_Name 에 대한 파일시스템 동작 가능하게 세팅


<Volume  동작 설정>
1) # vxvol stop Volume_Name
    - "Volume_Name" 을 가진 볼륨의 동작을 정지

2) # vxvol stopall
    - 모든 볼륨의 동작을 정지

3) # vxvol start Volume_Name
    - "Volume_Name" 을 가진 볼륨의 동작을 시작

4) # vxvol startall
    - 모든 볼륨의 동작을 시작
        ※ 단, 디스크의 volume enable 이 되어야 하며 raid1+0인 경우 sub volume 부터 init 해야함


<볼륨 구성 후 남은 디스크 용량 확인>
1) # vxassist -g Disk_Group_Name maxsize layout=raid5 Alias_Name ... ...
       ex. "Maximum volume size : 68614144(33503Mb)"

    - Disk_Group_Name 에 대한 Alias 로 정의된 파일시스템들을 raid5 형식으로 만들때 사용가능량 용량 출력
        단, vol 생성은 하지 않고 확인만 가능하며, 예제와 같은 형식으로 출력

2) # vxdg -g Disk_Group_Name free
    - Disk_Group_Name 의 그룹이 가지는 free space 확인(block단위로 출력)

3) # vxassist -g Disk_Group_Name maxgrow Volume_Name 
    - Disk_Group_Name 의 그룹이 가지는 Volume_Name 의 볼륨이 확장 가능한 최대 크기 출력


<Volume name 변경>
1) # vxedit rename old_Volume_Name new_Volume_Name
    - "old_Volume_Name" 의 명칭을 가지는 볼륨을 "new_Volume_Name" 명칭의 볼륨으로 변경
        ※ "old_Volume_Name" 의 경우 Disk명칭(c?t?d?), Volume_Name, SubDisk_Name 등이 올 수 있다.


<Volume 크기 변경>

1) # vxassist -g Disk_Group_Name resize 
    - "old_Volume_Name" 의 명칭을 가지는 볼륨을 "new_Volume_Name" 명칭의 볼륨으로 변경

2) # vxassist growto Volume_Name 100m 
    - "Volume_Name" 명칭의 볼륨 크기를 100m 만큼 추가

3) # vxassist growby Volume_Name 100m 
    - "Volume_Name" 명칭의 볼륨 크기를 100m 만큼 되도록 현재 용량에서 증가


<Volume 정보 변경>
1) # vxedit -g Disk_Group_Name set user=oracle group=dba mode=660 Volume_Name
    - "Disk_Group_Name" 그룹내 "Volume_Name" 의 볼륨에 대해 아래 사항으로 변경
         a. user : 소유주 변경 (oracle 소유주로 변경)
         b. group : 그룹 변경 (dba 그룹으로 변경)
         c. mode : 퍼미션 변경 (660 퍼미션으로 변경)
         ※ 단, 볼륨의 정보를 변경시 "chown, chgrp, chmod" 명령어를 이용하게 되면 리부팅 후 값이 초기화됨


<Volume Log 설정>
1) # vxassist -g Disk_Group_Name addlog Volume_Name Log_Disk_Name
    - "Disk_Group_Name" 그룹내 "Volume_Name" 의 볼륨에 대해 "Log_Disk_Name" 으로 로그 디스크를 추가

2) # vxassist -g Disk_Group_Name remove log Volume_Name
    - "Disk_Group_Name" 그룹내 "Volume_Name" 의 볼륨에 대해 로그 디스크를 삭제


<Hot spare disk 지정>
1) # vxedit set spare=on disk_name(c?t?d?)
    - "disk_name" 의 명칭을 가지는 디스크를 스페어 디스크로 등록

2) # vxedit set spare=off disk_name(c?t?d?)
    - "disk_name" 의 명칭을 가지는 디스크를 스페어 디스크로 등록을 해제

AND

mysql 을 사용하다보면 가끔 'root' 사용자 즉, 관리자의 비밀번호를 분실하는 경우가 있습니다.
그래선 안되겠지만... 혹 모를 경우를 대비하여 아래의 내용으로 진행해보시는 방법을 추천해드릴게요^^

우선 mysql 서비스가 설치된 디렉터리를 알고 계셔야합니다.
해당 서비스의 경로는 소스 설치시 경로를 수정하지 않은 경우 또는 rpm 으로 설치했을때 "/usr/local/mysql/" 로 설치되게 됩니다.

이제 본격적으로 'root' 사용자의 비밀번호를 변경해보겠습니당!!! Follow ME~!!!


[ Mysql Safe 모드로 접속하기 ] 

  - #/etc/rc.d/init.d/mysqld stop     // 데몬을 종료한다.

 

  =>mysql 5.0.85미만 버전인 경우

    명령어 경로 : "/usr/local/bin/safe_mysqld"

     - #/usr/local/bin/safe_mysqld --skip-grant &

 

  =>mysql 5.0.85이상 버전인 경우

    명령어 경로 : "/usr/bin/mysqld_safe"

     - #/usr/bin/mysqld_safe --skip-grant &

                        //신 or 구 버전에 따라 다르게 안전모드
                        형태로 mysqld 의 인증을 무시하고 접속한다.

 

* 위의 2단계 중 하나를 진행하여 safe 모드의 mysql 상태에서 진행할 것!! 


] mysql -u root mysql             // root 사용자의 비번 설정을 위해 mysql 접속

※ 백그라운드 모드로 동작하므로 프롬프트가 출력되지 않고 커서만 출력되어 있음.


mysql > use mysql;               //mysql 데이터베이스를 사용해야 'root' 사용자의 내용변경이 가능함


mysql > update user set password=password('변경할 비밀번호') where user='root';
                                            //mysql 데이터베이스내 'root' 사용자에 대한 비밀번호를 원하는 비밀번호로 암호화되는 방식으로 저장


mysql > flush privileges;         //mysql 을 사용하는 경우 내용을 수정하였을때 해당 수정사항을 데몬 재실행 없이 적용 시켜주는 명령어


mysql > quit

# /etc/rc.d/init.d/mysqld restart                    //mysql 에서 수정사항이 적용이 안되었을 경우도 있어 안전하게 데몬 재실행


이상으로 mysql 에서 "root" 사용자의 비밀번호를 초기화하는 방법을 안내해드렸어요^^
유용하게 쓰시면 좋겠구요.. 다음에는 좀 더 스펙타클!!!!한 내용을 안내해드릴게요~ 그럼 ㅃㄴㅃㄴ

AND