/etc/fstab 에 /dev/docker_vg/docker_lv /var/lib/docker 로 등록해 두고 잘 쓰다가 부팅 후 볼륨을 잡지 못해 Docker 가 기동하지 않는 경우다. 원래 /var/lib/docker 가 루트 아래 디렉터리였더라도 별도 LV 를 마운트하는 구성 자체는 정상이다. 문제는 그 LV 를 못 찾는 것이다.
점검 순서는 다음과 같다.
# 1) 디스크 · I/O 오류 — 갑자기 안 되면 가장 흔한 원인
dmesg -T | grep -iE "error|fail|reset|i/o|ata|sd[b-z]"
journalctl -b | grep -iE "blk|disk|i/o error"
smartctl -a /dev/sdb
# 2) LVM 메타데이터
pvs -v; vgs -v; lvs -v
pvck /dev/sdb1
vgck docker_vg
vgscan --mknodes; vgchange -ay docker_vg
# 3) 커널 업데이트 후 initramfs 에 LVM 모듈 누락
rpm -qa --last | head -20
lsinitrd /boot/initramfs-$(uname -r).img | grep -i lvm
dracut -f # 필요 시 재생성
# 4) 비정상 종료 이력
last -x | head; journalctl --list-boots
nofail 옵션 없이 fstab 에 등록한 볼륨을 못 찾으면 부팅이 emergency mode 로 빠질 수 있으므로, 서비스용 데이터 볼륨에는 nofail 을 넣는 것을 고려한다.
lsblk 에서 sdb1 · sdc1 · sdd1 이 각각 독립 디스크로만 보이고 /dev/md* 가 없으면 RAID 가 아니라 개별 디스크다. RAID 0 이면 다음처럼 raid0 타입의 md 디바이스가 보인다.
sdb 8:16 0 7.3T 0 disk
└─sdb1 8:17 0 7.3T 0 part
└─md0 9:0 0 21.9T 0 raid0
lsblk
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --examine /dev/sdb1
새로 구성하려면 아래와 같다. 기존 데이터는 사라진다.
mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mkfs.xfs /dev/md0
mdadm --detail --scan | tee -a /etc/mdadm.conf
dracut -f
RAID 0 은 디스크 하나만 고장 나도 전체가 날아간다. 데이터 보호가 필요하면 RAID 5 · 6 · 10 을 쓰거나, 여러 디스크를 그냥 각각 마운트해 애플리케이션이 분산하게 둔다.