La foret rouge

Linux에서 /dev/sda 같은 저장 장치 이름이 변경되는 문제와 해결 방법

Published on
Published on

'mount 경로를 파일이 존재하는 디렉터리로 잡으면 기존 파일은 어떻게 될까?' 글에서 로컬 디스크를 추가할 때 명령어를 mount -t ext4 /dev/sdb1 /data처럼 사용했습니다. 이 때 "... /dev/sdb1과 같은 장치명을 직접 사용했으나 이 방법은 권장되지 않는다 ..."고 했습니다. 이번 글에서는 이 내용에 대해 더 자세히 알아보겠습니다.

리눅스 장치명

먼저 /dev/sdX가 뭘까요? 리눅스 운영체제는 거의 대부분의 것들을 파일로 관리를 하고 저장 장치와 같은 하드웨어 장치도 마찬가지입니다1. 그래서 새로 디스크 장치를 추가하면 /dev 경로 아래에 sdX 이름으로 추가됩니다. sdX인 이유는 SATA Device이기 때문이고 순서대로 a부터 z까지 붙습니다.

그래서 리눅스에 익숙하지 않은 분이라면 서버에서 OS 디스크는 sda로 잡힌 것을 확인했고, 새로 추가한 디스크는 순서대로 sdb, sdc, ... 이렇게 이름이 붙은 것을 확인하고, 파일 시스템을 만들고 마운트를 할겁니다.

> lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   32G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0 30.9G  0 part 
  ├─rl-root 253:0    0 28.9G  0 lvm  /
  └─rl-swap 253:1    0    2G  0 lvm  [SWAP]
sdb           8:16   0   10G  0 disk 
sr0          11:0    1    4M  0 rom  

장치명은 항상 동일할까?

그런데 이 이름은 재부팅 된 후에도 유지될까요? 답은 '알 수 없다' 입니다. 문제는 디스크가 2개 이상일 때부터 발생합니다. 장치명의 a-z는 장치가 시스템에 추가된 순서가 아니라 부팅 시 커널이 디스크를 인식하는 순서대로 매겨지기 때문입니다. 그래서 Red Hat에서는 이 이름을 'Non-persistent naming'이라고 합니다2.

실제로 여러 번 재부팅을 하면서 확인을 해봤는데, 매 번 부팅할 때마다 순서가 달라지지는 않았지만 간혹 바뀌는 경우가 있었습니다. 이 경우 의도하지 않은 다른 디스크에 잘못 접근을 하는 등 시스템 동작에 문제가 생길 수 있고, 최악의 경우 마운트가 제대로 안 되어 부팅 자체에 실패할 수도 있습니다. 아무리 확률이 낮더라도 이런 불확실성은 없앨 수 있으면 없애는 게 좋겠죠.

해결 방법

그러면 어떻게 이런 문제를 해결하여 부팅을 하더라도 정확한 순서로 장치를 마운트하도록 할 수 있을까요?

먼저, 장치에 파일시스템이나 파티션을 바로 할당하여 사용하는 경우, UUID 또는 Label을 이용하는 것을 권장합니다3.

UUID

> blkid
...
/dev/sdb1: UUID="4226f7ae-f1b0-430a-b1da-06bc781d23c4" TYPE="xfs" PARTUUID="903cd02a-01"
/etc/fstab
UUID=4226f7ae-f1b0-430a-b1da-06bc781d23c4  /data   xfs     defaults    0 0

Label

# ext4인 경우
> e2label /dev/sdb1 mydisk

# xfs인 경우
> xfs_admin -L mydisk /dev/sdb1
/etc/fstab
LABEL=mydisk    /data   xfs     defaults    0 0

LVM 사용

LVM을 사용하는 것도 방법입니다. LVM을 사용하면 추후 용량 확장에도 용이하기 때문에 저는 이 방법을 주로 사용합니다.

/etc/fstab
/dev/myvg/mylv  /data   xfs     defaults    0 0

이렇게 /etc/fstab 파일에 /dev/sdX를 직접 사용하지 않고 UUID, Label, LVM 방법으로 마운트를 한다면 재부팅 후 장치명이 바뀌더라도 정상적으로 마운트를 하여 문제가 발생하지 않게 됩니다.

참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.

  • Linux filesystem
  • LVM

Footnotes

  1. Nathaniel Ahao. "What Is /dev/sda in Linux?" Baeldung. https://www.baeldung.com/linux/dev-sda (accessed Mar. 22, 2025).

  2. "Chapter 6. Overview of persistent naming attributes." Red Hat Documentation. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/managing_file_systems/assembly_overview-of-persistent-naming-attributes_managing-file-systems (accessed Mar. 22, 2025).

  3. "mount(8) - Linux Man page." die.net. https://linux.die.net/man/8/mount (accessed Mar. 16, 2025).