RAID 각 레벨(level)에 관한 설명
 
RAID 0
RAID-0는 전형적인 Parity가 없는 striped disk drive들의 non-redundant group으로 정의된다. RAID-0 array는 보통 I/O intensive application을 위한 large stripes로 구성되는데, 종종 data intensive application의 single-user를 위한 synchronized spindle drive들을 이용한 sector-stripe으로 구성할 수도있다.
RAID-0는 redundancy를 지원하지 않기 때문에 만일 Array내의 하나의 drive가 장애를 일으키면, Array 전체가 장애를 일으키게 된다. 그러나 RAID-0는 모든 Array type중 가장 빠르고 data저장 효율이 높다.
RAID 1
Disk Mirroring이라 불리는 RAID-1은 data를 중복 저장하도록 디스크드라이브들을 쌍로 구성한 것으로 서버쪽으로는 하나의 드라이브로 인식된다. RAID-1은 striping은 사용되지 않는 반면, 여러개의 RAID-1 array들이 서로 striped되어 mirrored drives pair들로 구성된 하나의 대용량 array로 구성 시킬 수 있으며, 이를 "Dual-level array" 또는 RAID-10이라 부른다.
Write는 Mirrored Pair인 두개의 Drive에 동시에 저장되어 각 Drive가 동일한 정보를 저장하게 된다. 그러나 각 Drive는 Simultaneous Read Operation을 수행할 수 있다. 따라서, 각 Drive의 Read Performance는 두배로 되고 Write Performance는 변화가 없게 된다. RAID-1은 Redundant를 가진 Array중에서는 최고의 Performance를 보이며, 특히 Multi-user Environment에서 유용하다.
RAID 3
RAID-3는 RAID-2처럼 Sector-striped data를 Drive Group에 걸쳐 저장하지만, Group내의 하나의 Drive는 Parity Information만을 저장하도록 지정된다. RAID-3는 Error Detection을 위해서는 각 sector에 embbed된 ECC에 의존한다.
Hard Drive가 장애를 일으킬 경우, Data 복구는 남아있는 Drive상에 기록된Information의 Exclusive OR(XOR)연산을 통하여 이루어진다.
Records는 전형적으로 모든 Drive에 걸쳐 있기때문에, Data Intensive 환경에 적합하다. 각 I/O은 Array내의 모든 Drive들을 액세스하기 때문에, RAID-3 Array는 I/O을 Overlap시킬 수가 없고 따라서, RAID-3는 long record의 Single-user, Single-tasking 환경에 적합하다. 그러므로 Short record에서의 성능 저하를 피하기 위해서는, RAID-3는 Synchronized-spindle drives가 필요하다.
RAID 5
종종 Rotating Parity Array라 불리는 RAID-5는 RAID-4에서 하나의 전용Parity Drive를 설정함으로써, Parity Update가 한 Drive에서 이루어지므로 생기는 Write Bottleneck을 피하기 위하여 만들어진 RAID Array이다.
RAID-5는 RAID-4처럼 large-stripe이 사용되어 multiple I/O operation이 overlap되도록 하고 있다. 그러나, RAID-4와는 다르게, 각 Drive들이 일련의 서로다른 stripes들에 대한 parity를 돌아가면서 저장하게 된다.
따라서, 전용 parity Drive가 없기 때문에 모든 drive들이 데이타를 저장할 수 있고, Read operation이 모든 drive에 걸쳐 overlap될 수 있다.Write Operation은 전형적으로 single data drive를 액세스하며 그 record에 대한 parity drive를 액세스한다.
따라서, RAID-4와는 달리 서로 다른 records들이 해당 parity들을 서로 다른 drive들에 저장하기 때문에, Write Operation도 overlap이 가능하다. RAID-5는 RAID-1이 모든 데이타를 redundant copy하는 것과는 달리, parity information만을 저장하기 때문에 RAID-1에 비하여 Storage Efficiency를 높일 수 있다. 결과적으로 RAID-5 Array는 어떤 수의 Drive도 연결이 가능하고, 각 Drive들은 Parity information 저장 부분만을 제외하고는 모두 data storage로 활용될 수 있다. 즉, RAID-5는 RAID-1보다 저장 장치를 효율적으로 극대화 시킬 수 있다. 그러나 performance에서는 손실을 감수 하여야 한다.
Data가 RAID-5 Array에 쓰여질 때, Parity information 또한 Update되어야 하는데, 이는 Write Operation에 의하여 어떤 data bit들이 바뀌었는지를 찾아내어 이에 해당하는 parity bits들을 바꾸므로서 Update된다.
이는 overwritten될 old data를 먼저 읽고, 이 것이 새로 overwrite될 새로운 데이타와 XOR 연산을 하므로써 수행된다. 이 것은 바뀐 모든 bit의 position에서 1이 되는 bit mask를 만들게 되고, 이 bit mask가 parity drive로 부터읽어 들인 old parity information과 XOR연산을 수행한다. 이 결과, Parity information내에 있는 해당 bit를 변화 시킨다. 이렇게 하여 Update된 Parity는 Parity Drive에 write back된다.
그러므로, write-request하는 모든 Application에 대하여 RAID-5 Array는 두개 의 Read, 두개의 Write와 두개의 XOR operation을 수행하여야 만이 원래의 write가 완료된다.
RAID-1에서의 redundant data에 비하여, Parity를 저장하는 RAID-5는 위와 같이 보다 많은 연산을 행하게 되며, write operation 중에 parity information을 재생하는데 추가적으로 시간이 소요된다. 이러한 이유 때문에 RAID-5는 RAID-1에 비하여 write performance가 약 3/5~1/3 수준밖에 되지 않는다. 이때문에, RAID-5 Array는 결코 Software적으로 사용되지 않으며, 아울러 디지탈 비디오 캡쳐와 같이 write performance가 중요한 Application에는 사용되지 않는다.
 
Level 0
Level 1
Level 5
Level 0 + 1
장점
- DISK I/O가 분산이 된다.
- RAID level중 가장 빠르다.
- DATA 저장 효율이 높다.
- 안정적이다.
- redundant해서 Fault Tolerance를 보장한다.
- simultaneous-read가 되기 때문에 기존의 방법에 2배정도 읽기 효과를 준다.
- Write-bottleneck 현상을 줄일 수 있다.
- 안정적이다.
- disk I/O를 줄일 수 있다.
- hot-swap, hot-fix, hot-spare, hot-plug등이 가능하다.
- Level 0과 Level 1의 장점을 가진다.
 
단점
- Fault Tolerance가 보장되지 않는다.
- 안정적이?못하다.
- redundant가 없다.
- 비용이 비싸다.
- Striping이 되지를 않기 때문에 disk I/O bottleneck 현상에 대해 효율적이지 못하다.
- level 1에 비해서 읽기 성능이 떨어진다.
- level 0에 비해 저장효율이 떨어진다.
- 비용이 비싸다.
- disk 저장 효율성이 그리 높지 않다.

Veritas Volume Manager 정리(VxVM, 3.2 기준)
VxVM의 Physica disk는 두 부분으로 구성됨
- private : VxVM의 환경과 관리 정보 저장, default로 3번 slice가 사용됨
- public : 데이터 저장, default로 4번 slice가 사용됨

- private region
# private region을 구성하는데는 하나의 cylinder가 필요함.
# VTOC(Volume Table Of Contents)를 조회하여 확인 가능하다.(ex. # prtvtoc /dev/dsk/c0t0d0s2)

-- private region 의 이용
# disk header : 하나의 디스크에서 private region의 정보를 저장하는 하나의 block.
- 디스크의 현재 소유자 : 지정된 호스트에서 사용중인 디스크가 디스크 그룹의 일부일 때 그 디스크는 사용 중인 host id가 저장.
만약 다른 VxVM이 이 디스크에 access하면 host id가 일치하지 않으므로 사용 중인 시스템에서 host id를 해제하기 전까지는 access 불가능하다.
- disk identifier : 64byte로 구성된 디스크의 고유한 식별자
# configuration database(configdb)는 디스크 그룹의 환경 정보 저장. default로 VxVM은 디스크 그룹당 4개의 복사본을 저장함.
- dgname : disk group name, 관리자가 지정
- dgid : 64byte의 식별자로 디스크 그룹이 생성될 때 VxVM이 생성함.
- Records : 디스크 그룹을 위한 VxVM Virtual structure information.
# Kernel Log
- transaction commit, plex detaches, dirty-region og failure, first write to a volume, volume close information 등이 저장.
- 시스템이 reboot 되거나 crash날 경우 disk group의 상태를 복구에 사용.

- VxVM 초기화
# 최소 요구사항 : 최소한 하나의 디스크를 포함하는 rootdg라는 디스크 그룹이 존재 해야함.
· system boot disk를 encapsulation
· 디스크를 초기화 하고 rootdg 디스크 그룹에 넣음.
# 초기화 과정
· VxVM에 의해 디스크가 초기화 될 때 디스크는 표준 VxVM 환경 설정으로 다시 파티셔닝됨.
· 초기화된 디스크는 3번과 4번 slice로만 구성
· 3번 slice의 크기는 매우 작고 VxVM환경이 저장됨.
· 4번 slice는 데이터가 저장됨.
※ vxinstall : 디스크의 encapsulation이나 초기화하는 유틸리티

- 특정 장치를 VxVM이 사용하지 않게 설정
# Limited Exclusion
· /etc/vxvm에 다음 파일을 설정하면 vxinstall, vxdiskadm유틸리티에서 초기화 시키는것을 제외할 수 있다.
· enclr.exclude : enclosure를 제외(ex. sena1)
· cntrls.exclude : controller를 제외(ex. c2)
· disk.exclude : 특정 디스크를 제외(ex. c0t3d5)
# Global Exclusion
· /etc/vx/vxvm.exclude, /etc/vx/vxdmp.exclude // 직접 편집하면 안된다.
· vxinstall이나 vxdiskadm명령어로 편집됨

- boot 디스크를 encapsulation하기 위한 필요사항
# boot 디스크는 최소한 사용하지 않은 2개의 slice를 포함해야 한다.
# boot 디스크는 slice 2와 root, swap, var, opt, usr를 제외한 다른 slice를 가져서는 안된다.
# boot 디스크의 시작이나 끝에 어떤 파티션에도 속하지 않은 최소한 2048 섹터의 공간 필요

1. 설치
- 패키지 구성
1. VRTSfsdoc : VxFS 문서
2. VRTSlic : Veritas 라이센스 유틸리티
3. VRTSvmdev : VxVM 헤더와 라이브러리 파일
4. VRTSvmdoc : VxVM 사용 문서
5. VRTSvmman : VxVM 맨페이지
6. VRTSvmsa : VxSA 프로그램
7. VRTSvxfs : VxFS 프로그램
8. VRTSvxvm : VxVM 프로그램

- 패키지 설치
# pkginfo -d .
# pkgadd -d .
※ 패키지 설치 순서 : 2 8 6 3 4 5

- License 등록
# vxlicense -c // license 등록
# vxlicense -p // 등록된 license 확인

# /opt/VRTSvlic/bin/vxlicinst // license 등록
# /opt/VRTSvlic/bin/vxlicrep // 등록된 license 확인(3.5 이후부터)
# vxlicrep -g | -s | -e // -g는 일반적, -s는 짧게, -e는 자세히


- vxinstall 유틸리티
# 시스템을 확인하고 모든 디스크 controller를 확인.
# default로 root 디스크를 포함한 모든 디스크를 encapsulation하기 때문에 Quick Installation은 권장되지 않는다.
# boot disk의 encapsulation
· VxVM 초기화 과정에서 boot 디스크는 encapsulation되고 rootdg 디스크 그룹에 포함된다.
· 준비사항
- boot 는 root와 swap만 포함해야 한다.
- boot 디스크에 10800개의 빈 block이 있어야 한다.
- primary boot 디스크를 제외한 모든 디스크는 /etc/vx/vxvm.exclude, /etc/vx/vxdmp.exclude에서 제외시켜야 한다.
· encapsulation을 위한 응답이 끝나면 2번 재부팅됨.

- VxVM 환경
# VxVM이 설치 되면 /etc/system 파일에 아래와 비슷한 환경이 추가된다. 필요하지 않거나 존재하지 않는 드라이버는 에러가 발생하므로 *를 붙여 주석 처리할것.
* vxvm_START (do not remove)
forceload: drv/vxdmp
forceload: drv/vxio
forceload: drv/vxspec
forceload: drv/sd
forceload: drv/scsi
forceload: drv/pci
forceload: drv/ssd
rootdev:/pseudo/vxio@0:0
set vxio:vol_rootdev_is_volume=1
* vxvm_END (do not remove)

# /etc/rc.*에 VxVM 등록
· /etc/rcS.d/S25vxvm-sysboot // 부팅 단계에서 /와 /usr를 구성, 환경구성 가능한 디버깅 parameter도 포함된다.(vxconfigd daemon)
· /etc/rcS.d/S35vxvm-startup1 // /와 /usr이 가능한 상태에서 다른 volume들이 가능하도록 한다.(vxrecover)
· /etc/rcS.d/S85vxvm-startup2 // I/O 데몬 실행, /dev/vx/dks와 /dev/vx/rdsk를 재생성. 모든 디스크 그룹을 import, 앞에서 시작되지 않은 모든 volume을 시작한다.(vxrecover)
· /etc/rcS.d/S86vxvm-reconfig // root 파티션에 fsck 유틸리티 실행
· /etc/rc2.d/S94vxnm-host_infod // VERITAS Volume Replicator(VVR)이 설치되고 라이센스된 상태에서 host_infod 프로그램을 실행함.
· /etc/rc2.d/S94vxnm-vxnetd // VVR S/W option이 설치되고 라이센스된 상태에서 vxnetd 실행.
· /etc/rc2.d/S95vxvm-recover // plexes를 붙이고 VxVM watch daemon을 시작.(vxrecover, vxrelocd, vxsparecheck,, vxnotify)
· /etc/rc2.d/S96vmsa-server // remote client s/w에 응답하는 VxVM command server시작.(/opt/VRTSvmsa/bin/vmsa_server파일 실행, 2 jre and 1 cmdserver 시작)
· /etc/rc0.d/K10vmsa-server or /etc/rc1.d/K10vmsa-server VMSA 서버 종료
· /etc/rc0.d/K99vxvm-shutdown // vxconfigd 데몬을 종료하고, vxspec, vxio, vxdmp 드라이버 내림.

# 스크립트와 파일들의 위치
· /opt/VRTS // VxVM man 페이지
· /opt/VRTSlic // VxVM license installation and verification
· /opt/VRTSvxvm // VxVM technical documents and library files
· /opt/VRTSvmsa // VMSA server and client S/W.
· /usr/sbin/vx*
· /etc/vx/bin


- VxVM Object
# VxVM disk drive
· VxVM이 디스크를 관리하게 되면 존재하는 디스크 그룹에 디스크를 추가, 새로운 디스크 그룹에 디스크를 추가, free-disk pool에 디스크를 추가 할 수 있다.
· free-disk pool에 디스크를 추가하는 방법이 제일 쉽다. vxdisksetup는 VxVM format으로 디스크를 변경한 다음 하나의 blank header에 정보 기록한다.
# VxVM disk group
· 공통된 환경을 공유하는 VxVM디스크들의 모음.
· 각각의 디스크 그룹은 하나의 호스트에 종속된다. 현재의 소유권은 모든 configuration records에 기록되고, 디스크 그룹 내의 모든 디스크들은 configuration records의 복사본을 저장한다.
· 디스크 그룹은 하나의 호스트에서 다른 호스트로 옮겨갈 수 있다. 하지만 두번째 호스트가 같은 array에 연결되어 있더라고 현재 소유권을 가진 호스트만이 access가 가능하다. 디스크 그룹을 deport한 후에 다른 호스트에서 import하여 사용.
· Shared disk group : 두 개 이상의 호스트들이 같은 디스크 그룹에 동시에 access 가능하다. 호스트는 node라고 불림. shared disk group은 연결된 어떤 node에서도 import가 가능하고 cluster_naeme이 디스크의 configuration record에 기록되면 모든 연결된 node에서 disk group을 access할 수 있다.
# Subdisks
· 연속된 디스크 블록의 집합. 한 개의 디스크 내에서 하나의 subdisk는 디스크 전체를 의미한다.
· 디스크 그룹 내의 디스크에서 public region은 하나 이상의 서브디스크로 나누어질 수 있다.
· 서브디스크는 public region에서 같은 구획에 중첩되거나 공유될 수 없다.
· 가장 작은 서브디스크의 크기는 1 sector(512byte)이고 가장 큰 크기는 VxVM의 public retion전체가 될 수 있다.
# Plexes
· 여러 개의 서브디스크를 묶어 Plex를 구성할 수 있다.
· Plex는 하나 이상의 물리 디스크 에서 하나 이상의 서브디스크로 구성된다.
· mirroring에는 plex가 구별되지만 기타 다른 RAID level에서는 plex가 volum을 의미한다.
· 하나의 Plex는 초대 4096개의 서브디스크를 포함할 수 있다.
· 하나의 Plex에서 서브디스크들은 Concatenation, Striping, Striping with parity 방식으로 데이터를 저장 가능하다.
# Volumes
· Volumes은 하나 이상의 plex로 구성된다.
· 두개의 plex를 가진 하나의 volume은 mirror된 것임.
· volume은 두개 이상의 mirror를 가질 수 있다.
· RAID-5 volume은 mirroring될 수 없다.
· 데이터 저장에 사용하지 않는 plex는 logging structure될 수 있다.


- 상태 정보를 확인하는 기본 명령
# vxprint // 상태와 구성 정보 출력.
# vxprint -ht // 자세히 출력
· TY : Component type
· NAME : Component name
· ASSOC : Hierarchy association
· KSTATE : component state in kernel records
· LENGTH : component length in disk drive blocks
· PLOFFS : component offset within a plex
· STATE : component operationa state
· TUTIL0/PUTIL0 : Temporary and persistent control bits
# vxprint -spv // -p : plex 정보, -s : subdisk와 sub volume 정보, -v : volume 정보
# vxdisk list // 시스템에 부착된 모든 디스크의 상태와 소유권의 요약 정보 출력.
# vxdisk list c1t3d0s7 // 지정한 디스크에 관한 정보 출력
· online : VxVM 용으로 등록된 disk, error : solaris용 disk
# vxdisk -s list // 자세한 정보 표시
# vxdg list // 모든 디스크 그룹의 일반 정보와 unique identfier 출력.
# vxdg -g DGa free // 디스크 그룹 내의 각각의 디스크의 여유 공간의 양을 출력.
# vxdg list rootdg // rootdg 디스크 그룹 의 자세한 정보 출력

- VMSA
# VRTSvmsa : VMSA관련 패키지.
# Server와 Client로 구성. VMSA server는 VxVM 서버단에 설치. client는 하나 이상의 관리 시스템에 설치
# VxVM의 GUI환경의 관리 소프트웨어.
※ 원격지에서 VMSA 관리 GUI 사용 방법 : setenv DISPLAY 192.168.10.10:0.0
# VMSA 서버의 시작과 종료
· /etc/rc2.d/S96vmsa-server // VMSA서버의 시작 스크립트, vmsa_sercer와 cmdserver의 시작 스크립트이다.
· /etc/init.d/vmsa_server start | stop // 수동으로 시작과 종료
· /opt/VRTSvmsa/bin/vmsa_server // 옵션 설정 가능.
-V : VMSA서버의 버전 표시
-q : 서버가 실행 중인 경우 체크를 위한 쿼리
-k : 서버 프로세스 종료
-r : read-only 모드로 시작
-u : 서버에 연결된 클라이언트 사용자 푯
-h : 도움말 표시
# VMSA Client의 시작
· /opt/VRTSvmsa/bin/vmsa server_name &

- vxdiskadm
# VxVM의 관리와 오류 복구 등을 지원하는 Bourne shell script.

- vxdiskunsetup
# 디스크에서 이전의 VxVM 환경을 제거
# /etc/vx/bin/vxdiskunsetup -C c2t3d0 // 지정한 디스크를 VxVM초기화 이전의 상태로 되돌림. -C는 강제로 제거하는 옵션.

- vxdisksetup
# VxVM이 사용할 수 있도록 디스크를 초기화, 그러나 디스크 그룹에는 포함시키지 않는다.
# 디스크는 free pool에 남아있는다.
# vxdisksetup c2t0d0 // 디스크를 VxVM형식의 파티션으로 repartition만 수행
# vxdisksetup -i c2t0d0 // -i : VxVM의 환경이 private region에 기록된다.
# vxdisksetup -i c2t0d0 privlen=10080 // private영역을 10080 섹터크기로 지정, 기본값은 1024임.

- vxdg
# 디스크 그룹을 생성하고 디스크 그룹에 디스크를 추가 /제거
# vxdg를 통해 디스크를 추가하거나 디스크 그룹을 생성하기 전에 디스크는 초기화되어 있어야한다.
# vxdg init // 디스크 그룹을 생성
# vxdg destory // 디스크 그룹을 삭제
# vxdg adddisk // 존재하는 디스크 그룹에 디스크를 추가
# vxdg rmdisk // 디스크 그룹에서 디스크를 제거
# vxdg import // 디스크 그룹의 설정을 가져옴
# vxdg deport // 디스크 그룹의 설정을 내보냄.

- 디스크 그룹의 생성
# vxdisk list // 디스크의 상태와 소유권의 요약 정보 출력
# vxdisksetup -i c2t1d0
# vxdisksetup -i c2t2d0 // 디스크를 초기화하고 환경을 private region에 기록(-oi)
# vxdg init newDG ndg-01=c2t1d0 ndg-02=c2t2d0 // 디스크 그룹을 생성하고 그룹에 디스크를 추가
# vxdisk -g newDG list // newDG그룹의 상태와 소유권의 요약 정보 출력.
# vxdg list // 모든 디스크 그룹의 일반 정보와 unique identfier 출력.

- 디스크를 추가하거나 제거
# vxdisksetup -i c2t5d0
# vxdisksetup -i c2t16d0 // 디스크를 초기화
# vxdg -g newDG adddisk ndg-03=c2t5d0 ndg-04=c2t16d0 // newDG디스크 그룹에 디스크를 추가
# vxdisk list
# vxdg -g newDG rmdisk ndg-04 // newDG디스크 그룹에서 ndg-04 디스크를 제거. free 상태로.
# vxdisk rm c2t16d0 // c2t16d0를 VxVM에서 제거.

- 디스크 online/offline
# vxdisk online c1t2d0s2
# vxdisk offline c1t2d0s2

- 디스크 그룹의 import / deport
# 하나 이상의 호스트에서 arrary를 공유해서 사용하는 경우에 유용.
# 하나의 호스트에서 장애가 발생하면 다른 호스트에서 import하여 계속 서비스를 제공할 수 있다.
# vxdg list
# vxdg deport newDG // newDG 디스크 그룹을 deport.
# vxdg list // deport된 newDG디스크 그룹은 보이지 않는다.
· 디스크 그룹이 deport되면 디스크 그룹 내의 모든 디스크에 저장된 호스트 ID는 없어진다. 그러므로 시스템이 재부팅 되더라도 자동으로 다시 import되지 않는다.
· 디스크 그룹은 호스트 ID가 지워지지 않고 deport되거나 다른 호스트에서 import되도록 대상 호스트 ID를 지정할 수 있다.
· 만약 deport된 디스크 그룹의 이름을 잊어버렸다면 vxdiskadm 유틸리티와 vxdisk -o alldgs list를 통해 알 수 있다.
# vxdg import newDG // newDG디스크 그룹을 import

- 디스크 그룹의 제거
# vxdg list
# vxdg destory newDG // newDG 디스크 그룹을 제거, 삭제된 디스크 그룹 내의 디스크들은 다른 그룹에 등록되어 사용 가능.
# vxdg list

- 디스크 그룹의 이름 변경
# vxdg list
# vxdg deport newDG // 이름을 변경항 디스크 그룹을 deport
# vxdg -n new oldDG import newDG // oldDG라는 디스크 그룹을 생성하고 newDG를 import
or
# vxdg list
# vxdg -n nwdg deport dg01 // dg01을 nwdg로 이름을 변경하고 deport
# vxdisk -s list

- 디스크 그룹 내에 있는 디스크 이름의 변경
# vxedit -g newDG rename c2t4d0 disk04 // c2t4d0를 disk04로 변경

- 디스크의 이름 변경
# vxedit rename dga01 dbdisk01 // 디스크 그룹 내의 디스크 이름 변경

- Hot spare 지정과 해제
· spare disk는 mirror나 raid5에서 사용.
· spare를 지정하지 않은 경우 여유 디스크를 찾아 자동으로 할당
# vxedit -g newDG set spare=on disk07 // 지정
# vxedit -g newDG set spare=off disk07 // 해제

- 디스크 그룹의 시작과 종료
# vxvol start vol01
# vxvol -g newDG startall // 그룹 내의 모든 volume 시작

# vxvol stop vol01 // 지정한 volume 종료
# vxvol -g newDG stopall

- subdisk 생성
# vxdg -g newDG free // 디스크의 여유 공간과 offset 확인
# vxmake -g newDG1 sd disk1-01 len=100m dmname=disk1 dmoffset=0 // 100MB 용량의 subdisk생성
# vxprint -s // 현재 생성된 subdisk 확인
# vxdg -g newDG free // 설정 내용 확인

- subdisk케 코멘트 설정
# vxedit set comment="Sales Dept" disk1-01

- subdisk 크기 변경
# vxedit set len="20481" disk1-01
# vxprint -l disk1-01

- subdisk의 분할
# vxprint -s
# vxsd -s 50m split disk2-01 disk2-02 disk2-03 // disk2-01을 disk2-02, disk2-02으로 분할

- subdisk의 병합
# vxprint -s
# vxsd -g newDG join disk2-02 disk2-03 disk2-01 // disk02-01로 disk2-02와 disk02-03을 병합.

- subdisk 제거
# vxedit rm disk1-01 // subdisk disk1-01을 제거


-- Volume Operation
- Disk group
# 디스크 그룹은 VxVM이 관리하는 디스크들의 집합이다.
# default 디스크 그룹은 rootdg임.
# volume은 디스크 그룹내에서 생성된다.
# 디스크 그룹의 주요 기능
· 쉬운 관리 : 디스크들을 관리상 편의를 위한 논리적인 집합으로 변경.
· 데이터의 가용성 증가 : 하나의 호스트에서 다른 호스트로 디스크 그룹을 이동 가능.
- 하나의 호스트에서 장애가 발생했을 경우 다른 호스트에서 디스크 그룹을 import하여 디스크 그룹의 data를 계속 access가능하도록 한다.
※ 디스크 그룹의 volume이 open되어 있을 경우(status가 ENABLED or ACTIVE인 경우)에 디스크 그룹은 deport할 수 없다. deport 전에 반드시 stop되어야 한다.
# umount /vol01
# vxvol stop vol01
# vxdg deport newDG
# vxdisk import newDG // 다른 호스트에서
# vxrecover -g datadg -sb (s:start disable volume, -b: background operation)

- Disk group의 요구사항
# 디스크 그룹을 초기화 하기 전 고려해야 할 사항들.
· 모든 시스템에서 모든 디스크 그룹은 유일한 이름을 가져야 한다.
· 하나의 호스트 내에 위치한 모든 디스크 그룹은 유일한 이름을 가져야 한다.
· 각각의 호스트는 rootdg 디스크 그룹을 포함해야 한다.
· 일반적으로 rootdg 디스크 그룹은 작게 유지되어야 한다.
· 모든 디스크 그룹은 최소한 하나의 디스크를 포함하고 있어야 한다.(redundancy를 위해서는 두개 이상)

- volume 생성
# vxassist -g diskgroup_name make volume_name length laylout=stripe,nolog alloc=“disk_name disk_name”
· layout의 종류 : stripe, mirror, raid5, concatenate등. default는 concatenate
· nolog : log disk를 만들지 않음, default는 log disk 생성.
· alloc : volume을 만들 disk를 지정
# vxassist -g datadg make vol01 100m disk01 // concatenate volume 생성
# vxassist -b -t test -g datadg make vol01 100m disk01 // -b : background로 실행 vxtask list로 진행 사항 확인 가능, -t test : task id를 설정.
# vxassist -g datadg make vol01 100m layout=stripe disk01 disk02 disk03 //stripe volume 생성
# vxassist -g datadg make vol01 100m layout=raid5,nolog disk01 disk02 disk03 //RAID 5 volume 생성
# vxassist -g datadg make vol01 100m layout=mirror disk01 disk02 //mirror volume 생성(RAID 1)
# vxassist -g datadg make vol01 100m layout=stripe-mirror //1+0 volume 생성(stripe-pro volume) 0+1일 때는 mirror-stripe
# vxprint -vl vo01 // 생성한 volume의 자세한 정보 확인

- volume 삭제
# umount /data // mount 되어 있는 volume을 umount
# vxprint -v // 현재 volume 상태를 확인
# vxvol stop vol01 -> volume이 사용중이라면 중지시킨다.
# vxedit -g datadg -rf rm vol01 -> datadg disk group에서 vol01이라는 volume을 지운다.

- 관리 모드 또는 손상된 volume의 복구
# vxrecover -g newDG -s vol01
# vxvol start vol01

- volume내의 plex 정지/시작
# vxprint -p
# vxmend off vo1-01 // plex 정지
# vxprint -p
# vxmend on vol1-01 // plex 시작
# vxprint -p
# vxrecover -g newDG -s vol01 // volume 복구
# vxprint -v

- volume내의 plex detach/attach
# vxplex -g newDG det vol1-01 // plex vol1-01을 정지
# vxprint -p vol1-01
# vxplex -g newDG att vol1 vol1-01 // plex vol1-01을 vol1 volume에 attach


- volume의 권한, 소유권 설정
# vxedit -g newDG set user=oracle group=dba mode=660 vol01

- Hot space 공간을 확인
# vxdg -g newDG spare

- Hot spare 구성과 해제
# vxedit -g datadg set spare=on disk07 // datadg 디스크 그룹에 disk07 디스크를 hotspare로 지정
# vxedit -g datadg set spare=off disk07 // 해제.

- volume 이름 변경
# vxedit rename vol02 vol01 -> vol02를 vol01로 변경

- Performance Monitoring
# vxstat -g newDG // 지정한 디스크 그룹의 상태
# vxstat -g newDG vol01 // 디스크 그룹 내의 볼륨 상태
# vxstat -g newDG -d disk01 // 디스크 그룹 내의 디스크 상태

# vxtrace -o disk // 모든 디스크의 I/O나 에러 상태
# vxtrace -o c3t2d0 // 지정한 디스크의 I/O나 에러 상태
# vxtrace vol01 // vol01 volume가 관련된 모든 가상 장치의 I/O나 에러 상태

- controller 확인
# /etc/vx/bin/vxcntrllist
# vxdmpadm listctlr all
# ls /dev/dsk |awk '{print substr($0,0,2)}' |uniq

- A5000 장치 정보 보기
# luxadm probe
# luxadm display /dev/es/ses0

- disk 체크하기

+ Recent posts