
이번에는 리눅스 서버에 추가된 새로운 디스크 /dev/nvme0n2를 파티셔닝하고, 파일 시스템을 생성하고, 마운트하는 예제를 진행해보려 한다.
또한 예제를 진행하며 fdisk, mkfs, mount 명령어들을 체계적으로 정리해보고자 한다.
디스크 확인 및 기본 정보 조회
fdisk -l
여기서 새로운 디스크 /dev/nvme0n2 (4GB)가 추가된 것을 확인할 수 있다. 현재는 어떤 파티션도 정의되어 있지 않다.
파티셔닝 - fdisk로 진행
fdisk /dev/nvme0n2
root@ubuntu:/# fdisk /dev/nvme0n2
Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS (MBR) disklabel with disk identifier 0xb6c5c166.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-8388607, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-8388607, default 8388607): +1G
Created a new partition 1 of type 'Linux' and of size 1 GiB.
예시) 1번
primary파티션 생성
# 1번 primary 파티션 1G
Command (m for help): n → p → 1 → default → +1G
# 2번 primary 파티션 1G
Command (m for help): n → p → 2 → default → +1G
# 4번 extented 파티션 남은용량 전부
Command (m for help): n → e → 4 → default → default
# 5번 logical 파티션 1G
Command (m for help): n → default → default → +1G
# 6번 logical 파티션 남은용량 전부
Command (m for help): n → default → default → default
fdisk를 실행한 후 표시되는 프롬프트에서 사용할 수 있는 명령어들은 다음과 같다. 단순히 'n → p → 1 → +1G'처럼 쓰는 걸 넘어서, 각각의 의미를 정확히 이해하고 있으면 실수나 오류를 줄일 수 있다.
| 명령어 | 의미 | 사용 예시 |
|---|---|---|
m |
명령어 도움말 보기 | Command (m for help): m |
n |
새 파티션 생성 (Primary/Extended/Logical) | n → p → 1 → +1G |
p |
현재 파티션 테이블 출력 (Print) | Command (m for help): p |
d |
파티션 삭제 (Delete) | d → 1 (1번 파티션 삭제) |
t |
파티션 ID/타입 변경 (Type) | t → 1 → 82 (1번을 Linux swap으로 변경) |
a |
부팅 가능 플래그 설정 (Active) | a → 1 (1번 파티션에 boot flag 설정) |
w |
파티션 테이블 저장 및 종료 (Write) | w 입력 시 실제 디스크에 반영 |
q |
저장하지 않고 종료 (Quit) | q 입력 시 변경 내용 폐기 |
x |
전문가 모드 (eXpert mode) | 고급 설정: 섹터 수동 조정 등 가능 |
v |
파티션 테이블 검사 (Verify) | 설정된 구조에 논리적 오류가 있는지 확인 |
g |
GPT 파티션 테이블 생성 (GUID) | 기존 MBR을 GPT로 초기화할 때 사용 |
o |
새 MBR 디스크 초기화 | 기존 파티션 전부 삭제됨 |
l |
파티션 타입 코드 목록 확인 | t 사용 시 코드 모를 때 l로 확인 가능 |
t명령어는 주로Linux(83),swap(82),EFI(ef)등으로 변경할 때 자주 쓰인다.
파일 시스템 생성 mkfs
디스크에 파티션을 나눴다고 해서 바로 데이터를 저장할 수 있는 건 아니다.
파일 시스템을 생성해야 비로소 디렉토리/파일 단위로 데이터를 기록할 수 있다.
이를 위해 사용하는 명령어가 바로 mkfs (make filesystem)이다.
기본 사용법
mkfs -t ext4 /dev/nvme0n2p1
# 위 명령어는 아래 명령어와 동일하다.
mkfs.ext4 /dev/nvme0n2p1
mkfs는 내부적으로 각 파일 시스템별 서브 커맨드(mkfs.ext4,mkfs.xfs등)를 호출한다.
- 🔸
-t ext4: 생성할 파일 시스템의 유형 (ext4,xfs,vfat등) - 🔸
/dev/nvme0n2p1: 포맷 대상 파티션
대표 파일 시스템 종류
| 명령어 | 설명 | 특징 |
|---|---|---|
mkfs.ext4 |
리눅스에서 가장 일반적인 파일 시스템 | 저널링 지원, 안정성 높음 |
mkfs.xfs |
고성능 파일 시스템 | 대용량에 유리, 속도 빠름 |
mkfs.vfat |
FAT32 계열 (USB 등에서 사용) | 리눅스/윈도우 호환 목적 |
mkfs.btrfs |
최신 CoW 방식의 파일 시스템 | 스냅샷, 압축 등 고급 기능 |
파일 시스템 예시
# 파티션 포맷
mkfs.ext4 /dev/nvme0n2p1
mkfs.ext4 /dev/nvme0n2p2
mkfs.ext4 /dev/nvme0n2p5
mkfs.ext4 /dev/nvme0n2p6
# extexted 파티션은 포맷 불가능!
root@ubuntu:/# mkfs.ext4 /dev/nvme0n2p4
mke2fs 1.47.0 (5-Feb-2023)
mkfs.ext4: inode_size (256) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i)
or lower inode count (-N).
# 정상적으로 포맷된 예
root@ubuntu:/# mkfs.ext4 /dev/nvme0n2p1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: b7798c22-d107-4b3b-a967-337bff44d5fb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
/dev/nvme0n2p4는extended 파티션이라 파일시스템 생성 불가
마운트(Mount)란 무엇인가?
마운트(Mount)란 새로 연결된 디스크(파티션)를 리눅스의 디렉토리 트리 어딘가에 붙여주는 작업이다.
리눅스에서는 디스크가 연결만 되어 있다고 자동으로 쓸 수 있는 게 아니다. 반드시 “디렉토리 경로”에 연결해줘야 한다.
즉, mount는 단순한 "연결"이 아니라 "해당 디스크의 파일시스템을 특정 경로에서 접근 가능하게 만드는 작업"이다.
마운트 예시
# 파티션에 연결할 디렉터리 생성
mkdir /nvme0n2p1-data /nvme0n2p2-data /nvme0n2p5-data /nvme0n2p6-data
# 각 디렉터리와 파티션 연결
mount /dev/nvme0n2p1 /nvme0n2p1-data
mount /dev/nvme0n2p2 /nvme0n2p2-data
mount /dev/nvme0n2p5 /nvme0n2p5-data
mount /dev/nvme0n2p6 /nvme0n2p6-data
mount [디바이스] [디렉토리]: 해당 디바이스(파티션)를 경로에 붙임
이후 /nvme0n2p1-data 안에 접근하면 실제 /dev/nvme0n2p1의 내용이 보이게 된다.
마운트 확인
# 마운트 확인
mount | grep nvme0n2
# 마운트 전체 확인
findmnt
마운트 주요 옵션 설명
| 옵션 | 풀네임 설명 |
|---|---|
-t --type |
파일 시스템 종류 지정 (예: -t ext4) |
-o --options |
마운트 시 설정할 추가 옵션들 (예: ro, rw, noexec, nosuid 등) |
예시:
mount -t ext4 -o ro /dev/nvme0n2p1 /mnt/read_only_disk
-t ext4:ext4타입으로 마운트-o ro: 읽기 전용 마운트
마운트 시 주의할 점
- 🔸 이미 마운트된 디렉토리에 다시 마운트하면 기존 내용은 가려진다.
- 🔸 실제로는 덮어쓰기처럼 동작하기 때문에 실수로 중요한 디렉토리에 마운트하면 데이터가 보이지 않을 수 있음.
- 🔸 시스템 재시작 시 마운트가 자동 해제된다.
- 🔸 디렉토리가 비어 있어야 한다.
- 🔸 기존 디렉토리에 파일이 있을 경우, 마운트하면 해당 내용은 일시적으로 숨겨짐.
- 🔸 파일시스템 타입이 맞아야 한다.
- 🔸
mount: wrong fs type오류가 나면mkfs에서 지정한 타입(ext4등)을 확인해야 함. - 🔸 파일시스템이 손상되었거나 마운트되지 않으면 dmesg 확인 필요.
마운트 해제 (Unmount)
umount /nvme0n2p1-data
# 아래 명령어도 가능
umount /dev/nvme0n2p1
마운트된 디스크를 안전하게 제거하거나 재마운트하기 전에 반드시
umount로 해제해줘야 함
디스크 사용 중일 경우 "target is busy" 오류가 날 수 있음 →lsof,fuser로 어떤 프로세스가 점유 중인지 확인
/etc/fstab 등록으로 부팅 시 자동 마운트
vi /etc/fstab
다음 내용을 추가:
/dev/nvme0n2p1 /nvme0n2p1-data ext4 defaults 0 1
/dev/nvme0n2p2 /nvme0n2p2-data ext4 defaults 0 1
/dev/nvme0n2p5 /nvme0n2p5-data ext4 defaults 0 1
/dev/nvme0n2p6 /nvme0n2p6-data ext4 defaults 0 1
시스템 재시작 후 해당 파티션에 접근가능
내용 정리
| 항목 | 명령어 | 의미 |
|---|---|---|
| 디스크 목록 확인 | fdisk -l |
현재 연결된 디스크 구조 확인 |
| 파티션 편집 | fdisk /dev/xxx |
디스크의 파티션 구조 생성/삭제 |
| 파일 시스템 생성 | mkfs.ext4 |
ext4로 포맷 후 사용 가능 |
| 마운트 | mount |
특정 경로에 디스크 연결 |
| 자동 마운트 | /etc/fstab |
시스템 부팅 시 자동 연결 설정 |
마운트는 왜 중요한가?
단순한 파일 접근 이상의 의미: 리눅스에서 디스크는 마운트를 통해서만 의미가 있다
실무에서는 디스크 추가 → 파티션 설정 → 파일시스템 생성 → 마운트까지가 하나의 세트
실수로 마운트 안 하면 아무리 디스크를 붙여도df -h에 안 나옴
'linux' 카테고리의 다른 글
| [리눅스 패키지 관리] apt? apt-get? (0) | 2025.05.29 |
|---|---|
| [리눅스 inode] ln 명령어 하드링크 vs 심볼릭링크 (0) | 2025.05.29 |
| [리눅스 프로세스 관리] ps와 kill 명령어 + 시그널까지 한 번에 정리하기 (0) | 2025.05.28 |
| [리눅스 명령어] linux tar 명령어 – 압축 및 해제 (0) | 2025.05.28 |
| [리눅스 권한 명령어 정리] chmod, chown, umask (0) | 2025.05.27 |