RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제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)
Blah.. blah.. (5)
My Advanced Linux (73)
RedHat Knowledge (10)
Advanced Linux (47)
Virtualization (7)
HA clustering (2)
Bash shell scripts (6)
Learning Linux (96)
Fundamental (41)
AdminCourse (32)
Security (23)
OperatingSystem (5)
AIX (2)
HPUX (3)
Databases (4)
Oralce (3)
Mysql (1)
OpenSource (1)
Tips! (1)
«   2025/06   »
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