리눅스 디스크와 마운트

디스크를 추가하고 마운트하는 작업은 서버 운영의 기본기입니다. 명령어부터 부팅 시 자동 마운트, 그리고 실수했을 때 복구까지 정리합니다.

디스크·파티션 확인

lsblk              # 블록 장치 상태 (-f 파일시스템 정보)
blkid              # 파티션의 UUID와 파일시스템 타입
df -h              # 디스크 사용량과 마운트 상태
du -ah -d 1 [경로]  # 경로별 용량 (1뎁스)

파티션 생성과 파일시스템

새 디스크를 붙였다면 파티션을 만들고 파일시스템을 올립니다.

fdisk /dev/sdb
# n(새 파티션) → p(primary) → 크기 지정 → w(저장)

mkfs.ext4 /dev/sdb1     # ext4 파일시스템 생성

⚠️ mkfs 는 기존 데이터를 지웁니다. 장치명을 반드시 두 번 확인하세요. 엉뚱한 디스크에 실행하면 복구가 매우 어렵습니다.

마운트

mount /dev/sdb1 /test              # 기본 마운트
mount -t ext4 /dev/sdb1 /test      # 파일시스템 지정
mount -o ro /dev/sdb1 /test        # 읽기 전용
mount -t nfs 172.26.12.250:/k8s /test   # NFS 마운트
umount /test                        # 해제

부팅 시 자동 마운트 (fstab)

/etc/fstab 에 등록하면 재부팅 때 자동으로 마운트됩니다. 형식은 이렇습니다.

[장치명] [마운트포인트] [파일시스템] [옵션] [dump] [fsck]
/dev/sdb1 /docker-data ext4 defaults 1 1

주요 옵션은 defaults(일반적 조합), auto/noauto(자동 마운트 여부), ro/rw, nofail(장치 없어도 부팅 계속) 등이 있고, 여러 개는 쉼표로 붙입니다(defaults,nofail).

장치명 대신 UUID를 쓰자

VMware 등에서 재부팅 시 디스크 순서가 바뀌어 /dev/sda/dev/sdb 가 뒤집히면, fstab의 마운트가 통째로 엉킵니다. 그래서 장치명 대신 UUID로 지정하는 게 안전합니다.

blkid                                # UUID 확인
# fstab에서 /dev/sdb1 대신
# UUID=xxxx-xxxx /docker-data ext4 defaults,nofail 0 2

이러면 장치명이 바뀌어도 마운트가 유지됩니다.

fstab 잘못 건드려 부팅 실패했을 때

fstab은 잘못 건드리면 부팅이 아예 안 되거나 SSH가 죽을 수 있는, 꽤 위험한 파일입니다. 만약 부팅이 막혔다면:

[FAILED] Failed to mount ...

root 암호를 입력해 recovery mode로 들어간 뒤 /etc/fstab 을 고치고 재부팅합니다. 루트 파티션이 읽기 전용으로 잡혀 수정이 안 되면 재마운트합니다.

mount -o rw,remount /

수정 전에 fstab을 백업해두고, 새 항목엔 nofail 을 붙여두면 이런 사고를 크게 줄일 수 있어요.