개요
- Linux 환경에서 LVM(Logical Volume Manager)을 사용하여 유연한 디스크 관리를 수행하는 방법 정리
- 특히 2TB 이상 대용량 디스크 구성 시 parted 사용 필요
- 파일 시스템 종류별 차이 및 확장 절차 포함
Test 환경
- 목적: 3TB → 4TB LVM 볼륨 리사이징
- OS: Oracle Linux 8
파일 시스템 비교: EXT4 vs XFS
| 항목 |
EXT4 |
XFS |
| 아키텍처 |
Linked list + B-Tree |
B+ Tree |
| 최대 파일 크기 |
16 TB |
8 EB |
| 최대 볼륨 크기 |
1 EB |
8 EB |
| COW (Copy-on-write) |
X |
예정 |
| 스냅샷 지원 |
X |
예정 |
| 기본 파일 시스템 채택 |
Debian/Ubuntu |
RHEL/CentOS 7 이후 |
fdisk vs parted 차이
| 항목 |
fdisk |
parted |
| 파티션 타입 |
MBR (최대 2TB) |
GPT (2TB 초과 지원) |
| 명령 방식 |
CLI 기반 입력 방식 |
인터랙티브 또는 비대화형 명령 지원 |
| 사용 시기 |
2TB 이하 디스크 |
2TB 이상 디스크 |
💡 GPT 기반 디스크에 대해선 반드시 parted 사용 권장
작업 절차 요약
| 단계 |
명령어 |
설명 |
| 1 |
fdisk 또는 parted |
파티션 생성 및 LVM 타입 지정 |
| 2 |
pvcreate |
물리 볼륨(PV) 생성 |
| 3 |
vgcreate |
볼륨 그룹(VG) 생성 |
| 4 |
lvcreate |
논리 볼륨(LV) 생성 |
| 5 |
mkfs / mount |
파일시스템 포맷 및 마운트 |
1. 파티션 생성
1-1. 2TB 미만: fdisk
sudo fdisk /dev/sdb
n → p → 1 → Enter → Enter
t → 8e (Linux LVM)
w (저장)
1-2. 2TB 이상: parted
sudo parted /dev/sdb
mklabel gpt
mkpart primary 0 100%
set 1 lvm on
print
quit
2. 물리 볼륨 생성
sudo pvcreate /dev/sdb1
sudo pvdisplay
3. 볼륨 그룹 생성
sudo vgcreate data_vg /dev/sdb1
sudo vgdisplay
4. 논리 볼륨 생성
sudo lvcreate -n data -l 100%FREE data_vg
sudo lvdisplay
5. 파일시스템 포맷 및 마운트
5-1. 파일시스템 생성 (XFS 예시)
sudo mkfs.xfs -L DATA /dev/data_vg/data
5-2. 마운트 및 fstab 등록
sudo mkdir /data
sudo blkid | grep DATA
# /etc/fstab 예시
LABEL=DATA /data xfs defaults,_netdev,nofail 0 2
sudo mount -a
6. LVM 디스크 확장 (3TB → 4TB 예시)
6-1. 디스크 스캔
echo 1 | sudo tee /sys/class/block/$(readlink /dev/oracleoci/oraclevdb | cut -d'/' -f2)/device/rescan
6-2. 파티션 확장
sudo growpart /dev/sdb 1
6-3. PV 확장
sudo pvresize /dev/sdb1
6-4. LV 확장
sudo lvextend -l +100%FREE /dev/data_vg/data
6-5. 파일 시스템 확장
sudo xfs_growfs /dev/data_vg/data
mkfs 실무 옵션 예시
XFS
mkfs.xfs -f -i size=512 -L DATA /dev/data_vg/data
EXT4
mkfs.ext4 -m 1 -L DATA /dev/data_vg/data
테스트 환경 검증 및 운영 적용 가이드
1. 테스트 환경 준비
| 항목 |
내용 |
| OS |
운영과 동일한 Oracle Linux 8 또는 Red Hat 7/8 |
| 디스크 구성 |
실제 운영 환경과 유사한 디스크 사이즈, 파티션 구조 |
| 파일시스템 |
운영 환경과 동일한 XFS 또는 EXT4 사용 |
| 작업 시나리오 |
신규 디스크 추가, 파티션 구성, LVM 생성, 용량 확장 등 모든 과정을 재현 |
💡 OCI 환경일 경우 Block Volume 3T 생성 → LVM 구성 → 4T로 크기 증설 후 반영까지 전 과정 수행
2. 테스트 항목 체크리스트
| 단계 |
검증 항목 |
결과 |
| 파티션 생성 |
fdisk 또는 parted로 LVM 타입 설정 |
OK |
| PV 생성 |
pvcreate 정상 동작 여부 |
OK |
| VG 생성 |
vgcreate, vgextend로 그룹 생성 및 추가 |
OK |
| LV 생성/확장 |
lvcreate, lvextend 수행 후 사이즈 확인 |
OK |
| 파일시스템 생성/확장 |
mkfs.xfs, xfs_growfs, resize2fs 결과 확인 |
OK |
| 마운트 확인 |
df -h 및 /etc/fstab 등록 테스트 |
OK |
| 재부팅 후 정상 마운트 |
mount -a, reboot 후 자동 마운트 확인 |
OK |
3. 운영 환경 적용 전략
| 항목 |
권장 사항 |
| 백업 |
Snapshot 또는 이미지 백업 사전 수행 (OCI/VMware 등) |
| 점검 시간 |
저녁 또는 점검 창 설정 (디스크 관련 작업은 리스크 존재) |
| 변경 관리 |
작업 전 변경관리 등록 (운영 변경관리 프로세스) |
| 작업 절차 공유 |
명령어와 예상 출력 결과를 팀과 사전 공유 |
| 모니터링 |
작업 후 iostat, vmstat, df -h 등으로 상태 점검 |
| rollback 전략 |
기존 LV 스냅샷 또는 백업 볼륨 활용 방안 마련 |
4. 운영 시 유의사항
growpart 명령은 Cloud 환경 (OCI/AWS)에서만 사용 가능
/etc/fstab 설정 오류 시 부팅 실패 → _netdev, nofail 옵션 권장
xfs는 축소 불가 → 운영 시 용량 계획 중요
pvresize 및 lvextend는 실제 디스크 크기 반영 후 실행
5. 정리된 명령어 모음 (운영 적용용)
# 디스크 스캔 및 확장
echo 1 > /sys/class/block/$(readlink -f /dev/sdb | cut -d'/' -f3)/device/rescan
sudo growpart /dev/sdb 1
sudo pvresize /dev/sdb1
sudo lvextend -l +100%FREE /dev/VolGroup/lv_data
sudo xfs_growfs /dev/VolGroup/lv_data
참고