1.  개념


  HP-UX 에서는 여러 개의 Disk 묶어서 하나의 Volume Group 만들어 물리적인 HW 가지는 Size 한계를 넘을 있다. 이때 사용하는 것이 LVM ( Logical Volume Manager) 이다.


여러 개의 Disk 하나의 논리적인 Disk  (LVOL) 만든 User LVOL Control 하여 Disk READ  또는 Write 하게 된다. Disk Data 저장하는 방법은 다음의 가지로 나누어진다.


 


1)    같은 Volume Group 속해있는 Disk 들에 순차적으로 Data Write되는 방법


( 첫번째 Disk 모두 Write 다음의 Disk 넘어가는 방법)


2)    같은 Volume Group 속해있는 Disk 정해진 Size 만큼 돌아가면서 Write 되는 방법 ( 예를 들어 정해진 Size 1M 라면 처음 Disk 1M write 다음 Disk Write 되고 모든 Disk 1M Write 되어진 다시 처음의 Disk Write 되는 방법)


 


  기본적인 LVOL (Logical Volume ) 1) 방법을 따르게 되어 있다.  여기서 2) 방법을  Disk Striping 이라고 하라고 하는데 2)번의 방법 또한 두가지 방법으로 나누어 지고 것에 대해서 알아보기로 하자.


 


2.  DISK STRIPING 구현 목적


하나의 Volume Group 많은 Disk 이루어져 있고 하나의 Disk 자주 Access 되는 Data 있다고 생각을 해보자.  특정 Disk 에는 Disk I/O bottleneck 현상이 발생하여 Performance 저하가 예상이 이다. Performance 향상을 위해 사용하는 방법이 DISK Striping 방법이다.  Disk Striping 방법으로 Logical Volume 구현되면 DISK I/O 분산이 되어 DISK I/O 의한 Performance 저하를 줄일 있다. 


 


3.  구현 방법


3-1 . Volume Group STRIPING 만을 구현할 경우


다음 4개의 Disk 묶어서 하나의 Volume Group 만든다고 생각하자.


 (/dev/dsk/c0t0d0 , /dev/dsk/c0t1d0 , /dev/dsk/c1t2d0, /dev/dsk/c1t3d0)


1)  PVCREATE


# pvcreate –f /dev/rdsk/c0t0d0


# pvcreate –f /dev/rdsk/c0t1d0


# pvcreate –f /dev/rdsk/c1t2d0


# pvcreate –f /dev/rdsk/c1t3d0


2)  VGCREATE  ( Volume Group 이름을 vg01 이라고 했을 )


# mkdir  /dev/vg01


# mknod /dev/vg01/group c 64 0x010000


# vgcreate  /dev/vg01 /dev/dsk/c0t0d0 /dev/dsk/c0t1d0 /dev/dsk/c1t2d0 /dev/dsk/c1t3d0


      # vgdisplay –v /dev/vg01 ( Volume Group  확인)


3)  LVCREATE


# lvcreate –i 4 –I 32 –L 1000 –n lvstripes /dev/vg01


-i : Striping 으로 Write 되는 Disk 개수


-I : Stripe Size ( Kbyte)


-L : Logical Volume Size ( Mega)


-n : Logical Volume 이름


 


위와 같은 명령어를 사용하면 4개의 Disk 사용하는 1G Size lvstripes 라는 Logical Volume 만들어 진다.


 


      3 –2. VOLUME GROUP MIRRING STRIPING 구현할 경우, SHARED DISK


           STRIPING 구현할 경우 ( DISTRIBUTED LVM)


       STRIPING 으로 Volume Group 구현할 경우는 하나의 DISK Volume group 구현


       하는 경우보다 많은 위험성을 지닌다. 만약 많은 Disk 하나의 Volume Group 으로


       성하여 Striping 하였을 경우에는 Data 안전성이 무척 중요한 요소가 되고 따라서


       Striping Mirroring 동시에 구현하여 Performance 안정성을 동시에 높이는 것이  


       좋은 방법이다. 사용하는 방법이 DISTRIBUTED LVM 방법이다. (MIRRORING


       구현하기 위해서는 MIRROR/UX 추가로 설치되어야 한다.)


 


3-1 경우와 같이 4개의 Disk 하나의 Volume Group 으로 만든다고 하자.


1)  PVCREATE


3-1 번의 방법과 동일


2)  VGCREATE


여기서부터는 다른 OPTION 이용하여야 한다.


# vgcreate –s 1 -g PVG01 /dev/vg01 /dev/dsk/c0t0d0 /dev/dsk/c0t1d0


# vgcreate –s 1 -g PVG02 /dev/vg01 /dev/dsk/c1t2d0 /dev/dsk/c1t3d0


-s : PE size ( Mega) 정의 ( 최소단위는 1M, Default Size 4 M).


   Striping  단위로 사용된다.


-g : Physical Volume Group 정의


 


명령이 사용되면 /etc/lvmpvg file 생성되는데 vgcreate –g option 사용하지 않고 직접 /etc/lvmpvg file 만들 수도 있다


 


Example /etc/lvmpvg file:


   VG /dev/VG01


   PVG PVG1


   /dev/dsk/c0t0d0


   /dev/dsk/c0t1d0


   PVG PVG2


   /dev/dsk/c1t2d0


   /dev/dsk/c1t3d0


 


참고 : 위의 File 보면 PVG01 Controller c0 PVG02 c1으로 구성됨을 있다. 이렇게 Controller 별로 PVG 만들어서 Mirroring 구성함으로서 하나의 Controller 장애가 발생하여도 다른 Controller 이용해서 계속적인 Service 이루어 있도록 구성되어 있다.


 


3) LVCREATE


# lvcreate –D y –s g –m 1 –L 1000 –n dist1 /dev/vg01


-D y : Distributed allocation policy 적용


-s g : PVG-strict allocation policy 적용


-m 1 : 1개의 mirroring 구성


-L 1000 : 1G Size Logical Volume 구성


-n dist1 : logical volume name 정의


 


logical volume 생성을 확인해보자.


# lvdisplay -v /dev/vg01/dist1


 


--- Logical volumes ---


LV Name                   /dev/vg01/dist1


VG Name                   /dev/vg01t


LV Permission               read/write


LV Status                   available/syncd


Mirror copies               1


Consistency Recovery        MWC


Schedule                    parallel


LV Size (Mbytes)            1000


Current LE                  1000


Allocated PE                2000


Stripes                     0


Stripe Size (Kbytes)          0


Bad block                   on


Allocation                  PVG-strict/distributed


IO Timeout (Seconds)        default


 


   --- Distribution of logical volume ---


   PV Name       LE on PV  PE on PV


   /dev/dsk/c0t0d0    500       500


   /dev/dsk/c0t1d0    500       500


   /dev/dsk/c1t2d0    500       500


   /dev/dsk/c1t2d0    500       500


 


   --- Logical extents ---


   LE   PV1            PE1  Status 1 PV2                PE2  Status 2


   0000 /dev/dsk/c0t0d0    0000 current  /dev/dsk/c1t2d0    0000 current


   0001 /dev/dsk/c0t1d0    0000 current  /dev/dsk/c1t3d0    0000 current


   0002 /dev/dsk/c0t0d0    0001 current  /dev/dsk/c1t2d0    0001 current


   0003 /dev/dsk/c0t1d0    0001 current  /dev/dsk/c1t3d0    0001 current


   0004 /dev/dsk/c0t0d0    0002 current  /dev/dsk/c1t2d0    0002 current


…….


truncated LE 0005-0996


…….


   0995 /dev/dsk/c0t1d0    0497 current  /dev/dsk/c1t3d0    0497 current


   0996 /dev/dsk/c0t0d0    0498 current  /dev/dsk/c1t2d0    0498 current


   0997 /dev/dsk/c0t1d0    0498 current  /dev/dsk/c1t3d0    0498 current


   0998 /dev/dsk/c0t0d0    0499 current  /dev/dsk/c1t2d0    0499 current


   0999 /dev/dsk/c0t1d0    0499 current  /dev/dsk/c1t3d0    0499 current


 


4.  결론


DISK STRIPING PERFORMANCE 향상시키는데 좋은 방법으로 VOLUME GROUP 속한 DISK 많을 수록 나은 효과를 있고 Controller 분산을 통하여 DISK I/O Performance 안정성도 높일 있다. XP256 같은 RAID장비의 사용 시에도 DISK STRIPING MIRRORING 좋은 Solution 된다. 이런 구성을 고려 점은 처음 Volume Group 구성 Disk Controller 배치를 충분히 고려하고 구성을 해야 한다.

LVM : DISK STRIPING 과 MIRRORING

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다