Linux 파티션부터 마운트까지: /dev/mapper/rhel-root와 파일시스템 구조 이해하기
- 카테고리: Linux
- 태그: Linux, Partition, Filesystem, Mount, LVM, Storage
- 주제: 리눅스의 저장 공간 구조와 디렉터리 경로가 파일시스템에 연결되는 방식
1. 리눅스의 디스크와 디렉터리 구조
리눅스에서는 여러 저장 장치와 파일시스템을 하나의 디렉터리 트리 안에서 사용할 수 있다. 모든 일반적인 경로는 루트 디렉터리인 /에서 시작한다.
예를 들어 다음과 같은 구조를 생각할 수 있다.
/
├── tmp/ # 루트 파일시스템을 사용할 수 있음
├── appl/ # 루트 파일시스템을 사용할 수 있음
├── loggin/ # 별도 파일시스템이 마운트될 수 있음
└── home/ # 별도 파일시스템이 마운트될 수 있음
위 구조에서 /loggin이 / 아래에 보인다고 해서 반드시 루트 파일시스템에 저장되는 것은 아니다./loggin에 별도 파일시스템이 마운트되어 있다면 해당 경로의 파일은 별도 파일시스템의 공간을 사용한다.
디렉터리 경로만으로 실제 저장 장치를 판단할 수 없다는 점이 핵심이다.
2. 디스크, 파티션, 파일시스템, 디렉터리의 차이
2.1 디스크
디스크는 데이터를 저장하는 물리적 또는 가상 저장 장치다. 서버에는 여러 디스크가 있을 수 있으며, 가상 서버에서는 가상 디스크가 제공될 수도 있다.
2.2 파티션
파티션은 디스크의 저장 영역을 논리적으로 나눈 단위다. 하나의 디스크를 여러 파티션으로 나누어 시스템, 데이터, 로그 등의 용도로 구분할 수 있다.
다만 파티션을 나누는 것만으로 파일을 저장할 수 있는 것은 아니다. 일반적으로 그 위에 파일시스템을 만들거나 LVM 등의 저장 공간 관리 계층을 구성한다.
2.3 파일시스템
파일시스템은 파일과 디렉터리를 저장하고 관리하는 구조다. 대표적인 리눅스 파일시스템에는 XFS와 ext4가 있다.
파일시스템은 파티션뿐 아니라 LVM 논리 볼륨이나 다른 블록 장치 위에도 구성할 수 있다.
2.4 디렉터리
디렉터리는 파일과 하위 디렉터리를 경로로 구성하는 공간이다. /tmp, /var/log, /loggin은 경로의 예다.
디렉터리 자체가 독립적인 파티션이라는 뜻은 아니다. 어떤 파일시스템을 사용하는지는 마운트 구성을 확인해야 한다.
3. 마운트와 마운트 지점
마운트는 파일시스템을 리눅스 디렉터리 트리의 특정 경로에 연결하는 작업이다. 연결되는 경로를 마운트 지점이라고 한다.
예를 들어 별도 파일시스템이 /loggin에 마운트되면 사용자는 /loggin/jeus/server.log 같은 일반적인 경로로 파일에 접근할 수 있다.
실제 데이터는 별도 논리 볼륨이나 디스크에 저장될 수 있지만, 사용자는 하나의 디렉터리 트리 안에서 접근한다.
현재 마운트 관계는 다음 명령어로 확인할 수 있다.
findmnt
findmnt /
findmnt /tmp
findmnt /loggin
findmnt는 현재 마운트된 파일시스템과 마운트 지점을 확인하는 데 유용하다.
결과 예시
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/rhel-root xfs rw,...
├─/app /dev/sdd1 xfs rw,...
├─/loggin /dev/sdb1 xfs rw,...
└─/share /dev/mapper/sharevg-sharelv xfs rw,...
4. 마운트 지점 아래에 원래 있던 파일
마운트 지점으로 사용할 디렉터리에는 마운트 전에 파일이 존재할 수 있다.
예를 들어 루트 파일시스템에 /loggin/old.log가 있는 상태에서 다른 파일시스템을 /loggin에 마운트하면, 마운트된 파일시스템의 내용이 해당 경로에서 보인다.
기존 old.log가 삭제되는 것은 아니지만, 마운트가 유지되는 동안 일반적인 경로 탐색에서는 가려진다. 마운트를 해제하면 기존 파일이 다시 보일 수 있다.
따라서 마운트 지점에 파일을 미리 만들어 두지 않는 것이 좋으며, 마운트가 실패했을 때 애플리케이션이 루트 파일시스템에 데이터를 쓰지 않는지도 확인해야 한다.
5. LVM의 구조: PV, VG, LV
LVM(Logical Volume Manager)은 저장 공간을 논리적으로 구성하고 관리하는 기술이다. 일반적인 LVM 구조는 다음과 같다.
물리 디스크 또는 파티션
|
v
PV (Physical Volume)
|
v
VG (Volume Group)
|
v
LV (Logical Volume)
|
v
파일시스템
|
v
마운트 지점
- PV(Physical Volume): LVM에서 사용할 물리 저장 공간이다.
- VG(Volume Group): 하나 이상의 PV를 묶어 만든 저장 공간 풀이다.
- LV(Logical Volume): VG에서 할당받아 사용하는 논리 볼륨이다.
LVM을 사용하면 VG에 여유 공간이 있을 때 논리 볼륨을 확장하는 등 저장 공간을 유연하게 관리할 수 있다.
다만 LV 확장과 파일시스템 확장은 별개의 작업일 수 있으며, 파일시스템 종류와 서버 구성에 맞는 절차가 필요하다.
6. /dev/mapper/rhel-root의 의미
/dev/mapper/rhel-root는 일반적인 RHEL 계열 서버에서 루트 파일시스템에 연결된 LVM 논리 볼륨을 가리키는 이름으로 자주 사용된다.
이름을 일반적으로 해석하면 다음과 같다.
/dev/mapper: Device Mapper가 제공하는 장치 경로다.rhel: 일반적인 구성에서 볼륨 그룹 이름이다.root: 일반적인 구성에서 논리 볼륨 이름이다.
실제 이름과 구성이 항상 이 규칙을 따르는 것은 아니므로, 장치 이름만 보고 확정하지 말고 서버에서 확인해야 한다.
rhel-root는 물리 디스크 하나를 반드시 의미하지 않는다. LVM을 통해 여러 물리 저장 공간을 논리적으로 구성했을 수도 있다.
7. 실제 저장 공간 구조 확인하기
다음 명령어는 저장 장치와 파일시스템 구성을 확인하는 데 사용한다.
# 디스크, 파티션, 논리 볼륨의 계층 구조
lsblk
# 파일시스템 종류, UUID, 마운트 지점
lsblk -f
# LVM 물리 볼륨
pvs
# LVM 볼륨 그룹과 여유 공간
vgs
# LVM 논리 볼륨
lvs
lsblk -f에서 파일시스템 종류와 마운트 지점을 확인하고, findmnt에서 특정 경로의 실제 마운트 관계를 확인하면 구조를 이해하기 쉽다.
LVM 명령어는 LVM을 사용하는 서버에서 의미가 있다. LVM을 사용하지 않는 환경에서는 해당 명령어로 기대한 정보를 얻을 수 없을 수 있다.
수행 예시
① lsblk — 디스크와 파티션 구조
NAME MAJ:MIN RM SIZE TYPE MOUNTPOINTS
sda 8:0 0 100G disk
├─sda1 8:1 0 1G part /boot
└─sda2 8:2 0 99G part
└─rl-root 253:0 0 50G lvm /
sdb 8:16 0 100G disk
└─sdb1 8:17 0 100G part /app
물리 디스크(sda, sdb) 아래에 파티션(sda1, sda2)이 어떻게 구성되어 있고, LVM 논리 볼륨이 연결되어 있는지 확인할 수 있다.
② lsblk -f — 파일시스템 정보
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS
sda1 xfs a1b2c3... /boot
sda2 LVM2_member d4e5f6...
└─rl-root xfs g7h8i9... /
sdb1 xfs j1k2l3... /app
파일시스템 종류와 UUID, 마운트 지점을 함께 확인할 수 있다. UUID는 실제 출력에서 긴 문자열로 표시된다.
8. /etc/fstab과 재부팅 후 마운트
/etc/fstab은 시스템 부팅 시 마운트할 파일시스템과 관련 옵션을 정의하는 설정 파일이다.
별도 로그 파일시스템을 /loggin에 마운트하는 서버라면 해당 마운트가 재부팅 후에도 정상적으로 이루어지는지 확인해야 한다.
현재 마운트가 정상이라고 해서 재부팅 후에도 반드시 정상이라고 단정할 수는 없다.
장치 식별자, 파일시스템 UUID, 마운트 옵션, 부팅 의존성 등을 함께 확인해야 한다.
- 설정 파일을 변경할 때는 기존 설정을 백업하고, 운영 절차에 따라 검증한다. 익숙하지 않은 환경에서
/etc/fstab을 무작정 수정하면 부팅이나 서비스 운영에 영향을 줄 수 있다.
정리
리눅스에서는 디스크, 파티션, 파일시스템, LVM, 마운트 지점이 서로 다른 개념이다. /tmp나 /loggin 같은 디렉터리 이름만으로 저장 공간이 분리되어 있는지 알 수 없다.
운영 서버의 저장 공간 구조를 파악할 때는 lsblk -f, findmnt, df -h, 그리고 LVM 환경의 pvs, vgs, lvs를 함께 활용하는 것이 좋다.