서버 재부팅 없이 새로운 디스크 추가하고 마운트하는 법

조회수: 0

운영 중인 서버에서 디스크 용량이 빠듯해지면 가장 간단한 해결책은 새 디스크를 추가하는 것이다. 문제는 서비스가 돌고 있는 서버를 쉽게 재부팅하기 어렵다는 점이다.
리눅스에서는 새 디스크가 커널에 인식되는 순간부터 바로 파티션을 만들고, 파일 시스템을 생성하고, 디렉터리에 마운트해 사용할 수 있다. 이후 /etc/fstab 설정만 잘 해두면 재부팅 후에도 자동으로 마운트된다.

아래 내용은 “새 블록 디스크가 서버에 이미 연결되어 있고, 리눅스에서 /dev/sdb 같은 이름으로 인식된 상태”를 전제로 설명한다.

전제 환경과 기본 개념 정리

예시는 다음과 같은 환경을 가정한다.

  • 리눅스 배포판: RHEL, CentOS, Rocky, Ubuntu, Debian 등 일반적인 서버용 배포판
  • 권한: root 또는 sudo 사용이 가능한 계정
  • 새 디스크: 예시 명칭은 /dev/sdb

혼동을 막기 위해 용어를 짧게 정리하면 다음과 같다.

  • 디스크: /dev/sdb 같은 물리/가상 블록 장치
  • 파티션: /dev/sdb1, /dev/sdb2 처럼 디스크를 논리적으로 나눈 영역
  • 파일 시스템: ext4, xfs 같이 데이터를 저장하고 관리하는 구조
  • 마운트 포인트: /data, /backup 처럼 파일 시스템을 붙이는 디렉터리

실제 작업 순서는 크게 다섯 단계다.

  1. 새 디스크 인식 확인
  2. 파티션 생성
  3. 파일 시스템 생성(ext4 또는 XFS 등)
  4. 디렉터리에 마운트해서 즉시 사용
  5. /etc/fstab 설정으로 자동 마운트 구성

각 단계를 순서대로 보면 흐름이 훨씬 깔끔해진다.

1. 새 디스크 인식 확인하기

가장 먼저 해야 할 일은 커널이 새 디스크를 제대로 인식했는지 확인하는 것이다. 이때 가장 자주 사용하는 명령은 lsblkfdisk -l 이다.

lsblk

또는

sudo fdisk -l

여기서 기존 시스템 디스크 /dev/sda 외에 /dev/sdb 가 새로 보이고, 그 아래에 sdb1 같은 파티션이 없는 상태라면 아직 파티션이 만들어지지 않은 새 디스크라는 뜻이다.

디스크를 방금 붙였다면 dmesg 를 통해 커널 로그도 확인할 수 있다.

dmesg | tail

여기까지 확인이 되면 안심하고 파티션 작업으로 넘어갈 수 있다.

2. fdisk로 새 디스크에 파티션 생성하기

일반적으로 새 디스크를 하나의 데이터용 파티션으로 모두 사용하는 방식이 가장 단순하다. 이 예시는 fdisk 를 사용한다.

sudo fdisk /dev/sdb

프롬프트 안으로 들어가면 아래 순서대로 입력하면 된다.

  1. n : 새 파티션 생성
  2. p : Primary 파티션 선택
  3. 파티션 번호: 기본값 1 사용 후 엔터
  4. 시작 섹터: 기본값 엔터
  5. 끝 섹터: 기본값 엔터(디스크 전체 사용)
  6. p : 설정 내용 확인
  7. w : 저장 후 종료

완료 후 다시 확인한다.

lsblk
sudo fdisk -l /dev/sdb

출력에 /dev/sdb1 이 보이면 파티션 생성이 끝난 것이다.

대용량 디스크나 GPT 파티션 테이블이 필요한 경우에는 partedgdisk 를 사용하는 방식도 있다. 원리는 동일하고, “디스크에 파티션을 하나 만든다”는 목표만 같으면 된다.

3. 파티션에 파일 시스템(ext4/XFS) 생성하기

파티션이 준비됐으면 그 위에 파일 시스템을 올려야 실제로 데이터를 저장할 수 있다. 가장 널리 사용하는 것은 ext4와 XFS다.

3-1. ext4 파일 시스템 만들기

sudo mkfs.ext4 /dev/sdb1

디스크 용량과 블록 수, inode 등이 계산되며 포맷이 진행된다. 이 과정에서 대상 파티션에 있는 데이터는 전부 지워진다.
따라서 명령 실행 전 대상이 정말 새 디스크인지, 시스템 디스크가 아닌지 다시 한 번 확인하는 습관이 중요하다.

3-2. XFS 파일 시스템 만들기

XFS를 사용하고 싶다면 다음처럼 실행한다.

sudo mkfs.xfs /dev/sdb1

어떤 파일 시스템을 선택할지는 운영 환경과 정책에 따라 다르지만, 일반적인 서버에서는 ext4 또는 XFS만으로도 대부분의 요구사항을 충족한다.

4. 마운트 포인트 생성 후 즉시 마운트하기

이제 파일 시스템을 특정 디렉터리에 붙이면 바로 사용할 수 있다. 원하는 마운트 포인트 디렉터리를 먼저 만든다.

sudo mkdir -p /data

그리고 다음 명령으로 마운트한다.

sudo mount /dev/sdb1 /data

이 상태에서 df -h 또는 lsblk 로 마운트 여부를 확인한다.

df -h | grep /data
lsblk

/data 에 용량이 표시되고 파일 시스템 타입이 방금 만든 ext4 또는 xfs 로 나온다면 정상이다.
이 시점부터 /data 아래에서 생성하는 파일과 디렉터리는 새 디스크에 저장된다. 다만 아직은 수동 마운트 상태이기 때문에, 재부팅 시 자동으로 붙지는 않는다.

5. /etc/fstab 설정으로 재부팅 후 자동 마운트하기

서버를 재부팅해도 새 디스크가 자동으로 붙도록 만들려면 /etc/fstab 파일에 항목을 추가해야 한다. 이때 /dev/sdb1 같은 디바이스 이름 대신 UUID를 사용하는 것이 안전하다. 디스크 순서가 바뀌어도 UUID는 그대로 유지되기 때문이다.

5-1. 파티션의 UUID 확인

sudo blkid /dev/sdb1

또는

ls -al /dev/disk/by-uuid/

예시 출력은 다음과 같다.

/dev/sdb1: UUID="1234abcd-5678-90ef-aaaa-bbbbccccddff" TYPE="ext4"

여기에서 UUID 값만 복사해 둔다.

5-2. /etc/fstab에 항목 추가

편집기로 /etc/fstab 을 연다.

sudo vi /etc/fstab

파일 마지막 줄에 다음과 같은 형식의 내용을 추가한다(ext4 기준).

UUID=1234abcd-5678-90ef-aaaa-bbbbccccddff   /data   ext4   defaults   0   2

XFS를 사용했다면 세 번째 필드에 xfs 를 지정하면 된다. 필드 의미는 다음과 같다.

  • 첫 번째: 장치 UUID
  • 두 번째: 마운트 포인트(/data)
  • 세 번째: 파일 시스템 타입(ext4, xfs 등)
  • 네 번째: 마운트 옵션(일반적으로 defaults)
  • 다섯 번째/여섯 번째: 덤프, fsck 관련 옵션(대부분 0 2 로 둔다)

5-3. 재부팅 없이 fstab 설정 검증하기

fstab 설정의 문제가 있으면 다음 부팅 때 시스템이 멈출 수 있기 때문에, 재부팅 전에 미리 검증하는 것이 안전하다.

sudo umount /data
sudo mount -a

mount -a 명령은 /etc/fstab 에 적힌 항목을 기준으로 일괄 마운트를 시도한다. 이때 에러 메시지가 뜨지 않으면 구문 오류나 잘못된 값 없이 잘 설정된 것이다.
이후 df -h 를 다시 확인해 /data 가 제대로 붙는지 확인하면 된다.

여기까지 끝나면 재부팅 없이 새 디스크를 추가해 사용하고, 다음 부팅 때도 자동으로 마운트되도록 설정이 완료된 것이다.

6. 서버 재부팅 없이 작업할 때 체크 포인트

실서비스가 돌아가는 서버에서 디스크 작업을 할 때는 사소한 실수가 큰 장애로 이어질 수 있다. 다음 항목들을 체크리스트처럼 항상 점검해 두면 안전하다.

  1. 마운트 포인트가 비어 있는지 확인
    새 디스크를 /data 에 마운트했는데, 사실 /data 아래에 기존 데이터가 있었다면 그 순간 기존 데이터는 접근하기 힘든 상태가 된다.
    ls /data 로 먼저 내용을 확인하고, 필요하면 다른 위치로 옮긴 뒤 마운트한다.
  2. 디바이스 이름 정확히 식별
    /dev/sda/dev/sdb 를 잘못 보면 시스템 디스크를 포맷하는 대형 사고가 날 수 있다.
    lsblk 출력에서 용량, 마운트 여부, 파티션 구조를 꼼꼼히 보고 대상 디스크를 다시 확인한다.
  3. I/O 피크 시간대 피하기
    포맷과 마운트 자체는 짧게 끝나지만, 이후 데이터 이동이나 마이그레이션이 예정되어 있다면 트래픽이 적은 시간대에 작업하는 편이 좋다.
  4. /etc/fstab 오타 주의
    잘못된 항목이 들어가면 부팅 과정에서 루트 파일 시스템 마운트 단계에서 멈출 수 있다.
    변경 후에는 반드시 mount -a 로 구문과 값이 올바른지 테스트한다.
  5. 가능하면 백업 또는 스냅샷 확보
    클라우드 환경이라면 블록 스토리지 스냅샷, 온프레미스라면 중요 데이터 백업을 먼저 확보하면 만약의 상황에 대응하기 훨씬 수월하다.

7. LVM, 클라우드 볼륨을 사용할 때의 흐름

이미 LVM(Logical Volume Manager)을 사용 중인 서버라면, 새 디스크를 독립된 마운트 포인트로 쓰기보다는 기존 VG에 편입해 논리 볼륨을 확장하는 방식이 더 자연스러울 수 있다. 이 경우 흐름은 다음과 비슷하다.

  1. 새 디스크 추가 및 인식 확인(/dev/sdb)
  2. pvcreate /dev/sdb 로 물리 볼륨 생성
  3. vgextend <기존_VG> /dev/sdb 로 볼륨 그룹 확장
  4. lvextend 로 논리 볼륨 크기 확장
  5. ext4 또는 XFS에서 resize2fs 또는 xfs_growfs 로 온라인 파일 시스템 확장

이 방식은 기존 /var, /home, /data 등 이미 사용 중인 마운트 포인트의 용량을 늘리고 싶을 때 유용하다. 반면 새 업무용 디렉터리를 따로 두고 싶다면 이 글에서 설명한 것처럼 별도의 디스크와 마운트 포인트를 만드는 쪽이 더 단순하다.

AWS EBS, GCP Persistent Disk, Azure Managed Disk 같은 클라우드 블록 스토리지도 서버 입장에서는 결국 새 디스크로 보인다. 콘솔이나 CLI로 볼륨을 할당해 인스턴스에 붙인 뒤, 리눅스 안에서 지금까지 살펴본 절차(파티션 생성 → 파일 시스템 생성 → 마운트 → fstab 등록)를 그대로 적용하면 된다.

마무리: 전체 절차 한 번에 정리

재부팅 없이 새 디스크를 추가하고 마운트하는 과정을 다시 한 번 정리하면 다음과 같다.

  1. lsblk, fdisk -l 로 새 디스크(/dev/sdb) 인식 확인
  2. fdisk /dev/sdb 로 파티션 생성 후 /dev/sdb1 확보
  3. mkfs.ext4 /dev/sdb1 또는 mkfs.xfs /dev/sdb1 로 파일 시스템 생성
  4. mkdir -p /datamount /dev/sdb1 /data 로 즉시 사용
  5. blkid /dev/sdb1 로 UUID 확인 후 /etc/fstab
    UUID=... /data ext4 defaults 0 2 추가
  6. umount /data, mount -a 로 설정 검증 후 운영 반영

이 순서를 몸에 익혀 두면, 디스크 증설이 필요할 때마다 서버를 재부팅하지 않고도 안정적으로 용량을 확장할 수 있다. 운영 환경에서 반복적으로 쓰이는 작업이니, 사내 표준 절차로 정리해 두고 활용하는 것도 좋은 방법이다.