Tapdisk 운영 관점 정리
Xen/XCP-ng 계열 tapdisk와 blktap을 운영 관점에서 설명합니다. tap-ctl, tapdisk PID, dom0 I/O, VM 디스크 장애 증상과 스토리지 로그 대조 방법을 정리했습니다.
tapdisk는 Xen/blktap 계열에서 가상 디스크 I/O를 userspace에서 처리하기 위해 사용되는 구성요소입니다. VM 디스크 이미지, 특히 VHD 같은 형식을 블록 디바이스처럼 연결하고, tapdisk 프로세스가 read/write 요청을 처리합니다. XCP-ng/XenServer 계열 장애 분석에서 종종 만나게 됩니다.
어디에서 보이는가
VM이 디스크를 사용할 때 dom0에서 tapdisk 또는 blktap 관련 프로세스와 디바이스가 보일 수 있습니다.
ps -ef | grep -E 'tapdisk|blktap' | grep -v grep
ls -l /dev/xen 2>/dev/null || true
lsblk
XCP-ng 문서는 VHD 파일을 읽고 쓰는 프로세스 중 하나로 tapdisk를 설명합니다. 즉 guest OS 내부 문제가 아니라 hypervisor dom0의 스토리지 경로 문제로 봐야 할 때가 있습니다.
tap-ctl 확인
환경에 tap-ctl이 있으면 tapdisk 상태를 확인할 수 있습니다.
tap-ctl list
tap-ctl stats 2>/dev/null || true
구버전 Xen 문서에는 VHD를 수동으로 attach하기 위해 tap-ctl allocate, tap-ctl spawn, tap-ctl attach 흐름이 소개되어 있습니다. 운영 호스트에서 임의 attach/detach는 VM 디스크에 영향을 줄 수 있으므로 read-only 실험 환경에서만 수행합니다.
장애 때 볼 증상
- VM이 disk I/O에서 멈추거나 부팅이 지연됩니다.
- dom0 load average가 높고 D state process가 늘어납니다.
- 스토리지 SR/NFS/iSCSI 쪽 timeout 로그가 같이 보입니다.
- tapdisk 프로세스가 과도한 CPU 또는 I/O wait와 연결됩니다.
점검 명령
top -H -p $(pgrep -d, tapdisk 2>/dev/null)
iostat -xz 1 5
pidstat -d 1 5
dmesg -T | egrep -i 'tapdisk|blktap|I/O error|blocked for more than|nfs|iscsi|reset' | tail -n 120
journalctl -k --no-pager | egrep -i 'tapdisk|blktap|I/O error|blocked|nfs|iscsi' | tail -n 120
운영 판단
tapdisk 자체만 보고 장애 원인을 확정하면 안 됩니다. tapdisk는 VM 디스크 요청을 처리하는 위치에 있으므로, 뒤쪽 storage repository, NFS/iSCSI 네트워크, multipath, dom0 메모리, VM snapshot chain이 같이 원인일 수 있습니다. 장애 보고에는 VM 이름, VDI/SR, tapdisk PID, 스토리지 로그, dom0 iostat를 같이 묶어 남기는 것이 좋습니다.