ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [리눅스] LVM stripe, mirror
    서버/리눅스 2017. 4. 13. 21:48

    2) LVM stripe구성

    Stripe구성은 raid의 stripe구성과는 다르다.

    Raid의 stripe구성은 전체 디스크를 똑같은 용량으로 나누어서 저장해 [ 빠른 속도 ] 라는 이점이 있었지만

    LVM의 stripe구성은 stripesize를 지정 후 디스크마다 분산저장을 해 낮은 용량일 경우 이점이 사라진다.

    ex) stripesize : 68kb일 경우 A디스크에 68kb를 저장 그 다음 B디스크에 68kb저장.. 다시 A디스크에 ..모든 파일에 대한용량을 

    저장할때까지 반복한다.


    #실습

    준비된 시스템

    -LVM 파티션 /dev/sdc1 /dev/sdd1

    -PV : /dev/sdc1 /dev/sdd1

    -VG : stripe ( /dev/sdc1 /dev/sdd1 )


    리눅스 소스 & 설명

    * LV 생성

    #>lvcreate -i <dev_num> -L <size> -n <lv_name> <vg_name> ....

           또는 -l

    option -i    가 추가되었다. ( 없으면 linear로 생성 )

    VG에서 stripe로 구성할 device의 갯수를 작성후 맨 뒤에 장치들에 대한 포함될 아규먼트들을 작성한다.


    #>lvcreate -i 2 -L 1.5G -n lv01 stripe /dev/sdc1 /dev/sdd1

    >>이때 자동으로 stripesize가 정해졌다.


    *결과

    : Logical Volume Name : Volume Group이 다른경우 이름이 같아도 상관없다.


    파일시스템과 마운트까지 해준다.

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

    #>mkdir -p /lvm/stripe

    #>mount /dev/mapper/stripe-lv01 /lvm/stripe

    3) LVM mirror구성

    miroor 구성 같은경우 raid와 마찬가지로 lv로 만들어진 그룹갯수가 n일경우 1개의 원본장치와 n-1개의 사본장치로 구성된다. 

    즉 lv생성시 3개의 장치를 사용한다고 하면 2개의 사본장치가 생기고

        2개의 장치를 사용한다고 하면 1개의 사본장치가 생긴다.


    #실습

    준비된 시스템

    디스크 2장에 대한 파티션 ( hexC : 8e )

    /dev/sdb (1G) >> /dev/sdb1

    /dev/sdc (1G) >> /dev/sdc1

    /dev/sdd (1G) >> /dev/sdd1 : 나중에 복구시 쓸 디스크


    디스크에 대한 PV


    VG ( 위 두장의 디스크에 대한 볼륨그룹 ) : miroor ( 2G )


    리눅스 소스 & 설명

    LV 생성

    #>lvcreate -l|-L <size> -m <copy_num> -n <lv_name> <vg_name> <pv_name> ...

    옵션 -m 의 아규먼트에 생성될 미러구성의 사본장치 갯수를 적어준다.

    >> mirror구성에서는 size는 하나의 장치에대한 size다. : 미러 구성되는 갯수만큼 곱해줘야 한다.

    ex) 3개의 미러구성 = 1개의 원본장치 3개의 미러구성 = size * 4 만큼의 용량을 할당받는다.


    #>lvcreate -L  -m 1 -n lv01 miroor /dev/sdb1 /dev/sdc1


    #결과

    >> lvcreate 명령어를 통하여 만들어준 lv01은 500m의 사이즈를 가지고 있지만 사실 복사본에대한 할당까지 받은 것이여서

    miroor그룹은 1G가 줄어있다.


    >> 여기서 보면 mirror 구성은 Cpy%Sync : 동기화가 100%되고 있다는 것을 보여준다.


    파일시스템과 마운트까지 해준다.

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

    #>mkdir -p /lvm/miroor

    #>mount /dev/mapper/miroor-lv01 /lvm/miroor


    #강제고장

    #>cp /etc/services /lvm/miroor

    #>dd if=/dev/zero of=/dev/sdb1 count=10

    #>reboot

    #>lvscan

    #>lvchange --activate a /dev/mapper/miroor-lv01

    #>mount /dev/mapper/miroor-lv01 /lvm/miroor/

    #파일이 살아있는 것을 확인했다.


    0) dd명령어는 디바이스에 강제로 데이터를 작성하는 방법이다.

    1) lvscan명령어는 lv를 더 자세하게 보는 명령어이다.

    2) lvchange명령어는 비활성화된 장치를 활성화 시킬 수 있다.

    3) 비활성화시 mount가 안되므로 활성화 시킨후 mount시켜준다.

    4) 강제로 활성화 시킨 lv로 인해 pv와 vg에서는 에러메세지와 고장난 디스크에 대한 용량까지 표시하고 있다.


    #복구

    *장치제거

    #>vgreduce --removemissing --force <vg_name>

    #>vgreduce --removemissing --force miroor

    >> 장치제거를 완료하면 고장난 장치는 표시하지 않고 에러메세지 또한 사라진다.

    다시 정상작동 되는 lv는 mirror구성장치인 사본장치들이 없으므로 linear장치로 동작하게 된다.

    이렇게되면 장치를 추가 (확장) 해서 다시 미러 구성으로 동작시켜준다.


    *확장

    #>vgextend miroor /dev/sdd1

    #>lvconvert -m 0 /dev/miroor/lv01

    #>lvconvert -m 1 /dev/miroor/lv01 /dev/sdd1

    >> 확장을 해도 아직 linear상태로 동작하는 LV를 mirror구성으로 동작시켜주기위해 lvconvert 명령어를 사용한다.

    /dev/mapper/ ~ 링크파일을 사용하는게 아니라 /dev/miroor/ ~ 이 형식으로 작성해줘야 한다.

    >> path가 아닌 인자값으로 넘겨주는 것이다 /dev/볼륨그룹/로지컬그룹으로 생각하기에 형식에 맞는 링크파일을 넘겨준다.

    또한 아직 자신이 mirror구성인줄 아는 LV에 대해 linear라는 것을 재설정한다.


    #file 명령어로 확인

    file명령어 같은 경우 링크파일을 확인하면 원본이름을 반환한다.

    지금 우리가 만든 lv들은 전부 symbolic link file이다.

    따라서 #> file 명령어로 확인하는 경우 원본을 출력해준다.


    댓글

Designed by Tistory.