리눅스 디스크 포맷 및 마운트

@lim · January 02, 2025

리눅스에서 파티션 설정과 디스크 마운트 하는 방법에 대해 알아보자.

1. 디스크 확인

다음 명령어를 이용하여 디스크 목록을 확인한다.

lsblk

상세히 확인하고 싶다면 아래 명령어를 이용한다.

fdisk -l

명령어를 이용한 결과는 다음과 같다.

root@ubuntu:/home/ubuntu# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 465.8G  0 disk 
mtdblock0    31:0    0    16M  0 disk 
mmcblk1     179:0    0 476.9G  0 disk 
└─mmcblk1p1 179:1    0 476.9G  0 part /mnt/sdcard
nvme0n1     259:0    0 238.5G  0 disk 
├─nvme0n1p1 259:1    0     4M  0 part 
└─nvme0n1p2 259:2    0 238.5G  0 part /
root@ubuntu:/home/ubuntu# fdisk -l
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: KBG50ZNT256G LS KIOXIA                  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 

Device         Start       End   Sectors   Size Type
/dev/nvme0n1p1 32768     40959      8192     4M Microsoft basic data
/dev/nvme0n1p2 40960 500118158 500077199 238.5G EFI System

Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Crucial X6 SSD  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

2. 디스크 포맷

1. 파티션 생성

fdisk를 사용하여 파티션을 새로 생성한다. (root 계정 또는 sudo 로 실행해야한다.)

주의 : 필자는 OS가 NVME에 설치되어 있어 sda를 포맷하지만 대게 SATA 인터페이스에 연결된 디스크에 설치했다면 sda에 OS가 설치되어 있을 가능성이 높기 때문에 확인 후 진행한다.

fdisk /dev/sda
  1. n → 새로운 파티션 생성
  2. p → 기본(primary) 파티션 선택
  3. 1 → 첫 번째 파티션 선택
  4. Enter → 기본 값 선택
  5. w → 변경 사항 저장

  1. n → 새로운 파티션 생성
root@ubuntu:/home/ubuntu# fdisk /dev/sda
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 0x714dd980.

Command (m for help): n
  1. p → 기본(primary) 파티션 선택
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
  1. 1 → 첫 번째 파티션 선택
Partition number (1-4, default 1): 1
  1. Enter → 기본 값 선택
First sector (2048-976773167, default 2048): 
  1. Enter → 기본 값 선택
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-976773167, default 976773167): 

Created a new partition 1 of type 'Linux' and of size 465.8 GiB.
  1. w → 변경 사항 저장
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

이후 lsblkfdisk -l로 확인하면 sda1 과 같이 파티션이 생긴 것을 확인할 수 있다.

root@ubuntu:/home/ubuntu# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 465.8G  0 disk 
└─sda1        8:1    0 465.8G  0 part 

2. 파일 시스템 포맷

각 파일 시스템에 대한 포맷 명령어는 다음과 같다.

명령어를 실행하면 바로 포맷이 진행되니 신중히 확인 후 진행한다.
사용 가능한 파일 시스템은 /proc/filesystems 파일을 확인하면 된다. (cat, vim, view 등)

ext4 (리눅스 기본 파일 시스템)

mkfs.ext4 /dev/sda1

xfs

mkfs.xfs /dev/sda1
  • xfs 파일 시스템은 2.1의 파티션을 생성하지 않고 전체 디스크를 단일 파일 시스템으로 포맷할 수 있다.
  • 이 경우 파티션 번호 없이 디스크 전체를 지정하면 된다.
mkfs.xfs /dev/sda

xfs로 포맷할 수 없다면, xfs 파일 시스템 관리 유틸리티인 xfsprogs를 설치한다.

sudo apt install xfsprogs

3. 마운트

마운트 명령어는 다음과 같다.

먼저 마운트 포인트 디렉토리를 생성 mkdir 한 후 진행한다.

# 마운트 
mount {파티션 경로} {마운트 포인트}
# xfs일 경우
mount -t xfs  {파티션 경로} {마운트 포인트}

# 마운트 해제
unmount {마운트 포인트}

자동 마운트 설정

부팅 시 자동으로 파티션이 마운트 되게 설정해보자.

  1. blkid 명령어로 먼저 파티션의 UUID를 확인한다.
root@ubuntu:/home/ubuntu# sudo blkid
/dev/sda: UUID="~~" BLOCK_SIZE="512" TYPE="xfs"
  1. /etc/fstab 파일에 다음과 같이 내용을 추가한다.
# <file system>     <mount point>  <type>  <options>   <dump>  <fsck>
UUID=<디스크 UUID> /mnt/mydisk <파일시스템> defaults 0 0
  1. mount -a 명령어로 마운트한다.

/etc/fstab

fstab은 리눅스 파일 시스템 테이블(File System Table)을 의미한다. 파일 시스템의 정보를 저장하고 있고, 부팅 시 자동으로 마운트할 파일 시스템의 정보를 표시한다.

사용할 수 있는 대표적 옵션들은 다음과 같다.

  1. defaults: rw, suid, dev, exec, auto, nouser, async 옵션을 모두 포함
  2. auto / noauto: 부팅 시 자동으로 마운트할지 여부를 결정
  3. rw / ro: 읽기/쓰기 또는 읽기 전용으로 마운트
  4. exec / noexec: 파일 시스템에서 실행 파일의 실행을 허용하거나 금지
  5. user / nouser: 일반 사용자의 마운트 권한을 허용하거나 금지
  6. suid / nosuid: SetUID와 SetGID 비트의 사용을 허용하거나 금지
  7. noatime: 파일 접근 시간을 업데이트하지 않음
  8. nofail: 마운트 실패 시에도 부팅 과정을 계속 진행
  9. usrquota / grpquota: 사용자 또는 그룹별 쿼터 설정을 가능하게 함
  10. _netdev: 네트워크 파일 시스템(예: NFS)에 사용되며, 네트워크 연결 후 마운트

주로 `noatime`과 `nofail`을 추가로 사용하는 듯 하다.

옵션 이후 다음 항목들은 다음과 같다.

  • 다섯 번째 항목 (dump)
    • 0 : dump 명령으로 파일 시스템 내용을 백업하지 않음
    • 1 : dump 명령을 사용하여 파일 시스템 백업 가능
    • 주로 0으로 설정
  • 여섯 번째 항목 (pass)
    • 0 : 부팅 시 fsck 명령으로 파일 시스템을 점검하지 않음
    • 1 : 루트 파일 시스템을 의미하며, 가장 먼저 점검
    • 2 : 루트 파일 시스템 이외의 파일 시스템을 의미하며, 1 다음으로 진행
    • 루트 파일 시스템이 아니면 0 또는 2로 설정
@lim
기억은 기록기록