SAN/멀티패스 환경의 중복 경로, 오작동하는 디스크, 백업 스크립트가 건드리면 안 되는 볼륨 등 특정 블록 장치 하나만 시스템에서 제외해야 하는 상황은 생각보다 자주 생긴다. 문제는 “장치를 숨긴다”는 말이 어느 계층을 가리키는지에 따라 방법이 완전히 달라진다는 점이다. 데스크톱 자동 마운트에서만 숨길 것인지, fstab 마운트만 막을 것인지, 커널에서 아예 장치를 제거할 것인지, LVM이나 multipath 구성에서만 제외할 것인지에 따라 접근 방식이 다르다. 이 글에서는 목적별로 특정 블록 장치를 제외하는 방법을 정리한다.
udev로 데스크톱 자동 마운트에서 숨기기
GNOME Disks, Nautilus 같은 데스크톱 파일 관리자와 자동 마운트 데몬은 대부분 udisks2를 거친다. udisks2는 ENV{UDISKS_IGNORE}="1"이 붙은 장치를 목록에서 완전히 빼버린다. 주의할 점은 이 방법이 udisks2 기반 도구에만 적용된다는 것이다. 커널이나 mount 명령 자체에서 장치가 사라지는 것은 아니라서, CLI로 직접 마운트하면 여전히 접근할 수 있다.
# 장치 정보 확인 (UUID 확인용)
udevadm info --query=all --name=/dev/sdX
# 규칙 파일 생성 (60-persistent-storage.rules 이후 처리되도록 70 이상 번호 사용)
sudo nano /etc/udev/rules.d/70-hide-disk.rules
# UUID로 특정 (60-persistent-storage.rules가 ID_FS_UUID를 채운 뒤에 매칭되어야 하므로 파일명 순서가 중요하다)
SUBSYSTEM=="block", ENV{ID_FS_UUID}=="YOUR-UUID-HERE", ENV{UDISKS_IGNORE}="1"
# 또는 시리얼 번호로 특정 (장치 전체를 대상으로 할 때)
SUBSYSTEM=="block", ATTRS{serial}=="YOUR_SERIAL", ENV{UDISKS_IGNORE}="1"
sudo udevadm control --reload-rules
sudo udevadm trigger
/etc/fstab에서 제거 (자동 마운트 방지)
부팅 시 자동 마운트만 막으려는 경우 fstab에서 해당 항목을 주석 처리하면 된다. 이미 마운트돼 있는 상태라면 umount로 먼저 해제해야 한다.
sudo nano /etc/fstab
# 해당 장치 라인 앞에 # 추가
# /dev/sdX /mnt/data ext4 defaults 0 0
커널에서 완전히 제거하기 (SCSI 장치 삭제)
재부팅 없이 특정 디스크를 커널에서 완전히 떼어내려면 SCSI 계층의 delete 파일에 값을 써주면 된다. 먼저 마운트 해제, LVM/mdraid 멤버에서 제거, 진행 중인 I/O 플러시를 마쳐야 한다.
# 1. 마운트 해제, LVM/mdraid에서 먼저 제거
sudo umount /dev/sdX
# LVM 멤버라면: sudo vgreduce vgname /dev/sdX / sudo pvremove /dev/sdX
# mdraid 멤버라면: sudo mdadm --remove /dev/mdX /dev/sdX
# 2. 커널에서 장치 제거
echo 1 | sudo tee /sys/block/sdX/device/delete
이 방법은 재부팅하거나 SCSI 버스를 다시 스캔하면 장치가 그대로 다시 나타난다. 영구적으로 제외하려면 아래 커널 모듈 블랙리스트나 LVM/multipath 설정과 함께 써야 한다.
커널 모듈 블랙리스트 (드라이버 레벨 차단)
특정 드라이버를 쓰는 장치 전체를 재부팅 후에도 영구적으로 비활성화할 때 사용한다. 개별 장치가 아니라 해당 드라이버가 담당하는 장치 전부에 적용된다는 점에 유의해야 한다.
# 드라이버 확인
lsblk -d -o NAME,TRAN,MODEL
lspci -k | grep -A 3 "storage"
# 블랙리스트 파일 생성
echo "blacklist " | sudo tee /etc/modprobe.d/blacklist-storage.conf
# initramfs 업데이트 후 재부팅
sudo update-initramfs -u
LVM 장치에서 제외
LVM이 해당 장치를 물리 볼륨(PV) 후보로조차 스캔하지 못하게 하려면 lvm.conf의 필터를 쓴다.
sudo nano /etc/lvm/lvm.conf
devices {
# 특정 장치 필터 제외 (거부 규칙을 먼저, 그다음 나머지 전체 허용)
filter = [ "r|/dev/sdX|", "a|.*|" ]
# 또는 WWN 기준
global_filter = [ "r|/dev/disk/by-id/wwn-YOUR_WWN.*|", "a|.*|" ]
}
multipath 환경에서 제외
SAN 환경에서 특정 경로나 WWID를 멀티패스 구성에서 빼려면 multipath.conf의 blacklist 섹션을 쓴다.
sudo nano /etc/multipath.conf
blacklist {
devnode "^sdX"
# 또는 WWID로
wwid "YOUR_WWID"
}
sudo systemctl restart multipathd
상황별 권장 방법 요약
| 목적 | 방법 |
|---|---|
| 데스크톱 파일 관리자/자동 마운트에서만 숨기기 | udev ENV{UDISKS_IGNORE}="1" |
| fstab 자동 마운트만 방지 | fstab 주석 처리 |
| 재부팅 없이 즉시 커널에서 제거 | SCSI device/delete |
| 드라이버 자체를 영구 비활성화 | 커널 모듈 블랙리스트 |
| LVM에서 제외 | lvm.conf filter / global_filter |
| SAN/multipath 환경 | multipath.conf blacklist |
주의사항
ENV{UDISKS_IGNORE}="1"은 udisks2를 거치는 도구에만 영향을 준다. 커널의/dev/sdX노드 자체는 그대로 남아있으므로 CLI로 직접 마운트하면 접근할 수 있다.- SCSI
device/delete는 재부팅하거나 버스를 재스캔하면 장치가 다시 나타난다. 재부팅 후에도 유지하려면 커널 모듈 블랙리스트나 LVM/multipath 설정을 함께 적용해야 한다. - 장치를 삭제하기 전에는 반드시 마운트 해제, LVM/mdraid 멤버 제거, I/O 플러시를 먼저 끝내야 한다. 마운트된 상태에서
device/delete를 실행하면 파일시스템이 손상될 수 있다. - LVM
filter를 잘못 설정하면 부팅에 필요한 볼륨까지 필터링되어 부팅 실패로 이어질 수 있다. 변경 전에는 반드시 대상 장치 경로를 다시 확인해야 한다. - udev 규칙은
60-persistent-storage.rules가ID_FS_UUID같은 값을 미리 채워둬야 매칭할 수 있으므로, 커스텀 규칙 파일 이름은 그보다 뒤에 처리되도록 번호를 높게(70 이상) 지정해야 한다.
마무리
특정 블록 장치를 제외하는 방법은 “어느 계층에서 숨길 것인가”에 따라 완전히 다르다. 데스크톱 UI에서만 안 보이면 되는지, fstab 자동 마운트만 막으면 되는지, 커널 자체에서 없애야 하는지, LVM이나 multipath 구성에서만 빼면 되는지를 먼저 정한 뒤 그에 맞는 방법을 골라야 한다. 재부팅 후에도 유지되는 영구적인 제외가 필요하다면 커널 모듈 블랙리스트나 LVM/multipath 설정 쪽을, 즉시 반영되는 임시 조치가 필요하다면 SCSI 장치 삭제나 udev 규칙 쪽을 우선 검토하면 된다.