VirtualBox로 리눅스 가상머신을 만들며 OS설치에서 디스크 파티셔닝을 진행하게되었다. 이를 통해 LVM에 대해 자세히 알아 볼 수 있었다.
Windows 컴퓨터를 사용하면서 다들 한번 쯤 c드라이브, d드라이브
의 존재에 대해 인식해 보았을 것이다.
왜 저장공간이 이렇게 나누어져 있는걸까 생각해 본 사람들도 있지만 그냥 나누어져 있구나하며 넘어간 사람들도 있을 것이라고 생각한다.
(필자는 후자에 가깝다..)
하지만 이러한 디스크 분리는 시스템 운영의 효율성
, 성능
, 안정성
을 위해 필수적이라고 할 수 있다. 하지만 물리적인 디스크 파티션은 크기를 변경할려면 데이터를 백업하고 파티션을 삭제한 후 새로 생성해야 하며 새로운 디스크를 추가할때 복잡한 절차를 거쳐야한다.
리눅스
에서 이러한 제한 사항들을 논리적인 파티션 구조로 해결하는 고급 디스크 파티션 기능
이 바로 LVM(Logical Volume Manager)이다.
LVM을 사용하면, 파티션의 크기를 동적으로 변경할 수 있는데, 이는 운영 중인 시스템에서도 실시간으로 가능하다. 예를 들어, 사용 가능한 여유 공간이 있는 경우, 논리 볼륨을 확장하여 파티션의 크기를 증가시킬 수 있고 반대로, 너무 큰 파티션을 줄이고 싶을 때도 데이터를 손실하지 않고 크기를 줄일 수 있다.
이러한 유연성은 서버 운영에 있어서 중요한 이점을 제공하며, 스토리지 관리를 더 효율적으로 만들어 준다.
LVM은
PV(Physical Volume)
,VG(Volume Group)
,LV(Logical Volume)
이라는 저장 공간을 관리하는 데 사용되는 계층적인 구조를 가지고 있다.
PV (Physical Volume):
이는 LVM이 관리하는 가장 기본 단위로, 물리적 디스크 또는 디스크 파티션을 말한다. LVM을 사용하기 위해서는 하나 이상의 PV를 생성해야 한다.
VG (Volume Group):
여러 PV를 하나로 묶은 것이다. VG는 하나 이상의 PV로 구성될 수 있으며, 큰 풀 (pool)의 저장 공간처럼 작동한다. 이렇게 함으로써 여러 디스크의 공간을 마치 하나인 것처럼 관리할 수 있다.
LV (Logical Volume):
VG 내에서 사용자가 원하는 크기와 목적에 따라 분할된 가상의 파티션이다. 실제 운영 체제에서 마운트하고 사용할 수 있는 실제 파티션처럼 동작한다. LV는 필요에 따라 크기를 조정할 수 있으며, VG 내의 남은 공간을 기반으로 확장하거나 축소할 수 있다.
이 계층적 관계를 통해 사용자는 실제 물리적 디스크의 제약 없이, 필요에 따라 스토리지를 할당하고 조정할 수 있고 파티션 관리를 훨씬 더 유연하게 관리할 수 있다.
아래 이미지처럼 리눅스에서
lsblk
라는 명령어로 디스크 파티셔닝 정보를 확인하였다.
LVM의 구성에 맞게 아래 구조를 해석해보자.
sda
라는 저장 디스크에 sda1, sda2, sda5로 3개의 물리적 파티션이 적용되어있다.
이때 이 세개의 파티션은 LVM의 PV에 대응된다.
그중 sda5를 하나의 VG("LVMGroup")으로 만들어 8개의 LV(root
, swap
, home
, var
, srv
, tmp
, var_log
)`로 구성하고 있다.
이처럼 용도별 별도의 공간을 할당하여 데이터를 더욱 효율적으로 관리 할 수 있게 된다.
각 논리 볼륨(LV)의 용도에 대해 알아보자.
root (LVGroup-root):
리눅스 시스템의 모든 파일과 디렉토리의 시작점인 '/'에 마운트. 운영 체제와 대부분의 시스템 파일 저장함.
swap (LVGroup-swap):
스왑 공간은 시스템의 RAM이 부족할 때 사용되는 디스크 기반의 메모리 영역입니다. 가상 메모리로 사용되어 시스템의 메모리 용량을 확장하는 역할을 함.
home (LVGroup-home):
사용자의 개인 데이터가 저장되됨. 각 사용자에게 할당된 디렉토리(/home/username)가 위치하며 개인 설정 파일, 문서, 미디어 파일 등을 저장함.
var (LVGroup-var): '/var' 디렉토리는 시스템이 운영되는 동안 변할 수 있는 데이터를 저장하는데 사용. ex) 로그 파일, 메일 큐, 데이터베이스, 웹 서버의 캐시
srv (LVGroup-srv): '/srv' 디렉토리는 서비스(service)에 관련된 데이터를 저장하는 데 사용함.
tmp (LVGroup-tmp): '/tmp' 디렉토리는 임시 파일을 저장하는 곳입니다. 많은 프로그램들 이 실행 중에 임시 데이터를 여기에 저장하며, 시스템이 재부팅될 때 일반적으로 비워진다.
var-log (LVGroup-var--log): '/var/log' 디렉토리는 시스템 로그 파일을 저장. 여기에는 시스템 이벤트 로그, 서비스 로그, 운영 체제 로그 등이 포함됩니다. 이러한 로그 파일들은 시스템의 문제를 진단하는데 사용함.
LVM에 대해 공부하면서 논리적 파티셔닝을 사용하는 이유와 사용함으로써 시스템에 가져오는 이점에 대해 배울 수 있었다. 또한 파티셔닝을 통해 여러 파일 시스템을 설정하면서 여러 폴더들의 용도와 하는 역할들에 대해 짚고 넘어갈 수 있었다.