Nutanix Linux VM에 NGT(Nutanix Guest Tools)를 설치할 때는 Prism에서 해당 VM의 NGT를 활성화하고 ISO를 연결한 뒤, 게스트 OS 안에서 설치 프로그램을 실행합니다. 설치 후에는 RPM이 들어갔는지뿐 아니라 게스트 에이전트 서비스와 CVM 통신까지 확인해야 합니다.
이 글은 CentOS 7.2·7.4의 패키지 조회 자료와 2025년 10월 9일의 CentOS 7.4·Rocky Linux 9.4 설치 기록을 바탕으로 정리했습니다. 명령과 조건은 2026년 10월 27일 확인한 Prism Element 7.6·Prism Central pc.7.6 공식 문서와 대조했습니다. 기록에 나오는 NGT 4.3-1은 당시 설치 버전이며 최신 버전이라는 뜻은 아닙니다.
이 글의 목차
설치 방식과 지원 조건부터 구분
이 글은 VM 한 대에 ISO로 수동 설치하는 절차를 중심으로 설명합니다. 사용 중인 AOS·하이퍼바이저·게스트 OS·NGT 버전의 지원 여부는 Nutanix NGT 호환성 매트릭스에서 확인합니다. 설치 성공 기록과 현재 공식 지원은 별개의 판단입니다.
| 방식 | 설치 실행 위치 | 먼저 확인할 조건 |
|---|---|---|
| Prism Element에서 ISO 연결 후 수동 설치 | Linux 게스트 VM | VM별 NGT 활성화·ISO·게스트 지원 조합 |
| Prism Central에서 원격 설치 | 관리 작업이 게스트에 접속 | Linux SSH·계정 권한·CD-ROM·네트워크 |
| Nutanix Move 이관 후 설치 옵션 | Move의 이관 작업 | 해당 Move 버전의 대상 클러스터·게스트 조건 |
제공된 Move 조건에는 대상 클러스터의 external IP, Linux의 dmidecode, LVM2 2.02.109, Python 2 또는 3, 누락 패키지를 받을 저장소 접근이 나옵니다. Move 6.3의 마이그레이션 계획 문서에서도 같은 조건을 확인했습니다. 이는 Move의 대상 VM NGT 설치 옵션에 관한 조건이며 모든 수동 설치의 최소 AOS 버전으로 일반화하지 않습니다.
해당 문서는 AOS 조건에 greater than 6.7과 greater than or equal to 6.7을 함께 사용합니다. 따라서 AOS 6.7 경계의 지원 여부를 이 문구만으로 단정하지 말고 실제 Move 버전의 지원 조건과 대상 조합을 확인합니다. Move는 대상 NGT 설치를 best effort로 설명하므로, 이관 완료 후에도 아래의 설치·통신 확인을 별도로 진행합니다.
여기서 external IP를 인터넷 공인 IP로 해석해 VM이나 CVM을 외부에 공개할 필요는 없습니다. NGT의 IP 기반 통신에서는 클러스터 가상 IP(VIP)와 게스트 사이의 접근성을 확인합니다. 패키지 저장소 접근은 또 다른 문제이며, 승인된 내부 저장소를 사용할 수 있습니다.
1. 게스트의 패키지와 Python 확인
아래 명령은 NGT를 설치할 Linux VM 안에서 실행합니다. CVM이나 AHV 호스트에 패키지를 설치하는 절차가 아닙니다.
cat /etc/os-release
uname -m
rpm -q lvm2 lvm2-libs dmidecode
rpm -q python python2 python3
python --version
python3 --version
존재하지 않는 패키지는 is not installed, 없는 명령은 command not found로 표시될 수 있습니다. Python 2와 3을 모두 설치하라는 뜻이 아닙니다. 실제로 사용할 인터프리터와 ISO 설치 프로그램이 지원하는 버전을 확인합니다.
rpm -qa와 grep으로 확인할 때의 함정
rpm -qa | grep python-3은 Python 3 전체를 의미하는 검색이 아닙니다. 이름이 python3인 패키지는 python3-3.9...처럼 출력되어 python-3 패턴에 걸리지 않을 수 있어요. 반대로 grep python-2에 잡힌 libselinux-python-2.5-11.el7의 2.5는 해당 패키지의 버전이며 Python 인터프리터 버전이 아닙니다.
설치된 Python 관련 패키지를 넓게 보고 싶을 때에는 다음처럼 조회합니다. 실행할 Python 버전은 앞의 --version 결과로 판단합니다.
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep -E '^python|^libselinux-python'
제공된 CentOS Minimal 기록의 의미
아래는 제공된 조회 결과의 버전입니다. 모든 CentOS Minimal 설치가 이 목록과 같다는 뜻은 아닙니다.
| OS 기록 | lvm2·lvm2-libs | dmidecode | Python 패키지 |
|---|---|---|---|
| CentOS 7.2 Minimal | 2.02.130-5.el7.x86_64 | 2.12-9.el7.x86_64 | python-2.7.5-34.el7.x86_64 |
| CentOS 7.4 Minimal | 2.02.171-8.el7.x86_64 | 3.0-5.el7.x86_64 | python-2.7.5-58.el7.x86_64 |
두 기록의 LVM2 버전은 자료에 나온 2.02.109보다 높습니다. 다만 이 비교만으로 해당 OS와 NGT의 전체 호환성을 증명하지는 않습니다. Python 3 검색에 출력이 없었던 부분도 앞서 설명한 검색 패턴을 고려해야 합니다.
CentOS Linux 7은 2024년 6월 30일 지원이 종료됐습니다. 이 글의 CentOS 7 내용은 기존 VM의 유지보수·이관 기록을 읽기 위한 참고이며 신규 구축 권장 환경은 아닙니다.
필요한 패키지가 없다면
Rocky·RHEL 계열의 지원되는 환경에서는 사용할 저장소를 확인한 뒤 필요한 패키지만 설치합니다. 다음은 dnf를 사용하는 VM의 예시입니다.
sudo dnf repolist
sudo dnf install dmidecode lvm2 python3
CentOS 7 기록을 따라 기존 VM을 정비한다면 해당 환경의 승인된 저장소를 사용합니다. 기존 Python 2로 설치할 수 있는 조합이라면 Python 3을 추가할 필요가 없습니다.
sudo yum repolist
sudo yum install dmidecode lvm2
패키지 관리자는 메타데이터·서명·의존성을 정상적으로 처리해야 합니다. ISO가 있어도 OS 의존성 패키지가 모두 포함된다고 가정하지 않습니다. 공식 NGT 요구 사항은 정상적인 패키지 관리자 설정과 /usr/local, ISO 마운트 위치, /tmp의 쓰기 권한을 확인하도록 안내합니다.
2. Prism에서 NGT 활성화와 ISO 연결
Prism Element에서 대상 VM을 정확히 선택한 뒤 다음 순서로 진행합니다. 공식 활성화·마운트 절차를 기준으로 하며 UI 문구는 버전별로 대조합니다.
VM에서Table보기를 열고 대상 VM을 선택합니다.Manage Guest Tools에서Enable Nutanix Guest Tools를 선택합니다.Mount Nutanix Guest Tools를 선택하고 필요한 지원 기능을 확인한 뒤 적용합니다.- VM 상세의
NGT Enabled,NGT Mounted상태를 확인합니다.
NGT Enabled가 Yes여도 게스트 안의 설치가 끝난 것은 아닙니다. Prism Element의 ISO 방식에서는 VM에 로그인해 설치 프로그램을 실행해야 합니다. Linux에 Windows용 VSS가 적용된다고 가정해 기능을 선택하지 않습니다.
VM별 ISO에는 해당 VM의 구성 정보가 포함될 수 있습니다. 다른 VM에서 복사한 ISO를 일괄 재사용하는 방식보다 대상 VM에서 NGT를 활성화하고 연결하는 절차를 따릅니다. 복제 VM도 자체 구성·통신 확인이 필요합니다.
3. Linux에서 NUTANIX_TOOLS 장치 확인과 마운트
첨부 명령은 /dev/sr0를 사용하지만 CD-ROM이 항상 이 이름인 것은 아닙니다. 먼저 NUTANIX_TOOLS 레이블이 붙은 장치를 찾습니다.
lsblk -o NAME,TYPE,FSTYPE,LABEL,MOUNTPOINT
sudo blkid -L NUTANIX_TOOLS
이미 자동으로 마운트돼 있다면 해당 위치를 사용합니다. 다음은 장치가 /dev/sr0로 확인됐고 /mnt/ngt에 직접 마운트할 경우의 예시입니다.
sudo mkdir -p /mnt/ngt
sudo mount -o ro /dev/sr0 /mnt/ngt
findmnt /mnt/ngt
ls -l /mnt/ngt/installer/linux/install_ngt.py
설치 파일이 보이지 않으면 Python 실행으로 넘어가지 말고 ISO 연결과 실제 마운트 위치를 확인합니다. ISO의 읽기 전용 마운트는 정상입니다. 첨부 기록의 source write-protected, mounted read-only 문구 자체가 설치 실패를 뜻하지 않습니다.
4. 설치 프로그램 실행: Python 3과 기존 Python 구분
Linux NGT 설치 공식 문서는 Python 버전에 따라 실행 명령을 구분합니다. 다음 두 방식 중 해당 환경에 맞는 하나만 실행합니다.
Python 3을 사용하는 지원 환경의 예시입니다. 종료 코드는 설치 명령 바로 다음에 보관합니다.
sudo python3 /mnt/ngt/installer/linux/install_ngt.py --operation install
ngt_install_rc=$?
printf 'NGT installer exit code: %s\n' "$ngt_install_rc"
첨부 CentOS 7.4 기록처럼 기존 python이 Python 2이고 해당 설치 프로그램이 이를 지원하는 환경에서는 다음 명령을 사용합니다. Python 2를 신규 서버에 설치하라는 안내는 아닙니다.
sudo python /mnt/ngt/installer/linux/install_ngt.py --operation install
python 명령이 없다는 이유로 시스템의 심볼릭 링크를 임의로 바꾸거나, yum이 의존하는 Python을 교체하지 않습니다. Python 3 사용이 지원되면 명령에 python3을 명시하면 됩니다.
시스템 Python과 NGT 내부 Python은 별개
제공된 CentOS 7.4 기록에서는 시스템 Python 2.7.5로 설치를 시작했지만, 설치 후 서비스는 /usr/local/nutanix/ngt/python311/python3 경로로 실행됐습니다. 설치 시작에 사용한 인터프리터와 NGT 패키지에 포함된 실행 환경을 구분해야 합니다. 이 경로가 보인다고 시스템 Python 전체가 3.11로 바뀐 것은 아닙니다.
5. 패키지·서비스·CVM 통신을 각각 확인
게스트 VM: RPM과 서비스
먼저 설치된 RPM을 조회합니다. 설치 로그에 나온 버전을 현재 VM의 조회 결과와 대조합니다.
rpm -q nutanix-guest-agent
rpm -qi nutanix-guest-agent
sudo systemctl status ngt_guest_agent.service --no-pager
sudo journalctl -u ngt_guest_agent.service -n 100 --no-pager
제공된 CentOS 7.4 기록에서는 nutanix-guest-agent 4.3-1 설치와 ngt_guest_agent.service의 active (running)이 확인됩니다. Rocky Linux 9.4 기록에는 같은 RPM 설치 완료와 서비스 재시작 완료가 나옵니다. 다만 제공된 Rocky 기록에는 설치 후 상태 조회나 CVM 통신 결과가 없으므로 그 단계까지 성공했다고 확정하지 않습니다.
첨부 자료에는 ngt_self_service_restore.service도 실행 중인 것으로 나옵니다. 해당 서비스가 설치된 환경에서 상태를 살펴볼 수 있습니다.
sudo systemctl status ngt_self_service_restore.service --no-pager
pgrep -af 'guest_agent_monitor_linux.py|ssr_gateway_linux_service.py'
SSR 서비스 파일의 존재·기동과 해당 Linux·NGT 조합의 기능 지원은 별개입니다. 현재 배포판에서 SSR이 지원되는지 매트릭스를 확인합니다. Linux VM에는 Windows VSS 지원이 적용되지 않습니다. 상태 확인 중 Unit ... could not be found가 나오면 기능·버전·패키지 구성을 확인하고 임의로 서비스 파일을 만들지 않습니다.
CVM: 실제 통신 링크 확인
다음은 Linux 게스트가 아니라 클러스터 CVM의 nutanix 계정 셸에서 실행하는 조회 명령입니다. linux-vm01을 Prism에 등록된 실제 VM 이름으로 바꿉니다.
nutanix_guest_tools_cli list_vm_tools_entities include_vm_info=true vm_name=linux-vm01
공식 CLI 통신 확인 문서에 따라 다음 속성을 봅니다.
| 속성 | 해석 |
|---|---|
communication_link_active = true | NGA와 CVM의 통신 링크 활성 |
communication_link_over_serial_port_active = true | 시리얼 포트를 이용한 IP-less 통신 |
링크가 활성이고 시리얼 속성이 false | IP 기반 통신 사용 |
RPM이 설치되고 서비스가 실행 중이어도 CVM 링크가 비활성일 수 있습니다. 링크 확인까지 마친 뒤 설치 작업을 완료로 기록하는 편이 좋습니다.
IP 기반 2074와 AHV의 IP-less 통신
IP 기반 통신에서는 게스트 VM → 클러스터 VIP의 TCP 2074 접근이 필요합니다. Prism Central의 원격 설치를 위한 SSH TCP 22와는 목적과 방향이 다릅니다. VIP가 실제로 접근 가능한 사설 주소여도 되며 인터넷에 공개할 필요는 없습니다.
AHV의 IP-less 방식은 조건을 충족하면 게스트의 시리얼 포트로 통신합니다. 공식 문서는 AOS 6.6 이상·NGT 3.0 이상과 필요한 시리얼 포트 구성을 설명합니다. 기존 VM을 전환할 때에는 완전한 전원 끄기·켜기(power cycle)가 필요할 수 있으며 게스트 OS 안의 재부팅만으로는 부족할 수 있습니다. 운영 중인 VM을 바로 끄지 말고 유지보수 일정에 반영합니다.
따라서 모든 환경의 연결 문제를 2074 방화벽 하나로 판단하지 않습니다. CVM 조회 결과에서 실제 통신 방식을 먼저 확인합니다. IP-less가 가능하더라도 누락된 OS 패키지를 받는 저장소 접근까지 해결되는 것은 아닙니다. 자세한 조건은 NGA와 CVM 통신 문서를 참고합니다.
첨부 설치 로그의 경고를 읽는 방법
제공된 두 설치 기록은 Complete!, RPM 설치 완료, 서비스 재시작 완료 뒤에 ERROR - Failure와 GPG 키 관련 출력도 남겼습니다. 이 조합은 마지막 한 줄만으로 전체 결과를 판정하기 어렵다는 뜻입니다. 오류를 무시해도 된다는 의미는 아닙니다.
| 문구·증상 | 확인할 내용 |
|---|---|
which dpkg 실패 | RPM 계열에서 패키지 관리자 탐색 중 나온 것인지, 이어서 RPM 설치가 진행됐는지 |
| 읽기 전용 마운트 경고 | ISO가 정상 마운트됐고 설치 파일이 있는지 |
NOKEY, GPG 키 가져오기 출력 | 공식 ISO·키 출처와 서명 검증 결과, RPM 트랜잭션의 실제 결과 |
ERROR - Failure와 Installed가 함께 있음 | 종료 코드, RPM 조회, 서비스·저널, CVM 통신을 함께 대조 |
| 의존성·저장소 접근 오류 | VM에서 저장소 URL·메타데이터·키·필요 패키지 접근 여부 |
python: command not found | 지원되는 python3 실행 여부와 실제 인터프리터 경로 |
NOKEY가 보인다는 이유로 gpgcheck=0이나 --nogpgcheck를 사용하지 않습니다. 로그의 키 지문을 신뢰할 수 있는 Nutanix 배포 정보와 대조하고, 서명 실패가 남으면 설치를 완료로 처리하지 않습니다. 첨부 자료만으로는 두 VM의 최종 CVM 링크나 설치 프로세스 종료 코드까지 확인할 수 없습니다.
문제가 계속되면 OS·AOS·NGT 버전, 실제 ISO 출처, 종료 코드, 패키지 조회, 서비스 저널과 CVM 조회 결과를 모아 지원 요청에 사용합니다. 전체 로그를 공개할 때에는 환경 식별 정보와 비밀 값을 먼저 살펴봅니다.
작업 정리와 확인 범위
설치·통신을 확인한 뒤 직접 마운트했던 ISO를 정리할 수 있습니다. 먼저 마운트 디렉터리 밖으로 이동합니다.
cd /
sudo umount /mnt/ngt
버전에 따라 NGT ISO가 자동으로 분리될 수도 있습니다. 이미 마운트가 사라졌다면 not mounted를 설치 실패로 해석하지 않습니다. NGT Enabled 설정과 설치용 ISO 연결 상태도 구분합니다.
이 글은 제공된 실습 기록과 공식 문서를 대조한 설치 안내입니다. 이번 작성 과정에서는 명령의 셸 구문과 격리된 Rocky Linux 9 컨테이너의 RPM·Python 조회를 확인했습니다. 실제 Nutanix VM에 NGT를 새로 설치하거나 CVM 통신을 재검증한 작업은 아닙니다. Prism 7.6·pc.7.6 문서의 확인된 갱신일은 2026년 10월 22일이며, 실제 환경에서는 설치한 버전의 문서를 우선합니다.
대표 이미지는 일반 데이터센터 참고 사진이며 제공된 NGT 실습 장비 사진이 아닙니다. 사진: Derrick Coetzee · 원본 · CC0 1.0. 기존 서버 저장본을 재사용하며 원래 비율을 유지합니다. 목록용 썸네일은 일부가 잘릴 수 있습니다.



