데이터베이스/데이터베이스

[데이터베이스] LVM(Logical Volume Manager) 정리

benjykim 2021. 5. 10. 08:00
반응형

LVM(Logical Volume Manager)

LVM이란

Logical Volume을 효율적이고 유연하게 관리하기 위한 커널의 한 부분이자 프로그램이다. 기존에는 파일시스템이 블록 장치에 직접 접근해서 읽고/쓰기를 했다면, LVM을 사용하면 파일 시스템이 LVM이 만든 가상의 블록 장치에 읽고/쓰기를 하게 된다.

LVM 용어정리 및 설명

PV(Physical Volume)

LVM에서 블록 장치를 사용하려면 PV로 초기화 해야 한다. 즉, 블록 장치 전체 또는 그 블록 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환한 것이다. 예를 들어, /dev/sda1, /dev/sda2들을 LVM으로 쓰기 위해 PV라는 형식으로 변환한 것이다. PV는 일정한 크기의 PE(Physical Extent)들로 구성이 된다.

  • 블록장치: 블록 단위로 접근하는 스토리지
    • 예) 대용량 하드 디스크

PE(Physical Extent)

PV를 구성하는 일정한 크기의 블록으로 LVM2에서의 기본 크기는 4MB이다. LV(Logical Volume)의 LE(Logical Extent)들과 1:1로 맵핑된다. 그렇기에 항상 PE와 LE의 크기는 동일하다. 각각의 PV들은 동일한 크기의 PE들로 구성된다.

VG(Volume Group)

PV들의 집합으로 LV를 할당할 수 있는 공간이다. 즉, PV들로 VG를 생성하는 과정은 LV로 할당할 수 있는 디스크 공간의 풀(Pool)로 생성하는 것을 보면 된다. 사용자는 VG안에서 원하는대로 공간을 쪼개서 LV로 만들 수 있다.

LV(Logical Volume)

사용자가 최종적으로 다루게되는 논리적인 스토리지이다. LV를 구성하는 LE들은 PV의 PE들과 맵핑하면서 존재하게 된다.

LE(Logical Extent)

LV를 구성하는 일정한 크기의 블록으로 LVM2에서 기본 크기는 4MB이다. 항상 PE와 LE의 크기는 동일하다.


추가적인 내용

맵핑 방식에 따른 LV

맵핑되는 방식에 따라 총 3가지 유형이 있다.

  1. 선형(Linear) LV
  2. 스트라이프된(Striped) LV
  3. 미러(Mirrored) LV

선형(Linear) LV

하나의 LV로 PV들을 모으는 방법이다. 예를 들어, 두 개의 60GB 디스크(PV들을 의미)를 가지고 120GB의 LV를 만드는 방식이다.


LV만을 사용하는 사용자 입장에서는 120GB의 하나의 장치(LV)만 있게 된다. 물론 LV1 - 50GB, LV2 - 70GB 의 형태로도 나눌 수 있다.

스트라이프된(Striped) LV

LV에 데이터를 기록하게 되면, 파일 시스템은 PV에 데이터를 기록하게 되는데(PE와 LE 맵핑된대로) 스트라이트된 LV를 생성해서 데이터가 PV에 기록되는 방식을 바꿀 수 있다. 대량의 순차적 읽기/쓰기 작업의 경우 효율을 높일 수 있는 방법이다.


스트라이프 방식은 Round-Round 방식으로 미리 지정된 PV들에 데이터를 분산 기록해서 성능을 높인다.

미러(Mirrored) LV

이름 그대로 다른 블록 장치에 저장된 데이터의 복사본을 저장하는 방식이다. 데이터가 하나의 PV에 저장될 때, 이를 미러하고 있는 PV에 동일한 데이터가 저장된다. 이를 통해 장치에 장애가 발생할 경우 데이터를 보호할 수 있게 된다.


하나의 장치에 장애가 발생하게 되면, 선형(Linear)으로 저장되어있기에 다른 장치에서 쉽게 접근이 가능해진다. 어떤 부분이 미러를 써서 동기화되었는지에 대한 로그를 디스크에 저장한다.


LVM 실습 과정 정리

  1. fdisk를 이용해 저장장치에 파티션을 설정한다(파티션 타입은 LVM 타입으로)
    • fdisk -l: 새로 추가한 하드디스크 인식되는지 확인
  2. pvcreate를 이용해 1번에서 설정한 파티션으로 PV를 생성한다.
    • pvscan: 현재 존재하는 PV 목록 확인
  3. vgcreate으로 2번에서 만든 PV들을 묶어 VG를 생성한다.
    • vgscan: 현재 존재하는 VG 목록 확인
  4. vgdisplay로 VG가 제대로 생성됐는지 확인한다.
  5. lvcreate로 LV를 사용자가 원하는대로 생성한다.
    • lvscan: 현재 존재하는 LV 목록 확인
  6. mkfs를 이용해 5번에서 생성한 LV에 파일시스템 포맷을 한다.
  7. 부팅 시 자동으로 저장장치를 읽도록 /etc/fstab에 기술한다.

반응형