DevOps/지식창고

LVM Thin

WhiteDuck 2024. 2. 11. 12:28

본 포스팅은 LVM 버전 2.2.02.187 을 기준으로 작성되었습니다.

 

1. LVM 이란

LVM (Logical Volume Manager) 은 LVM은 기존의 물리적인 디스크 파티션 구조의 방식에서 더 유연한 스토리지 관리 기능을 제공합니다.

파일시스템이 블록장치에 직접 접근해서 읽기,쓰기를 했다면 LVM은 파일시스템이 LVM이 만든 가상의 블록장치에 읽기, 쓰기를 합니다. 이것을 논리 볼륨이라고 하는데, 이러한 논리 볼륨은 더 큰 용량을 가지며, 필요에 따라 크기를 조정하거나 관리할 수 있습니다. 또한, LVM을 통해 스냅샷, 스트라이핑, 미러링 등과 같은 고급 스토리지 기능을 사용할 수 있습니다.




2. LVM 의 구성요소

LVM 은 PV(Physical Volume), VG(Volume Group), LV(Logical Volume) 와 같은 주요 구성요소를 가집니다.

Physical Volume

하나 이상의 물리적인 디스크 또는 파티션으로 구성된 스토리지 공간입니다. PV로 사용할 블록장치에 일정 크기의 PE(Physical Exetents) 로 구성됩니다.

  • lsblk : 블록 장치 확인
  • pvcreate: 블록 장치를 PV 로 구성
  • pvscan/pvdisplay : PV 정보 확인

Volume Group

하나 이상의 PV(Physical Volumes)를 물리적 또는 가상적으로 그룹화한 것입니다. Volume Group 은 논리 볼륨을 생성하고 할당하는 데 사용됩니다.

  • vgcreate : PV 를 VG 로 구성
  • vgscan/vgdisplay : VG 정보 확인

Logical Volume

Volume Group 내에서 생성되며, 논리적인 블록 장치로 사용되는 가상의 스토리지 공간입니다. 논리 볼륨은 필요에 따라 크기를 조정하거나 다른 논리 볼륨과 병합할 수 있습니다.

  • lvcreate : VG 를 LV 로 구성
  • lvscan/lvdisplay : LV 정보 확인




3. Thin provisioning

기존 LVM 에서는 PV, VG, LV 를 사용하여 가상의 크기라고 불리우지만, 직관적으로 물리적인 용량을 한데 모아서 사용하는 정도에 그쳤습니다. 씬 프로비저닝된 볼륨에서는 가상의 크기라는 이름에 맞게 실제 그만한 용량이 없어라도 그 이상의 용량을 구성할 수 있고, 실제 사용한 용량 만큼 물리적 디스크에 할당하기 때문에 유용합니다.

 

 

Thin provisioning 의 구조

 

 

 

LVMThin을 사용하면 필요한 만큼의 스토리지 공간을 동적으로 할당할 수 있습니다. 기존의 LVM에서는 논리 볼륨 크기를 미리 지정해야 했지만, LVMThin에서는 필요에 따라 스토리지 공간을 유연하게 조정할 수 있습니다. 이는 스토리지 공간의 효율성을 높이고 낭비를 최소화하는 데 도움이 됩니다.

LVMThin에서는 Thin poolThin Volume 이라는 두 가지 주요 개념을 사용합니다. Thin pool은 실제 스토리지 공간을 관리하는 데 사용되며, 필요에 따라 스토리지를 동적으로 할당합니다. Thin volume는 실제 데이터를 저장하는 가상의 스토리지 공간으로, thin pool 내에서 생성됩니다.

LVMThin은 다음과 같은 주요 특징을 가지고 있습니다:

  • 유연한 용량 관리: 필요에 따라 스토리지 공간을 동적으로 조정할 수 있습니다.
  • 공간 효율성: Thin 프로비저닝 방식을 사용하여 스토리지를 효율적으로 할당하고 낭비를 최소화합니다.
  • 스냅샷 지원: 데이터의 백업이나 롤백을 쉽게 수행할 수 있는 스냅샷 기능을 제공합니다.

On disk

LVM 에서는 실제 가상의 크기를 어떻게 지정해서 사용할까요? 그 실체에 대해서 알아봅시다.


[용어설명]
Device Mapper : 블록 장치에 대한 추상화 계층을 생성하여 다양한 스토리지 관리 기능을 구현합니다.

 

그림에서와 같이 LVM 에서는 Device Mapper 를 통해서 실제 블록 장치에 정보를 저장하고 관리합니다. 각 블록 장치에는 위와 같이 LVM 정보가 저장되어 있습니다.

  • Physical Volume Label Header: 물리적 볼륨 레이블 헤더는 물리적 볼륨의 메타데이터 영역의 시작을 식별하는 역할을 합니다. 이 헤더에는 물리적 볼륨의 크기 및 기타 정보가 포함되어 있습니다.
  • Physical Volume Label: 물리적 볼륨 레이블은 물리적 볼륨에 대한 식별자 및 속성 정보를 포함하는 레코드입니다. 이 레코드에는 물리적 볼륨의 고유 ID, 생성 일자, 크기 등이 포함되어 있습니다.
  • Data Area Description List: 데이터 영역 설명 목록은 물리적 볼륨의 데이터 영역의 위치와 크기에 대한 정보를 포함합니다. 이 목록은 데이터 영역의 구성을 정의하고 데이터 영역이 물리적 볼륨 내에서 어디에 위치하는지를 알려줍니다.
  • Metadata Area Description List: 메타데이터 영역 설명 목록은 물리적 볼륨의 메타데이터 영역의 위치와 크기에 대한 정보를 포함합니다. 이 목록은 메타데이터 영역의 구성을 정의하고 메타데이터 영역이 물리적 볼륨 내에서 어디에 위치하는지를 알려줍니다.
  • Bootloader Description List: 부트로더 설명 목록은 부트로더의 위치와 크기에 대한 정보를 포함합니다. 부트로더는 시스템 부팅 시 실행되는 프로그램으로, 물리적 볼륨에 저장되어 있습니다.
  • Metadata Area Header: 메타데이터 영역 헤더는 메타데이터 영역의 시작을 식별하는 역할을 합니다. 이 헤더에는 메타데이터 영역의 크기 및 기타 정보가 포함되어 있습니다.
  • Raw Location Description List: 원시 위치 설명 목록은 Metadata Area Header 의 start 항목과 원시 위치 설명 목록의 offset 으로 실제 물리적 볼륨에 저장되어 있는 위치에 size 만큼 Metadata를 확인할 수 있는 정보를 포함하고 있습니다.
  • Metadata: 메타데이터는 논리 볼륨의 구성 및 관리에 필요한 정보를 포함합니다. 예를 들어, 논리 볼륨의 크기, 사용 중인 블록, 할당된 블록 등의 정보 가 포함될 수 있습니다.
  • Data Area: 데이터 영역은 실제로 파일 시스템 데이터가 저장되는 영역입니다. 이 영역은 논리 볼륨의 일부로, 파일 및 디렉토리와 같은 사용자 데이터가 저장됩니다.

 

 

참고


반응형

'DevOps > 지식창고' 카테고리의 다른 글

Devel  (0) 2024.04.01
Samba VFS  (0) 2024.03.30
LVM 메타데이터 (feat. dd)  (1) 2024.02.28
NFS  (0) 2023.12.16
Paxos 기능 개발기 - 개념 정리(2)  (0) 2023.12.15
Paxos 기능 개발기 - 개념정리(1)  (1) 2023.12.11
VDI(Virtual Desktop Infrastructur  (1) 2023.12.07
SAN  (0) 2023.12.02