데이터베이스 연구실.log

디스크와 파일시스템

PV, VG, LV와 파일시스템의 관계, loop 장치 기반 LVM 구성과 XFS 및 루트 LV 확장 실습

lsblkfdiskLVMpvcreatevgextendlvextendxfs_growfsgrowpartlosetup

#핵심 요약

일반 파티션은 크기가 정해진 물통이라 차면 늘리기 어렵고, LVM은 여러 디스크(PV)를 하나의 풀(VG)로 묶어 필요한 만큼 논리 볼륨(LV)을 떼어 쓰므로 디스크를 더해 용량을 늘릴 수 있음

사용 순서는 새 디스크 확인 → 파티션 → PV → VG → LV → 파일시스템 → 마운트이며, 늘릴 때는 VG(vgextend) → LV(lvextend) → 파일시스템(xfs_growfs)을 각각 키워야 df에 반영됨

XFS는 마운트된 상태로 늘릴 수 있어 /u01 같은 경로를 내리지 않고 확장함

작업 대상이 새 디스크인지 반드시 확인하고, OS가 설치된 디스크(/dev/sda)는 건드리지 않음

#개념과 동작 원리

계층 의미 확인
디스크 OS가 인식한 장치 전체(/dev/sdb, /dev/loop0) lsblk, fdisk -l
파티션 디스크 안의 구역(/dev/sdb1, /dev/loop0p1) lsblk의 part
PV LVM이 관리하도록 등록한 디스크, 파티션 pvs
VG PV를 모은 저장 공간 풀 vgs의 VSize, VFree
LV VG에서 떼어 낸 논리 디스크, 파일시스템을 만드는 대상 lvs의 LSize
파일시스템, 마운트 LV 위의 XFS 등과 접근 경로 df -h

vgs의 #PV, #LV는 포함된 PV, LV 수, Attr의 wz--n-는 쓰기 가능, 크기 조정 가능, 정상, VFree는 아직 LV에 주지 않은 여유임
VFree가 0이면 VG 공간을 LV가 모두 쓰고 있는 것이라, LV를 키우려면 먼저 PV를 더해야 함

#필수 명령어 또는 SQL

#새 디스크 확인과 가짜 디스크 만들기

root 셸객체 또는 설정을 변경함
lsblk
fdisk -l
dd if=/dev/zero of=/lvmdisk.img bs=1M count=3072
losetup -fP /lvmdisk.img
losetup -a
lsblk

결과 해석:

실습 기록: 기존 sda(80G) 아래 sda1(/boot)과 sda2의 ol-root, ol-swap LV가 있고, 새 loop0(3G)은 TYPE loop로 파티션 없이 보임

losetup -fP는 비어 있는 loop 번호를 골라 파일을 붙이고 파티션도 인식하게 함

loop 장치는 재부팅하면 풀리므로 실습용으로만 쓰고, 실제 서버는 새로 추가한 디스크(/dev/sdb 등)로 같은 순서를 밟음

#파티션 → PV → VG → LV → XFS → 마운트

fdisk /dev/loop0 대화데이터 또는 파일을 삭제함, 되돌릴 수 없음
n
p
1
(Enter)
(Enter)
w
root 셸데이터 또는 파일을 삭제함, 되돌릴 수 없음
partprobe /dev/loop0
lsblk
pvcreate /dev/loop0p1
pvs
vgcreate vgdata /dev/loop0p1
lvcreate -l 100%FREE -n lvdata vgdata
mkfs.xfs /dev/vgdata/lvdata
mkdir /u04
mount /dev/vgdata/lvdata /u04
df -h /u04
vgs

결과 해석:

fdisk의 n은 새 파티션, p는 주 파티션, Enter 두 번은 처음부터 끝까지, w는 저장하고 종료이며 q는 저장하지 않고 나감

loop 장치는 파티션을 만든 뒤 partprobe를 해야 loop0p1이 보임

-l 100%FREE는 VG의 남은 공간 전부를 LV에 줌

실습 기록: vgs에 vgdata 1 1 0 wz--n- <3.00g 0

mount만으로는 재부팅 뒤 사라지므로 계속 쓸 경로는 /etc/fstab에 등록함
수업 실습은 일시 마운트까지만 다룸

#마운트한 경로에 테이블스페이스 두기

root 셸객체 또는 설정을 변경함
chown -R oracle:oinstall /u04
chmod 750 /u04
SQL*Plus (SYSDBA)객체 또는 설정을 변경함
CREATE TABLESPACE <TS_NAME> DATAFILE '/u04/<ts_name>01.dbf' SIZE 100M;

결과 해석:

새 파일 시스템은 root 소유로 만들어지므로 oracle 계정이 데이터 파일을 만들 수 있게 소유자를 바꿈

실습 기록: 테이블스페이스가 생성되었습니다

loop 장치 위의 데이터 파일은 재부팅 뒤 장치가 풀리면 열리지 않으므로 실습이 끝나면 테이블스페이스를 지우고 정리함

#새 PV로 VG, LV, 파일시스템 온라인 확장

root 셸객체 또는 설정을 변경함
dd if=/dev/zero of=/lvmdisk2.img bs=1M count=2048
losetup -fP /lvmdisk2.img
fdisk /dev/loop1
partprobe /dev/loop1
pvcreate /dev/loop1p1
vgextend vgdata /dev/loop1p1
vgs
lvextend -l +100%FREE /dev/vgdata/lvdata
lvs
df -h /u04
xfs_growfs /u04
df -h /u04

결과 해석:

실습 기록: vgextend 뒤 vgdata 2 1 0 wz--n- <5.00g <2.00g로 PV가 2개, 여유 2GB가 생기고, lvextend 뒤 LSize가 <5.00g가 됨

lvextend까지 해도 df는 이전 크기이며, xfs_growfs 마운트경로로 파일시스템을 늘려야 df가 약 5GB로 바뀜
이 과정 동안 경로는 한 번도 umount되지 않음

lvextend -r을 쓰면 LV와 파일시스템을 한 번에 늘림

수업 자료는 확장 단계의 마운트 경로를 /u01과 /u04로 섞어 적었으며, 같은 LV를 마운트한 경로 하나로 맞춰야 함

같은 loop1p1을 새 VG(vgdata2, /u05)를 만드는 과제에도 다시 쓰는데, 한 PV는 한 VG에만 속하므로 다른 이미지 파일(/lvmdisk3.img)로 새 장치를 만들어 씀

#가상 디스크를 키운 뒤 루트 LV 늘리기 (VirtualBox, Grid 단일 서버)

Windows 관리자 명령 프롬프트 (VM 전원 끈 상태)객체 또는 설정을 변경함
cd "C:\Program Files\Oracle\VirtualBox"
VBoxManage.exe modifyhd "<VDI 경로>\<이름>.vdi" --resize 122880
root 셸 (VM 부팅 뒤)인스턴스 또는 서비스 중단이 필요함
df -h
lsblk
parted /dev/sda print free
su - oracle -c "srvctl stop database -d <DB_NAME>"
crsctl stop has
yum install -y cloud-utils-growpart
growpart /dev/sda 2
lsblk /dev/sda
pvresize /dev/sda2
vgs
lvextend -r -L +40G /dev/mapper/ol-root
df -h
crsctl start has
su - oracle -c "srvctl start database -d <DB_NAME>"

결과 해석:

--resize는 MB 단위라 120GB는 120 × 1024 = 122880임
VM을 끄고, 스냅샷이 있으면 정리한 뒤에 함(스냅샷이 남아 있으면 크기를 바꾸지 못하는 경우가 있음)

부팅 뒤 lsblk의 sda는 120G로 보이지만 df는 그대로이고, parted ... print free에 끝부분 53.7GB가 Free Space로 나옴

growpart /dev/sda 2로 LVM이 든 2번 파티션을 디스크 끝까지 늘리고(CHANGED: partition=2 ...), pvresize로 PV에 알린 뒤 lvextend -r로 루트 LV와 파일시스템을 함께 키움
실습 기록: /가 82G로 늘어남

growpart가 없으면 cloud-utils-growpart 패키지를 설치하며, 파티션이 바로 커져 보이지 않으면 재부팅 뒤 pvresize부터 이어 감

실습은 안전을 위해 DB와 Grid(HAS)를 내린 뒤 했고, 끝나고 다시 올려 asmcmd lsdg로 디스크 그룹을 확인함
ASM 디스크(sdb~`sdf`)는 이 작업과 관계없이 그대로 둠

#사용 조건과 주의사항

LVM 확장은 실습 구성에서 무중단으로 동작했지만, 파일시스템 종류(XFS는 줄이기 불가)와 OS 버전, 스토리지에 따라 절차와 중단 여부가 달라짐

DB 데이터 파일이 있는 볼륨은 확장 중 I/O 지연이 생길 수 있어 작업 시간과 되돌리는 방법을 정하고 함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기