ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [리눅스] LVM ( 가상화기법 )
    서버/리눅스 2017. 4. 12. 20:39


    LVM ( : Logical Volume Manager )가상화 기법

    장치를 접근하고 있는중에(사용) 추가가 가능하다. >> raid의 단점보완.

    >> 대신 안정성이 떨어진다.


    기본 LVM ( #>fdisk /dev/sda ) : 

    리눅스의 기본파티션으로 설정된 sda의 주파티션또한 Linux LVM이다.


    LVM 3가지 구성 단계

    #1 ) PV ( Phygical Volume )

    LVM을 구성하기전에 물리적인 단위( 볼륨 )으로 변환한다.


    #2 ) VG ( Volume Group )

    PV로 변환된 볼륨들을 논리적인 단위 ( 볼륨그룹 )으로 묶음


    #3 ) LV ( Logical Volume )

    볼륨 그룹에서 원하는 만큼 디스크 공간을 재할당 ( 파티션과 같은 개념 )

    >>실제 사용하는 볼륨


    디스크 장치    >>    PV    >                >    LV

    디스크 장치    >>    PV    >>    VG    >>    LV

    디스크 장치    >>    PV    >


    구성

    -LINUX

    -추가한 디스크

    -파일시스템, 마운트에 관한 이론


    실습

    #1) LVM linear 구성

    #>fdisk /dev/sdb

    Command (m for help ) : n

    >> All Enter

    Command (m for help ) : t

    Select partition 1 ( 파티션이 하나이므로 자동선택 아닌분들은 선택해주셔야 합니다. )

    Hex code (type L to list all codes ) : 8e

    >>제공되는 LVM의 시스템 ID [ 8e ]를 기재한다.

    Command (m for help ) : w

    #>fdisk /dev/sdc

    위와 동일하게 진행한다. 


    #PV 생성

    #>pvcreate <dev_name>

    #>pvcreate /dev/sdb1

    #>pvcreate /dev/sdc1

    >>Physical volume " 경로 " successfully created. 라고 나오면 [ 성공 ]

    >>찾지 못하는 에러가 나오면 디스크를 뺏다 꽂거나 싹 밀어 주면된다. [ 실패 ]

     

    PV확인

    #>pvs

    PV : 장치이름

    VG : 소속된 VG

    PSIZE : 총 용량

    PFree : 사용 가능한 용량


    #VG 생성

    #>vgcreate <vg_name> <pv_name1> <pv_name2 .....>

    #>vgcreate korea /dev/sdb1 /dev/sdc1

    첫번째 아규먼트 : 생성될 볼륨그룹 ( korea )

    나머지 아규먼트 : PV


    VG확인

    #>pvs

    #PV : LV에 속해있는 PV갯수

    #LV : 나누어진 LV

    VISZE : 총용량

    VFree : 사용 가능한 용량


    #LV 생성

    #>lvcreate -L <size> -n <lv_name> <vg_name>

    #>lvcreate -L 500M -n lv01 korea

    option 

    -L <size> : 컴퓨터 용량 단위 ( bB sS kK mM gG tT pP eE ...)

    -n <name> : 이름지정

    -l <size[FREE]> : %로 사이즈 지정 ( vg의 남는공간의 %로 계산해서 사용 )    ex ) -l 100%FREE

    더많은 명령어는 

    #>lvcreate --help 를 참조하거나 매뉴얼을 참조한다.


    LV확인

    #>lvs


    재확인


    확인해본결과 첫번째 디스크에서 할당되었다.

    lv의 기본 구성은 [ linear ] 구성인가? 


     

    첫번쨰 디스크의 용량이 초과되어 다음디스크로 쓰겠다는 메세지와함께 2번째 디스크의 용량이 준것을 알 수 있었다.


    #>fdiks -l로 확인해보면

    Disk /dev/mapper/korea-lv06    이 만들어진것을 볼 수 있다.

    mapper디렉터리안에 볼륨그룹 korea에 lv06 논리볼륨이 만들어 진것을 볼수 있다.


    >> Raid의 [ linear ] 개념과는 조금 달랐다.

    파티션의 개념이 추가되서 우선순위 개념이 추가되었다.

    즉 한번에 할당이 가능한 디스크를 먼저 찾고 없는 경우 2개의 디스크를 Logical 볼륨으로 적용했다.


    #파일시스템과 마운트 적용

    #>mkfs -t ext4 /dev/mapper/korea-lv01

    #>mkdir -p /lvm/linear1

    #>mount /dev/mapper/korea-lv01 /lvm/linear1

    마운트까지 완료하면 완벽하게 파일을 작성할 수 있는 장치가 되었다

    /lvm/linear1 에 저장한다고 하면 > /dev/mapper/korea-lv01 > /dev/sdb1에 저장이된다.

    lv06.은 마운트해주면 /dev/sdb1과 /dev/sdc1에 저장되는 형식이다.


    #제거

    #>umount /dev/mapper/korea-lv01

    #>lvremove /dev/mapper/korea-lv01    

    [y/n] : y

    #>vgremove korea

    #>pvremove /dev/sdb1

    /dev/sdc1

    마운트해제 → LV제거 → VG제거 → PV제거 ( 만들어진것의 역순으로 진행한다. )

    제거 대상을 모를 경우 각각 lvs, vgs, pvs를 통해 확인한다.

    LV를 제거하지않고 VG를 바로지운경우 VG에 속한 LV에 대한 선택을 물어본다.

    앞에서 언급했듯이 LV는 동일한 이름이 존재할 수 있기에 제거 시 경로까지 작성해줘야한다.

    하지만 VG는 단순히 이름으로써 동일한 이름이 존재할 수 없다. 그래서 볼륨그룹이름으로 제거가 가능하다. #모든 논리볼륨 지우고 삭제



    #2) LVM 확장 & 축소

    준비된 시스템

    미리 만들어놓은 파티션 /dev/sdb1 /dev/sdc1

    PV : /dev/sdb1 /dev/sdc1

    VG : 위에 2개의 PV로 이뤄진 볼륨그룹 linear

    LV : 100%FREE로 만들어진 linear그룹에서 나온 lv01

    파일시스템 : ext4

    마운트 : /lvm/linear1





    확장 

    상황 : 1G두개의 PV를 가지고 VG를 생성해 모든 용량 (100%FREE)를 사용했다. 따라서 VG에는 남는 용량이 없어서  

    >>새로운 PV를 생성

    #>fdisk /dev/sdd    [세부사항은 위에 참조]

    #>pvcreate /dev/sdd1


    >> VG공간 추가

    #>vgextend <vg_name> <pv_name>

    #>vgextend linear /dev/sdd1

    : 만약 LV확장시 VG에 용량이 남아있다면 여기까지의 과정은 생략이다.

    >> LV용량 추가.

    #>lvextend -L +<size> <lv_dev_name>
        #>lvextend -l 100%FREE /dev/mapper/linear-lv01

    -l , -L ( size 변경옵션 ) 에서 아규먼트에 + 기호를 붙여준다. ex) -L +500M -l +100%FREE

    또한 lv이름은 경로까지 지정해서 표시한다.

    >> mirror상태일때는 <lv_dev_name> 옆 아규먼트에 <pv_name>을 기재한다.


    >>파일시스템 반영 ( 이때는 새로 적용시키는게 아니라 변경되었다고 시스템에 반영하는 것뿐이다.)

    #>resize2fs <dev_name>

    #>resize2fs /dev/mapper/linear-lv01


    확인결과


    축소

    상황 : LV에서 남는 용량이 디스크만큼의 크기면 디스크를 제거 하기 위함이다.

    >>LV 감소

    #>lvreduce -L -<size> <lv_dev_name>

    #>lvreduce -L -1020M /dev/mapper/linear-lv01

    [y/n] : y

    : LV에 적용된 디스크의 용량을 정확히 안다면 디스크를 빼올 수 있다. 1G = 1020m였던것을 볼 수 있었다.

     따라서 추가된 역순으로 빠질것을 알 수 있기에 /dev/sdd1파티션을 빼본다.

    >> 감소시킨경우 파일시스템을 적용하려면 장치를 해제후 적용해야 한다.

    : 이말은 파일시스템이 재적용되므로 장치안에 있는 파일을 다른 장치로 백업시켜놓고 적용해야 한다는 것이다.

    #>umount /dev/mapper/linear-lv01

    #>mkfs -t ext4 /dev/mapper/linear-lv01

    #>mount /dev/mapper/linear-lv01 lvm/linear1



    !!! 이떄 create나 extend 를 사용해서 추가할때는 VG의 남은용량의 퍼센트게이지로 추가하였는데 

    줄일때는 -l %옵션은 어떤 용량의 %로 계산하는것일까?

    답은 FREE에 있다

    지금은 100%로 한번더 줄인 모양이다.

    앞에서 -L로 1020으로 줄였었다. 그래서 VFREE값이 1020m로 바꼇을텐데, 그 FREE값의 100%값을 적용시켜서 감소되었다.

    또 한번 해보겠다

    지금은 1020m + 1020m = 1.99G가 되었으니 FREE값의 25%만 줄이면 500m를 줄일 수 있을것이다.

    따러서 %은 VFREE의 FREE값을 적용한다는 것만 기억하고 처음은 -L인 값으로 줄여야한다.



    >>VG감소

    : 볼륨그룹에서 PV를 빼는것이다.

    #>vgreduce <vg_name> <pv_name>

    #>vgreduce linear /dev/sdd1

    : VG를 감소할때는 pvs로 먼저 사용하지 않는 디스크를 확인해야한다.

    /dev/sdc1와 /dev/sdd1의 용량이 가득차있다는것을 확인했다.


    이렇게 사용하지 않는 PV를 VG에서 제거한 후 다른 VG를 만들어주거나 완전히 디스크를 제거해도 된다.


    Stripe 구성과 mirror 구성은 다음포스터에서



    '서버 > 리눅스' 카테고리의 다른 글

    [리눅스] 기본적인 서버 구성  (0) 2017.04.14
    [리눅스] LVM stripe, mirror  (0) 2017.04.13
    [리눅스] RAID 2  (0) 2017.04.11
    [리눅스] RAID ( 명령어 : mdadm )  (0) 2017.04.10
    [리눅스] 네트워크 설정(정리)  (0) 2017.04.07

    댓글

Designed by Tistory.