디스크 관리

Linux 디스크 파티션, 파일시스템, LVM, RAID 구성 및 관리 완벽 가이드


Linux 디스크 파티션, 파일시스템, LVM, RAID 구성 및 관리 완벽 가이드

목표: 스토리지 아키텍처를 설계하고 복잡한 디스크 문제를 해결할 수 있는 수준 [!warning] 실습 주의 fdisk, parted, mkfs, wipefs 계열 명령은 디스크 데이터를 손상시킬 수 있다. 반드시 테스트 VM/빈 디스크/스냅샷 환경에서만 실행한다.


💾 디스크 기초

디스크 장치 명명 규칙

패턴설명예시
/dev/sd*SCSI/SATA 디스크/dev/sda, /dev/sdb
/dev/nvme*n*NVMe 디스크/dev/nvme0n1
/dev/vd*가상 디스크 (KVM)/dev/vda
/dev/xvd*가상 디스크 (Xen)/dev/xvda
/dev/hd*IDE 디스크 (레거시)/dev/hda

파티션 번호

/dev/sda1    # 첫 번째 파티션
/dev/sda2    # 두 번째 파티션
/dev/sda5    # 첫 번째 논리 파티션 (확장 내)

🔧 파티션 관리

lsblk — 블록 장치 정보

lsblk                       # 기본 트리 출력
lsblk -f                    # 파일시스템 정보 포함
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID
lsblk -p                    # 전체 경로
lsblk -b                    # 바이트 단위

fdisk — MBR 파티션 (레거시)

sudo fdisk -l               # 모든 디스크 목록
sudo fdisk /dev/sdb         # 파티션 편집

fdisk 대화형 명령:

명령기능
m도움말
p파티션 테이블 출력
n새 파티션
d파티션 삭제
t파티션 유형 변경
a부팅 플래그 설정
w변경 저장
q종료 (저장 안함)

gdisk / sgdisk — GPT 파티션

sudo gdisk /dev/sdb         # 대화형
sudo gdisk -l /dev/sdb      # 목록만

sgdisk -p /dev/sdb          # 파티션 테이블 출력
sgdisk -n 1:0:+100G /dev/sdb   # 100GB 파티션 생성
sgdisk -d 1 /dev/sdb        # 파티션 삭제

parted — 고급 파티션 도구

# 대화형
sudo parted /dev/sdb

# 비대화형
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 0% 100%
sudo parted /dev/sdb print
sudo parted /dev/sdb rm 1

# 파티션 크기 조정
sudo parted /dev/sdb resizepart 2 500GB

📁 파일시스템

주요 파일시스템 비교

파일시스템특징사용처
ext4안정적, 널리 사용됨일반적인 Linux 시스템
XFS대용량, 고성능대용량 파일, 데이터베이스
Btrfs스냅샷, 압축, 체크섬현대적 대안
ZFS고급 기능 풍부NAS, 스토리지 서버
NTFSWindows 호환듀얼 부팅
exFAT크로스 플랫폼USB, SD 카드

파일시스템 생성

# ext4
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.ext4 -L mylabel /dev/sdb1
sudo mkfs.ext4 -m 1 /dev/sdb1    # reserved blocks 1%

# XFS
sudo mkfs.xfs /dev/sdb1
sudo mkfs.xfs -L mylabel /dev/sdb1
sudo mkfs.xfs -f /dev/sdb1       # 강제 (기존 덮어쓰기)

# Btrfs
sudo mkfs.btrfs /dev/sdb1
sudo mkfs.btrfs -L mylabel /dev/sdb1

# FAT32
sudo mkfs.vfat -F 32 /dev/sdb1

파일시스템 정보 및 검사

# 정보 확인
sudo tune2fs -l /dev/sda1       # ext4
sudo xfs_info /dev/sda1         # XFS
sudo btrfs filesystem show       # Btrfs

# 검사 (언마운트 상태)
sudo fsck /dev/sdb1
sudo fsck -y /dev/sdb1          # 자동 수정
sudo e2fsck -f /dev/sdb1        # ext4 강제 검사
sudo xfs_repair /dev/sdb1       # XFS 복구

# 레이블 변경
sudo e2label /dev/sdb1 newlabel
sudo xfs_admin -L newlabel /dev/sdb1

🔗 마운트

기본 마운트

# 마운트
sudo mount /dev/sdb1 /mnt
sudo mount -t ext4 /dev/sdb1 /mnt
sudo mount -o ro /dev/sdb1 /mnt      # 읽기 전용
sudo mount -o remount,rw /mnt        # 재마운트

# UUID로 마운트
sudo mount UUID=xxxxx /mnt
sudo mount LABEL=mylabel /mnt

# 언마운트
sudo umount /mnt
sudo umount /dev/sdb1
sudo umount -l /mnt                  # lazy (busy일 때)
sudo umount -f /mnt                  # 강제

/etc/fstab

# /etc/fstab 형식
# <file system> <dir> <type> <options> <dump> <pass>

# 예시
UUID=xxxxx  /          ext4    defaults,noatime        0 1
UUID=yyyyy  /home      ext4    defaults                0 2
/dev/sdb1   /data      xfs     defaults,nofail         0 0
/dev/sr0    /media/cdrom  iso9660  defaults,noauto,ro   0 0

# 네트워크 파일시스템
192.168.1.100:/nfs/share  /nfs  nfs  defaults,_netdev    0 0

마운트 옵션:

옵션설명
defaultsrw, suid, dev, exec, auto, nouser, async
noatime접근 시간 기록 안함 (성능 향상)
nodiratime디렉토리 접근 시간 기록 안함
relatime상대적 접근 시간 (기본)
sync동기식 쓰기
async비동기식 쓰기 (기본)
ro읽기 전용
rw읽기/쓰기
auto부팅 시 자동 마운트
noauto수동 마운트만
nofail마운트 실패핏도 부팅 계속
_netdev네트워크 파일시스템

마운트 관리

# 마운트된 파일시스템
mount
df -h
cat /proc/mounts

# fstab 테스트
sudo mount -a

# fstab 문법 검사
sudo findmnt --verify

# 마운트 포인트 확인
findmnt /mnt
findmnt /dev/sdb1

💽 LVM (Logical Volume Manager)

LVM 구성 요소

물리적 볼륨 (PV) ──> 볼륨 그룹 (VG) ──> 논리적 볼륨 (LV)
/dev/sdb1           data_vg             /dev/data_vg/www
/dev/sdc1                               /dev/data_vg/db
                                        /dev/data_vg/backup

물리적 볼륨 (PV)

# PV 생성
sudo pvcreate /dev/sdb1
sudo pvcreate /dev/sdc1 /dev/sdd1

# PV 목록
sudo pvs
sudo pvdisplay
sudo pvdisplay /dev/sdb1

# PV 제거
sudo pvremove /dev/sdb1

# PV 크기 조정 (파티션 확장 후)
sudo pvresize /dev/sdb1

볼륨 그룹 (VG)

# VG 생성
sudo vgcreate data_vg /dev/sdb1
sudo vgcreate data_vg /dev/sdb1 /dev/sdc1

# VG 확장
sudo vgextend data_vg /dev/sdd1

# VG 축소 (PV 제거 전)
sudo vgreduce data_vg /dev/sdd1

# VG 목록
sudo vgs
sudo vgdisplay data_vg

# VG 제거
sudo vgremove data_vg

# VG 이름 변경
sudo vgrename old_vg new_vg

논리적 볼륨 (LV)

# LV 생성
sudo lvcreate -L 100G -n www data_vg
sudo lvcreate -l 100%FREE -n backup data_vg

# LV 목록
sudo lvs
sudo lvdisplay data_vg/www

# LV 포맷
sudo mkfs.ext4 /dev/data_vg/www

# LV 마운트
sudo mount /dev/data_vg/www /var/www

# LV 크기 확장
sudo lvextend -L +50G /dev/data_vg/www
sudo lvextend -l +100%FREE /dev/data_vg/www

# 파일시스템 확장 (ext4)
sudo resize2fs /dev/data_vg/www

# 파일시스템 확장 (XFS)
sudo xfs_growfs /var/www

# LV 크기 축소 (주의!)
# 1. 언마운트
# 2. 파일시스템 검사
# 3. 파일시스템 축소
# 4. LV 축소
sudo umount /var/www
sudo e2fsck -f /dev/data_vg/www
sudo resize2fs /dev/data_vg/www 80G
sudo lvreduce -L 80G /dev/data_vg/www

# LV 스냅샷
sudo lvcreate -L 10G -s -n www_snap /dev/data_vg/www

# 스냅샷 복원
sudo umount /var/www
sudo lvconvert --merge /dev/data_vg/www_snap
sudo mount /dev/data_vg/www /var/www

# LV 제거
sudo lvremove /dev/data_vg/www

LVM 스냅샷

# 스냅샷 생성
sudo lvcreate -L 10G -s -n db_snap /dev/data_vg/db

# 스냅샷 상태 확인
sudo lvs

# 스냅샷에서 복원
sudo umount /var/lib/mysql
sudo lvconvert --merge /dev/data_vg/db_snap

# 스냅샷 삭제
sudo lvremove /dev/data_vg/db_snap

🛡️ RAID

RAID 레벨 비교

레벨이름최소 디스크장점단점사용처
0스트라이핑2성능 향상장애 시 데이터 손실성능 중심 (임시)
1미러링2이중화용량 50%중요 데이터
5패리티3성능+이중화쓰기 성능 저하일반 서버
6이중 패리티42개 디스크 장애 허용쓰기 성능 저하대용량 저장소
10미러+스트라이프4성능+이중화용량 50%데이터베이스

mdadm (소프트웨어 RAID)

# RAID 1 생성
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

# RAID 5 생성
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

# RAID 10 생성
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]1

# 진행 상황 확인
cat /proc/mdstat
watch cat /proc/mdstat

# RAID 상세 정보
sudo mdadm --detail /dev/md0

# 포맷 및 마운트
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid

# 설정 저장
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

# RAID 제거
sudo umount /mnt/raid
sudo mdadm --stop /dev/md0
sudo mdadm --remove /dev/md0
sudo mdadm --zero-superblock /dev/sdb1 /dev/sdc1

# 장애 디스크 교체
# 1. 장애 표시
sudo mdadm --manage /dev/md0 --fail /dev/sdb1
# 2. 제거
sudo mdadm --manage /dev/md0 --remove /dev/sdb1
# 3. 새 디스크 추가
sudo mdadm --manage /dev/md0 --add /dev/sde1

📊 디스크 모니터링

df — 디스크 사용량

df -h                       # 사람이 읽기 쉬운 형식
df -H                       # 1000 단위 (1000 vs 1024)
df -T                       # 파일시스템 유형
df -i                       # inode 사용량

du — 디렉토리 사용량

du -sh /path                # 총 사용량
du -sh *                    # 현재 디렉토리 항목별
du -h --max-depth=1 /path   # 1단계 깊이
du -ah /path | sort -rh | head -20  # 상위 20개

iostat — I/O 통계

# 설치
sudo apt-get install sysstat

# 기본 사용
iostat
iostat -x                   # 확장 통계
iostat -x 1 10              # 1초 간격, 10회
iostat -p sda               # 특정 디스크

SMART 모니터링

# 설치
sudo apt-get install smartmontools

# SMART 정보
sudo smartctl -a /dev/sda

# 짧은 테스트
sudo smartctl -t short /dev/sda

# 긴 테스트
sudo smartctl -t long /dev/sda

# 테스트 결과
sudo smartctl -l selftest /dev/sda

# 오류 로그
sudo smartctl -l error /dev/sda

🐛 디스크 문제 해결

디스크 공간 부족

# 1. 사용량 확인
df -h

# 2. 큰 파일/디렉토리 찾기
sudo du -ah / | sort -rh | head -20
sudo du -sh /* | sort -rh | head -10

# 3. 삭제된 파일이 열려있는 경우
sudo lsof +L1
sudo lsof /path | grep deleted

# 4. 로그 파일 정리
sudo journalctl --vacuum-time=7d
sudo find /var/log -name "*.gz" -mtime +30 -delete

# 5. 패키지 캐시 정리
sudo apt clean                # Debian/Ubuntu
sudo dnf clean all            # RHEL/CentOS

inode 부족

# inode 사용량 확인
df -i

# inode 많이 사용하는 디렉토리
sudo find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20

# 작은 파일 많은 디렉토리
sudo find /path -type f | wc -l

파일시스템 손상

# 읽기 전용으로 마운트된 경우
# 1. 언마운트
sudo umount /mnt

# 2. 파일시스템 검사
sudo fsck /dev/sdb1
sudo fsck -y /dev/sdb1

# 3. 재마운트
sudo mount /dev/sdb1 /mnt

# 루트 파일시스템의 경우
# 복구 모드로 부팅 후 검사

📋 체크리스트

  • 파티션 생성/삭제
  • 파일시스템 생성/검사
  • 마운트/언마운트
  • fstab 설정
  • LVM 구성 (PV/VG/LV)
  • LVM 확장/축소
  • RAID 구성
  • 디스크 모니터링
  • 공간 부족 문제 해결

🔗 관련 노트

  • 01-01-리눅스-기본-명령어-모음 — 기본 명령어
  • 02-06-LVM-구성 — LVM 심화
  • 02-05-디스크-관리 — ZFS 파일시스템
  • 03-02-성능-모니터링 — I/O 성능
  • 백업-복구-전략 — 백업 전략

마지막 업데이트: 2026-06-01