- 출처 / 참고: VMware Broadcom Knowledge Base (VMware support for open-vm-tools - KB 2073803, Troubleshooting VMware Tools installation or upgrade issues - KB 1037860)
명령어:
vmware-toolbox-cmd,systemctl,vim-cmd,yum,apt,ps
키워드: VMware Tools is not running, outdated, open-vm-tools, vmtoolsd, guestInfo, vSphere Client, Auto-Upgrade Failure, repository
사용처: vSphere Client에서 가상 머신에 VMware Tools 미실행 또는 구버전 경고 발생 시 게스트 OS 데몬 상태 복구 및 open-vm-tools 패키지 전환
실행예제
vSphere Client 또는 ESXi 호스트에서 가상 머신 요약 탭에 VMware Tools가 실행되고 있지 않습니다(Not running) 또는 오래됨(Outdated) 경고가 표시되고, vSphere Client를 통한 자동 업그레이드가 실패할 때 리눅스 게스트 OS 및 ESXi 호스트 관점에서 원인을 진단합니다.
# 1. ESXi 호스트 관점: 대상 VM의 VMware Tools 상태 및 버전 정보 확인
$ vim-cmd vmsvc/get.guest 105 | grep -iE "toolsStatus|toolsVersion|toolsRunningStatus"
# toolsStatus = "toolsOld",
# toolsRunningStatus = "guestToolsNotRunning",
# toolsVersion = "10346",
# -> 게스트 툴 데몬이 꺼져 있거나 구버전 상태로 확인
# 2. 리눅스 게스트 OS 관점: vmtoolsd 서비스 구동 여부 및 프로세스 확인
$ systemctl status vmtoolsd # 또는 vmware-tools
# ● vmtoolsd.service - Service for virtual machines hosted on VMware
# Loaded: loaded (/usr/lib/systemd/system/vmtoolsd.service; enabled; vendor preset: enabled)
# Active: inactive (dead)
# -> 데몬이 중지되어 있어 vSphere vCenter와 통신이 두절된 상태 확인
# 3. 설치된 VMware Tools 유형 확인 (레거시 tar 배포본 vs OS 내장 open-vm-tools)
$ which vmware-toolbox-cmd
# /usr/bin/vmware-toolbox-cmd
$ vmware-toolbox-cmd -v
# 10.3.10.10540 (build-10540)
$ rpm -qa | grep -E "open-vm-tools|VMwareTools" # 또는 dpkg -l | grep vm-tools
# (출력 없음 -> 과거 레거시 tar.gz 아카이브 방식으로 수동 컴파일 설치되어 패키지 매니저와 충돌 중)
# 4. vSphere의 가상 CD-ROM 마운트 상태 점검 (자동 업그레이드 실패 원인)
$ ls -l /dev/cdrom /dev/sr0
$ mount | grep -i iso9660
# /dev/sr0 on /mnt/cdrom type iso9660 (ro,relatime)
# -> 이전 업그레이드용 VMware Tools ISO가 마운트 해제되지 않아 신규 업그레이드 ISO 삽입 차단
# 5. 게스트 OS 시스템 로그에서 vmtoolsd 크래시 원인 확인
$ journalctl -u vmtoolsd -n 20 --no-pager
스크립트
리눅스 게스트 OS 내에서 VMware Tools 데몬의 실행 여부를 점검하고, 구형 레거시 tar 설치본 잔여물을 감지하여 패키지 기반의 표준 open-vm-tools로 교체 및 자동 시작 활성화를 처리하는 점검/복구 쉘 스크립트입니다.
#!/bin/bash
# fix_vmware_tools.sh - Diagnose and fix VMware Tools not running and auto-upgrade failure
echo "=========================================="
echo " [VMware Tools 상태 진단 및 자동 복구기]"
echo "=========================================="
if [ "$EUID" -ne 0 ]; then
echo " [오류] 시스템 설정을 변경하려면 루트(root) 권한이 필요합니다."
exit 1
fi
# 1. 가상화 환경 검증
VIRT_TYPE=$(systemd-detect-virt 2>/dev/null || dmidecode -s system-product-name 2>/dev/null)
echo -e "\n[1] 시스템 가상화 플랫폼 확인:"
echo " - 감지된 플랫폼: ${VIRT_TYPE}"
if ! echo "$VIRT_TYPE" | grep -qi "vmware"; then
echo " [경고] VMware 가상 머신 환경이 아닙니다. 작업을 중단합니다."
exit 1
fi
# 2. CD-ROM 마운트 잠금 점검 및 언마운트 (vSphere 자동 업그레이드 실패 주원인)
echo -e "\n[2] 가상 CD-ROM 잠금 상태 점검:"
LOCKED_CD=$(mount | grep -E "/dev/sr[0-9]|iso9660")
if [ -n "$LOCKED_CD" ]; then
echo " [감지] 마운트된 ISO 이미지가 있습니다:"
echo " $LOCKED_CD"
echo " -> 신규 VMware Tools ISO 마운트를 위해 강제 언마운트 시도..."
umount -l /dev/sr0 2>/dev/null
echo " [완료] CD-ROM 언마운트 완료."
else
echo " [정상] 잠겨 있는 CD-ROM 마운트가 없습니다."
fi
# 3. 설치 형태 판별 (레거시 tar vs open-vm-tools)
echo -e "\n[3] 설치된 툴 버전 및 패키지 형태 점검:"
LEGACY_UNINSTALL="/usr/bin/vmware-uninstall-tools.pl"
PKG_INSTALLED=0
if rpm -qa 2>/dev/null | grep -q "open-vm-tools"; then
PKG_INSTALLED=1
echo " - 패키지 타입: open-vm-tools (RPM 기반 배포판 공식 패키지)"
elif dpkg -l 2>/dev/null | grep -q "open-vm-tools"; then
PKG_INSTALLED=1
echo " - 패키지 타입: open-vm-tools (DEB 기반 배포판 공식 패키지)"
fi
if [ -f "$LEGACY_UNINSTALL" ] && [ "$PKG_INSTALLED" -eq 0 ]; then
echo " [주의] 레거시 수동 컴파일(tar.gz) 방식의 VMware Tools가 설치되어 있습니다."
echo " -> 공식 권장 패키지(open-vm-tools)로의 전환이 필요합니다."
fi
# 4. vmtoolsd 서비스 활성화 및 재시작
echo -e "\n[4] vmtoolsd 서비스 상태 점검 및 복구:"
if ! command -v vmtoolsd &>/dev/null; then
echo " [경고] vmtoolsd 실행 파일이 없습니다. open-vm-tools 설치를 시도합니다."
if command -v dnf &>/dev/null; then
dnf install -y open-vm-tools
elif command -v yum &>/dev/null; then
yum install -y open-vm-tools
elif command -v apt-get &>/dev/null; then
apt-get update && apt-get install -y open-vm-tools
fi
fi
systemctl daemon-reload
systemctl enable vmtoolsd >/dev/null 2>&1
systemctl restart vmtoolsd
sleep 2
# 5. 최종 결과 검증
if systemctl is-active --quiet vmtoolsd; then
RUN_VER=$(vmware-toolbox-cmd -v 2>/dev/null || echo "설치됨")
echo " [성공] vmtoolsd 서비스가 정상 구동 중입니다. (버전: ${RUN_VER})"
echo " -> vSphere Client에서 약 1~2분 후 '실행 중(Running)' 상태로 갱신됩니다."
else
echo " [실패] vmtoolsd 서비스를 구동하지 못했습니다. journalctl -u vmtoolsd 로그를 확인하십시오."
fi
echo -e "\n=========================================="
echo " [점검 및 조치 완료]"
echo "=========================================="
해설
vSphere Client 상에서 가상 머신의 요약 탭에 VMware Tools: 실행되고 있지 않음 또는 업그레이드 가능(Outdated) 경고가 뜨고, vSphere 콘솔의 “VMware Tools 업그레이드(자동 업그레이드)” 기능이 오류와 함께 멈추는 현상은 엔터프라이즈 리눅스 환경에서 빈번하게 발생하는 인프라 관리 문제입니다.
1. vSphere “자동 업그레이드”가 실패하는 3대 원인
- 레거시 타르볼(tar.gz)과 배포판 패키지(
open-vm-tools)의 충돌:- VMware는 RHEL 7, CentOS 7, Ubuntu 14.04 이후부터 ESXi ISO 기반의 전통적인 C 소스 컴파일 방식(
vmware-install.pl) 설치를 공식 중단(Deprecated)하고, 각 리눅스 벤더의 표준 패키지 관리자가 제공하는open-vm-tools사용을 공식 권장 표준으로 채택했습니다. - 게스트 OS에
open-vm-tools가 설치되어 있는 상태에서 vSphere Client의 자동 업그레이드 버튼을 누르면, vSphere는 레거시 ISO를 마운트하여 스크립트 실행을 시도하다 패키지 매니저 잠금이나 권한 문제로 실패합니다.
- VMware는 RHEL 7, CentOS 7, Ubuntu 14.04 이후부터 ESXi ISO 기반의 전통적인 C 소스 컴파일 방식(
- 게스트 OS 가상 CD-ROM 장치 잠금/선점:
- vSphere의 자동 업그레이드는 가상 머신의 가상 CD-ROM 드라이브에
linux.iso를 강제로 마운트한 뒤 게스트 내부 에이전트를 트리거합니다. - 이미 게스트 OS 내부에서 기존 OS 설치 ISO나 이전 툴 ISO가 특정 디렉터리에 마운트(
mount)되어 락이 걸려 있으면 vSphere가 새 ISO를 넣지 못해 태스크가 즉각 실패합니다.
- vSphere의 자동 업그레이드는 가상 머신의 가상 CD-ROM 드라이브에
- 커널 업데이트 후 드라이버 미빌드 또는 서비스 비활성화:
yum update나apt upgrade로 리눅스 커널이 업데이트되었으나 구형 VMware Tools 커널 모듈(vmhgfs,vmxnet3)이 재컴파일되지 못해 부팅 시 서비스(vmtoolsd)가 실패 상태(failed)로 방치된 경우입니다.
2. 단계별 복구 및 영구 표준화 방안
1) 기존 구형 레거시 툴 완전 제거
과거 방식으로 설치된 흔적이 있다면 먼저 깨끗하게 제거해야 충돌을 방지할 수 있습니다.
# 구형 수동 설치본 언인스톨 스크립트 실행
if [ -f /usr/bin/vmware-uninstall-tools.pl ]; then
/usr/bin/vmware-uninstall-tools.pl
fi
2) 운영체제 표준 open-vm-tools 패키지 설치
OS 공식 저장소를 통해 설치하면 향후 OS 보안 패치(dnf update / apt upgrade) 시 VMware Tools도 커널에 맞춰 자동으로 업데이트되므로 vSphere에서의 수동 업그레이드가 아예 불필요해집니다.
- RHEL / Rocky / AlmaLinux / CentOS:
sudo dnf install -y open-vm-tools # GUI 데스크톱 환경이 설치된 VM인 경우 추가 설치 sudo dnf install -y open-vm-tools-desktop - Ubuntu / Debian:
sudo apt-get update sudo apt-get install -y open-vm-tools # GUI 데스크톱 환경인 경우 sudo apt-get install -y open-vm-tools-desktop
3) 데몬 활성화 및 상태 갱신
sudo systemctl daemon-reload
sudo systemctl enable --now vmtoolsd
sudo systemctl restart vmtoolsd
- 서비스가 시작되면 게스트 OS의 IP 주소, 메모리 사용량, 심장 박동(Heartbeat) 정보가 ESXi 하이퍼바이저로 전달되며, vSphere Client 상의 상태가 수 분 내로
게스트 관리 대상(Guest-managed) / 정상 실행 중으로 자동 전환됩니다.
주의사항
open-vm-tools환경에서는 vSphere Client의 ‘업그레이드’ 메뉴 사용 금지:- 게스트 OS가
open-vm-tools로 관리되는 경우, vSphere Client 요약 탭에 “게스트가 관리함(Guest-managed)”으로 표시됩니다. 이 상태에서는 vCenter GUI를 통한 도구 업그레이드를 수행하면 안 되며, 리눅스 터미널의 패키지 관리자(dnf upgrade open-vm-tools또는apt-get upgrade open-vm-tools)를 통해 업그레이드해야 시스템 충돌을 예방할 수 있습니다.
- 게스트 OS가
- vSphere High Availability(HA) 및 백업 연동 필수 요소:
- VMware Tools는 단순한 편의 도구가 아닙니다. 툴이 죽어 있으면 vSphere HA의 VM 모니터링(Heartbeat 감지)이 작동하지 않아 OS 행(Hang) 시 자동 재부팅이 되지 않으며, Veeam/Commvault 등의 백업 솔루션에서 VSS/게스트 파일시스템 동결(Quiescence)을 수행하지 못해 백업 데이터의 트랜잭션 정합성이 깨질 수 있습니다.
- 시간 동기화(Time Synchronization) 충돌 방지:
- 리눅스 게스트 OS 내부에서
chrony나ntpd를 운영 중이라면, VMware Tools의 호스트 시간 동기화 기능과 이중으로 경합하여 시스템 클럭이 튀는 현상이 발생할 수 있습니다. 내부 NTP 데몬을 쓸 경우vmware-toolbox-cmd timesync disable명령어로 VMware Tools의 하이퍼바이저 시간 동기화 기능을 꺼두는 것이 안전합니다.
- 리눅스 게스트 OS 내부에서