본문 바로가기 대메뉴 바로가기

테크니컬 스토리

아이티마야의 새로운 기술 뉴스를 만나보세요.
LVM 이란
등록일
2024.03.04
첨부파일
LVM 사용 방법
LVM 이란
  • LVM이란

Logical Volume(LV)을 효율적이고 유연하게 관리하기 위한 기능입니다.

여러 물리 디스크를 하나의 볼륨 그룹으로 만든 후, 다시 논리적 볼륨으로 나누어서 사용합니다.

  • 장점

유연한 용량

논리 볼륨을 사용하는 경우 장치 및 파티션을 단일 논리 볼륨에 집계할 수 있습니다. 이 기능을 사용하면 파일 시스템을 단일 대규모 장치처럼 여러 장치에 걸쳐 확장할 수 있습니다.

편리한 장치 이름 지정

논리 스토리지 볼륨은 사용자 정의 및 사용자 정의 이름으로 관리할 수 있습니다.

크기 조정할 수 있는 스토리지 볼륨

기본 장치를 다시 포맷하고 다시 분할하지 않고도 간단한 소프트웨어 명령으로 논리 볼륨을 확장하거나 논리 볼륨을 줄일 수 있습니다

? 디스크의 용량이 더 필요할 때 기존의 쓰던 디스크를 그대로 두고, 새로운 디스크를 추가 장착하여, Volume Grub에 추가한 뒤 사용하면 편하게 용량을 확장할 수 있습니다.

  • 구성 방법은 아래와 같습니다.

과정: PV구성 → VG구성 → LV구성

OS: Centos7

DISK: 50GB *3

CentOS 7에서는 LVM 패키지가 기본으로 설치되어 있지만, 만약 없다면 다음 명령으로 설치할 수 있습니다.

# yum install lvm2

디스크 추가 및 파티션 생성

현재 추가한 디스크 정보를 확인합니다. [실제 디스크명은, 시스템에 따라 다를 수 있습니다.]
# fdisk -1

추가한 디스크 파티션을 생성해 줍니다.
[저는 아래와 같이 /dev/sdb, /dev/sdc, /dev/sdd 3개의 디스크를 추가하였습니다]
# fdisk /dev/sdb
# fdisk /dev/sdc
# fdisk /dev/sdd

각각의 디스크들을 파티션 설정을 해줍니다.
# fdisk /dev/sdb

Command (m for help) : n [n을 눌러 넘어가 줍니다.]
Partition type :
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p) : ---------[파티션 유형 선택으로 Enter를 눌러 넘어가줍니다. (default)]
Using default response p
Partition number (1-4, default 1) : ------------[파티션 번호 설정으로 Enter를 눌러줍니다. (default)]
First sector (2048-104857599, default 2048) : ----[섹터 설정으로 Enter를 눌러줍니다. (default)]
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599) :
Using default value 104857599
Partition 1 of type Linux and of size 50 GiB is set

Command (m for help) : w ------------[저장 명령어로, w를 눌러줍니다.]
The partition table has been altered!

Calling ioctl( ) to re-read partition table.
Syncing disks.

아래 명령어로 파티션이 설정된 디스크 정보를 확인할 수 있습니다.
# fdisk -l

Disk /dev/sdb : 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0xec2d7732

Device Boot Start End Blocks Id System
/dev/sdb1 2048 104857599 5242777683 83 Linux

Disk /dev/sdc : 53.7GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0x564a089d

Device Boot Start End Blocks Id System
/dev/sdc1 2048 104857599 52427776 83 Linux

Disk /dev/sdd : 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical) : 512 bytes / 512 bytes
I/O size (minimum/optimal) : 512 bytes / 512 bytes
Disk label type : dos
Disk identifier : 0x6ddfa8e1

Device Boot Start End Blocks Id System
/dev/sdd1 2048 104857599 52427776 83 Linux

설정된 파티션을 물리 볼륨(PV)으로 설정

# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1

하나 이상의 물리 볼륨(PV)을 하나의 볼륨 그룹(VG)으로 설정

# vgcreate (VG이름) (PV)

(예시)
# vgcreate VG0 /dev/sdb1 /dev/sdc1 /dev/sdd1

VG확인 방법 [생성된 VG를 확인할 수 있습니다.]
# vgdisplay

-- Volume group ---

VG Name VG0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size < 149.99 GiB
PE Size 4.00 MiB
Total PE 38397
Alloc PE / Size 0 / 0
Free PE / Size 38397 / < 149.99 GiB
VG UUID WIgfbu-7RaH-XjAQ-HEzi-PUYS-0Cca-x2ea1K

볼륨그룹(VG)에서 원하는 용량으로 논리 볼륨(LV)을 생성합니다.

# lvcreate -L (원하는 용량) -n (LV이름) (생성된 VG)

(예시)
# lvcreate -L 50GB -n maya VG0

아래는 생성된 LV를 확인하는 방법입니다.
# lvdisplay

--- Logical volume ---

LV Path /dev/VG0/maya
LV Name maya
VG Name VG0
LV UUID w97PnQ-IseL-CngM-M6hu-Iwz4-cwCR-sT134F
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2024-01-10 15:38:27 +0900
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12800
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

해당 LV에 파일시스템을 생성합니다.
# mkfs.xfs -f /dev/VG0/maya

아래 명령어로 UUID를 확인해줍니다.
# blkid

/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="50c1c5d4-162a-484e-9fa4-7e4344c1635d" TYPE="xfs"
/dev/sda2: UUID="dpdJGz-sJyQ-JiQw-1CoH-hcez-7K4e-gVLd16" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="2c9ed7a0-ce19-4d88-99db-cc983328ff01" TYPE="xfs"
/dev/mapper/centos-swap: UUID="72b8aa15-e046-4084-9c2c-f40b93879e84" TYPE="swap"
/dev/sdb1: UUID="PdhsGo-1oDI-BceI-Ot9c-Tq0q-F2JB-kVzfkk" TYPE="LVM2_member"
/dev/sdc1: UUID="kOmHXN-8EJx-RAh1-RVJd-hvwz-wY9R-QOIYq3" TYPE="LVM2_member"
/dev/sdd1: UUID="WrNvhk-B0Hs-AJpB-R9TF-QdVw-855b-8dQLfG"TYPE="LVM2_member"
/dev/mapper/VG0-maya: UUID="9ce07e0f-dcb0-409c-b1b3-a940060ef138" TYPE="xfs"

마지막으로 마운트 후, 사용하시면 됩니다.
디렉토리 생성
# mkdir /data

마운트
# mount /dev/mapper/VG0-maya /data

디스크 정보 확인
# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 6.2G 0 6.2G 0% /dev
tmpfs 6.3G 0 6.3G 0% /dev/shm
tmpfs 6.3G 8.6M 6.2G 1% /run
tmpfs 6.3G 0 6.3G 0% /sys/fs/cgroup
/dev/mapper/centos-root 28G 1.5G 27G 6% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 1.3G 0 1.3G 0% /run/user/0
/dev/mapper/VG0-maya 50G 33M 50G 1% /data

LV생성 후, VG 용량 확인 방법은 아래와 같습니다.

# vgdisplay

---- Volume group ---

VG Name /dev/VG0
System ID
Format lvm2
Metadata Areas 3
etadata Sequence No 2
VG Access read/write
VG Status esizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size < 149.99GiB
PE Size 4.00 MiB
Total PE 38397
Alloc PE / Size 12800 / 50.00 GiB -----------------(남은 용량 확인)
Free PE / Size 25597 / < 99.99 GiB
Free VG UUID WIgfbu-7RaH-XjAQ-HEzi- PUYS -0Cca-x2ea1K

  • 논리 볼륨(LV)을 삭제하려면 아래와 같습니다.

[논리 볼륨을 삭제하면 해당 볼륨에 저장된 데이터가 사라지므로 신중히 진행해야 합니다.]
삭제할 LV마운트 해제 (필수)

# umount /dev//

(예시)
# umount /dev/mapper/VG0-maya

논리 볼륨 삭제

# lvremove /dev//

(예시)
# lvremove /dev/mapper/VG0-maya

볼륨 그룹에서 삭제

# vgremove

(예시)
# vgremove VG0

물리 볼륨에서 삭제

# pvremove /dev/sdd1
여기서 sdd1은 PV의 경로에 따라 적절히 변경해 줍니다.

?  LVM은 설정 및 조작에 대한 오류로 인해 데이터 손실이 발생할 수 있으며, 복구가 어렵습니다. 각 볼륨그룹과, 논리볼륨이 일부 공간을 소비하여 디스크 공간 낭비가 있습니다. LVM은 유연성과 운영체제에서 볼륨을 효과적으로 관리하는 데에 많은 도움을 주지만, 이러한 단점을 고려하여 사용해야 합니다.

PLEASE WAIT WHILE LOADING...