Ubuntu

[Ubuntu] 1. LVM을 활용하여 저장공간 확장해서 사용하기

하드디스크를 파티셔닝 한 후
OS 영역에 저장 공간의 크기가 고정되어서
디스크 용량의 확장 / 축소 가 어려움

누구를 위한 글인가?

  • 따라서 한 디스크의 용량이 커야하는 분
  • 스토리지를 하나로 병합하여 사용하고 싶은 분

LVM (Logical Volume Manager) 이란?

리눅스의 저장 공간을 효율적으로 관리할 수 있는 기능
물리적 Disk와 파일 시스템 간의 추상화 계층을 제공함

lvm
해당 사진은 draw.io를 통해 만들어졌습니다.

기본 용어

기본 용어 설명
  • PV(Physical Volume : 물리 볼륨)
    사용되는 실제 Disk 저장 장치를 의미합니다.
    디스크 파티션 또는 전체 디스크가 될 수 있습니다.
    디스크를 사용하려면 우선 PV로 초기화가 되어야 합니다.
  • VG(Volume Group : 볼륨 그룹)
    볼륨 그룹은 여러개의 볼륨 그룹 내의 여러 물리적 볼륨(PV)이 하나의 논리적 단위(엔터티)로 취급 됩니다.
    여러 물리적 볼륨을 단일 볼륨 그룹으로 결합하여 보다 크고 유연한 스토리지 풀을 생성할 수 있습니다.
  • LV(Logical Volume : 논리 볼륨)
    논리적 볼륨은 기존 디스크 관리 시스템의 디스크 파티션과 동일한 의미를 가짐
    필요에 따라 동적으로 크기를 조정, 생성 및 삭제가 가능함
  • FS(File Systems : 파일 시스템)
    논리적 볼륨 위에 생성되며 데이터를 저장하는데 사용되는 구조

sudo apt-get install lvm2

1. PV(물리 볼륨) 생성

우선 사용할 볼륨의 이름을 알아야합니다.
볼륨 이름 확인하기

sudo pvcreate /dev/sda1 sudo pvcreate /dev/sdb1
lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0   3.6T  0 disk 
└─sda1                      8:1    0   3.6T  0 part /boot
sdb                         8:16   0   3.6T  0 disk 
└─sdb1                      8:17   0   3.6T  0 part /boot

볼륨 이름을 SIZE를 통해 이름을 확인합니다.
저는 sda와 sdb에 논리볼륨을 따로 해두지 않아서 하나씩만 표시됩니다.
그래서 원하는 볼륨을 선택합니다.
저는 sda1과 sdb1을 합칠 생각입니다.


2. VG(볼륨 그룹) 생성

sudo vgcreate [VG 이름] /dev/sda1 /dev/sdb1
[VG 이름]은 실제 사용할 이름으로 [ ]는 입력하지 않아도 됩니다.
사용 예시

sudo vgcreate db_vg /dev/sda1 dev/sdb1

3. LV(논리 볼륨) 생성

sudo lvcreate -l 100%FREE -n [LV 이름] [VG 이름]

위에 설정한 VG 이름을 입력해주고
논리 볼륨에도 이름을 지정해 줍니다.
공간 전체를 사용한다는 의미에서 100%FREE로 볼륨 그룹 전체 크기로 설정하는 것입니다.
일부만 사용시 다음과 같이 설정이 가능합니다.

sudo lvcreate -L [볼륨용량] -n [LV 이름] [VG 이름]

사용 예시

sudo lvcreate -l 100%FREE -n db_lv db_vg

4. 파일 시스템 생성

보통 ext4 파일시스템 혹은 xfs 파일 시스템을 사용합니다.
저는 ext4를 사용하겠습니다.

sudo mkfs.ext4 /dev/[VG 이름]/[LV 이름]

저는 위의 입력대로 했던 내용으로 예시를 만들어 보면

sudo mkfs.ext4 /dev/db_vg/db_lv

5. 디렉토리 마운트

이제 만들어진 논리 볼륨을 마운트 합니다.

sudo mount /dev/[VG 이름]/[LV 이름] [마운트 할 위치]

자신이 원하는 위치를 정합니다.
저는 /var/test 라는 위치에 마운트를 하려합니다.

sudo mount /dev/db_vg/db_lg /var/test

6. 재부팅해도 자동으로 마운트 하기 (fstab)

부팅시 자동으로 마운트 되도록 /etc/fstab 파일에
마운트 정보를 추가합니다.

sudo vim /etc/fstab

저는 vim 편집기를 사용하는게 좀 더 익숙하여 사용하지만
다른 편집기가 익숙하신 분들은
nano같은 편집기를 사용하셔도 좋습니다.

맨 마지막 줄에 이제 위치를 추가해줍니다.

[파일 시스템 위치] [마운트 할 위치] [파일 시스템 유형] [옵션] [백업 유무] [시스템 검사 순서]
각 내용 설명
  • 파일 시스템 위치 : /dev/[VG 이름]/[LV 이름]
    /dev/db_vg/db_lv
  • 마운트 할 위치 : 위에 입력 했던 마운트한 위치와 동일한 위치
    /var/test
  • 파일 시스템 유형 : 위에 입력 했던 파일시스템을 입력합니다.
    ext4
  • 옵션 : ‘defaults : rw, suid, dev, exec, auto, nouser, async 옵션 포함’, ‘ro : 읽기 전용’, ‘rw : 읽기쓰기’, ‘noatime : 파일 액세스 시간을 업데이트 하지 않음’
    defaults
  • 백업 유무(dump) : 값이 ‘1’이면 ‘dump’ 유틸리티가 백업 대상으로 고려합니다.
    0
  • 시스템 검사 순서(pass) : 시스템이 부팅할 때 파일 시스템을 검사하는 순서를 지
    0 : 검사 안함
    1 : 루트 파일 시스템을 검사함
    2 : 기타 파일 시스템을 검사함, 여러 파일 시스템이 동일한 숫자를 가질 경우 병렬로 검사됩니다.

사용 예시
마지막 줄 예시

/dev/db_vg/db_lg /var/test ext4 defaults 0 2

서비스 설정을 즉시 반영하기 위해 다음을 실행합니다.

sudo systemctl daemon-reload

마지막으로 모든 파일이 제대로 구동하고 있는지
LVM이 적용된 위치를 확인합니다.

lsblk
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0   3.6T  0 disk 
└─sda1                      8:1    0   3.6T  0 part 
  └─db_vg-db_lv 252:0    0   7.3T  0 lvm  /var/test
sdb                         8:16   0   3.6T  0 disk 
└─sdb1                      8:17   0   3.6T  0 part 
  └─db_vg-db_lv 252:0    0   7.3T  0 lvm  /var/test
sdc                         8:32   0 232.9G  0 disk 
├─sdc1                      8:33   0     1G  0 part /boot/efi
└─sdc2                      8:34   0 231.8G  0 part /var/snap/firefox/common/host-hunspell

LVM을 통한 용량 확장을 알아보았습니다.
디스크를 좀 더 유연하게 사용할 수 있으셨으면 좋겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다