Partition

Partition

1️⃣ 디스크 파티셔닝: fdisk, parted

개념

  • 파티셔닝: 하나의 물리 디스크를 논리적 단위로 나누어 OS와 데이터를 분리.

  • MBR vs GPT

    • MBR: 최대 2TB, Primary 4개 제한
    • GPT: 9ZB까지 지원, Primary 제한 없음, EFI 부트 지원

아키텍처 이미지

[Physical Disk /dev/sdb]
┌─────────────┐
│ Partition 1 │ -> /boot
├─────────────┤
│ Partition 2 │ -> /
├─────────────┤
│ Partition 3 │ -> /home
└─────────────┘

명령어 예시

# 파티션 확인
sudo fdisk -l

# 디스크 파티셔닝 (fdisk)
sudo fdisk /dev/sdb

# parted로 GPT 파티션 생성
sudo parted /dev/sdb mklabel gpt
sudo parted -a opt /dev/sdb mkpart primary ext4 0% 50%
sudo parted -a opt /dev/sdb mkpart primary ext4 50% 100%

실습 시나리오

  1. Ubuntu 22 VM에 2개의 추가 디스크 /dev/sdb, /dev/sdc 연결
  2. fdisk로 각각 2개의 파티션 생성
  3. parted로 GPT 라벨 적용 및 파티션 생성
  4. lsblk로 구조 확인

2️⃣ LVM (Logical Volume Manager)

개념

  • PV (Physical Volume)VG (Volume Group)LV (Logical Volume) 구조
  • 장점: 디스크 추가, 확장/축소 유연

아키텍처 이미지

[Physical Disks: /dev/sdb, /dev/sdc] 
       │
       ▼
[Physical Volumes: PV1, PV2]
       │
       ▼
[Volume Group: vg_data]
       │
       ├─────────► [Logical Volume: lv_root]
       ├─────────► [Logical Volume: lv_home]
       └─────────► [Logical Volume: lv_var]

명령어 예시

# PV 생성
sudo pvcreate /dev/sdb /dev/sdc

# VG 생성
sudo vgcreate vg_data /dev/sdb /dev/sdc

# LV 생성
sudo lvcreate -L 20G -n lv_root vg_data
sudo lvcreate -L 10G -n lv_home vg_data

# 파일시스템 생성
sudo mkfs.ext4 /dev/vg_data/lv_root
sudo mkfs.xfs /dev/vg_data/lv_home

# 마운트
sudo mkdir /mnt/root /mnt/home
sudo mount /dev/vg_data/lv_root /mnt/root
sudo mount /dev/vg_data/lv_home /mnt/home

실습 시나리오

  1. 위에서 만든 파티션을 PV로 초기화
  2. VG 생성 후 LV 생성
  3. 각각 마운트하여 읽기/쓰기 테스트
  4. LV 확장/축소 실습
sudo lvextend -L +5G /dev/vg_data/lv_home
sudo resize2fs /dev/vg_data/lv_home

3️⃣ RAID (mdadm)

RAID 종류

RAID 설명 장점 단점
0 스트라이핑 속도 증가 데이터 보호 없음
1 미러링 데이터 안전 용량 반감
5 스트라이프 + 패리티 안전 + 속도 최소 3개 디스크 필요

아키텍처 이미지

RAID 1 (미러링)
[Disk1] ┐
        │→ /dev/md0 → /mnt/raid
[Disk2] ┘

명령어 예시

# RAID 1 생성
sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 상태 확인
cat /proc/mdstat

# 파일시스템 생성 및 마운트
sudo mkfs.ext4 /dev/md0
sudo mkdir /mnt/raid
sudo mount /dev/md0 /mnt/raid

실습 시나리오

  1. 2~3개의 추가 디스크 준비
  2. RAID0, RAID1, RAID5 각각 생성 후 테스트
  3. mdadm --detail /dev/mdX로 상태 확인

4️⃣ 파일시스템 비교

FS 장점 단점 실무 사용 사례
ext4 안정적, 널리 사용 일부 최신 기능 부족 Ubuntu, 일반 서버
xfs 대용량 파일 효율적, 저널링 작은 파일 성능 낮음 로그, 빅데이터
zfs 스냅샷, 압축, RAID-Z 메모리 사용량 많음 스토리지 서버, 백업
# 파일시스템 생성 예시
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
sudo zpool create zp1 /dev/sdb

5️⃣ fstab & mount 옵션

주요 옵션

옵션 설명
noexec 실행 금지
nosuid setuid/setgid 금지
nodev 특수 파일 장치 접근 금지
defaults 기본값 (rw,suid,dev,exec,auto,nouser,async)

예시

# /etc/fstab
/dev/vg_data/lv_home  /mnt/home  ext4  defaults,noexec  0 2

# 마운트
sudo mount -a

실습 시나리오

  1. 새 LV 생성 후 /mnt/home 마운트
  2. noexec, nosuid, nodev 옵션 적용
  3. 스크립트 실행 테스트 → 실패 확인
  4. 옵션 제거 후 재실행 → 성공 확인

✅ 종합 실습 시나리오 (Ubuntu 22)

  1. VM 생성: Ubuntu 22 LTS, 2개의 추가 디스크 /dev/sdb, /dev/sdc
  2. fdisk/parted로 파티션 생성
  3. PV → VG → LV 구조로 LVM 구성
  4. RAID1 또는 RAID5 생성
  5. ext4, xfs 파일시스템 생성 및 마운트
  6. /etc/fstab에 mount 옵션 적용 후 테스트
  7. LV 확장 및 파일시스템 확장 실습
마지막 수정일자