리눅스 / LVM / 만드는 방법, 수정하는 방법, 삭제하는 방법

1TB 디스크와 2TB 디스크를 추가했다고 하자. 디스크 크기에 맞게 그대로 사용할 수도 있지만, 3TB 하나인 것처럼 사용하거나 1.5TB 두 개인 것처럼 사용하고 싶을 수도 있다. 즉, 물리적인 디스크 크기와 무관하게 자유롭게 볼륨을 만들고 싶은 것이다.

이럴 때 사용하는 것이 LVM(Logical Volume Manager)이다. 여러 개의 볼륨을 하나로 묶은 후 다시 배분하여 사용한다.(이렇게 만든 볼륨을 논리적 볼륨이라고 한다.)

LVM을 이용하여 논리적 볼륨을 만들고, 수정하고, 삭제하는 방법을 알아본다.

LVM 만들기

LVM으로 볼륨을 만드는 순서는 다음과 같다.

  1. 물리적 볼륨을 만든다.
  2. 물리적 볼륨을 묶어서 볼륨 그룹을 만든다.
  3. 볼륨 그룹에 논리적 볼륨을 만든다.

간단한 예로 어떻게 구성하는지 알아보자. 목표는 100GB 디스크과 200GB 디스크로 50GB, 80GB, 170GB 볼륨을 만드는 것이다.

파티션 만들기

  • 현재 상태는 다음과 같다. 디스크 두 개를 추가해서 /dev/sdb와 /dev/sdc가 생겼고, /dev/sdb의 크기는 100GB, /dev/sdc의 크기는 200GB이다.
# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdc
  • fdisk로 파티션을 만든다. 주의할 점은 타입을 8e로 해야 한다는 것이다.
# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa066b799.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199):

Created a new partition 1 of type 'Linux' and of size 100 GiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
  • 파티션을 만든 후의 상태는 다음과 같다.
# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1

물리적 볼륨 만들기

  • /dev/sdb1과 /dev/sdc1로 물리적 볼륨(Physical Volume)을 만든다.
# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
root@ubuntu-2004-s-02:~# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created.

볼륨 그룹 만들기

  • /dev/sdb1과 /dev/sdc1를 볼륨 그룹으로 만든다.
  • VG-01은 볼륨 그룹의 이름으로, 다른 것으로 만들어도 된다.
# vgcreate VG-01 /dev/sdb1 /dev/sdc1
  Volume group "VG-01" successfully created

논리적 볼륨 만들기

  • VG-01 볼륨 그룹에 50GB 크기의 논리적 볼륨(Logical Volume)을 만든다.
  • LG-01은 논리적 볼륨의 이름으로, 다른 것으로 만들어도 된다.
# lvcreate --size 50G --name LG-01 VG-01
  Logical volume "LG-01" created.
  • LG-02라는 이름의 80GB 크기의 논리적 볼륨을 만든다.
# lvcreate --size 80G --name LG-02 VG-01
  Logical volume "LG-02" created.
  • 나머지 공간을 다 사용하는 LG-03이라는 이름의 논리적 볼륨을 만든다.
# lvcreate --extents 100%FREE --name LG-03 VG-01
  Logical volume "LG-03" created.

포맷하고 마운트하기

  • 논리적 볼륨을 포맷한다. 아래는 LG-01을 EXT4 형식으로 포맷한 것이다.
# mkfs.ext4 /dev/VG-01/LG-01
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: ee2a0e20-db9f-4e38-b3d1-d46f00ccc215
Superblock 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 (65536 blocks): done
Writing superblocks and filesystem accounting information: done
  • 적당한 이름의 폴더를 만들고 마운트한다.
# mkdir /LG-01
# mount /dev/VG-01/LG-01 /LG-01
  • 다음은 세 개의 논리적 볼륨을 포맷하고 마운트한 결과이다. 제일 아래 세 줄에 논리적 볼륨이 추가된 것을 확인할 수 있다.
# df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                               1.9G     0  1.9G   0% /dev
tmpfs                              394M  1.4M  393M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  196G  8.8G  178G   5% /
tmpfs                              2.0G     0  2.0G   0% /dev/shm
tmpfs                              5.0M  4.0K  5.0M   1% /run/lock
tmpfs                              2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop1                          62M   62M     0 100% /snap/core20/1169
/dev/loop2                          71M   71M     0 100% /snap/lxd/21029
/dev/loop3                          68M   68M     0 100% /snap/lxd/21545
/dev/sda2                          976M  112M  798M  13% /boot
/dev/loop4                          56M   56M     0 100% /snap/core18/2128
/dev/loop5                          33M   33M     0 100% /snap/snapd/13170
/dev/loop0                          62M   62M     0 100% /snap/core20/1081
/dev/loop6                          33M   33M     0 100% /snap/snapd/12704
tmpfs                              394M   36K  394M   1% /run/user/128
tmpfs                              394M     0  394M   0% /run/user/0
/dev/mapper/VG--01-LG--01           49G   53M   47G   1% /LG-01
/dev/mapper/VG--01-LG--02           79G   57M   75G   1% /LG-02
/dev/mapper/VG--01-LG--03          167G   61M  158G   1% /LG-03

LVM 수정하기

볼륨 추가

볼륨 그룹에 볼륨을 추가하여 전체 공간을 확장할 수 있다. 위 예제에 이어 200GB 하드 디스크를 추가로 장착했다고 하면...

  • 디스크를 추가하면 아래와 같은 상태가 된다. /dev/sdd가 추가한 디스크이다.
# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  /dev/sdd
  • Linux LVM 파티션을 만든다.
# fdisk /dev/sdd

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8aa237e3.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-419430399, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399):

Created a new partition 1 of type 'Linux' and of size 200 GiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
  • 물리적 볼륨을 만든다.
# pvcreate /dev/sdd1
  Physical volume "/dev/sdd1" successfully created.
  • VG-01 볼륨 그룹에 추가한다.
# vgextend VG-01 /dev/sdd1
  Volume group "VG-01" successfully extended
  • 200GB의 여유 공간이 생긴다.
# vgdisplay VG-01
  --- Volume group ---
  VG Name               VG-01
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <499.99 GiB
  PE Size               4.00 MiB
  Total PE              127997
  Alloc PE / Size       76798 / 299.99 GiB
  Free  PE / Size       51199 / <200.00 GiB
  VG UUID               YLV2F1-x00c-4CZt-LsCh-3q9O-iE3L-Ynx2vG

확장된 공간에 새로운 논리적 볼륨을 만들거나, 기존 논리적 볼륨의 크기를 늘릴 수 있다.

논리적 볼륨 확장하기

  • lvextend 명령어로 논리적 볼륨의 크기를 확장한다. 아래는 /dev/VG-01/LG-01의 크기를 1GB 늘리는 것.
# lvextend -L+1G /dev/VG-01/LG-01
  Size of logical volume VG-01/LG-01 changed from 50.00 GiB (12800 extents) to 51.00 GiB (13056 extents).
  Logical volume VG-01/LG-01 successfully resized.
  • resize2fs 명령어로 파일 시스템의 크기를 확장해야 반영된다.
# resize2fs /dev/VG-01/LG-01
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/VG-01/LG-01 is mounted on /LG-01; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 7
The filesystem on /dev/VG-01/LG-01 is now 13369344 (4k) blocks long.
  • 아래는 /dev/VG-01/LG-01의 크기를 60GB로 늘리는 것. 마찬가지로 resize2fs 명령으로 파일 시스템 크기를 확장한다.
# lvextend -L60G /dev/VG-01/LG-01
  Size of logical volume VG-01/LG-01 changed from 51.00 GiB (13056 extents) to 60.00 GiB (15360 extents).
  Logical volume VG-01/LG-01 successfully resized.
# resize2fs /dev/VG-01/LG-01
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/VG-01/LG-01 is mounted on /LG-01; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 8
The filesystem on /dev/VG-01/LG-01 is now 15728640 (4k) blocks long.

LVM 삭제하기

LVM 삭제는 LVM 생성의 역순으로 진행한다.

논리적 볼륨 삭제하기

lvremove 명령어로 논리적 볼륨을 삭제한다. 아래는 /dev/VG-01/LG-03를 삭제하는 것.

# lvremove /dev/VG-01/LG-03
Do you really want to remove and DISCARD active logical volume VG-01/LG-03? [y/n]: y
  Logical volume "LG-03" successfully removed

볼륨 그룹 삭제하기

vgremove 명령어로 볼륨 그룹을 삭제한다. 아래는 VG-01을 삭제하는 것으로, 볼륨 그룹 안에 논리적 볼륨이 남아 있으면 삭제할 것인지 묻는다.

# vgremove VG-01
Do you really want to remove volume group "VG-01" containing 2 logical volumes? [y/n]: y
Do you really want to remove and DISCARD active logical volume VG-01/LG-01? [y/n]: y
  Logical volume "LG-01" successfully removed
Do you really want to remove and DISCARD active logical volume VG-01/LG-02? [y/n]: y
  Logical volume "LG-02" successfully removed
  Volume group "VG-01" successfully removed

물리적 볼륨 삭제하기

pvremove 명령어로 물리적 볼륨을 삭제한다. 아래는 /dev/sdd1을 삭제하는 것.

# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped.
같은 카테고리의 다른 글
Wireshark / 사용법

Wireshark / 사용법

Wireshark는 패킷 분석 프로그램이다. 오픈 소스로 자유롭게 사용할 수 있다. The non-profit Wireshark Foundation supports the development of Wireshark, a free, open-source tool used by millions around the world. Wireshark is distributed under the GNU GPLv2. There are no restrictions on its use. There are restrictions on its distribution in source or ...

워드프레스 / 언어 변경하기

워드프레스 / 언어 변경하기

워드프레스를 특정 언어로 설치한 후에 다른 언어로 변경할 수 있다. 언어 변경에는 사이트 언어 변경과 사용자 언어 변경 두 가지가 있다. 사이트 언어 변경은 사이트 방문자에게 보여지는 페이지에 적용되는 언어이다. 사용자 언어는 사용자 페이지(예를 들어 관리자라면 관리자 페이지)에 적용되는 언어이다. 사용자 언어는 기본적으로 사이트 언어를 따르게 되어 있다. 즉, 사이트 언어가 영어면 ...

크롬 / 유튜브 영상 끊김 해결하는 방법

크롬 / 유튜브 영상 끊김 해결하는 방법

노트북을 샀다. 모니터 주사율 144Hz의 게이밍 노트북. 별도의 모니터와 연결하여 듀얼 모니터로 사용하고 있는데, 예상치 못한 문제가 발생했다. 외부 모니터와 연결된 상태에서, 크롬 웹브라우저로, 노트북 모니터로 유튜브 영상을 보면 뚝뚝 끊긴다. 외부 모니터에서 볼 때는 문제가 없고... 주사율을 변경하는 등 여러 가지 방법을 시도해보았는데, 해결책은 크롬 설정에 있었다. 에서 [가능한 경우 하드웨어 가속 ...

워드프레스 / 플러그인 / WP Super Cache / 캐시를 이용하여 사이트 속도 빠르게 해주는 플러그인

워드프레스 / 플러그인 / WP Super Cache / 캐시를 이용하여 사이트 속도 빠르게 해주는 플러그인

웹사이트 속도는 중요하다. 홈페이지에 접속했을 때 속도가 느리다면 방문자가 금방 떠나고, 검색 엔진에서도 불이익을 받는다. 따라서 속도 개선은 사이트 관리자의 중요 업무 중의 하나이다. 워드프레스는 기본적으로 페이지를 동적으로 만든다. 요청이 있으면 데이터베이스에서 자료를 가져와서 테마의 파일들을 이용해 출력을 하기에, 방문자가 접속할 때마다 페이지를 생성한다. 그래서 정적인 페이지보다 속도가 느리다. 이를 해결해주는 것이 ...

안드로이드 / 앱 / 카카오뱅크 / 입출금 알림 설정하는 방법

안드로이드 / 앱 / 카카오뱅크 / 입출금 알림 설정하는 방법

입출금 알림 앱 은행마다 입출금이 있을 때 푸시 알림을 보내주는 앱이 있습니다. 우리은행은 원터치 알림, 국민은행은 KB스타알림이죠. 인터넷 뱅킹앱과는 다른 것이어서 따로 설치를 하고 설정해야 합니다. 입출금 내역을 알려주는 것은 편한데, 별도의 앱을 설치하고 설정하는 것이 좀 번거롭습니다. 하지만, 카카오뱅크는 다릅니다. 처음부터 앱 사용을 가정하고 있어서 입출금 알림 기능이 카카오뱅크 앱에 포함되어 있습니다. 기본 ...

AMD CPU, 기가바이트 메인보드 사용 시 가상화 기능 활성화하는 방법

AMD CPU, 기가바이트 메인보드 사용 시 가상화 기능 활성화하는 방법

Windows에서 VirtualBox, 안드로이드 스튜디오 등을 사용하려면 가상화 기능을 활성화해야 합니다. 기가바이트 메인보드에서 AMD CPU 가상화 기능은 보통 BIOS에서 SVM Mode라고 표시됩니다.

안드로이드 / 앱 / 원스토어 / 설치하는 방법

안드로이드 / 앱 / 원스토어 / 설치하는 방법

원스토어는 네이버와 통신 3사가 협력해서 만든 앱 장터입니다. 국내를 대상으로 하는 거라 사용이 편하고 이벤트도 많이 있습니다. 통신사를 통해 구입한 스마트폰에는 대부분 원스토어가 기본적으로 설치되어 있습니다. 하지만 제조사로부터 직접 구입한, 특히 외국에서 만든 스마트폰의 경우 원스토어가 설치되어 있지 않습니다. 만약 원스토어를 이용하고 싶다면 별도로 원스토어 앱을 설치해야 합니다. 다음은 크롬 웹브라우저에서 설치를 ...

안드로이드 / 앱 / 카카오뱅크 / 지문으로 이체, 로그인 가능하게 등록, 설정하는 방법

안드로이드 / 앱 / 카카오뱅크 / 지문으로 이체, 로그인 가능하게 등록, 설정하는 방법

스마트폰이나 스마트폰 앱에 로그인할 때 지문을 사용하면 상당히 편합니다. 비밀번호나 패턴보다 보안 측면에서 좋은지는 잘 모르겠지만, 편한 건 맞습니다. 지문 사용이 가능한 스마트폰이라면 카카오뱅크도 지문으로 본인 인증이 가능합니다. 카카오뱅크 앱을 설치할 때 설정할 수 있는데, 그 때 사용 설정을 하지 않아도 변경이 가능합니다. 카카오뱅크 앱을 실행하고, 왼쪽 위에 있는 선 세 개 ...

보안 / ATP - Advanced Threat Protection

Advanced Threat Protection(ATP)는 고급 사이버 위협으로부터 네트워크, 시스템 및 데이터를 보호하기 위한 일련의 보안 솔루션입니다. ATP 솔루션은 악성 공격을 탐지하고 차단하며, 위협에 대한 심층 분석과 대응을 제공하여 기업의 보안을 강화합니다. 주요 기능 실시간 모니터링 및 분석 네트워크 트래픽과 시스템 활동을 실시간으로 모니터링하여 이상 징후를 탐지합니다. 위협 탐지 및 차단 악성 소프트웨어, 피싱, 제로데이 공격 등 ...

스팀 / 게임 숨기기, 숨긴 게임 보기

스팀 / 게임 숨기기, 숨긴 게임 보기

언제할지도 모르면서 세일할 때 하나씩 사다보니 스팀에서 산 게임이 많아지고 있습니다. 그 중에는 엔딩까지 봐서 다시는 안 할 게임도 있고, 사긴 했지만 정말 언제 할지 모를 게임도 있고, 원래 것과 리마스터가 같이 있는 것도 있습니다. 그러다보니 라이브러리에 하지도 않을 게임이 잔뜩 보이는데요... 다행히도 목록에서 그 게임들을 숨길 수 있습니다. 방법은... 게임을 선택하고 ...