RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'LVM'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. LVM이란?
(1) 개요: 리눅스 설치시나 하드디스크 추가시에 파티션이라는 것을 나누고 공간을 할당한다. 이
          때 한번 설정한 공간을 고정이 되어 변경이나 추가가 불가능하다. LVM(Logical Volume
          Manager)은 파티션을 원하는 대로 추가하거나 제거하고 그 크기도 조절할 수 있도록
          해주는 방법이다.
(2) 관련용어
   1) 물리적 볼륨(PV:Physical Volume): 실제로 나눈 파티션을 말한다. 즉 /dev/hda8, /dev/hdb1 등
                                      을 말한다. LVM에서는 이러한 물리적 볼륨을 하나의 구성원
                                      으로 받아 들이는 형식이다.
   2) 물리적 확장(PE:Physical Extents): 일종의 블럭같은 것으로 실제 데이터가 저장되는 공간을
                                       말한다. 보통 1PE가 약 4MB정도 차지한다.
   3) 볼륨그룹(VG:Volume Group): 물리적 볼륨이 모여서 하나의 VG를 이룬다. 이것은 더 크게 말하
                                면 지정한 크기의 PE가 모여 생성되는 하나의 큰 덩어리라고 할 수
                                있다.
   4) 논리적볼륨(LV:Logical Volume): 이 논리적 볼륨이 우리가 흔히 쓰는 정규파티션과 같다. 실제
                                    만들어서 사용하는 것이 바로 이 LV이다.

2. LVM 설정하기
(1) 설명: /dev/hda8(약 800MB)과 /dev/hda9(약 800MB)을 lvm이라는 볼륨그룹으로 생성하고 1.2GB는
          /data라는 디렉토리로 400MB는 /backup으로 구성해보자. 여기서 /data는 처음에 1GB로
          할당하고 추가로 영역을 200MB 확장하는 형태로 구성한다.
(2) 설정1 : 1000MB의 /data 로 구성
   1) fdisk를 이용하여 파티션 속성을 변경: fdisk /dev/hda 실행후에 t, 해당 파티션 선택, 8e, w
                                          을 누르고 재부팅한다.
   2) 디스크에 있는 볼륨그룹을 검색하고 /etc/lvmtab 파일 생성
     [root@www root]# vgscan
   3) 물리적 볼륨(PV:Physical Volume) 생성
     [root@www root]# pvcreate /dev/hda8
     pvcreate -- physical volume "/dev/hda5" successfully created

     [root@www root]# pvcreate /dev/hda9
     pvcreate -- physical volume "/dev/hda8" successfully created
   4) 생성된 PV를 특정한 볼륨그룹(lvm)에 추가시킨다.      // 레드햇8에서는 lvm이라는 볼륨그룹
                                                            생성불가
     [root@www root]# vgcreate lvm /dev/hda8 /dev/hda9
     vgcreate -- INFO: using default physical extent size 4 MB
     vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
     vgcreate -- doing automatic backup of volume group "lvm"
     vgcreate -- volume group "lvm" successfully created and activated
   5) 생성된 볼륨그룹 검사한다.
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                0
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       0 / 0
     Free  PE / Size       424 / 1.66 GB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- No logical volumes defined in "lvm" ---


     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 212
   6) 논리적 볼륨(LV:Logical Volume) 생성
     [root@www root]# lvcreate -L 1000M -n data lvm
     lvcreate -- doing automatic backup of "data"
     lvcreate -- logical volume "/dev/lvm/data" successfully created
   7) LV생성확인
     [root@www root]# lvscan
     lvscan -- ACTIVE            "/dev/lvm/data" [1000 MB]
     lvscan -- 1 logical volumes with 1000 MB total in 1 volume group
     lvscan -- 1 active logical volumes
   8) VG 확인
     [root@www root]# vgdisplay -v lvm
     --- Volume group ---
     VG Name               lvm
     VG Access             read/write
     VG Status             available/resizable
     VG #                  0
     MAX LV                256
     Cur LV                1
     Open LV               0
     MAX LV Size           255.99 GB
     Max PV                256
     Cur PV                2
     Act PV                2
     VG Size               1.66 GB
     PE Size               4 MB
     Total PE              424
     Alloc PE / Size       250 / 1000 MB
     Free  PE / Size       174 / 696 MB
     VG UUID               RBimFr-2W6o-O6Wr-E4Ox-egs1-z87V-cha1DA

     --- Logical volume ---
     LV Name                /dev/lvm/data
     VG Name                data
     LV Write Access        read/write
     LV Status              available
     LV #                   1
     # open                 0
     LV Size                1000 MB
     Current LE             250
     Allocated LE           250
     Allocation             next free
     Read ahead sectors     1024
     Block device           58:0
    

     --- Physical volumes ---
     PV Name (#)           /dev/hda8 (1)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 0

     PV Name (#)           /dev/hda9 (2)
     PV Status             available / allocatable
     Total PE / Free PE    212 / 174
      => 논리적 볼륨부분이 나타나고 물리적 볼륨에서 /dev/hda8은 모두 사용중인 것으로 나타난다.
   9) 파일시스템 생성
     [root@www root]# mkfs -t ext3 /dev/lvm/data
   10) 마운트하여 사용한다.
      [root@www root]# mount -t ext3 /dev/lvm/data /data
(3) 참고
   1) 설명: LVM을 시스템 재부팅후에도 사용하려면 /etc/fstab파일에 등록하면 된다.
   2) 예
     /dev/lvm/data              /data                ext3    defaults        0 0
(4) 설정2: /data 디렉토리 200MB 추가하기
   1) 설명: /data를 추가하는 방법에는 lvextend 명령을 이용하는 방법과 e2fsadm 명령을 사용하는
           방법 2가지가 있다. 이 두 방법 중 하나로 Logical Volume의 용량을 늘리고, lvscan
           명령을 이용하여 확인한다.
   2) 방법1: lvextend 사용하기
    ㄱ. [root@www root]# lvextend -L +200M /dev/lvm/data
          => 기존의 용량에 추가로 200MB를 할당한다.
    ㄴ. [root@www root]# lvscan
          => LV용량이 늘어난 것을 확인할 수 있다.
    ㄷ. 참고: lvextend로 LV에 할당된 용량을 늘렸다고 하더라도, 해당 디바이스를 다시 마운트하고
             df -h 명령으로 확인해보면 늘어나지 않았음을 알 수 있다. df는  파일시스템 관련
             명령으로 실제 파일시스템이 구성된 영역에 대해 인식한다. lvextend이후에 fsck나
             resize2fs 등의 명령이 추가로 필요하다.
        예) umount /dev/lvm/data
            e2fsck -f /dev/lvm/data
            resize2fs -f /dev/lvm/data
   3) 방법2: e2fsadm 명령이용하기
     [root@www root]# e2fsadm -L +200M /dev/lvm/data
       => e2fsadm 명령은 lvextend 수행후 resize2fs 등을 자동으로 해준다.
(5) 설정3: 남은 공간(약 400MB)를 /backup 디렉토리로 사용하기
   1) 설명: 남은 공간을 확인하려면 vgdisplay -v 명령을 내려서 Free PE값을 확인하고 해당 PE값을
           할당하는 것이 좋다. lvcreate 로 남은 PE값을 지정하고 Logical Volume을 생성한다.
   2) 방법
    ㄱ. [root@www root]# lvcreate -l 124 -n backup lvm
         => lvm이라는 볼륨그룹에 backup 이라는 Logical Volume을 생성하고 크기는 약 124PE
          (약 496MB)를 할당한다.
    ㄴ. [root@www root]# mkfs -t ext3 /dev/lvm/backup
         => 파일시스템을 생성한다.
    ㄷ. [root@www root]# mount -t ext3 /dev/lvm/backup /backup
         => 마운트하여 사용한다.

3. LVM 관련명령어
(1) vgscan
   1) 설명: 디스크에 있는 볼륨그룹(VG:Volume Group)를 검색하여 /etc/lvmtab 파일과 lvm관련 데이타
          파일을 /etc/lvmtab.d디렉토리에 생성한다. fdisk를 이용하여 파티션을 속성을 LVM으로
          지정한 후에 이 명령을 사용한다.
   2) 사용법
     vgscan
(2) pvcreate
   1) 설명: 물리적 볼륨(PV:Physical Volume)을 생성하는 명령어이다. fdisk를 이용하여 파티션을
           분할하고 LVM 속성으로 지정한 뒤에 해당 파티션을 PV로 만들 때 사용하는 명령이다.
   2) 사용법
     pvcreate [option] 디바이스명
   3) option
     -ff : 강제로 생성할 때 쓴다.
   4) 사용예
    ㄱ. [root@www root]# pvcreate /dev/hdb1
          => /dev/hdb1을 물리적 볼륨으로 생성한다.
    ㄴ. [root@www root]# pvcreate -ff /dev/hdb2
          => /dev/hdb2를 오류 등을 무시하고 물리적 볼륨으로 생성한다.
(3) vgcreate
   1) 설명: 볼륨그룹을 생성하는 명령어로 생성된 PV를 지정한 볼륨그룹에 포함시키면서 생성한다.
   2) 사용법
     vgcreate [option] 볼륨그룹명 디바이스명 디바이스명
   3) option
     -s 사이즈[kKmMgGtT]: PE(물리적확장:Physical Extends]의 크기를 지정한다.
   4) 사용예
    ㄱ.[root@www root]# vgcreate lvm00 /dev/hda7 /dev/hdb1
        => lvm00 이라는 볼륨그룹을 생성하고 /dev/hda7, /dev/hdb1 이라는 PV를 포함시킨다.
    ㄴ.[root@www root]# vgcreate -s 16M lvm00 /dev/hda7 /dev/hdb1
         => lvm00 이라는 볼륨그룹을 생성하고, PE의 크기를 16MB로 지정하면서 /dev/hda7,
           /dev/hdb1 이라는 PV를 포함시킨다.
(4) vgdisplay
   1) 설명: 볼륨그룹의 속성과 정보를 보여주는 명령어이다.
   2) 사용법
     vgdisplay [option] [볼륨그룹명]
   3) option
     -v: 좀 더 자세히 보여주는 옵션으로 Volume Group이외에 Logical Volume과 Physical Volume도
        같이 보여준다.
   4) 사용예
    ㄱ. [root@www root]# vgdisplay
         => Volume Group의 내용을 보여준다.
    ㄴ. [root@www root]# vgdisplay -v lvm00
         => lvm이라는 볼륨그룹의 내용을 자세히 보여준다.
(5) lvcreate
   1) 설명: 볼륨그룹안에 LV(Logical Volume)을 생성하는 명령이다.
   2) 사용법
     lvcreate 옵션 볼륨그룹명
   3) option
     -L: LV의 사이즈를 지정하는 옵션으로 K(kilobytes), M(megabytes), G(gigabytes), T(terabyt
        es) 단위를 붙여 지정가능하다.
     -l: LV의 사이즈를 지정하는 옵션으로 pe의 개수로 용량을 지정한다. 참고로 보통 1pe당 4MB
        이다. (참고로 소문자 L임)
     -n: LV의 이름을 지정하는 옵션이다.
     -i: RAID 0같은 stripe 사용시 볼륨이름을 지정하는 옵션이다.
     -I stripe_size: 스트라이프되는 크기를 지정한다. 기본단위가 kilobytes이고 크기는 반드시
                    2의 배수(2^n: n값은 2부터 9)로 지정해야 한다.
     -s: 유동적인 디렉토리 백업에 유용한 snapshot LV를 생성하는 옵션이다.
   4) 사용예
    ㄱ. [root@www root]# lvcreate -L 2000M -n backup lvm00
         => lvm00이라는 볼륨그룹에 backup라는 이름으로 2Gigabytes 용량으로 LV을 생성한다.
           이 경우 /dev/lvm00/backup이라는 디바이스파일이 생성된다.
    ㄴ. [root@www root]# lvcreate -l 250 -n data lvm00
         => lvm00이라는 볼륨그룹에 data라는 이름으로 250pe(약 1GB)용량으로 LV을 생성한다.
           이 경우 /dev/lvm00/data라는 디바이스파일이 생성된다.
    ㄷ. [root@www root]# lvcreate -i 2 -L 1G -n striped_lv lvm00
         => /dev/lvm00/striped_lv 라는 디바이스파일을 생성하고 볼륨 2를 부여한다.
    ㄹ. [root@www root]# lvcreate -s -L 500M -n snap /dev/lvm00/lvmdata4
         => /dev/lvm00/lvmdata4의 snapshot LV인 /dev/lvm00/snap를 500MB 크기로 생성한다.
(6) lvscan
   1) 설명: 디스크에 있는 Logical Volume을 찾아준다.
   2) 사용법
     lvscan [option]
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     lvscan
(7) lvdisplay
   1) 설명: Logical Volume의 정보를 보여준다.
   2) 사용법
     lvdisplay [option] LV명
   3) option
     -v: 정보를 자세히 보여준다.
   4) 사용예
     [root@www root]# lvdisplay -v /dev/lvm00/data
       => /dev/lvm00/data라는 LV의 정보를 자세히 보여준다.
(8) vgextend
   1) 설명: 미리 생성된 Volume Group에 추가로 Phycical Volume을 추가할 때 사용한다.
   2) 사용법
     vgextend 볼륨그룹명 새PV명
   3) 사용예
     [root@www root]# vgextend lvm00 /dev/hdc1
       => lvm00이라는 볼륨그룹에 /dev/hdc1을 추가한다.
(9) vgreduce
   1) 설명: 볼륨그룹에 있는 Physical Volume을 삭제하는 명령이다. 물론 해당 PV의 PE가 할당되어
           있으면 제거되지 않는다.
   2) 사용법
     vgreduce [option] 볼륨그룹명 PV명
   3) option
     -a : 특별한 PV명이 없을 경우에 비어있는 PV를 모두 제거한다.
   4) 사용예
     [root@www root]# vgreduce lvm00 /dev/hdc1
       => lvm00이라는 볼륨그룹에서 /dev/hdc1을 삭제한다.
(10) lvextend
   1) 설명: Logical Volume의 용량을 확장하는 명령이다.
   2) 사용법
     lvextend 옵션 [볼륨그룹명] LV명
   3) option
     -l +사이즈: 지정한 PE수만큼 용량을 늘린다.
     -L +사이즈[kmgt]: 지정한 사이즈만큼 용량을 늘린다. 단위를 표시하지 않으면 기본 Megabytes
                      단위이다.
   4) 사용예
     [root@www root]# lvextend -L +200M /dev/lvm00/data
       => 기존의 용량에 추가로 200MB를 할당한다.
(11) lvreduce
   1) 설명: Logical Volume의 용량을 줄이는 명령이다. 늘이는 경우와는 다르게 줄이는 경우에는
           데이터가 파괴되므로 주의해야 하고, 파괴된 경우에는 다시 mkfs해서 사용해야 한다.
   2) 사용법
    lvreduce 옵션 [볼륨그룹병] LV명
   3) option
     -l -사이즈: 지정한 PE수만큼 용량을 줄인다.
     -L -사이즈: 지정한 사이즈만큼 용량을 줄인다. 단위를 표시하지 않으면 기본 단위는 Megabytes
                이고, 사이즈단위로는 kKmMgGtT를 사용할 수 있다.
   4) 사용예
     [root@www root]# lvreduce -L -500M /dev/lvm00/data
      => /dev/lvm00/data의 용량을 500MB 줄인다.
(12) lvrename
   1) 설명: 논리적 볼륨의 이름을 변경하는 명령이다.
   2) 사용법
      lvrename 원_논리적볼륨_절대경로 새로운_논리적볼륨_절대경로
      lvrename 볼륨그룹명 원_논리적볼륨명 새로운_논리적볼륨명
   3) 사용예
    ㄱ. [root@www root]# lvrename /dev/lvm00/lvmdata3 /dev/lvm00/data3
         => /dev/lvm00/lvmdata3 라는 논리적 볼륨의 이름을 /dev/lvm00/data3로 바꾼다.
    ㄴ. [root@www root]# lvrename lvm00 lvmdata3 data3
         => /dev/lvm00/lvmdata3 라는 논리적 볼륨의 이름을 /dev/lvm00/data3로 바꾼다. 결과적으
           로 바로 위의 ㄱ번 예제와 같다.
(13) lvremove
   1) 설명: 논리적 볼륨을 제거하는 명령이다. 사용중인 경우에는 제거되지 않으므로 미리 umount를
           해야 한다.
   2) 사용법
     lvremove 논리적볼륨_절대경로
   3) 사용예
     [root@www root]# lvremove /dev/lvm00/lvmdata3
      => /dev/lvm00/lvmdata3라는 논리적 볼륨을 제거한다.
(14) vgchange
   1) 설명: 볼륨그룹을 속성을 변경하는 명령으로 볼륨그룹을 사용가능여부, 최대 LV 갯수등을 변경
           할 수 있다.
   2) 사용법
     vgchange 옵션 볼륨그룹명
   3) option
     -a y|n : 볼륨그룹의 사용여부를 지정한다.
     -l 갯수: 해당 볼륨그룹에 생성할 수 있는 최대 Logical Volume수를 지정한다.
   4) 사용예
    ㄱ. [root@www root]# vgchange -a y lvm00
         => lvm00이라는 볼륨그룹을 활성화시킨다.
    ㄴ. [root@www root]# vgchange -a n lvm00
         => lvm00이라는 볼륨그룹을 비활성화시킨다. 사용중이면 중지시킬 수 없다.
    ㄷ. [root@www root]# vgchange -l 100 lvm00
         => lvm00이라는 볼륨그룹을 최대 Logical Volume수를 100개로 지정한다.
(15) vgremove
   1) 설명: 볼륨그룹을 제거하는 명령이다. 사용중이면 제거가 되지 않는 umount하고 속해있는 LV를
           전부 제거해야 한다.
   2) 사용법
     vgremove 볼륨그룹명
   3) 사용예
     [root@www root]# vgremove lvm00
      => lvm00이라는 볼륨그룹을 삭제한다.
(16) pvmove
   1) 설명: 물리적확장인 PE를 이동시키는 명령이다.
   2) 사용법
     pvmove [option] 장치명 [장치명]
   3) option
     -v: 해당 장치의 정보를 보여준다.
   4) 사용예
    ㄱ. pvmove -v /dev/hda15
         => /dev/hda15의 정보를 보여준다.
    ㄴ. pvmove /dev/hda14 /dev/hda15
         => /dev/hda15의 PE의 내용을 /dev/hda15에 그대로 이동한다.
(17) resize2fs
   1) 설명: 파일시스템의 크기를 늘이거나 줄이는 명령이다. 단, 변경하고자 하는 파티션의 크기는
           미리 늘이거나 줄여져 있어야 한다. resize2fs 명령으로 파티션의 크기까지 조절할 수
           없다.
   2) 사용법
    resize2fs [option] 장치명 [size]
   3) option
     -f: resize2fs는 파일시스템을 분석하여 크기를 늘이거나 줄이는 명령이다. 보통 이 명령을
        수행하기 위해서는 fsck작업을 통해 파일시스템 분석이 되어야 하는데 이 옵션을 사용하면
        fsck작업없이 한번에 가능하다.
   4) 사용예
     ㄱ. resize2fs /dev/lvm00/lvmdata
          => 파일시스템의 크기를 조정한다.
     ㄴ. resize2fs -f /dev/lvm00/lvmdata2
          => fsck 등의 명령없이 파일시스템을 검사하고 파일시스템의 크기를 조정한다.
(18) e2fsadm
   1) 설명: 논리적볼륨의 확장/축소와 동시에 파일시스템의 크기도 조정하는 명령이다.
           즉 lvcreate, lvreduce, resize2fs 등의 명령어 기능을 한번에 한다.
   2) 사용법
     e2fsadm option [+|-]논리적볼륨크기 논리적볼륨_절대경로
   3) option
     -l -/+사이즈: 지정한 PE수만큼 용량을 줄이거나 늘린다.
     -L -/+사이즈: 지정한 사이즈만큼 용량을 줄이거나 늘린다. 단위를 표시하지 않으면
                  기본 단위는 Megabytes이고, 사이즈단위로는 kKmMgGtT를 사용할 수 있다.
   4) 사용예
    ㄱ. [root@www root]# e2fsadm -L +100M /dev/lvm00/lvmdata2
         => /dev/lvm00/lvmdata2의 크기를 100M 확장한다.
    ㄴ. [root@www root]# e2fsadm -L -100M /dev/lvm00/lvmdata2
         => /dev/lvm00/lvmdata2의 크기를 100M 축소한다.
    ㄷ. [root@www root]# e2fsadm -L 50M /dev/lvm00/lvmdata2
         => /dev/lvm00/lvmdata2의 크기를 50M로 한다. 그러나, 기본 PE가 4MB 단위이므로 52MB로
           생성한다.

4. LVM 활용하기
(1) 두 개의 디스크를 하나의 striped LV로 만들기
   1) 개요: LVM과 RAID는 물리적인 여러 디스크를 묶어 하나의 논리적인 디스크처럼 사용할 수
          있다는 점에서 유사하다. 그러나, LVM은 손쉽게 확장이 가능하고, 관리가 용이하다는
          장점이 있고, RAID는 밀러링(Mirroring), 스트라이핑(Striping)등 다양한 형태가
          존재한다. LVM도 RAID-0 처럼 stripe 설정을 하여 여러 디스크를 하나의 디스크로
          묶어서 사용이 가능하다.
   2) 방법
    ㄱ. 120G 짜리 두개의 디스크를 PV로 생성한다.
       예) pvcreate /dev/hdb /dev/hdc
    ㄴ. VG를 생성한다.
       예) vgcreate vg0 /dev/hdb /dev/hdc
    ㄷ. LV를 생성한다.
       예) lvcreate -i 2 -l 4 -L 228G -n sripted_lv vg0
            => 228GB짜리 스트라이핑 LV인 /dev/vg0/striped_lv가 생성된다. -i는 사용되는 PV갯수
              를 지정하는 옵션이고, -I는 저장되는 스트라이프 사이즈를 4KB로 지정하는 옵션이다.
    ㄹ. 파일시스템 생성
       예) mke2fs -j /dev/vg0/striped_lv
    ㅁ. 마운트
       예) mount -t ext3 /dev/vg0/striped_lv /data
(2) 새로운 디스크로 PV 교체하기
   1) 개요: 사용중인 디스크를 용량이 더 큰 새로운 디스크로 교체한 경우 기존디스크의 내용을
           포함하여 PE를 그대로 보존하면서 교체할 수 있다.
   2) 방법
    ㄱ. 기존의 디스크가 /dev/hdc1이고, 새롭게 장착할 디스크가 /dev/hdd1이라고 할 때 먼저
       /dev/hdd1을 PV로 생성한다.
       예) pvcreate /dev/hdd1
    ㄴ. 볼륨그룹에 /dev/hdd1을 포함시킨다.
       예) vgextend lvm00 /dev/hdd1
    ㄷ. 기존의 디스크인 /dev/hdc1의 PE를 /dev/hdd1으로 옮긴다.
       예) pvmove /dev/hdc1 /dev/hdd1
    ㄹ. 기존의 디스크를 볼륨그룹에서 제거
       예) vgreduce lvm00 /dev/hdc1
   3) 참고: pvmove를 이용하면 기존의 PE대로 새로운 디스크에 기존의 디스크의 PE를 그대로 옮겨와
           데이터를 보존할 수 있다. 그러나, 새로운 디스크가 기존의 디스크보다 용량이 클 경우
           나머지 공간을 사용하려면 e2fsadm이나 lvextend, resize2fs를 사용하여 LV를 증가시켜야
           한다. 기존의 LV명을 그대로 승계하므로, 기존의 LV 장치명에 lvextend하면 된다.
(3) snapshot LV를 이용한 백업
   1) 개요: /var이나 데이터베이스관련 디렉토리를 백업할 때 문제점은 데이터의 변동이 심하다는
           것이다. 만약 관련 디렉토리를 LVM으로 구성했을 경우 snapshot LV를 만들어 기존의
           데이터를 고정한 뒤에, snapshot LV의 디바이스파일을 마운트하여 백업하면 좀 더 안전
           하게 백업할 수 있다.
   2) 방법
    ㄱ. 사용중인 LV의 snapshot LV를 생성한다.
       예) lvcreate -s -L 500M -n snap /dev/lvm00/lvmdata4
            => /dev/lvm00/snap 이라는 디바이스파일이 생성된다.
    ㄴ. 생성된 snapshot LV를 마운트한다.
       예) mount -t ext3 /dev/lvm00/snap /backup
    ㄷ. 해당 디렉토리를 백업한다.
       예) tar zcvf backup.tar.gz /backup
    ㄹ. 백업한 후 해당 장치를 제거한다.
       예) umount /backup          또는 umount /dev/lvm00/snap
           lvremove /dev/lvm00/snap
   3) 참고: 생성한 snapshot LV는 사용후에 제거하도록 한다. 그냥 두면 약간의 성능 저하를 유발
           하므로 꼭 제거하도록 한다.

5. LVM 운영과 오류분석
(1) 물리적 볼륨(PV)생성과 오류
   1) 개요: PV를 생성하기 위해 pvcreate 실행하면 간혹 파티션 정보로 인하여 오류가 발생하는
           경우가 있다. 특히 다른 용도로 사용했던 파티션을 fdisk를 이용하여 파티션을 지우고
           다시 생성하여도 계속 오류가 발생하는 경우가 있다. 이 경우 pvcreate 명령에서 -ff
           옵션을 사용하되지만, pvcreate 전에 dd명령으로 파티션 정보를 깨끗히 지워주는 것이
           좋다.
   2) 방법
    ㄱ. [root@www root]# dd if=/dev/zero of=/dev/hda14
    ㄴ. [root@www root]# pvcreate /dev/hda14
(2) 논리적 볼륨(LV)확장과 크기
   1) 개요: 1GB를 할당하여 /dev/lvm00/lvmdata라는 LV를 생성하고 /lvmdata라는 디렉토리로 마운트
           하여 사용하였다. 공간이 부족하여 lvextend로 1GB를 추가로 할당하여 lvscan 명령으로
           확인하면 증가되었다고 나오지만 'df -h' 등의 명령으로 살펴보면 실제사용공간은 늘어
           나지 않음을 알 수 있다. 이 때는 파일시스템 관련명령어인 resize2fs로 크기를 재조정
           해야 한다.
   2) 방법
    ㄱ. umount /lvmdata
         => 사용중인 /lvmdata를 중지시킨다.
    ㄴ. lvextend -L +1G /dev/lvm00/lvmdata
         => 논리적볼륨을 1GB 증가시킨다. 물론 lvextend 명령은 파일시스템을 조작하는 것이 아니
           므로 umount하지 않아도 된다.
    ㄷ. e2fsck -f /dev/lvm00/lvmdata
         => 파일시스템을 검사한다.
    ㄹ. resize2fs /dev/lvm00/lvmdata
         => 변경된 크기로 재조정한다.
           참고로 ㄷ,ㄹ작업을 한번에 resize2fs -f /dev/lvm00/lvmdata 라고 해도 된다.
    ㅁ. mount -t ext3 /dev/lvm00/lvmdata /lvmdata
         => 다시 마운트한다.
    ㅂ. df -h
         => 용량이 변경되었는지 확인한다.
   3) 참고
    ㄱ. 설명: LV확장을 하는 lvextend와 파일시스템을 확장하는 resize2fs 두 명령을 하나의 명령
             으로 가능하다. e2fsadm 명령을 이용하면 된다. 물론 e2fsadm명령을 사용하기 전에
             umount해야 한다.
   ㄴ. 사용예
      [root@linux224 root]# e2fsadm -L +1G /dev/lvm00/lvmdata
(3) lvm정보의 확인: lvm 상태의 확인 /proc/lvm 디렉토리에서도 가능하다. 이 디렉토리 안쪽에
                    VGs라는 디렉토리가 생성되고, 그 안에 LVs, PVs 디렉토리에서 각각 논리적
                    볼륨과 물리적볼륨에 대한 생성내역을 빈파일로 같이 생성하여 목록 등을
                    확인할 수 있다.
(4) LVM 구성시 실패후 재구성하기
   1) 개요: LVM 구성시 VG생성하기 위해 vgcreate하면 오류가 나는 경우가 있는데, 일단 lvm이라
           는 이름으로 VG생성시 레드햇 리눅스버전에 따라 않되는 경우가 있으므로 lvm0등으로
           생성한다. 또한, 처음 생성 실패후 같은 VG이름으로 재시도하는 경우에는 기존의 정보
           를 삭제해야 가능하다.
   2) 방법
    ㄱ. 명령어를 이용하는 방법
        예) vgremove lvm0
    ㄴ. 수동으로 삭제하는 경우
      a. /etc/lvmtab 삭제
       예) rm /etc/lvmtab
      b. /etc/lvmtab.d 디렉토리 삭제
       예) rm -rf /etc/lvmtab.d
      c. /etc/lvmconf 파일의 내용삭제
       예) rf -rf /etc/lvmconf/*
      d. 생성된 디바이스 삭제: vgcreate 명령을 이용하여 볼륨그룹을 생성하면 '/dev/볼륨그룹명'
                              디렉토리에 관련 디바이스가 생성된다. 이 디바이스 파일을 삭제하면
                              된다.

예) rm -rf /dev/lvm0

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31