1. LVM이란?

커널에 구현된 기능으로 여러 개의 HDD 용량을 합쳐서 하나의 파일 시스템으로 구성하고 스토리지 확장 및 변경에 있어 유연한 대처를 할 수 있다

1. 구성

LVM 은 이름처럼 파티션대신 볼륨이라는 단위로 저장 장치를 다룰 수 있으며, 물리 디스크를 볼륨 그룹으로 묶고 이것을 논리 볼륨으로 분할하여 관리합니다. 스토리지의 확장이나 변경시 서비스의 변경을 할 수 있으며 특정 영역의 사용량이 많아져서 저장 공간이 부족할 경우에 유연하게 대응할 수 있습니다.

그림 예)

img

2. LVM 순서 및 용어 정리

1) LVM구성을 위하여 파티션 작업

하드디스크를LVM 으로 만들 수 있게 파티션 생성 또는 변경

2) PV(Physical Volume) : 물리적인 볼륨 생성 작업

/dev/sda1, /dev/sdb1, /dev/sdc1 같은 실제 파티션들을 말합니다

블록 장치 전체 또는 그 블록 장치를 이루고 있는 파티션들을 LVM에서

사용할 수 있게 변환하는 것으로 LVM으로 쓰기 위해 PV로 초기화 합니다.

(PV는 일정한 크기의 PE(Physical Extent)들로 구성)

- PE( Physical Extent) : 물리적 확장

PV를 구성하는 일정한 크기의 블록으로 기본크기는 4MB입니다

3) VG ( Volume Group) : 볼륨 그룹 작업

Physical Volume을 합친 그룹을 말하며(PE가 모여서 생성되는 큰 덩어리?)

PV들의 집합으로 PV들로 초기화된 장치들은 VG로 통합되게 되며 이 공간을 쪼개서 LV로 만들 수 있습니다

4) LV (Logical Volume) : 논리적 볼륨

합쳐진 Volume Group을 쪼개어 실제 사용하는 볼륨을 의미 하며 사용자가 최종적으로 사용하게 되는

논리적인 스토리지 입니다.

3. LVM 구성 예제

현재 시스템은 일반 파일시스템으로 구성되어 있으며 /home 파티션을 LVM 으로 만들고 파일시스템 생성 합니다.

참고로 /home 에 데이터가 있는 경우 모두 삭제 되므로 중요 데이터 있는 경우 꼭 사전에 백업을 해주어야 합니다

파티션 상태 확인

# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        30G  1.3G   29G   5% /
/dev/sda1      xfs      1014M  140M  875M  14% /boot
/dev/sda3      ext4       68G   55M   65G   1% /home

1) LVM 패키지 확인하고 설치 안되어 있으면 설치 합니다.

- 설치 여부 확인
# rpm -qa |grep lvm

- 패키지 설치
# yum install lvm2 

- 재부팅시 자동 실행 되도록 설정
# systemctl enable lvm2-monitor

2) 파티션 수정 작업

LVM구성을 위하여 먼저 디스크를 확인 합니다.( fdisk -l /dev/sda )

상태 확인시 LVM 구성이 안 되어 있어 LVM으로 변경 작업을 진행 합니다.

여기서는 대상 파티션인 /dev/sda3 (/home) 파티션만 LVM으로 변경 합니다
- 파티션 상태 확인

# fdisk -l /dev/sda

  Device Boot   Start     End   Blocks  Id System
/dev/sda1  *    2048   2099199   1048576  83 Linux
/dev/sda2     2099200  65013759  31457280  83 Linux
/dev/sda3    65013760  209715199  72350720  8e Linux

 

- 파티션 변경 작업 

# fdisk /dev/sda
Command (m for help): **p**
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000c8e42

 

  Device Boot   Start     End   Blocks  Id System
/dev/sda1  *    2048   2099199   1048576  83 Linux
/dev/sda2     2099200  65013759  31457280  83 Linux
/dev/sda3    65013760  209715199  72350720  83 Linux

Command (m for help): **t**
Partition number (1-3, default 3): **3**
Hex code (type L to list all codes): **8e**
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): **p**


Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000c8e42

  Device Boot   Start     End   Blocks  Id System

/dev/sda1  *    2048   2099199   1048576  83 Linux
/dev/sda2     2099200  65013759  31457280  83 Linux
/dev/sda3    65013760  209715199  72350720  8e Linux LVM

Command (m for help): **w**

3) 물리적볼륨 생성(PV)

블록 장치 전체 또는 그 블록 장치를 이루고 있는 파티션들을 LVM에서 사용할 수 있게 변환합니다.
PE(Physical Extent) : PV를 구성하는 일정한 크기의 블록으로 LVM2에서 기본크기는 4MB입니다
3-1) PV생성 (pvcreate)
# pvcreate /dev/sda3
WARNING: ext4 signature detected on /dev/sda3 at offset 1080. 
Wipe it? [y/n]: y Wiping ext4 signature on /dev/sda3. Physical volume "/dev/sda3" successfully created.
# pvcreate /dev/sda3
WARNING: ext4 
signature detected on /dev/sda3 at offset 1080. 
Wipe it? [y/n]: y 
Wiping ext4 signature on /dev/sda3. 
Physical volume "/dev/sda3" successfully created.
pvcreate /dev/sda3
WARNING: ext4 signature detected on /dev/sda3 at offset 1080. 
Wipe it? [y/n]: y 
Wiping ext4 signature on /dev/sda3. 
Physical volume "/dev/sda3" successfully created.
3-2) PV 생성 확인
# pvs   
PV VG Fmt Attr PSize  PFree 
/dev/sda3   lvm2 --- <69.00g <69.00g

# pvscan PV /dev/sda3           
lvm2 [<69.00 GiB]Total: 1 [<69.00 GiB] / in use: 0 [0  ] / in no VG: 1 [<69.00 GiB]

# pvdisplay
VG NamePV Size        <69.00 GiB
Allocatable      NO
PE Size        0
Total PE       0
Free PE        0
Allocated 
PE     0
PV UUID        dFUFjg-ETp6-aCkV-UHpw-HpP7-e40T-7L00p3

 
3-3) 볼륨그룹(VG) 생성
# 볼륨 그룹(VG)은 많은 물리 볼륨을 묶고 장치 파일 시스템에 /dev/VG_NAME와 같은 식으로 보여준다.
- VG 생성 하기

# vgcreate [볼륨이름] [포함되는 장치명]

vgcreate vg-home /dev/sda3Volume group "vg-home" successfully created

- 현재 VG 상태 확인

# vgs 
VG   #PV #LV #SN Attr  VSize  VFreevg-home  1  0  0 wz--n- <69.00g <69.00g

# vgscan 
Reading volume groups from cache.Found volume group "vg-home" using metadata type lvm2

# vgdisplay 
--- Volume group ---
VG Name        vg-home
System 
IDFormat        lvm2
Metadata Areas    1
Metadata Sequence No 1
VG Access       read/write
VG Status       resizable
MAX LV         0
Cur LV        0O
pen LV        0
Max PV        0
Cur PV        1
Act PV        1
VG Size        <69.00 GiB
PE Size        4.00 MiB
Total PE       17663
Alloc PE / Size    0 / 0
Free PE / Size    17663 / <69.00 GiB
VG UUID        MESw3F-j0gs-yzOo-bwR9-34nn-u0dP-qHOHEC

4) 논리 볼륨 생성하기

# 볼륨 그룹 생성이 완료 되었으면 논리 볼륨(Logical Volumes)을 생성 합니다.
- LV 생성 하기

# lvcreate -n datalv L 70GB testvg  --> testvg의 70G를 datalv에 할당
# lvcreate -n lv-home -l +100%FREE vg-home  --> 남은 용량을 lv-home 에 할당함
# lvcreate

lvcreate -n lv-home -l +100%FREE vg-homeLogical volume "lv-home" created.
- 생성된 LV 상태 확인 (lvs, lvdisplay, lvscan)

# lvs
LV   VG   Attr    LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv-home vg-home -wi-ao---- <69.00g

# lvscan 
ACTIVE      '/dev/vg-home/lv-home' [<69.00 GiB] inherit

# lvdisplay
--- Logical volume ---
LV Path        /dev/vg-home/lv-home
LV Name        lv-home
VG Name        vg-home
LV UUID        AY0b7g-L0pN-DrTm-Lhgb-vqU5-T2W1-0cFe4W
LV Write Access    read/write
LV Creation host, time localhost.localdomain, 2022-05-11 16:20:59 +0900
LV Status       available
# open         0
LV Size        <69.00 GiB
Current LE       17663
Segments        1
Allocation       inheritRead ahead sectors   auto
- currently set to   8192
Block device      253:0

5) 파일시스템 생성 및 마운트

5-1) 생성된 LV를 파일시스템 생성 및 마운트
# lvdisplay 에서 나오는 LV Path를 ext4 타입으로 파일시스템 포맷 한 후 /home 에 마운트 합니다.
**
# mkfs.ext4 /dev/vg-home/lv-home
**mke2fs 1.42.9 (28-Dec-2013)Discarding 
device blocks: done              
Filesystem label=OS 
type: LinuxBlock 
size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks4521984 inodes, 18086912 blocks904345 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=2166358016552 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:     32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,     4096000, 7962624, 11239424 Allocating group tables: done              
Writing inode tables: done              
Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done 

**# mount -t ext4 /dev/vg-home/lv-home /home**

 

**# df -Th
**Filesystem          
Type   Size Used Avail Use% Mounted on/dev/sda2           
xfs    30G 1.3G  29G  5% /devtmpfs           devtmpfs 484M   0 484M  0% 
/devtmpfs             tmpfs   493M   0 493M  0% 
/dev/shmtmpfs             tmpfs   493M  13M 480M  3% 
/runtmpfs             tmpfs   493M   0 493M  0% 
/sys/fs/cgroup/dev/sda1           xfs   1014M 140M 875M 14% 
/boottmpfs             tmpfs   99M   0  99M  0% /run/user/0*
/dev/mapper/vg--home-lv--home ext4    68G  53M  65G  1% /home*
5-2) 자동 마운트를 위하여 /etc/fstab 에 등록 해줍니다.
# /etc/fstab 확인
/dev/vg-home/lv-home    /home          ext4  defaults    1 2

image_print
카테고리: Linux

호스트웨이 시스템 팀

호스트웨이 시스템1팀