LFCS 시험 요건이 2016년 2월 2일부터 변경되었기 때문에, 우리는 여기에 발표된 LFCS 시리즈에 필요한 주제를 추가하고 있습니다. 이 시험을 준비하기 위해서는 LFCE 시리즈를 활용하는 것이 매우 권장됩니다.

리눅스 시스템을 설치할 때 가장 중요한 결정 중 하나는 시스템 파일, 홈 디렉터리 및 기타를 위해 할당할 저장 공간의 양입니다. 그 단계에서 실수를 하면 공간이 부족한 파티션을 확장하는 것은 번거롭고 다소 위험할 수 있습니다.
논리 볼륨 관리 (또는 LVM으로 알려집니다)는 대부분의 리눅스 배포판을 설치할 때 기본으로 사용되는데, 이는 전통적인 파티션 관리보다 많은 이점을 가지고 있습니다. 아마도 LVM의 가장 두드러진 특징 중 하나는 논리적인 분할을 손쉽게 조절할 수 있다는 것입니다.
LVM의 구조는 다음과 같습니다:
- 하나 이상의 전체 하드 디스크 또는 파티션을 물리적 볼륨(PVs)으로 구성합니다.
- A volume group (VG) is created using one or more physical volumes. You can think of a volume group as a single storage unit.
- 그런 다음 볼륨 그룹에 여러 논리 볼륨을 생성할 수 있습니다. 각 논리 볼륨은 전통적인 파티션과 어느 정도 동등하며 앞서 언급한대로 필요에 따라 크기를 조정할 수 있는 장점이 있습니다.
이 기사에서는 각각 8GB의 세 개의 디스크(/dev/sdb, /dev/sdc, 그리고 /dev/sdd)를 사용하여 세 개의 물리 볼륨을 만들 것입니다. 장치의 위에 직접 PVs를 만들거나 먼저 파티션을 만들 수 있습니다.
첫 번째 방법을 선택했지만, 이번에는 두 번째 방법을 선택할 경우(이 시리즈의 Part 4 – 리눅스에서 파티션 및 파일 시스템 만들기에 설명된대로), 각 파티션을 8e
유형으로 구성해야 합니다.
물리 볼륨, 볼륨 그룹 및 논리 볼륨 만들기
/dev/sdb, /dev/sdc, 그리고 /dev/sdd 위에 물리 볼륨을 만들려면 다음을 수행하세요:
# pvcreate /dev/sdb /dev/sdc /dev/sdd
새로 생성된 PVs를 나열하려면 다음을 사용할 수 있습니다:
# pvs
각 PV에 대한 자세한 정보를 얻으려면 다음을 사용하세요:
# pvdisplay /dev/sdX
(여기서 X는 b, c 또는 d입니다)
매개 변수로 /dev/sdX
를 생략하면 모든 PVs에 대한 정보를 얻게 됩니다.
vg00
이라는 볼륨 그룹을 만들려면 /dev/sdb
및 /dev/sdc
를 사용합니다(/dev/sdd
는 필요할 때 저장 공간 용량을 확장하기 위해 나중에 사용할 것입니다):
# vgcreate vg00 /dev/sdb /dev/sdc
물리 볼륨과 마찬가지로 이 볼륨 그룹에 대한 정보를 보려면 다음을 실행하세요:
# vgdisplay vg00
vg00
은 두 개의 8GB 디스크로 형성되었기 때문에 단일 16GB 드라이브로 표시될 것입니다.

논리적 볼륨을 생성할 때, 공간의 분배는 현재와 미래의 필요를 모두 고려해야 합니다. 각 논리적 볼륨에는 그 목적에 따라 이름을 붙이는 것이 좋은 실천법으로 여겨집니다.
예를 들어, vol_projects
(10 GB)와 vol_backups
(남은 공간)이라는 두 개의 LV를 생성해보겠습니다. 이후에는 프로젝트 문서 및 시스템 백업을 저장하는 데 사용할 수 있습니다.
-n
옵션은 LV의 이름을 지정하는 데 사용되며, -L
은 고정 크기를 설정하고 -l
(소문자 L)은 컨테이너 VG의 남은 공간의 백분율을 나타내는 데 사용됩니다.
# lvcreate -n vol_projects -L 10G vg00 # lvcreate -n vol_backups -l 100%FREE vg00
이전과 마찬가지로 LV 목록과 기본 정보를 보려면 다음을 사용할 수 있습니다:
# lvs
그리고 자세한 정보를 보려면 다음을 사용하세요:
# lvdisplay
단일 LV에 대한 정보를 보려면 다음과 같이 lvdisplay를 사용하고 매개변수로 VG와 LV를 지정합니다:
# lvdisplay vg00/vol_projects

위 이미지에서 볼륨이 저장 장치로 생성되었음을 확인할 수 있습니다 (LV 경로 참조). 각 논리적 볼륨을 사용하기 전에 파일 시스템을 생성해야 합니다.
여기서는 ext4를 예로 들겠습니다. ext4는 각 LV의 크기를 늘리거나 줄일 수 있어 xfs와 달리 크기를 늘릴 수 있습니다:
# mkfs.ext4 /dev/vg00/vol_projects # mkfs.ext4 /dev/vg00/vol_backups
다음 섹션에서는 필요에 따라 논리적 볼륨의 크기를 조정하고 추가 물리 저장 공간을 추가하는 방법을 설명하겠습니다.
논리적 볼륨 크기 조정 및 볼륨 그룹 확장
이제 다음 시나리오를 상상해보십시오. vol_backups
에서 공간이 부족해지고 있는 반면 vol_projects
에는 충분한 공간이 남아 있습니다. LVM의 특성으로 인해 우리는 후자의 크기를 쉽게 줄일 수 있으며(예를 들어 2.5 GB), 동시에 각 파일 시스템의 크기를 조정하여 전자에 할당할 수 있습니다.
다행히도, 이 작업은 다음과 같이 간단합니다:
# lvreduce -L -2.5G -r /dev/vg00/vol_projects # lvextend -l +100%FREE -r /dev/vg00/vol_backups

논리 볼륨의 크기를 조정할 때 마이너스 (-)
또는 플러스 (+)
기호를 포함하는 것이 중요합니다. 그렇지 않으면 LV의 크기를 조정하는 대신 크기를 고정시키게 됩니다.
논리 볼륨의 크기를 조정하여 저장 공간 요구 사항을 해결할 수 없게 되고 추가 저장 장치를 구입해야 하는 상황에 이를 수 있습니다. 간단히 말해서, 다른 디스크가 필요합니다. 우리는 초기 설정에서 남은 PV를 추가하여 이 상황을 시뮬레이션할 것입니다(/dev/sdd
).
/dev/sdd
를 vg00
에 추가하려면 다음을 수행하십시오:
# vgextend vg00 /dev/sdd
이전 명령을 실행하기 전후에 vgdisplay vg00
를 실행하면 VG의 크기가 증가한 것을 확인할 수 있습니다:
# vgdisplay vg00

이제 새롭게 추가된 공간을 사용하여 필요에 따라 기존 LV의 크기를 조정하거나 필요에 따라 추가 LV를 생성할 수 있습니다.
부팅 시 및 필요 시 논리 볼륨 마운트
실제로 사용하지 않을 논리 볼륨을 생성하는 것에는 의미가 없겠지요! 논리 볼륨을 더 잘 식별하기 위해 포맷된 저장 장치를 고유하게 식별하는 변경되지 않는 속성인 UUID
를 찾아야 합니다.
blkid에 이어 각 장치의 경로를 입력하십시오:
# blkid /dev/vg00/vol_projects # blkid /dev/vg00/vol_backups

각 LV에 대한 마운트 포인트를 생성하십시오:
# mkdir /home/projects # mkdir /home/backups
그리고 /etc/fstab
에 해당 항목을 삽입하십시오 (이전에 얻은 UUID를 사용하십시오):
UUID=b85df913-580f-461c-844f-546d8cde4646 /home/projects ext4 defaults 0 0 UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults 0 0
그런 다음 변경 사항을 저장하고 LV를 마운트하십시오:
# mount -a # mount | grep home

실제 LV를 사용할 때, 이 시리즈의 Part 8 – 리눅스에서 사용자 및 그룹 관리에서 설명된대로 적절한 ugo+rwx
권한을 할당해야 합니다.
요약
이 기사에서는 확장 가능성을 제공하는 저장 장치를 관리하는 다재다능한 도구인 논리 볼륨 관리를 소개했습니다. 이를 이 시리즈의 Part 6 – 리눅스에서 RAID 생성 및 관리에서 설명한 RAID와 결합하면 확장 가능성(LVM에서 제공) 뿐만 아니라 중복성(RAID에서 제공)을 누릴 수 있습니다.
이 유형의 설정에서는 일반적으로 LVM 위에 RAID가 있습니다. 즉, RAID를 먼저 구성한 다음 LVM을 그 위에 구성하게 됩니다.
이 기사에 대한 질문이나 개선 제안이 있으면 아래의 댓글 양식을 사용하여 문의해 주십시오.
Source:
https://www.tecmint.com/manage-and-create-lvm-parition-using-vgcreate-lvcreate-and-lvextend/