[스토리지] LVM(Logical Volume Management) 기본 아키텍처
본문 바로가기
IT 이야기/공부합시다

[스토리지] LVM(Logical Volume Management) 기본 아키텍처

by 찬찬이 아빠 2023. 6. 16.
반응형

개인적으로 스토리지 공부를 위해 정리한 내용들입니다.

함께 공부하자는 취지로 내용을 공유합니다.


1. LVM(Logical Volume Management)이란?

  • 파일시스템과 물리 저장소 사이를 직접 연결하는 불편함을 제거하기 위한 기능
  • Linux 환경에서 파일 시스템과 물리 저장소 사이의 추상 레이어를 제공 → 볼륨을 손쉽고 유연하게 관리할 수 있는 기능을 제공
  • LVM 구분
    • PV(Physical Volume)
    • VG(Volume Group)
    • LV(Logical Volume) 

2. PV (Physical Volume)

PV (Physical Volume)

  • PV는 실제 물리 디스크를 LVM 용도로 초기화된 물리 디스크 또는 파티션
    • ex) /dev/sda, /dev/sda1
    • ex) KVM 환경에서 /dev/vda
  • PV는 PE (Physical Extent)라는 단위로 나뉨
    • PE 기본값 : 4MB
    • PE 값 : 볼륨 그룹을 생성할 때 지정
    • 데이터의 크기가 큰 파일을 자주 사용하는 경우 : 큰 사이즈의 extent가 적합
    • 데이터의 크기가 작은 파일을 자주 사용하는 경우 : 작은 사이즈의 extent로 설정하는 것이 좋음
  • PV에서는 LVM Label과 LVM Metadata를 포함
    • LVM Label : 물리 장치를 식별하고 순서대로 나열, 물리 볼륨의 UUID를 포함, 블록 장치 크기를 바이트 단위로 저장
    • LVM Metadata : 장치에 저장될 위치를 기록, LVM 볼륨 그룹에 대한 구성 정보를 포함, ASCII로 저장
  • PV 명령어
    • pvscan : PV에 대한 디스크를 확인 후 이를 출력
    • pvcreate : 물리 디스크 를 PV로 초기화하기 위해 사용
    • pvdisplay : PV에 대한 세부 정보를 출력
    • pvremove : PV를 제거하기 위해 사용

3. VG (Volume Group)

VG (Volume Group)

  • 하나 이상의 PV를 가지고 만든 물리적 볼륨의 집합
  • PV는 단 하나의 VG에만 포함될 수 있음
  • VG를 만든다는 건 논리적 볼륨을 할당할 수 있는 디스크 공간 풀 생성하는 것
  • VG는 LE(Logical Extent)를 PE(Physical Extent)로 맵핑하는 역할

4. LV (Logical Volume)

  • 사용자가 직접 다루는 논리적인 볼륨 공간
    • Windows에서 제공하는 C드라이브, D드라이브를 Linux의 LV로 생각하시면 됨
  • LV에는 여러 종류가 존재하고 각각의 LV는 장단점이 존재함
  • PV를 PE로 나누듯이 LV는 LE(Logical Extent)로 나누어져 있음
  • LE(Logical Extent)의 사이즈는 PE(Physical Extent)와 동일하게 설정
  • 각 LE들은 LV마다 0번부터 시작하고 PE에 맵핑됨

(1) linear volume

  • VG에 할당된 PV를 하나의 LV로 모으거나 다수의 LV로 나누어 사용
  • 가장 기본적인 LV로 특별한 장점도 단점도 없음

(2) RAID volume

  • RAID 0, 1, 4, 5, 6, 10 을 지원
  • MD 커널 드라이버를 활용
  • 스냅샷 기능을 사용할 수 있음

(3) striped volume [raid0]

striped volume [raid0]

  • 데이터를 기록할 때 라운드-라운드 방식으로 지정된 물리 볼륨에 데이터를 작성하여 성능을 향상시킴
  • I/O를 병렬로 실행할 수 있는 장점이 있음
  • 상황에 따라 Linear volume에 가까운 성능 향상을 기대할 수 있음
  • 단, striped 방식의 특성상 최소 2개 이상의 물리 볼륨이 필요

(4) mirror volume [raid1]

mirror volume [raid1]

  • 데이터의 안정성을 위하여 데이터를 다른 장치에 복사본 저장
  • 만약 한쪽의 장치에 장애가 발생할 경우 논리 볼륨은 다른 한쪽으로 선형 볼륨이 되어 액세스가 가능

(5) thin volume

thin volume
thin volume

  • Thin porivisioning 기술을 이용한 볼륨
  • 가상 풀을 사용하여 효율적인 스토리지 공간 할당을 하기 때문에 사용 가능한 범위보다 더 큰 논리 볼륨을 생성할 수 있음
  • 기존의 다른 LV들은 PV를 VG로 묶고 VG에 LV를 만들면 LE가 각각의 PE에 맵핑되어 실제로 사용하지 않고 있더라도 다른 LV로 생성할 수 없음
  • 하지만 Thin provision을 사용한다면 Thin Pool이라는 가상 풀을 만들어서 VG에는 Thin Pool만큼만 차지하고 각각의 LV들은 실제 사용량 만큼만 공간을 차지하게 됨
  • Thin LV들은 다른 논리 볼륨과 다르게 Thin pool이라는 가상풀을 사용하기 때문에 PE에 직접 맵핑되지 않고 Virtual Extent라는 가상 extent에 맵핑됨
  • Thin provision의 중요한 점은 Thin Pool이 실제로 꽉 차기 전에 사용자가 적절히 확장을 해주어야 한다는 점

5. Snapshot

  • 데이터를 백업하는 방법 중 하나
  • 용량이 큰 데이터를 완전히 백업할 때 많은 시간이 필요하기 때문에 스냅샷 생성을 기준으로 데이터를 그대로 유지시키는 방법
  • 기존의 데이터는 읽기 전용 복사본으로 고정시키고 프로그램에서는 데이터를 계속 쓸 수 있도록 해주는 방법

(1) COW [Copy-on-Write]

Snapshot

  • 구성이 끝난 후 스냅샷 공간을 할당하기 어렵기 때문에 스토리지를 구성할 때 미리 스냅샷을 위한 공간을 할당
  • 기존 데이터에서 스냅샷을 생성하면 스냅샷은 기존 데이터를 가리키게 됨
  • 그 후 데이터의 변경이 일어날 경우에 데이터를 스냅샷 공간으로 데이터를 복사하고 스냅샷은 복사한 데이터를 가리키게 됨
  • 스토리지를 구성할 때 미리 스냅샷을 위해 1~20% 공간을 할당
  • 구성이 끝난 후 스냅샷 공간을 할당하기 어려움
  • 원본 데이터가 변경될 때는 I/O 성능이 떨어지는 문제가 있음
  • 데이터가 변경되면 스냅샷 공간으로 원본 데이터를 복사

(2) ROW [Redirect-on-Write]

ROW [Redirect-on-Write]

  • 스냅샷을 위한 별도의 공간이 필요하지 않음
  • 이 방식에서 스냅샷을 생성하면 기존 데이터를 가리키는 것까지는 COW 방식과 차이가 없음
  • 다만 데이터가 변경된 이후에 스냅샷은 기존 데이터를 프리징 시키고 변경하려고 하는 데이터를 새로운 스냅샷 공간에 작성함
  • 스냅샷을 위한 별도의 공간을 미리 확보하지 않아도 됨
  • 데이터가 생성되면 스토리지 OS나 LUN 컨트롤러에서 데이터의 위치를 기록하고 관리
  • 데이터가 변경되면 원본 데이터를 스냅샷 블록으로 사용하고, 새로운 블록을 할당받아서 데이터를 관리

6. 전체 기본 구조도

LVM 전체 기본 구조도

  • LVM의 전체 그림을 보면 물리 디스크를 PV로 만들고 각 PV들은 하나의 VG에 속하게 됨
  • LV는 VG를 통하여 각 LE를 PE에 용량이나 볼륨 타입에 맞게 맵핑

7. 정보 출처

https://tech.gluesys.com/blog/2019/04/08/LVM.html

 

글루시스 기술 블로그

A simple yet classy theme for your Jekyll website or blog.

tech.gluesys.com

 

반응형

댓글