LVM

Ja L·2023년 10월 17일
0

[OS] Linux

목록 보기
4/7

LVM

  • LVM은 Logical Volume Manager로 저장장치들을 좀 더 효율적이고 유연하게 관리할 수 있는 커널의 부분과 프로그램을 뜻합니다.
  • LVM은 디스크 공간을 논리적 레벨에서 관리하며, 논리적 공간과 물리적 공간을 연결함으로써 비연속적인 공간에 데이터를 저장하고, 다수의 디스크에 걸쳐서 복제하고, 동적으로 공간을 늘리며 하드 디스크를 관리합니다.
  • 파티션은 한 번 구성해놓으면 바꾸기가 쉽지 않습니다.
  • LVM을 쓰면 간단하게 저장공간을 확장, 축소할 수 있는데 이것이 큰 장점이다.

PV, VG, LV

PV(Physical Volume), VG(Volume Group), LV(Logical Volume)

  • PV: Linux 환경에서 연결된 하드디스크의 실제 저장된 할당 단위
  • VG: 여러 하드디스크를 묶어 가상 디스크로 만듬
  • LV: VG에서 받은 파티션을 나누어 할당

하나 이상의 PV가 모여 VG를 이루고, VG를 가상으로 나누어 할당하면 LV가 된다.

PV (Physical Volume)

LVM을 사용하려면 가장 먼저 물리적 저장 장치를(조금 더 정확히는, 파티션(Partition)을) PV(Physical Volume)로 초기화해야 한다. 물리적 저장 장치를 PV로 초기화하면 LVM은 물리적 저장 장치를 PE(Physical Extent)라 불리는, 일정한 크기(4MB)의 작은 저장 공간들로 쪼갠다.

VG (Volume Group)

VG(Volume Group)은 한 개 혹은 여러 개의 PV들의 집합을 의미한다. VG를 사용함으로서 개별 물리적 저장 장치는 숨겨지고, PE들의 풀(pool)인 VG만 보이게 되는 것이다. LVM은 필요한 만큼 필요한 구성의 PE들을 적당히 가져가 (아래 후술할) LV를 만들게 된다.

LV (Logical volume)

사용자가 실제로 다룰 수 있는, 눈에 보이는 최종적인 저장 장치를 LV(Logical Volume)라 한다. 사용자는 이렇게 만들어진 LV를 (마치 일반 저장 장치를 사용할 때처럼) 마운트(mount) 해 사용하면 된다. PV → VG → LV로 이어지는 과정 속에서 실제 물리적 장치(PV)는 숨겨지고, 사용자는 추상화된 논리적 장치(LV)만을 다룰 수 있게 되는 것이다.

LV는 LE(Logical Extent)라 불리는, 일정한 크기(4MB)의 작은 저장 공간들로 구성되어 있다.
LE와 PE는 같은 크기를 가지고, 서로 매핑된다. LE와 PE를 어떻게 매핑하느냐에 따라 다양한 기능을 사용할 수 있다. 예를 들어 두 개의 PE를 한 LE에 매핑한다면 미러링(mirroring)을 달성할 수 있다.
여러 개의 PV의 PE들에 LE를 번갈아가며 매핑시키면 스트라이핑(stripping)을 달성할 수 있다.


PV 명령어

  1. pvcreate
    pv 생성
    pvcreate /dev/sda1
  1. pvremove
    pv 삭제
    pvremove /dev/sda1
  1. pvchange
    pv 속성 변경
    pvchange -x y /dev/sda1
    pvchange -x n /dev/sda1
  1. pvs
    pv 정보 출력
  1. pvdisplay
    pv 속성 출력
  1. pvscan
    pv의 모든 디스크를 스캔

VG 명령어

cf) 'vg이름'에 지정하고자 하는 이름 지정

  1. vgcreate
    vg 생성
    vgcreate vg이름 /dev/sda1 /dev/sdb1
  1. vgremove
    vg 삭제
    vgremove vg이름
  1. vgreduce
    vg 안의 pv 삭제
    vgreduce vg이름 /dev/sda1
  1. vgextend
    vg 확장 새로운 하드디스크 확장
    vgextend vg이름 /dev/sdc1
  1. vgs
    pv 정보 출력

LV 명령어 (중요)

  1. lvcreate
    lv 생성
    -L: 사이즈 지정 [K,M,G,T]
    -n: lv이름 지정
    lvcreate -L 300G -n lv이름 vg이름
    lvcreate -l 50%FREE -n lv이름 vg이름 <-- 남은 용량 중 50% 사용해서 할당

  2. lvremove
    lv 삭제
    lvremove lv이름

  3. lvreduce
    lv 용량 축소
    lvreduce -L 100G /dev/vg이름/lv이름 <-- 해당 lv 100G 축소

  4. lvextend
    lv 용량 확장
    -L: 사이즈 지정 [K,M,G,T]
    -n: lv이름 지정
    lvextend -L +100G /dev/vg이름/lv이름 <-- 해당 lv +100G 확장
    lvextend -L 150G /dev/vg이름/lv이름 <-- 해당 lv +150G로 변경
    lvextend -l +100%FREE /dev/vg이름/lv이름 <-- 남은용량 lv에 모두 할당

  5. lvdisplay
    lv 속성 출력

  6. lvs

  7. lvscan
    lv스캔 출력

참고링크

https://yoon1seok.tistory.com/47
https://heekangpark.github.io/linux/lvm

profile
DB Engineer

0개의 댓글