이번 장에서는 LVM의 PV와 VG,LV의 생성 및 삭제등을 실제로 어떻게 하는가에 대해서 알아보도록 한다.

 


1. Disk의 사용계획


   시스템에 논리 볼륨을 설정하거나 수정하기 전에는 논리 볼륨을 어떻게 사용할 것인가에 대한 계획이 필요하고, 계획하는 데에는 몇


   가지 고려해야 할 사항이 있다.


 


   [고려사항 1] 논리 볼륨의 사용 목적


      논리 볼륨은 file system area, swap area 또는 raw data 저장 장치등으로 사용이 가능한데, 추가하려는 disk의 사용 목적이


      무엇인지 결정해야 한다.


 


      - LV를 File System Area로 사용하는 경우


        hfs 및 jfs에서 사용가능한 파일 시스템의 최대 용량은 종전 4GB에서 10.10 버전 부터 4 ~ 128GB로 증가하였다.


        •  루트볼륨은 프로세서의 종류에 따라 2 ~ 4GB로 제한된다.


        •  파일 시스템 용량 산정 시에는 다음과 같은 세 가지 구성요소가 고려되어야 한다.


       




 


           파일 시스템 용량 산정 시에는 첫 째, 파일 시스템에서 User가 사용할 Data 공간을 앞으로 Data의 증가추이를 판단하여


           지정하고, 둘 째로 파일 시스템의 minfree의 공간으로 10%의 공간을 더한다. minfree 영역은 앞으로 성능을 유지보수 하기


           위해 예약된다. 세 째로는 파일 시스템을 유지보수하는데 사용되는 모든 데이터 구조가 저장된 파일 시스템 오버헤드 공간


            5%를 User Data공간 + minfree 공간에 더한다.


 


           예를 들어 User Data의 용량이 60MB가 요구될 경우에는 60MB에 minfree 공간 6MB를 더하고 거기에 파일시스템 오버헤드


           로 사용될 3MB를 더해 실제로 66MB + 6MB + 3MB = 69MB의 공간이 필요하게 된다.


 


           이것을 LVM의 LV로 생성한다고 하면, LVM은 디스크에 용량을 할당할 때, Physical Extent 단위로 할당하며, PE의 default


           값은 4MB이다. 만약 69MB의 LV를 생성해야 한다면, 시스템은 할당되야 하는 용량이 4의 배수(PE가 4MB 이기 때문에)가


           되어야 하기 때문에 69를 포함하는 72MB로 생성하게 된다.


 


           File System의 크기는 생성된 이후, 확장은 가능하지만 축소는 불가능하다. 따라서 파일시스템의 크기를 축소해야 할 경우에


           는 현재보다 더 작은 파일시스템 생성 후 데이터를 복사하여 현재 용량이 큰 파일시스템과 교체하는 방법을 사용한다.


          


       - LV를 swap Area로 사용하는 경우


          LV를 swap용으로 사용할 경우에는 LV 생성 후 파일 시스템을 생성하지 않고 그대로 사용한다. 또한 루트 볼륨에 존재하는 기본


         Swap 외에 보조 swap을 사용할 수 있으며, 보조 스왑공간을 여러 디스크로 분산하였을 때, 가장 최적의 성능을 발휘할 수 있다.


 


       - LV를 raw device로 사용하는 경우


          LV를 raw device로 사용할 경우에도 마찬가지로 LV 생성 후 파일 시스템을 생성하지 않고 그대로 사용한다. 보통 raw device로


         사용되는 것이 데이터베이스 이므로 주로 대용량의 데이터를 다루게 된다. 기본적으로 LVM은 하나의 물리볼륨에 데이터를 기록


         하고 이 물리볼륨이 꽉 차면 다음 볼륨에 데이터를 기록하기 때문에 데이터베이스와 같이 대용량의 자료를 다룰 경우에는 비효율


         적인 I/O가 일어날 수 있다. 따라서 raw device설정 시에는 특정 LV를 관리자가 원하는 물리볼륨에 삽입하여 사용하거나


         stripping을 사용할지에 여부에 대해서 결정해야 한다.


 



   • [고려사항 2] 논리 볼륨의 크기


      LVM은 확장 및 축소가 가능하고 디스크의 물리적인 위치에 상관없이 LV를 생성하여 사용할 수 있지만 vg00(root volume)만은


      예외로 연속적인 디스크 공간에 할당되어야 한다. 또한 root volume이 아니라 하더라도 Logical Volume는 자유롭게 확대/축소가


      가능하고, File system도 확대가 가능하지만 File system은 확대에 비해 축소는 자유롭지 못한관계로 초기 설정 시 용량을 고려하여


      설정해야 한다.


 


 


   • [고려사항 3] I/O 성능


     시스템의 특성 상 I/O성능을 고려해야 할 경우 디스크 인터페이스 종류 및 모델을 고려해야 한다. 디스크나 인터페이스의 종류가


     상이하더라도 사용은 가능하지만 같은 디스크에 같은 인터페이스를 사용하는 경우가 Performance 면에서 더 뛰어나다.


 


 


   • [고려사항 4] 고가용성 데이터


      시스템의 특성상 최대한 안정적인 서비스를 지원해야 하는 경우 미러링을 디스크에 적용할 것인지, 몇 개의 사본을 만들 것인지


      결정해야 한다.



 


 


2. Disk의 초기화


    PC 사용 도중 Bad Sector가 의심스러울 경우, 우리는 Low Level Format이라는 것을 사용한다. 참고적으로 Low format에 대해 말하


    자면, 우리가 disk를 사용하다 보면 Bad sector가 발생할 수 있다. 이러한 bad sector는 물리적 또는 논리적인 에러로 나눌 수 있는


    데, 물리적인 bad sector의 경우에는 말그대로 하드디스크 표면에 문제가 생긴 것으므로 A/S를 받아야 사용이 가능하다.


 


    그러나 논리적인 bad sector의 경우에는 Low Level Format로 수정이 가능한데, 일반적인 format이 파티션이 이미 생성된 상태에서


    디스크에 파일 시스템을 설치하는 것이라면, Low Level Format은 디스크를 공장에서 출시된 초기의 상태로 되돌리는 것이다.


    다시 말해, disk에 있는 트랙,실린더,섹터를 모두 지우고 다시 기록하는 작업이다. 따라서 Low Level Format을 한 후에는 다시 파티


    션을 분할하고 운영체제의 파일시스템에 따른 format 작업을 다시 해야 한다. 또한 Low Level Format을 자주할 경우 디스크에 무리


    가 가서 고장의 우려가 있으며, Low Level Format 도중 에러가 발생할 경우 최악의 상황에서는 디스크를 사용할 수 없게 될 수


    있으므로 Low Level Format은 언제나 최후의 선택이 되어야 한다.


 


    HP-UX에서는 디스크를 이전에 한번 사용했거나 디스크의 무결성이 의심스러울 때 사용자가 직접 디스크를 초기화하기 위해서


    mediainit이라는 명령을 사용한다. 이 명령은 PC의 Low Level Format와 마찬가지로 디스크를 포맷시켜 초기화하고 읽기 쓰기 테스


    트를 수행하여 디스크의 무결성을 검증하여 손상된 블록이 발견 될 경우 수정하는 일을 한다. 그러나 시간이 오래 걸릴뿐더러 기존에


    사용하던 Disk라 할지라도 Physical Volume을 생성 시 -f 옵션을 사용하여 기존의 LVM 정보를 무시한채 생성하게 되면 기존의 정보


    는 모두 삭제되어 새로운 PV로 사용이 가능하므로 디스크에 bad sector가 의심되는 경우를 제외하곤 mediainit명령은 잘 사용되지


    않는다.


 

   


<그림 10.1> mediainit 명령의 예제

 

 

3. Physical Volume의 생성

   pvcreate 명령을 사용하여 물리적인 디스크를 LVM으로 관리하기 위해 필요한 정보들을 생성할 수 있다. 만일 디스크가 이전에 다른

   볼륨그룹의 물리볼륨으로 사용한 적이 있다면, -f 옵션을 사용하여 기존의 LVM정보를 무시하고 새로운 정보를 덮어쓰고, PV를 부팅

   디스로 만드려면 -B옵션을 사용하여, LIF 헤더정보와 BDRA(Boot Data Reserved Area), LIF 디렉토리 영역을 생성하여 디스크를 부

   팅 가능한 디스크로 만들 수 있다.

 

   이 때, pvcreate 명령에 -f 옵션을 사용할 경우 기존의 Data는 모두 소실되므로 기존에 사용하던 디스크를 재사용하는 경우에는 디스

   크안에 소실될 정보가 있는지 재차 확인 후 작업하는 것이 좋다.

 

  

<그림 10.2> pvcreate 명령의 예제

 

 

4. Volume Group의 생성

   volume group은 미리 생성해 놓은 PV안에 vgcreate 명령을 사용하여 생성할 수 있다. LVM의 VG는 다른 device들과 달리 /dev 디렉

   토리 밑에 볼륨그룹의 device 파일들을 관리하는데 사용될 디렉토리 생성하고 그 안에 mknod 명령으로 group device파일을 관리자

   가 직접 생성한 후에 vgcreate 명령으로 VG를 생성해 주어야 한다.

 

   LVM의 Volume Group은 앞서 말한 바와 같이 기타 Device들과 달리 Device file을 관리자가 직접 mknod 명령을 통해 만들어 주어야

   한다. 이 때, LVM의 Major,Minor Number가 Parameter 값으로 들어가므로 관리자는 VG Device file의 Major,Minor Number가 의미

   하는 값을 알고 있어야 한다.

 



<그림 10.3> LVM의 Major Number와 Minor Number의 의미

 

 

   그림 10.3은 LVM group파일의 Major Number와 Minor Number를 나타내고 있다. 이것을 자세히 살펴보면, 다른 device와 마찬가지

   로 LVM group파일의 Major Number은 driver의 번호 이며, 이 Major Numver는 lsdev명령을 통해 알 수 있다.

   그러나 Minor Number는 다른 device들이 device 파일 생성 시 자동으로 할당되는 반면에, LVM에서는 minor number를 관리자가 직

   접 기술하여 device file을 생성해야 한다. LVM의 Minor Number는 총 8자리이며, 각각 두 자리씩의 숫자를 끊어서 그 의미를 갖는다.

   첫 번째 두 자리의 경우에는 16진수 값을 나타내고, 두 번째 두 자리는 Volume Group의 번호를 나타내고 Volume Group의 번호는 그

   시스템에서 유일해야 한다. 그리고 세 번째 두 자리는 자릿 수를 맞추기 위해 항상 "00"을 채워주고, 마지막 두 자리는 그 Volume

   Group에 생성된 Logical Volume의 생성 순서를 나타낸다.

 

   그림 10.3의 예는 vg00의 정보를 바탕으로 예를 든 것이다. vg01을 새로 만든다고 가정하면 vg01의 Volume Group 파일의 위치는

   /dev/vg01 디렉토리가 될 것이고, Major Number는 64, Minor Number는 첫 번째 두 자리는 16진수를 나타내는 필드 이므로 똑같이

   "0x"가 들어가면 될 것이고 그 다음 필드는 Volume Group의 이름으로 vg01의 01을 이름으로 주어 "01"을 채운다. 그리고 그 다음 필

   드는 자리 수를 맞춰주는 필드로 무조건 "00"을 채우고, 마지막으로 lvol 생성순서는 group 파일은 항상 "00"이 된다. 이것을 종합해

   보면 vg01의 Major Number는 64, Minor Number는 0x010000의 여덟 자리가 될 것이다.

 

   그림 10.4는 방금 설명한 정보를 토대로 vg01의 VG를 만드는 예이다.

   ㉠ mkdir /dev/vg01 : mkdir 명령으로 볼륨그룹이 들어갈 디렉토리 /dev/vg01을 만든다.

   ㉡ mknod /dev/vg01/group c 64 0x010000 : mknod 명령으로 vg01이 사용할 LVM group 파일일 생성한다.

   ㉢ ll /dev/vg01 : /dev/vg01 디렉토리에 vg01의 group 파일이 정상적으로 생성되었는지 확인한다.

   ㉣ vgcreate /dev/vg01 /dev/dsk/c0t3d0 : /dev/dsk/c0t3d0 디스크에 vg01이라는 VG를 생성한다.

   ㉤ strings /etc/lvmtab : strings 명령으로 /etc/lvmtab 파일의 내용을 확인하여 VG가 정상적으로 생성되었는지 확인한다.

   ㉥ vgdisplay -v vg01 : vg01에 대한 자세한 정보를 확인한다.

 



<그림 10.4> vgcreate 명령이 예제

 

 

5. Logical Volume의 생성

   PV와 VG가 준비되어 있다면, 미리 준비되어 있는 VG안에 Logical Volume을 생성할 수 있다. lvcreate 명령으로 생성이 가능하고,

   -l 옵션을 사용할 경우에는 extent 개수로 지정하며, -L 옵션을 사용할 경우에는 MB단위로 지정이 가능한데, MB로 용량을 지정할

   때에는 "1.disk 사용계획" 에서 말한 바와 같이 LV의 용량을 Logical Extent(default 4MB) 용량의 배수로 지정해야 한다.

 

   그림 10.5는 앞서 생성한 vg01 VG에 LV를 생성하는 예제이다.

   ㉠ ll /dev/vg01 : /dev/vg01 디렉토리에는 생성된 LV가 없게 때문에 아직 group 파일만 존재하고 있다.

   ㉡ lvcreate -l 17000 /dev/vg01 : lvcreate 명령에 -l 옵션으로 17000개의 LE를 할당하여 lvol1을 생성한다.

   ㉢ lvcreate -L 3 /dev/vg01 : lvcreate명령에 -L 옵션으로 3MB의 LV를 생성하려고 했으나 현재 생성되어있는 vg01 VG는

                                                 PE/LE 크기를 default 값인 4MB로 생성하였으므로, PE size보다 작은 용량으로는 생성할 수

                                                 없다는 메세지와 함께 LV는 생성되지 않는다. (extent 단위로 용량을 할당하기 때문에)

   ㉣ lvcreate -L 4 /dev/vg01 : 이해를 돕기 위해 -L 옵션으로 4MB(extent 1개)의 LV를 생성한 결과 한 개의 LE를 할당받아

                                                 문제없이 lvol2가 생성되었다.

   ㉤ lvcreate -L 7 /dev/vg01 : 이번에는 -L 옵션으로 7MB의 LV를 생성하였다. 그러나 앞서 말한바와 같이 LVM은 디스크 할당

                                                 단위가 extent이기 때문에 extent 용량의 배수의 용량을 지정하여 lvol을 생성한다. 따라서 7MB의

                                                 lvol을 생성하려고 했으나 시스템의 PE/LE용량의 배수, 즉 7MB를 포함하는 PE/LE(4MB)의 배수

                                                 인 8MB로 자동 조정되어 8MB의 lvol3이 생성되었다.

 

 



<그림 10.5> lvcreate 명령의 예제


  


   그림 10.6은 그림 10.5에서 실행한 lvcreate 명령 후 생성된 lvol1~3번 까지의 정보를 vgdisplay 명령으로 디스플레이 한 것이다.


   ㉠ 그림에서 보는 바와 같이 lvol1은 -l 옵션으로 17000개의 extent의 용량으로 생성하였으므로 17000개의 extent가 할당되어 lvol1이


       생성되었다. lvol1의 용량은 17000 * 4MB = 68000(68GB)이며, LV Size (Mbytes)란에 정보가 출력되어있다.


   ㉡ lvol2는 -L 옵션으로 4MB를 주어 생성하였으므로, LV Size란에 4MB의 용량이 표시되었으며, Current LE/Allocated PE 란에 출


       력된 정보와 같이 1개의 extent가 할당된 것을 확인할 수 있다.


   ㉢ lvol3은 -L 옵션으로 7MB를 주었으나 extent의 크기로 인해 8MB의 크기로 생성되었다. 이 역시 출력된 정보를 보다시피 LV Size


       에는 8MB, Current LE/Allocated PE에는 2개가 표시되므로써 2개의 4MB의 extent 2개가 할당되어 lvol이 생성되었음을 나타낸다.


  




<그림 10.6> lvcreate 명령 실행후 생성 된 lvol의 정보

7. LVM의 확대


   시스템 운영 도중 관리해야 할 Data 량이 증가하여 현재 사용하고 있는 파일시스템 용량이 부족한 경우, LVM은 VG 및 LV를 extend


   하여 특별한 어려움 없이 용량증설을 가능하게 해준다. 만약 현재 용량을 추가 증설하려는 Volume Group에 여유분의 디스크 용량이


   남아있을 경우에는 lvextend 명령으로 LV만 늘려주고, Volume Group에 여유분의 용량이 없을 경우에는 VG에 PV를 추가한 후 LV를


   늘려줄 수 있다.



   LV를 확대하기 위해서는 확대하려는 lvol이 속해있는 VG에 사용하고 있지 않은 Free PE가 존재해야 한다. 따라서 아래 그림 10.7과


   같이 vgdisplay -v VG_name 명령을 사용하여 현재 남아있는 extent가 있는지 확인한다.



   ㉠ vg00은 현재 총 17499의 PE가 모두 사용 중이므로 남아있는 여유공간이 없음을 알 수 있다.




<그림 10.7> 현재 VG에 있는 Free PE 개수 확인  



   만약 Free PE의 개수가 현재 추가하고자 하는 용량보다 적거나 없을 경우에는 현재 확대하려는 lvol이 속한 VG에 PV를 추가한 후 확


   대작업을 해야한다. 그러나 lvol이 속한 VG에 여유공간이 있을 경우에는 VG에 PV를 추가할 필요없이 바로 lvextend만 하면된다.



   VG를 확대하기 위해서 ioscan 명령으로 추가할 PV의 H/W Path와 device file 이름을 확인한 후, pvcrate 명령을 사용하여 disk를 PV


   로 만든다. 그리고 확대하려는 VG에 "vgextend VG_name  추가하려는 PV의 device file_name" 형식으로 명력을 입력하여 VG에 PV


   를 추가한다.



   아래 그림 10.8을 보면 PV 생성 후, VG에 PV를 추가하고 strings 명령으로 Display된 lvm정보에 vg01이 두 개의 PV로 구성이 바뀐것


   을 확인 할 수 있다.


   ㉠ pvcreate -f /dev/rdsk/c0t4d0 : c0t4d0 디스크에 LVM정보를 설치하여 PV로 만든다.


   ㉡ vgextend /dev/vg01 /dev/dsk/c0t4d0 : vg01에 vtextend명령을 사용하여 사전에 PV로 만들어둔 c0t4d0 디스크를 vg01


                                                                       에 삽입한다.


   ㉢ strings /etc/lvmtab : lvmtab에 기록되어 있는 LVM정보를 디스플레이 하여 정상적으로 추가가 되었는지 확인한다.


                                         참고로 /etc/lvmtab 파일은 birnary file이므로 vi로는 볼 수 없기때문에, binary file에 포함되어있는 ASCII


                                         텍스트 내용만 검색하여 보여주는strings명령으로 LVM정보를 확인한다.


  



<그림 10.8> VG에 PV 추가



  그림 10.9는 VG에 PV추가 후 vgdisplay명령으로 vg01 VG의 정보를 확인한 것으로, /dev/dsk/c0t4d0의 PV가 추가되었고, Free PE


  개수가 17499개 임을 확인 할 수 있다.



<그림 10.9> VG에 추가 된 PV확인



  이제 lvol을 추가하기 위한 준비가 모두 끝났으므로 현재 확대하려는 lvol에 필요한 만큼의 용량을 더 확대하여 사용할 수 있다.


  lvol의 확대는 초기 생성과 마찬가지로 -l 옵션으로 extend 개수를 지정하거나 -L 옵션으로 MB단위로 용량을 지정할 수 있다. 그러나


  이 때, 용량 지정 시 주의해야할 것은 lvextend 명령에 지정하는 용량만큼 현재 사용하고 있는 lvol의 용량이 증가하는 것이 아니라 현


  재용량 + 추가된 용량 = lvextend 명령에 지정한 용량이 된다는 것이다. 예를 들어, 현재 사용하고 있는 lvol의 용량이 100MB라고 가정


  할 때, 50MB의 용량을 추가하려면 lvextend명령에는 -L 150(MB)로 용량을 지정해야 한다.


 


  그림 10.10은 LV의 확대에 대한 예제이다.


  ㉠ lvextend -l 10000 /dev/vg01/lvol2 : lvol2의 용량을 extent 10000개로 확대한다. (extent(4MB) * 10000 = 40GB)


  ㉡ lvextend -L 290 /dev/vg01/lvol3 : lvol3의 용량을 290MB로 지정했으나 extend 단위로 디스크를 할당하기 때문에, 4의 배수


                                                             인 292MB로 시스템이 자동조절하여 lvol을 확대한다.


  ㉢ vgdisplay -v vg01|more : vg01의 정보를 출력하여 LV가 확대되었는지 확인한다.




<그림 10.10> LV의 확대

LVM의 생성 및 확대 (HP-UX)

답글 남기기

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