2026年9月26日土曜日

CVMにアクセスできないときに確認する事項

なんらかの不具合等でCVMにアクセスができない場合、様々障害調査を行う必要がありますが、SSHでCVMにアクセスができないとCVMで何が起きているのかが見えないため、状態を確認することが非常に困難を極めます。

今回は、CVMと疎通ができない場合の調査について記載いたします。

CVMに接続ができない場合、頼りのすべは、CVMをホストするAHVコンソールに入ることが必要です。SSHでAHVホストにアクセスができる場合は、SSHでアクセスしてください。SSHアクセスがAOS7.6以降ではdefault無効化されていますので、その場合は直接キーボードとディスプレイをつないで操作をするか、IPMIのバーチャルコンソールから操作します。

まずは、CVM自体が起動しているかを確認します。

[root@UX-AHV171 ~]# virsh list --all --title
 Id   Name                                   State      Title
--------------------------------------------------------------------
 4    48b04e15-f435-44ea-474b-56f81a30a2b8   running    WINVGSH012
 -    NTNX-UX-AHV171-CVM                     shut off

この状態では、CVMが「shut off」起動していないことがわかります。

起動していない場合は、以下のコマンドでCVMを起動します。

[root@UX-AHV171 ~]# virsh start NTNX-UX-AHV171-CVM


すでに起動している場合は、CVMへの接続を確認します。

AHVから、CVMの内部IPである「192.168.5.2」にPING応答を確認します。

[root@UX-AHV171 ~]# ping 192.168.5.2
PING 192.168.5.2 (192.168.5.2) 56(84) bytes of data.
64 bytes from 192.168.5.2: icmp_seq=1 ttl=64 time=0.417 ms
64 bytes from 192.168.5.2: icmp_seq=2 ttl=64 time=0.113 ms
64 bytes from 192.168.5.2: icmp_seq=3 ttl=64 time=0.093 ms
64 bytes from 192.168.5.2: icmp_seq=4 ttl=64 time=0.095 ms

このように返答がある場合は、CVMの表側のネットワークから接続ができていないのが要因の可能性があります。VLANの設定が間違っているなどの場合も想定されます。

この場合は、192.168.5.2へSSH接続を行い、CVMのネットワーク設定を変更します。

[root@UX-AHV171 ~]# ssh admin@192.168.5.2
The authenticity of host '192.168.5.2 (192.168.5.2)' can't be established.
ECDSA key fingerprint is SHA256:/b4fxxxxxxxxnU+CnsyJf3ZpR5I8SRJ9xxxnVSENmn40.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.5.2' (ECDSA) to the list of known hosts.
Nutanix Controller VM
admin@192.168.5.2's password:

Last login: Sat Sep 26 14:14:45 JST 2026 on pts/1
Last login: Sat Sep 26 17:09:55 2026 from 192.168.5.1

============================
NuService  Menu:
============================
Option 1: Execute Commands
Option 2: Log Viewer
Option 3: Launch Admin Shell
Option 4: Configure Settings
Option 5: Help
Option X: Exit
============================
Choice:


一方で以下のようにCVMにアクセスができないことも考えられます。

[root@UX-AHV171 ~]# ping 192.168.5.2
PING 192.168.5.2 (192.168.5.2) 56(84) bytes of data.
From 192.168.5.1 icmp_seq=1 Destination Host Unreachable
From 192.168.5.1 icmp_seq=2 Destination Host Unreachable
From 192.168.5.1 icmp_seq=3 Destination Host Unreachable

 CVMが起動しているにもかかわらずCVMの内部IPに疎通が通らない場合、CVMが起動中にハングアップしている可能性が非常に高いと考えられます。

この場合、CVMのコンソールに表示されている情報を確認する必要があります。


AHVから、「 /var/log/NTNX.serial.out.0」ファイルをlessやcatで確認しどこで起動ができずストップしているかを確認します。

[root@UX-AHV171 ~]# cat /var/log/NTNX.serial.out.0
...

svmboot: error: no valid boot partition (i.e. no active partition marker)
[  162.175021] dracut-mount[637]: /lib/dracut/hooks/mount/10-nutanix-root-selector.sh: line 3: NEWROOT: readonly variable
[  OK  ] Started dracut mount hook.
[  162.103204] kauditd_printk_skb: 30 callbacks suppressed
[  162.103208] audit: type=1130 audit(1787375412.929:41): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=dracut-mount comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
         Starting dracut pre-pivot and cleanup hook...
[  162.190333] d[  162.217094] dracut: FATAL: FIPS integrity test failed
racut-pre-pivot[733]: Warning: /boot//.vmlinuz-5[  162.218091] dracut: Refusing to continue
.10.224-2.el8.nutanix.20241212.100213.x86_64.hmac does not exist
[  162.265123] printk: systemd-shutdow: 31 output lines suppressed due to ratelimiting
[  162.314812] systemd-shutdown[1]: Syncing filesystems and block devices.
[  162.315818] systemd-shutdown[1]: Sending SIGTERM to remaining processes...
[  162.322817] systemd-shutdown[1]: Sending SIGKILL to remaining processes...
[  162.325088] systemd-shutdown[1]: Unmounting file systems.
[  162.326311] [754]: Remounting '/' read-only in with options 'size=16283196k,nr_inodes=4070799'.
[  162.327814] systemd-shutdown[1]: All filesystems unmounted.
[  162.328685] systemd-shutdown[1]: Deactivating swaps.
[  162.329419] systemd-shutdown[1]: All swaps deactivated.
[  162.330259] systemd-shutdown[1]: Detaching loop devices.
[  162.331405] systemd-shutdown[1]: All loop devices detached.
[  162.332221] systemd-shutdown[1]: Stopping MD devices.
[  162.334372] reboot: System halted

この例では、CVMがパススルーしているHBAデバイスからSSDやHDDなどの記憶メディアがが読み取れないため、CVMとして起動できずにOSが落ちている状態のように見受けられます。

このような場合は、ハードウェアの障害を疑う必要もあります。

(参考)Serial Console Redirection to a Telnet Port
https://portal.nutanix.com/page/documents/details?targetId=AHV-Admin-Guide-v10_3-ja-JP:ahv-serial-console-redirection-telnet-port.html


何らかの障害が発生した場合に、調査をするすべを持っているかいないかは、トラブル解決までの時間に大きくかかわってきます。

CVMの状態を把握することは、Nutanixのトラブルを把握するはじめの一歩ですので、これらのオペレーションは把握しておくことがおすすめです。





AOS 7.6でAHVへのSSHアクセスを許可する方法

AOS 7.6でCVMのBashシェルアクセスの仕様変更やAHVホストへのSSHアクセス制限が仕様追加されました。

AHV 11.2(AOS 7.6対応バージョン)にSSHアクセスを行う場合、CVMから、192.168.5.1にアクセスする方法は、引き続き行うことができます。

一方で、UPSソフトウェアの対応を待つまでの間、AHVホストへのSSHアクセスが必要になるケースがあるなど、仕様変更に対応できない場合としてAHVホストへのSSHアクセスを許可する方法があります。

本日はこのAHVへのSSH接続を許可する方法をご紹介します。

CVMにnutanixユーザでSSHで接続します。

以下を実行します。

/usr/local/nutanix/cluster/bin/host_external_ssh_access --set_access enable

そのまま、継続するかを聞かれますので、Yをクリックします。

nutanix@NTNX-A-CVM:10.221.1.17$ /usr/local/nutanix/cluster/bin/host_external_ssh_access --set_access enable

  WARNING:
  * You are about to ENABLE host external SSH access for the cluster.
  * This operation is clusterwide and impacts all hosts in the cluster.

Do you want to continue? (y/n): y
Setting host external SSH access...
Successfully set host external SSH access to 'enable'
nutanix@NTNX-26SG1Q598022-A-CVM:10.221.1.17$

これで、外部ネットワークからSSHを使って、AHVホストにアクセスができるようになります。

SSHが許可されている場合、CVMの「/home/nutanix/config/security_service.gflags」に「--set_ahv_host_access=public」というパラメータが入っていることが確認できます。

nutanix@NTNX-A-CVM:10.221.1.17$ cat /home/nutanix/config/security_service.gflags
--set_ahv_host_access=public


UPS連携ソフトウェアやそのほか連携ソフトウェアがAOS 7.6の実装に対応し、AHVへSSHでアクセスする必要がなくなった場合、以下のコマンドでホストへのSSHを無効化することができます。

nutanix@NTNX-A-CVM:10.221.1.17$ /usr/local/nutanix/cluster/bin/host_external_ssh_access --set_access disableも

無効化すると、先ほどのGFlagの設定ファイルの設定パラメータ値が変わっていることを確認できます。

nutanix@NTNX-A-CVM:10.221.1.17$ cat /home/nutanix/config/security_service.gflags
--set_ahv_host_access=internal


SSHのアクセスは、必要がなければ閉じておくのが望ましいのですが、どうしてもオペレーション上必要な場合は、上記の方法でSSHアクセスを許可してください。


(参考)KB22484 : Enabling External SSH Access on AHV Hosts (AOS 7.6 and AHV 11.2)
https://portal.nutanix.com/kb/22484




 

AOS 7.6以降のNutanixクラスタシャットダウン方法

AOS 7.6以降で、AOSへのBashシェルの段階廃止およびAHVへのSSHアクセスの禁止としようが変更になり、シャットダウンの手順についても見直しが必要になってきました。

今日は、Restricted Access(Bashシェル制限)になるAOS 7.6の次のバージョンを見据えて、nutanixユーザのBashシェルが使えない前提で、Nutanixクラスターのシャットダウン方法についてみていきたいと思います。

1.クラスターサービスの停止

まずは、CVMにadminユーザでログインし、Option 1のExecute Commandから、CVMを選択し、CVMのコマンドシェルで「cluster stop」を実行します。

============================
NuService  Menu:
============================
Option 1: Execute Commands
Option 2: Log Viewer
Option 3: Launch Admin Shell
Option 4: Configure Settings
Option 5: Help
Option X: Exit
============================
Choice: 1

============================
Execute Commands:
============================
Option 1: CVM
Option 2: AHV
Option B: Go Back to Main Menu
============================
Choice: 1

--- Allowed Commands Mode ---
Type 'help' for available commands, or 'exit' to return to main menu
 cluster stop
2026-09-26 04:54:58,375Z INFO MainThread zookeeper_session.py:240 Ignoring passe
d host_port_list: zk1:9876,zk2:9876,zk3:9876 because the passed host_port_list a
ppears to have been copied from the environment variable or gflag.
2026-09-26 04:54:58,375Z INFO MainThread zookeeper_session.py:308 cluster is att
empting to connect to Zookeeper (unestablished session (object 0x7fe5fc710b80)),
 host port list zk1:9876,zk2:9876,zk3:9876
2026-09-26 04:54:58,376Z INFO MainThread patterns.py:74 Creating a new instance
for ZookeeperSession[('client_id', None), ('connection_timeout', None), ('host_p
ort_list', 'zk1:9876,zk2:9876,zk3:9876'), ('use_zk_mt', None)]
2026-09-26 04:54:58,379Z INFO Dummy-1 zookeeper_session.py:1028 ZK session estab
lishment complete, session 0x2a0db555d5801ce (object 0x7fe5fc710b80), negotiated
 timeout=20 secs
2026-09-26 04:54:58,398Z INFO MainThread cluster:3869 Executing action stop on S
VMs 10.181.21.131,10.181.21.132,10.181.21.133
2026-09-26 04:54:58,398Z WARNING MainThread genesis_utils.py:422 Deprecated: use
util.cluster.info.get_node_uuid() instead
2026-09-26 04:54:58,412Z INFO MainThread cluster:3916

***** CLUSTER NAME *****
CLST21-AHV

This operation will stop the Nutanix storage services and any VMs using Nutanix
storage will become unavailable. Do you want to proceed? (I agree/[N]): 

従来と同様に、クラスター停止の状況を聞かれますので、「I agree」を入力し、クラスターを停止します。

これで、クラスターが停止し、制限シェルに戻りました。

exitで、元のメニューに戻ります

...

                       ClusterConfig DOWN       []
                         APLOSEngine DOWN       []
                               APLOS DOWN       []
                     PlacementSolver DOWN       []
                               Lazan DOWN       []
                             Polaris DOWN       []
                                Flow DOWN       []
                             Anduril DOWN       []
                              Narsil DOWN       []
                               XTrim DOWN       []
                       ClusterHealth DOWN       []
                            Security DOWN       []
2026-09-26 05:06:17,140Z INFO MainThread cluster:2740 Cluster has been stopped via 'cluster stop' command, hence stopping all services.
2026-09-26 05:06:17,140Z INFO MainThread cluster:4033 Success!
<cmd>exit

続いて、Option 2に入り、AHVの制限シェルに入ります。

併せて、「shutdown -h now」を実行します。

============================
Execute Commands:
============================
Option 1: CVM
Option 2: AHV
Option B: Go Back to Main Menu
============================
Choice: 2

--- AHV Commands Mode ---
Type 'help' for available commands, or 'exit' to return to main menu

 shutdown -h now
============= 10.181.21.121 ============
============= 10.181.21.123 ============
============= 10.181.21.122 ============

すると「hostssh」で、クラスタメンバーの各ホストにシャットダウン命令が発行されます。
これで、クラスタ内のすべてのホストのシャットダウンが行われます。

ここで気になるのは、CVMのシャットダウン作業です。

従来、cluster stop→CVMのシャットダウン→ホストのシャットダウンという順番でシャットダウンを行っていたと思います。

CVMの限定シェルには、「cvm_shutdown」コマンドがありますが、これで全台分のCVMをシャットダウンすると、AHVはSSHアクセスができないため、ホストのシャットダウンができなくなります。IPMIからACPIコールでシャットダウンするという方法はありますが、現行のAHVは、ホストの電源ボタン押しでのACPIシャットダウンができないように制限されており、正常なシャットダウンはホストの電源ボタン押しでは、実現ができません。

かといって、CVMが起動したままいきなりAHVホストのシャットダウンを行っていいのかという話になるのですが、実際にCVMが起動したまま、AHV制限シェルから「shutdow -h now」を実行し、ホストの画面を見ていると、以下のようにCVMをACPIコールでシャットダウンし、仮想マシンが停止するのを待っている状況がわかります。


AHVは、仮想マシンであるCVMをシャットダウンをAHVのシャットダウンを行うため、安全にシャットダウンしているように見受けられます。

こう考えると、従来に比べシャットダウンは楽になっているように思います。

AOS7.6のrestrictedモードおよび今後のバージョンにおけるシャットダウン手順は従来と異なるため、UPS連携などの場合も注意が必要です。





 

restricted accessによるCVMへのBashシェルアクセス廃止について

前回までにBashシェルアクセスの廃止におけるロードマップと新しいNuService Menuについて紹介しました。

今回はおそらくAOS7.6 の次のバージョンでデフォルト(強制)されるであろうBashシェルの完全廃止について紹介したいと思います。

AOS 7.6においては、Bashシェルで「configure_restricted_access」コマンドを実行することで、Bashシェルを無効化し、Nutanixサポートからのトークンをもらわない限りBashシェルアクセスが許可されないモードにすることができます。

※configure_restricted_accessを実行し、Bashシェルを無効化すると、再度Bashシェルを有効化することはできませんので、ご注意ください。

ここでは、「configure_restricted_access」を有効化し、その後の動きを見てみたいと思います。

nutanix@NTNX-WKJ951XPCX-A-CVM:10.187.67.223:~$ configure_restricted_access
############################################################# Configuring restricted bash access will put your system in a STIG compliant state by enabling support-only-login-mode wherein, you will be required to open a support ticket with Nutanix in order to gain temporary access to the full bash shell. This action cannot be reversed. ############################################################# Type YES to confirm and proceed, or anything else to cancel: YES ############################################################# Configuring restricted access state in ZK... Waiting 10s for all nodes to apply changes... Verifying restricted access configuration... [1/2] Verifying restricted access configuration... [2/2] Verification done. Successfully configured restricted access.

実行自体は、1分もかからない程度で終わります。

その後、SSHで、nutanixユーザで接続してみましょう。

>ssh nutanix@10.187.67.223
The authenticity of host '10.187.67.223 (10.187.67.223)' can't be established.
ECDSA key fingerprint is SHA256:zsJ+7xxxxxxxxxxCL6wlqrxNzHsSY7cEXP61401kqho.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.187.67.223' (ECDSA) to the list of known hosts.
Nutanix Controller VM
nutanix@10.187.67.223's password:
** SSH to CVM via 'nutanix' user is restricted. Please use the 'admin' user. **
Connection to 10.187.67.223 closed.
adminユーザ以外の接続は拒否されたことがわかります。

なお、Prism Elementのコンソールから、nutanixユーザーでログインをしても、Permission deniedとメッセージが表示されログインコンソールに戻されてしまいます。


それでは、adminユーザでログインし、Bashシェルアクセスを実行してみます。

============================
NuService  Menu:
============================
Option 1: Execute Commands
Option 2: Log Viewer
Option 3: Launch Admin Shell
Option 4: Configure Settings
Option 5: Help
Option X: Exit
============================
Choice: 3

========================================= New Full Access Session ==========================================
Enter Salesforce Case Number: XXXXXXXXXXX
[2026-09-26 12:43:14] Please share the following request token with the Nutanix Support (valid for 30 mins).
============================================================================================================
bread industry market duty bag reform ivory major brain world trash open
============================================================================================================
[2026-09-26 12:43:14] Attempt 1/3: Enter the response token received from the Nutanix Support: XXXX

シェルアクセスを実行しようとすると、Case番号を要求されます。Case番号を入れると、サポートからもらったトークンを入力するとBashシェルがアクセスできるようになります。

サポートからのトークンがなければ、Bashシェルへのアクセスはできなくなります。


サイバー攻撃において、Bashシェルはその自由度から攻撃の温床になりやすいため、Bashシェルの制限は、昨今において必要な機能実装であると考えられます。

一方でオペレーションの自由度は下がる点や今までのシェルに依存した運用は変更を行う必要があります。


(参考)Activating Support-only Login on a Cluster
https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Security-Guide-v7_6:sec-secure-access-support-only-login-activation-t.html






NuService MenuとBashシェルアクセスの廃止について

Nutanixの機能中枢であるCVMは、クラスターのコントロールセンターであることから、サイバー攻撃者が狙う標的にもなりやすい特徴があります。パスワードの変更や、クラスターロックダウンで侵入を防ぐアプローチを行う必要は、セキュリティ対策の一丁目・一番地であることに変わりがありませんが、ゼロトラストの思想からいけば、万が一侵入されてた場合における対策も考えておく必要があります。

Nutanixは、段階的にBashシェルアクセスを廃止する方向になっています。

AOS 7.5 ・・・ CVMへのシェルアクセス制限機能を追加
AOS 7.6 ・・・ CVMへNuService Menu追加(AHVは、デフォルトでSSH接続禁止)
次のバージョン ・・・ デフォルトでCVMへのBashシェル廃止

この実装により米国国防情報局(DISA)のSTIG組織と連携して、RHELベースのSTIGからネットワークアプライアンスベースのSTIGへの準拠になります。

今まで、独自のスクリプトをCVMに入れて運用していたなど様々CVMをカスタマイズした運用をされている場合は、早期にCVM外でオペレーションを行うように改善が必要となります。(そもそもCVM内部で独自のスクリプトなどを動作させることはサポート対象外です)

本日は、AOS7.6で追加されたNuService Menuを紹介します。

CVMにSSHで、「admin」ユーザでログインすると以下のメニューが表示されます。

============================
NuService  Menu:
============================
Option 1: Execute Commands
Option 2: Log Viewer
Option 3: Launch Admin Shell
Option 4: Configure Settings
Option 5: Help
Option X: Exit
============================
Choice:

ここで、必要な操作メニューを開きます。まずは、1番のコマンド実行を確認してみます。

============================
Execute Commands:
============================
Option 1: CVM
Option 2: AHV
Option B: Go Back to Main Menu
============================
Choice:

CVMは、CVMでの制限されたシェルアクセス、AHVは、AHVにおける限定されたコマンドを提供するようです。まずは、CVM側のシェルに入ってみます。

--- Allowed Commands Mode ---
Type 'help' for available commands, or 'exit' to return to main menu

acli
afs
arping
cerebro_cli
change_ahv_hostname
change_cvm_display_name
change_cvm_hostname
change_cvm_vlan
check_temporary_full_bash_access_expiration
chronyc tracking
cluster restart_genesis
cluster start
cluster status
cluster stop
collect_perf
configure_restricted_access
convert_cluster_status
cvm_shutdown
date
df
disable_full_bash_access
dmesg
ecli
exit
foundation_service
genesis
help
history
install_host_package
intersight_info
iptables --check
iptables --list
iptables --list-rules
iptables -C
iptables -L
iptables -S
last
lcm_cancel_updates
lcm_leader
lcm_node_recovery
lcm_upgrade_status
list_disks
logbay
manage_bad_passwords.py
manage_bootloader_fix
manage_ipv6
manage_ovs
md5sum
modify_firewall
ncc
ncli
network_segment_status --last_task
nfs_ls
nodetool -h 0 ring
nslookup
nsx_t_manager -l
nutanix_pulse_packet_helper.py
panacea_cli
progress_monitor_cli
rolling_restart
rsync
sar
scp
set_remote_diagnostics_status
smartctl
snapshot_tree_printer
storcli64 /call/eall show
stretch_params_printer
upgrade_status

Tabキーで実行できるコマンドを確認してみました。従来のシェルのようにcpとかsshとかは使えなくなっています。CVMオペレーションでよく利用していたallsshも使えなくなっています。

では、AHV側のコマンド実行画面も見てみましょう。

--- AHV Commands Mode ---
Type 'help' for available commands, or 'exit' to return to main menu

exit                  ovs-appctl fdb/flush  shutdown -h now
help                  ovs-appctl fdb/show   update-cvm-config
history               ovs-vsctl get
nvidia-smi            ovs-vsctl set

AHV側は、かなり実行できるコマンドが制限されています。許可されているのは、GPU周りのコマンドと仮想スイッチ周りの操作程度でしょうか..。

続いて、2番目のLog Viewerを見てみましょう。

  Select an option:

    A. File Explorer (with filename filtering)
    B. Content Search (string in filtered files)こ

こちらは、AかBをメニューで選択します。まずは、AのFile Explorerを見てみます。

ここでは、「/home/nutanix/data/logs」配下に配置されるログが一覧で表示されます。

File Filter:
 Modified date        Size      File name
 2026-09-26 11:07:20 7.8MB    sysstats/top.INFO
 2026-09-26 11:07:20 7.8MB    sysstats/top.INFO.20260926-013152
 2026-09-26 11:07:20 9.6MB    insights_server.ntnx-sgh950xpcv-a-cvm.nutanix.log.
 2026-09-26 11:07:20 12.9MB   health_server.log.20260926-013412Z
 2026-09-26 11:07:20 65.2KB   acropolis-publisher.out
 2026-09-26 11:07:20 853.0KB  zookeeper.out
 2026-09-26 11:07:20 9.6MB    insights_server.INFO
 2026-09-26 11:07:20 12.9MB   health_server.log
 2026-09-26 11:07:20 17.7MB   cassandra/cassandra_gc.1790386341.log
 2026-09-26 11:07:20 65.2KB   acropolis-publisher.out.20260926-104946Z
 2026-09-26 11:07:20 853.0KB  zookeeper.out.20260926-012946Z
 2026-09-26 11:07:19 20.3MB   stargate.ntnx-sgh950xpcv-a-cvm.nutanix.log.INFO.20
 2026-09-26 11:07:19 374.4KB  mantle.INFO
 2026-09-26 11:07:19 228.2KB  cluster_health.out
 2026-09-26 11:07:19 20.3MB   stargate.INFO
 2026-09-26 11:07:19 228.2KB  cluster_health.out.20260926-013412Z
 2026-09-26 11:07:19 374.4KB  mantle.ntnx-sgh950xpcv-a-cvm.nutanix.log.INFO.2026
 2026-09-26 11:07:18 33.4KB   sysstats/ping_gateway.INFO.20260926-013144
 2026-09-26 11:07:18 33.4KB   sysstats/ping_gateway.INFO
 2026-09-26 11:07:18 5.6MB    sysstats/iotop.INFO.20260926-013147
 2026-09-26 11:07:18 1.1MB    genesis.out.20260926-011857Z
 2026-09-26 11:07:18 1.1MB    genesis.out  
 ...こ

ここで、開きたいログを選択しEnterキーを押します。File Filerは、ファイル名を入れると部分一致でファイルを検索しリストをフィルターしてくれます。(フィルター部分はBackspaceキーが使えないので注意が必要です)

ログを開くとログビューワーが起動します。

2026-09-26 01:18:57,439Z rolled over log file
2026-09-26 01:18:57,433Z INFO 9813 /src/bigtop/infra/infra_server/cluster/service_monitor/service_monitor.c:256 main: /home/nutanix/bin/service_monitor: appending fatal messages to /home/nutanix/data/logs/genesis.FATAL
2026-09-26 01:18:57,433Z INFO 9813 /src/bigtop/infra/infra_server/cluster/service_monitor/service_monitor.c:87 StartServiceMonitor: Launched child with pid: 9815
2026-09-26 01:18:57,433Z INFO 9815 /src/bigtop/infra/infra_server/cluster/service_monitor/service_monitor.c:158 StartService: Starting service with cmd: /home/nutanix/cluster/bin/genesis
2026-09-26 01:18:57,433Z ERROR 9815 /src/bigtop/infra/infra_server/cluster/service_monitor/nxenv.c:81 GetHostPortListFromFile: Failed to get host port list call errno() to get error
2026-09-26 01:18:57,434Z ERROR 9815 /src/bigtop/infra/infra_server/cluster/service_monitor/nxenv.c:107 RefreshZkHostPortList: Failed to get host port list error: No such file or directory
2026-09-26 01:18:57,434Z ERROR 9815 /src/bigtop/infra/infra_server/cluster/service_monitor/service_monitor.c:161 StartService: Could not refresh the value of zk host port list
2026-09-26 01:19:02,305Z INFO 95996224 server.py:313 GENESIS START
q to go Back | / to Search  | h for Help | 'genesis.out'

「/」で検索ができるあたりは、viチックな動作になっています。

hキーでヘルプを見てみます。

                   SUMMARY OF LESS COMMANDS

      Commands marked with * may be preceded by a number, N.
      Notes in parentheses indicate the behavior if N is given.
      A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.

  h  H                 Display this help.
  q  :q  Q  :Q  ZZ     Exit.
 ---------------------------------------------------------------------------

                           MOVING

  e  ^E  j  ^N  CR  *  Forward  one line   (or N lines).
  y  ^Y  k  ^K  ^P  *  Backward one line   (or N lines).
  f  ^F  ^V  SPACE  *  Forward  one window (or N lines).
  b  ^B  ESC-v      *  Backward one window (or N lines).
  z                 *  Forward  one window (and set window to N).
  w                 *  Backward one window (and set window to N).
  ESC-SPACE         *  Forward  one window, but don't stop at end-of-file.
  d  ^D             *  Forward  one half-window (and set half-window to N).
  u  ^U             *  Backward one half-window (and set half-window to N).
  ESC-)  RightArrow *  Right one half screen width (or N positions).
  ESC-(  LeftArrow  *  Left  one half screen width (or N positions).
  ESC-}  ^RightArrow   Right to last column displayed.
  ESC-{  ^LeftArrow    Left  to first column.
  F                    Forward forever; like "tail -f".
  ESC-F                Like F but stop when search pattern is found.
  r  ^R  ^L            Repaint screen.
  R                    Repaint screen, discarding buffered input.
        ---------------------------------------------------
        Default "window" is the screen height.
        Default "half-window" is half of the screen height.
 ---------------------------------------------------------------------------

                          SEARCHING

  /pattern          *  Search forward for (N-th) matching line.
  ?pattern          *  Search backward for (N-th) matching line.
  n                 *  Repeat previous search (for N-th occurrence).
  N                 *  Repeat previous search in reverse direction.
  ESC-n             *  Repeat previous search, spanning files.
  ESC-N             *  Repeat previous search, reverse dir. & spanning files.
  ESC-u                Undo (toggle) search highlighting.
  ESC-U                Clear search highlighting.
  &pattern          *  Display only matching lines.
        ---------------------------------------------------
        A search pattern may begin with one or more of:
        ^N or !  Search for NON-matching lines.
        ^E or *  Search multiple files (pass thru END OF FILE).
        ^F or @  Start search at FIRST file (for /) or last file (for ?).
        ^K       Highlight matches, but don't move (KEEP position).
        ^R       Don't use REGULAR EXPRESSIONS.
        ^W       WRAP search if no match found.
 ---------------------------------------------------------------------------

                           JUMPING

  g  <  ESC-<       *  Go to first line in file (or line N).
  G  >  ESC->       *  Go to last line in file (or line N).
  p  %              *  Go to beginning of file (or N percent into file).
  t                 *  Go to the (N-th) next tag.
  T                 *  Go to the (N-th) previous tag.
  {  (  [           *  Find close bracket } ) ].
  }  )  ]           *  Find open bracket { ( [.
  ESC-^F    *  Find close bracket .
  ESC-^B    *  Find open bracket .
        ---------------------------------------------------
        Each "find close bracket" command goes forward to the close bracket
          matching the (N-th) open bracket in the top line.
        Each "find open bracket" command goes backward to the open bracket
          matching the (N-th) close bracket in the bottom line.

  m            Mark the current top line with .
  M            Mark the current bottom line with .
  '            Go to a previously marked position.
  ''                   Go to the previous position.
  ^X^X                 Same as '.
  ESC-M        Clear a mark.
        ---------------------------------------------------
        A mark is any upper-case or lower-case letter.
        Certain marks are predefined:
             ^  means  beginning of the file
             $  means  end of the file
 ---------------------------------------------------------------------------

                        CHANGING FILES

  :e [file]            Examine a new file.
  ^X^V                 Same as :e.
  :n                *  Examine the (N-th) next file from the command line.
  :p                *  Examine the (N-th) previous file from the command line.
  :x                *  Examine the first (or N-th) file from the command line.
  :d                   Delete the current file from the command line list.
  =  ^G  :f            Print current file name.
 ---------------------------------------------------------------------------

                    MISCELLANEOUS COMMANDS

  -              Toggle a command line option [see OPTIONS below].
  --             Toggle a command line option, by name.
  _              Display the setting of a command line option.
  __             Display the setting of an option, by name.
  +cmd                 Execute the less cmd each time a new file is examined.

  !command             Execute the shell command with $SHELL.
  |Xcommand            Pipe file between current pos & mark X to shell command.
  s file               Save input to a file.
  v                    Edit the current file with $VISUAL or $EDITOR.
  V                    Print version number of "less".
 ---------------------------------------------------------------------------

                           OPTIONS

        Most options may be changed either on the command line,
        or from within less by using the - or -- command.
        Options may be given in one of two forms: either a single
        character preceded by a -, or a name preceded by --.

  -?  ........  --help
                  Display help (from command line).
  -a  ........  --search-skip-screen
                  Search skips current screen.
  -A  ........  --SEARCH-SKIP-SCREEN
                  Search starts just after target line.
  -b [N]  ....  --buffers=[N]
                  Number of buffers.
  -B  ........  --auto-buffers
                  Don't automatically allocate buffers for pipes.
  -c  -C  ....  --clear-screen --CLEAR-SCREEN
                  Repaint by clearing rather than scrolling.
  -d  ........  --dumb
                  Dumb terminal.
  -D xcolor  .  --color=xcolor
                  Set screen colors.
  -e  -E  ....  --quit-at-eof  --QUIT-AT-EOF
                  Quit at end of file.
  -f  ........  --force
                  Force open non-regular files.
  -F  ........  --quit-if-one-screen
                  Quit if entire file fits on first screen.
  -g  ........  --hilite-search
                  Highlight only last match for searches.
  -G  ........  --HILITE-SEARCH
                  Don't highlight any matches for searches.
  --old-bot
                  Revert to the old bottom of screen behavior.
  -h [N]  ....  --max-back-scroll=[N]
                  Backward scroll limit.
  -i  ........  --ignore-case
                  Ignore case in searches that do not contain uppercase.
  -I  ........  --IGNORE-CASE
                  Ignore case in all searches.
  -j [N]  ....  --jump-target=[N]
                  Screen position of target lines.
  -J  ........  --status-column
                  Display a status column at left edge of screen.
  -k [file]  .  --lesskey-file=[file]
                  Use a lesskey file.
  -K  ........  --quit-on-intr
                  Exit less in response to ctrl-C.
  -L  ........  --no-lessopen
                  Ignore the LESSOPEN environment variable.
  -m  -M  ....  --long-prompt  --LONG-PROMPT
                  Set prompt style.
  -n  ........  --line-numbers
                  Don't use line numbers.
  -N  ........  --LINE-NUMBERS
                  Use line numbers.
  -o [file]  .  --log-file=[file]
                  Copy to log file (standard input only).
  -O [file]  .  --LOG-FILE=[file]
                  Copy to log file (unconditionally overwrite).
  -p [pattern]  --pattern=[pattern]
                  Start at pattern (from command line).
  -P [prompt]   --prompt=[prompt]
                  Define new prompt.
  -q  -Q  ....  --quiet  --QUIET  --silent --SILENT
                  Quiet the terminal bell.
  -r  -R  ....  --raw-control-chars  --RAW-CONTROL-CHARS
                  Output "raw" control characters.
  -s  ........  --squeeze-blank-lines
                  Squeeze multiple blank lines.
  -S  ........  --chop-long-lines
                  Chop (truncate) long lines rather than wrapping.
  -t [tag]  ..  --tag=[tag]
                  Find a tag.
  -T [tagsfile] --tag-file=[tagsfile]
                  Use an alternate tags file.
  -u  -U  ....  --underline-special  --UNDERLINE-SPECIAL
                  Change handling of backspaces.
  -V  ........  --version
                  Display the version number of "less".
  -w  ........  --hilite-unread
                  Highlight first new line after forward-screen.
  -W  ........  --HILITE-UNREAD
                  Highlight first new line after any forward movement.
  -x [N[,...]]  --tabs=[N[,...]]
                  Set tab stops.
  -X  ........  --no-init
                  Don't use termcap init/deinit strings.
  -y [N]  ....  --max-forw-scroll=[N]
                  Forward scroll limit.
  -z [N]  ....  --window=[N]
                  Set size of window.
  -" [c[c]]  .  --quotes=[c[c]]
                  Set shell quote characters.
  -~  ........  --tilde
                  Don't display tildes after end of file.
  -# [N]  ....  --shift=[N]
                  Set horizontal scroll amount (0 = one half screen width).
                --file-size
                  Automatically determine the size of the input file.
                --follow-name
                  The F command changes files if the input file is renamed.
                --incsearch
                  Search file as each pattern character is typed in.
                --line-num-width=N
                  Set the width of the -N line number field to N characters.
                --mouse
                  Enable mouse input.
                --no-keypad
                  Don't send termcap keypad init/deinit strings.
                --no-histdups
                  Remove duplicates from command history.
                --rscroll=C
                  Set the character used to mark truncated lines.
                --save-marks
                  Retain marks across invocations of less.
                --status-col-width=N
                  Set the width of the -J status column to N characters.
                --use-backslash
                  Subsequent options use backslash as escape char.
                --use-color
                  Enables colored text.
                --wheel-lines=N
                  Each click of the mouse wheel moves N lines.


 ---------------------------------------------------------------------------

                          LINE EDITING

        These keys can be used to edit text being entered
        on the "command line" at the bottom of the screen.

 RightArrow ..................... ESC-l ... Move cursor right one character.
 LeftArrow ...................... ESC-h ... Move cursor left one character.
 ctrl-RightArrow  ESC-RightArrow  ESC-w ... Move cursor right one word.
 ctrl-LeftArrow   ESC-LeftArrow   ESC-b ... Move cursor left one word.
 HOME ........................... ESC-0 ... Move cursor to start of line.
 END ............................ ESC-$ ... Move cursor to end of line.
 BACKSPACE ................................ Delete char to left of cursor.
 DELETE ......................... ESC-x ... Delete char under cursor.
 ctrl-BACKSPACE   ESC-BACKSPACE ........... Delete word to left of cursor.
 ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor.
 ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line.
 UpArrow ........................ ESC-k ... Retrieve previous command line.
 DownArrow ...................... ESC-j ... Retrieve next command line.
 TAB ...................................... Complete filename & cycle.
 SHIFT-TAB ...................... ESC-TAB   Complete filename & reverse cycle.
 ctrl-L ................................... Complete filename, list all.
HELP -- END -- Press g to see it again, or q when done

オペレーション的には、「less」コマンドと同じような感じに見受けられます。

ヘルプは、「q」キーで終了できます。

では、もう一つのメニューである「B. Content Search (string in filtered files)」も見てみたいと思います。

  Search String: <keywoedを入力>                                                         
  File Filter:



   TAB/UP/DOWN to switch fields | ENTER to search | ESC to Menu

Search Stringに文字を入力すると、その文字が該当するログを探して一覧にしてくれます。

ここでは「nutanix」で、検索をしてみました。

  Found 50 matches (Page 1/10):

  File: using-gflags.log

    -> 2026-09-25 15:41:02,670Z ERROR using-gflags:452 Could Not Acquire Lo...      2026-09-25 15:41:02,671Z ERROR using-gflags:463 Cluster is not started

  File: using-gflags.log
       2026-09-26 01:33:02,458Z INFO zookeeper_session.py:1028 ZK session e...   -> 2026-09-26 01:33:02,460Z INFO using-gflags:409 Running Cmd using exe...      2026-09-26 01:33:02,485Z INFO zookeeper_session.py:308 using-gflags ...
  File: using-gflags.log
       2026-09-26 01:33:02,489Z INFO zookeeper_session.py:1028 ZK session e...   -> 2026-09-26 01:35:02,118Z INFO using-gflags:409 Running Cmd using exe...      2026-09-26 01:35:02,188Z INFO zookeeper_session.py:308 using-gflags ...
  File: using-gflags.log
       2026-09-26 01:35:02,194Z INFO zookeeper_session.py:1028 ZK session e...   -> 2026-09-26 01:38:02,711Z INFO using-gflags:409 Running Cmd using exe...      2026-09-26 01:38:13,563Z INFO zookeeper_session.py:308 using-gflags ...
  File: using-gflags.log
       2026-09-26 01:38:13,568Z INFO zookeeper_session.py:1028 ZK session e...   -> 2026-09-26 02:15:02,437Z INFO using-gflags:409 Running Cmd using exe...      2026-09-26 02:15:02,622Z INFO zookeeper_session.py:308 using-gflags ...



  UP/DOWN: navigate | ENTER: open | LEFT/RIGHT: page | ESC: returnこ

ここで、選択したログを開くとログが表示されます。キーボードの右キーを押すと次ページの検索結果が表示されます。

これらのメニューは、「ESC」キーで前画面に戻ります。

では次に、メニュー3の「 Launch Admin Shell」を見てみましょう。

これを選択すると普通のBashシェルが表示されます。

    Launching bash...
admin@NTNX-XAI911XPCV-A-CVM:10.185.153.213:~$

adminユーザとしてシェルに入ることができます。おそらくこの機能がAOS7.6の次のバージョンからロックされる流れになると思われます。


この辺りは、「configure_restricted_access」コマンドで挙動が変わるので、次回ご紹介したいと思います。


(参考)KB20212 / End of Support Life (EOSL) for SSH Bash Shell Access
https://portal.nutanix.com/kb/20212






2026年9月25日金曜日

PolicyEngineのデータリストア方法の紹介

前回、Policy Engine VAのバックアップ(データのバックアップ)をご紹介しました。

今回は、PolicyEngineが故障したり再展開を視座エルを得ない状況に陥った場合にリストアする方法をご紹介します。


1.新規でPolicy EngineのVAを新規展開する

まずは、Policy EngineのVAをPrism Centralから新規展開を行います。


2.Policy Engine VAにSSHでログインします。

デフォルトのユーザ名は「nutanix」、パスワードは「nutanix/4u」です。こちらは、必ずパスワードの変更を行っておきましょう。


3.取得したバックアップデータをPolicy Engine VAにコピーする

scp backupuser@backupsv-ip:/var/backup/polbkup.gz /home/nutanix/data/backups/

この例では、backupsv-ipというバックアップサーバーの「/var/backup/polbkup.gz」ファイルを、Policy Engine VAの「/home/nutanix/data/backups/」にコピーしています。


4.バックアップデータが認識できているかを確認

 /home/nutanix/scripts/restore.sh --list

を実行し、取得したバックアップデータが見えていることを確認します。
ここでは、「polbkup.gz」というバックアップファイルが見えていることを確認します。


5.リストアを実行します

/home/nutanix/scripts/restore.sh -f=polbkup.gz

これで、リストアが完了します。


リストアの手法は、比較的簡単ですが、少し手のかかるものでもあります。

DisasterRecoveryのバックアップは、1時間に1回のスナップショット取得ですので、その時間からデータに差分がある場合は、スナップショットからPolicy Engineをリストアしたのち、細心のバックアップからデータをリストアする流れになります。











 

Policy Engineのバックアップ方法について

主にRBACやSecure Snapshot(承認ポリシー)で利用する際に展開が必要な「Policy Engine」ですが、このPolicy Engineは、Prism Centralとは別の仮想アプライアンスとして展開されます。
Prism Centralのバックアップ機能であるPCBRでは、このPolicy Engineはバックアップ対象外となっており、Prism Centralとは別の方法でバックアップを行う必要があります。

本日は、このPolicy Engineのバックアップ方法について紹介いたします。

1. Policy EngineのアプライアンスIPアドレスを確認します。

Prism CentralのAdmin CenterからSettingsを開き、「Policy Engine」を開くことで、アプライアンスのIPアドレスを確認できます。


2. Policy Engineの仮想アプライアンスにSSHでログインします。

デフォルトユーザーは「nutanix」、パスワードは「nutanix/4u」です。
併せて、必ずパスワードはデフォルトから変更しておきましょう!
(passwdコマンドで変更可能です)


3. バックアップ専用スクリプトを実行します。

/home/nutanix/scripts/backup.sh false <バックアップファイル名>

を実行します。(nutanixユーザーで構いません)

メーカードキュメント上では、このスクリプトのみが実行されていますが、その場合、バックアップファイル名に自動的に日時が付与される形となり、取り扱いが難しくなるため、こちらの例ではバックアップファイル名を指定しています。
このコマンドを実行すると、内部で動作しているPolicy Engineのコンテナを停止してからバックアップを取得するため、バックアップ中はポリシー関連の操作ができなくなります。


4. バックアップデータをバックアップサーバーに退避します。

scp /home/nutanix/data/backups/polbkup.gz backupuser@backupsv-ip:/var/backup

※backupuserというユーザーで、/var/backupというディレクトリにコピーしています。


これで、バックアップは完了です。


Policy Engineのバックアップデータはgz形式で仮想アプライアンス内に保存されるため、SCPでコピーおよび保存が可能なマシンを別途用意し、そちらにデータをコピーする必要があります。コピーしたデータが保存されたマシン、もしくはgzファイルを別途バックアップソフトウェアなどでバックアップするか、Nutanixのスナップショットを取得することで保護が可能となります。


Policy Engine自体は、展開と同時にPrism CentralのDisaster Recovery機能にて「CalmPolicyEngineVMPR」というポリシーが自動作成されます。このポリシーには、自動で1時間おきに2世代のスナップショットを取得する設定が入っています。こちらのポリシーを変更し、別のNutanixクラスターに転送することでバックアップとして保存することができます。




以下は非サポートの内容となりますが、Policy EngineのVAで「crontab -u nutanix -e」を使用したスケジュール実行は、こちらで確認した限りでは可能でした。そのため、バックアップスクリプトの実行からSCPによるコピーまでを一連の処理としてスケジュール実行することで、自動バックアップすることも可能です。







Nutanix MoveによるActive Directory移行の注意点とAHVにおけるGeneration IDの対応

Nutanix MoveでActive Directoryのドメインコントローラー(以下、DC)を移行したいのですが……というご相談を、ちらほらいただくことがあります。

Nutanix Moveを利用したDCの移行については、原則としてサポートされていません。これは、MicrosoftからActive Directory Domain Services(AD DS)の移行手順が正式に公開されているという背景があります。

(参考)Active Directory Domain Services の移行 
https://learn.microsoft.com/ja-jp/training/modules/active-directory-domain-services-migration/

しかし、実際には「ADが稼働している仮想マシンを、そのまま別の仮想化基盤へ移行したい」という要望をいただくことがあります。

ADが稼働している仮想マシンをそのまま移行する際に、理解しておくべき仕組みの1つが「Generation ID」です。

本記事では、Generation IDの意味とNutanix AHV上での取り扱いについて紹介します。


Generation IDとは

Generation ID(VM-GenerationID)は、ハイパーバイザーから仮想マシンに提供されるIDです。Windows Server 2012以降のドメインコントローラーでは、このGeneration IDを利用して、仮想マシン上で稼働するDCの状態が過去の状態へ巻き戻された可能性があることを検知します。仮想化環境では、DCが稼働する仮想マシンを古いスナップショットへ戻すなどの操作を行うと、Active Directoryデータベースも過去の状態へ巻き戻る可能性があります。

このような状態を適切に検知できない場合、他のDCとのレプリケーションに不整合が発生する可能性があります。

このような問題を防ぐため、Windows Server 2012以降のAD DSでは、AD DS内部に保存されているGeneration IDと、現在ハイパーバイザーから仮想マシンに提供されているGeneration IDを比較します。スナップショットからの復元などによってGeneration IDの変更を検出すると、AD DSは仮想マシンの状態が過去へ戻された可能性があると判断し、Virtualization SafeguardsによるSafe Restoreの処理を行います。

この際、AD DSはInvocation IDを新しい値へ変更するとともに、現在保持しているRID Poolを破棄します。

また、正常にレプリケーション可能な他の書き込み可能なDCが存在する場合、そのDCから非AuthoritativeなInbound Replicationを行うことで、Active Directoryの情報を他のDCと整合した状態へ収束させます。

Generation IDに対応したハイパーバイザーでは、スナップショットからの復元など、仮想マシンを過去の状態へ戻す可能性のある特定の操作が行われた際に、仮想マシンへ提供するGeneration IDを変更します。ゲストOS上のAD DSは、ハイパーバイザーから提供されるGeneration IDとAD DS内部に保存されているGeneration IDを比較することで、仮想マシンの状態が巻き戻された可能性を検知し、必要に応じてVirtualization SafeguardsによるSafe Restoreを実行します。


Nutanix AHVにおけるGeneration ID

AHVにおけるVM-Generation IDのサポートは、AOS 6.6.1から提供されています。

(参考)VM-Generation ID support on AHV 
https://portal.nutanix.com/kb/14470


既存のvSphereなどの環境からNutanix Moveを利用してAHVへDCの仮想マシンを移行し、その際にVM-Generation IDが変更された場合、前述の通りVirtualization SafeguardsによるSafe Restoreが実行されます。

Safe RestoreによってAD DSの状態を他のDCと収束させるためには、正常にレプリケーション可能な他の書き込み可能なDCが存在することが重要です。また、Moveによる移行後にAD DSでトラブルが発生した場合、その原因としてはレプリケーション、DNS、SYSVOL、FSMOロールなど、さまざまな要因が考えられます。

このような問題は仮想マシンの移行だけではなく、Active Directoryそのものの設計や運用に関係する問題となります。

そのため、DCの移行についてはMoveによる仮想マシン単位の移行ではなく、新しいDCの追加、FSMOロールの移行、旧DCの降格など、Microsoftが公開しているAD DSの移行手順に沿って実施することが基本的な考え方となります。


Windows Server上でGeneration IDを確認する

Windows Server OS上で、ハイパーバイザーから提供されているVM-Generation IDを確認する方法の一例として、以下のPowerShellを実行します。

Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;

public class VmGenerationId
{
    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    static extern SafeFileHandle CreateFile(
        string lpFileName,
        uint dwDesiredAccess,
        uint dwShareMode,
        IntPtr lpSecurityAttributes,
        uint dwCreationDisposition,
        uint dwFlagsAndAttributes,
        IntPtr hTemplateFile);

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool DeviceIoControl(
        SafeFileHandle hDevice,
        uint dwIoControlCode,
        IntPtr lpInBuffer,
        uint nInBufferSize,
        byte[] lpOutBuffer,
        uint nOutBufferSize,
        out uint lpBytesReturned,
        IntPtr lpOverlapped);

    public static string Get()
    {
        const uint GENERIC_READ  = 0x80000000;
        const uint GENERIC_WRITE = 0x40000000;
        const uint FILE_SHARE_READ  = 0x00000001;
        const uint FILE_SHARE_WRITE = 0x00000002;
        const uint OPEN_EXISTING = 3;
        const uint IOCTL_VMGENCOUNTER_READ = 0x0032C004;

        using (SafeFileHandle h = CreateFile(
            @"\\.\VmGenerationCounter",
            GENERIC_READ | GENERIC_WRITE,
            FILE_SHARE_READ | FILE_SHARE_WRITE,
            IntPtr.Zero,
            OPEN_EXISTING,
            0,
            IntPtr.Zero))
        {
            if (h.IsInvalid)
                throw new System.ComponentModel.Win32Exception(
                    Marshal.GetLastWin32Error());

            byte[] buffer = new byte[16];
            uint returned;

            if (!DeviceIoControl(
                h,
                IOCTL_VMGENCOUNTER_READ,
                IntPtr.Zero,
                0,
                buffer,
                (uint)buffer.Length,
                out returned,
                IntPtr.Zero))
            {
                throw new System.ComponentModel.Win32Exception(
                    Marshal.GetLastWin32Error());
            }

            return new Guid(buffer).ToString();
        }
    }
}
"@

[VmGenerationId]::Get()

Generation IDに対応した環境であれば、ハイパーバイザーからゲストOSへ提供されているVM-Generation IDを確認できます。


AHV側からGeneration IDを確認する

AHV側では、ACLIを使用して仮想マシンに設定されているGeneration IDを確認できます。

acli vm.get <仮想マシン名> | grep generation


AHV環境では、仮想マシンに対してVM-Generation IDが提供されます。

通常の仮想マシン作成・運用では、Generation IDを利用者が意識して設定する必要はありません。一方、物理サーバー上で稼働しているDCをAHV環境へ移行する場合など、移行元と移行先におけるGeneration IDの取り扱いについて確認が必要となるケースがあります。

AHVでは、仮想マシンの作成時に `generation_uuid` を指定することができます。


1.Generation IDを指定した仮想マシンの作成

acli vm.create <仮想マシン名> generation_uuid=<Generation ID>


2. Generation IDの確認

acli vm.get <仮想マシン名> | grep generation


`generation_uuid` は仮想マシン作成時に指定するパラメーターであり、既に作成済みの仮想マシンに対して任意のGeneration IDへ変更する用途では使用できません。



Generation IDを意図的に一致させる場合の注意点

AD DSは、AD DS内部に保存されているGeneration IDと、ハイパーバイザーから現在提供されているGeneration IDを比較します。

両者が異なっていた場合、AD DSは仮想マシンが以前の状態へ戻された可能性があると判断し、Virtualization SafeguardsによるSafe Restoreを実行します。この際、Invocation IDの再生成やRID Poolの破棄などが行われ、正常にレプリケーション可能な他の書き込み可能なDCとのレプリケーションによってActive Directoryの状態を収束させます。

一方、Generation IDが一致している場合、Generation IDの不一致を契機とするVirtualization Safeguardsは実行されません。

このため、DCをイメージバックアップなどから別の仮想マシンへ復元する際にGeneration IDを意図的に一致させた場合、Generation IDの不一致を契機とするVirtualization Safeguardsが発動しないことになります。

ただし、Generation IDを一致させること自体が、Active Directoryの整合性を保証するものではありません。

Active Directoryでは、Generation IDだけではなく、Invocation IDやUSNなどを使用して、複数のDC間でレプリケーション状態を管理しています。そのため、移行元DCと移行先DCを同時に稼働させたり、バックアップ取得後に他のDCとの間で変更が発生したりすると、Generation IDが同一であってもActive Directoryのレプリケーションに問題を生じさせる可能性があります。

このため、Generation IDを意図的に維持してDCを移行する方法を、一般的なActive Directoryの移行・復元方法として使用することは推奨されません。

DCをバックアップから復元する場合は、原則としてAD DSに対応したバックアップおよび復元方法を使用し、Generation IDによるVirtualization Safeguardsが適切に機能する構成とすることが重要です。


まとめ

ADの移行においてGeneration IDは重要な役割を果たしますが、Generation IDを一致させることだけでActive Directory全体の整合性が保証されるわけではありません。

Active Directoryは、Generation IDだけではなく、Invocation IDやUSNなどの情報を利用して、複数のDC間でレプリケーションの状態を管理しています。

そのため、移行対象以外のDCが稼働し、ユーザーやコンピューター、パスワードなどの変更を受け付けている場合、それらの変更を各DC間で適切にレプリケーションし、整合性を維持する必要があります。

また、Generation IDによるVirtualization Safeguardsは、AD DSのバックアップそのものを代替する仕組みではありません。


このようなActive Directory特有の仕組みがあることから、DCの移行については、原則としてMoveによる仮想マシン単位の移行ではなく、新しいDCの追加、FSMOロールの移行、旧DCの降格など、Microsoftが公開しているAD DSの移行手順に沿って実施することが推奨されます。

どうしてもMoveを利用してDCを移行する場合は、製品のサポート可否を確認したうえで、移行対象外のDCが正常に稼働していることや、DC間で正常にレプリケーションできる状態であることなどを事前に確認してください。また、Generation IDの仕組みだけでActive Directoryの整合性や移行の安全性が保証されるわけではないため、十分な検証とバックアップを行ったうえで、慎重に移行を実施してください。





2026年9月13日日曜日

クラスターの耐障害性Cluster Fault Toleranceについて(AOS7.6の仕様変更対応版)

従来クラスターの耐障害性は、Redundancy Factor 2 or 3という形で、1台のホストが障害が発生しても問題なく稼働できるか、2台のホストが同時に障害が発生しても問題なく稼働できるのかの2つからの選択でした。

AOS 7.0より1N&1D(1ノードのホストと他のノードのフラッシュまたはディスクの同時障害)に耐えられる機能が実装されましたが、クラスターのノード数が3台に制限されていました。
これが、AOS 7.6からノード数が3ノード以上であればノード数に制限がなくなりました。

耐障害性が、ディスクレベルで選択できるようになったこともあり、従来Redundancy Factorと呼んでいた耐障害性の呼び方も「Cluster Fault Tolerance」に変わりました。


フォールトトレランスとサポートされるRFの種別

フォールト
トレランス種別
説明サポートされる冗長係数
Replication Factor
1N/1D1ノードまたは1ディスクの障害に対応
(クラスタあたり最小1ノードからサポート)
2, 1
1N&1D1ノードおよび1ディスクの同時障害に対応
(クラスタあたり最小3ノードからサポート)
※各ノードに2つのメタデータディスクが必要
3, 2, 1
1N/2D1ノードまたは2ディスクの障害に対応
(クラスタあたり最小5ノードからサポート)
3, 2, 1
2N/2D2ノードまたは2ディスクの障害に対応
(クラスタあたり最小5ノードからサポート)
3, 2, 1


1N/1D


1N&1D


1N/2D


2N/2D


従来のRedundancy Factor2が「1N/1D」に該当し、Redundancy Factor3が、「1N/2D」「2N/2D」に該当します。

1N&1Dは、特殊で、クラスター内の1台のノードと他のノードのディスクが同時に障害が発生しても継続してクラスターを稼働できる仕組みとなります。この場合1ノードあたり2つのメタデータディスクが必要とありますので、NX-1065のようなフラッシュ(SSD)が1本しか搭載されていないモデルでは利用できません。昨今は、1ノードあたりフラッシュメディアが1本というモデルはほとんどないと思いますが、こちらは注意してください。


フォールトトレランスは、以下のパターンのみ変更が可能です。

変更パターン条件
1N/1D → 1N&1D最小3ノード、各ノードに2つのメタデータディスクが必要
1N/1D → 2N/2D最小5ノード
1N/1D → 1N/2D最小5ノード

1N&1Dから2N/2Dへの移行、1N/2Dから1N&1Dへの移行はサポートされません。


これにともない、PrismのCluster Resiliency / Fault Tolerance Statusについては、以下の表記となります。


ステータス状態
OK障害ドメインが障害(ノードやディスク障害など)を安全に処理できる状態
Warning耐障害レベルがほぼ0に近づいている状態(設定したドメインでは耐えられないが、より下位のドメイン障害には耐えられる場合など)
Criticalフォールトトレランスレベルが0であり、ノードやディスクの障害に耐えられない状態
Computing障害発生直後など、リビルド開始前に新しいフォールトトレランスレベルを計算している状態


なお従来からのReplication Factor 2(RF2)やReplication Factor 3(RF3)といったデータの冗長性に関する表記は、そのまま継続となります。

NutanixのドキュメントもCluster Fault Toleranceに表記が変わっていますので、今後はCluster Fault Toleranceとして、どの冗長構成が必要かを設計フェーズで検討してください。

(参考)Cluster Fault Tolerance


 

2026年9月12日土曜日

Nutanix+ESXi環境をNutanix+AHVにハイパーバイザーを変更する(その6)

5回に分けて、ESXiからAHVに変換するConvert Cluster機能についてご紹介してきました。

まず、仮想マシンを変換するうえで大切な要件だけをまとめておきます。


<変換における重要事項>

  1. あらかじめ仮想マシンのゲストOSにVirtIO Driverをインストールする
  2. NGTをゲストOSにインストールする
  3. VM BOOT OPTIONSは、「Power off user VMs」を強く推奨
  4. UPSやバックアップなど、周辺ソフトウェアに注意する
  5. ゲストOSから、VMware Toolsのアンインストールを個別に行う
  6. ゲストOSがWindowsの場合、SANポリシーを変更する
  7. Convert Cluster実行前に、すべての仮想マシンをProtection Domainで保護し、スナップショットを取得しておく
  8. vCenter Serverは、Nutanixクラスターの外に配置する

1は、AHVへの変換後にゲストOSを起動するためには、仮想マシンのディスクバスであるVirtSCSIのドライバーが必要になるためです。NGTをインストールすればVirtIO Driverもインストールされますので、個別にインストールする必要はありません。

3は、それなりに重要な事項です。仮想マシンがAHVに変換されると、仮想マシンのタイムゾーンはすべてUTCで設定されます。

そのため、そのまま自動で仮想マシンをパワーオンすると、UTCの時刻で起動することになります。LinuxやUNIX系OSでは問題にならない場合もありますが、Windows系OSの場合、時刻が9時間ずれることになります。Active Directoryなど、時刻にシビアな仮想マシンがある場合、思わぬトラブルにつながる可能性があります。そのため、クラスター内のすべての仮想マシンの変換が完了した後、仮想マシンのタイムゾーンを適切なものに設定してからパワーオンするのがよいと思われます。

4は、UPSやバックアップソフトなど、ハイパーバイザーと連携するソフトウェアがESXiホストとして認識しているため、AHVとして再登録が必要になります。ESXiにしか対応していないソフトウェアを利用している場合は、AHVに対応したソフトウェアへ切り替える必要があります。

5は、ESXi基盤ではない状態になっているため、Windowsの場合、アプリケーションのアンインストール機能からVMware Toolsを正常に削除できないことがあります。

KB431278を参考に、VMware Toolsを手動で削除する必要があります。


6は、ゲストOSがWindowsの場合、AHVへの変換後にゲストOSを起動すると、起動ドライブであるCドライブ以外のディスクがオフラインになることがあります。これはWindowsの仕様によるものですが、アプリケーションなどが正常に起動しないなどの影響が出る可能性があります。あらかじめSANポリシーを「OnlineAll」にしておくことをお勧めします。

ポリシーの変更については、仮想マシンのDドライブ以降がオフラインになるのを回避する方法をご確認いただければと思います。

7は、万が一変換に失敗したり、仮想マシンがPrism Element上に表示されなくなったりした場合、復旧が困難になる可能性があるためです。Protection Domain(PD)で仮想マシンを保護しておけば、AHVへの変換後もスナップショットが保持され、AHV環境へリストアすることが可能です。その際、仮想マシンの仮想ディスクはAHVで読み取れる形式でリストアされるため、そのままパワーオンできます。


また、ゲストOSが正常に起動できない場合は、VirtIO Driverがインストールされていない可能性があります。以下のKBを参考にドライバーをインストールし、ゲストOSが起動できるように設定する必要があります。


(参考)

KB7121 : Windows liveISO chkdsk for SCSI disk

KB2627 : Migrating Linux VMs to AHV


また、NICは新しいデバイスとして認識されますので、必要に応じてIPアドレスの再設定が必要です。

Nutanix Moveを利用したConvert Clusterでは、IPアドレスの再設定など、Nutanixクラスター単体のConvert Clusterでは対応できない部分もアシストしてくれるようです。(ただし、ハイパーバイザーのコンバージョン部分は、今回紹介したConvert Clusterと同じ動作になるようです)


Convert Cluster機能は、非常に便利な機能です。ただし、変換が100%うまくいくという保証はありませんので、あらかじめバックアップなどの必要な対策を行ったうえで実施してください。

仮にConvert Clusterがうまくいかなかった場合でも、Protection Domainで保護していれば仮想マシンのデータ自体は保護されます。そのため、さまざまな事前対策を行っておけば、より安心してConvert Clusterを実施できると考えられます。




 

Nutanix+ESXi環境をNutanix+AHVにハイパーバイザーを変更する(その5)

前回は、仮想マシンにNGTをインストールし、VirtIO DriverをゲストOSにインストールしました。

では、いよいよハイパーバイザーの変換作業となります。


6.ハイパーバイザーの変換

Prism Elementの画面から、「Settings」から「Convert Cluster」を開き、「AVAILABLE HYPERVISOR」に「AHV」を選択、VM BOOT OPTIONSに「Power off user VMs」を選択し、「Validate」ボタンを押します。Nutanixクラスターに接続したvCenter Serverの接続情報を聞かれますので、クレデンシャル情報を含めて入力します。


バリデーションの結果が表示されます。エラーは消えましたが、いくつかのWarningが出ています。

このWarningは、

  1. チーミングモードがActive/Backupになる
  2. NGTはインストールされているが、VirtIO Driverが正しくインストールされていない仮想マシンがある
  3. vCenter ServerにNGTがインストールされていない
  4. 特定のVMで、NGTがインストールされていない

1や3については、特に対応の必要はありません。
2や4については、個別にドライバーだけをインストールしている場合や、変換後は利用しない、もしくは再展開する仮想アプライアンスなどであれば、無視してもらって構いません。
3のvCenter Serverは、すでに他のホストに移動しているため、Nutanix上のvCenter Serverを利用することはありません。

NGTがインストールされていなくても仮想マシン自体はAHVで稼働できるように変換されますので、AHVへの変換後にレスキューメディアなどを利用してVirtIO Driverをインストールする形でも問題ありません。


次に進むと、AHVハイパーバイザーのISOを要求されます。現在稼働しているAOSと互換性のあるAHVバージョンのISOが自動的に指定されますので、Nutanix Support Portalからダウンロードした後、アップロードします。


アップロードが完了すると、「Convert Cluster」のボタンが押せるようになります。


最後に注意点として、一部のオペレーションができなくなる旨と、vCenter ServerがConvert Clusterを実行するNutanixクラスター上で動作していないことを確認されます。


すると、各ホストのタスク情報が表示されます。


vCenter Server側の挙動を見ると、ホストがメンテナンスモードに入るようになっています。
これにより、ワークロードの仮想マシンを他のホストに退避します。しかし、CVM自体は稼働したままで、再イメージングの準備処理が内部で動作しています。そのため、メンテナンスモードへの移行が完了せず待機状態が続きますが、焦らず見守ります。


vCenter Serverから見ると、ホストは全台動作しており、CVMも稼働中になっているように見受けられますが、Prism上ではクラスターの状態がCriticalになります。これは、CVM自体がメンテナンスモードになっていることが影響しています。


しばらくすると、vCenter Serverからホストがオフラインになり、ホストが再起動します。
再起動直後は、ESXiが再起動しているように見受けられます。


しかし、その後画面が切り替わり、そのままPhoenixが起動します。

メンテナンスモードになったノードとは別のノードのCVMでFoundationサービスが稼働しているようで、そこからAHVのイメージングが行われます。


その後、Phoenixによるイメージングが完了するのを待ちます。
イメージング中のサーバー本体は、メンテナンス用のランプが点滅するので、どのノードがイメージング中なのかは、サーバー本体の外観からもわかります。


なお、この間も仮想マシンは正常に稼働中です。これは、NutanixのN+1の冗長性を生かしながら処理が行われていることがわかります。


最初にメンテナンスモードへ移行してから、30分程度でこの画面まで進みました。


以下の画面が表示されたら、そのノードのイメージングが完了し、ハイパーバイザーがAHVに切り替わっていることがわかります。

しばらくすると、一部の仮想マシンはNGTを経由してシャットダウンされた後、AHVホスト上で稼働できるように変換され、リストアされます。

変換された仮想マシンは、vCenter Serverのインベントリ情報からも削除されます。

この処理を繰り返し、各ホストがメンテナンスモードに入り、Phoenixが起動してAHVへのイメージングが行われます。ホストがAHVに切り替わると、一部の仮想マシンがAHV上で動作するように変換されます。

最後の1台のホストを変換する段階では、ほかのホストはすべてAHVに変換されていますので、ESXi上で稼働する仮想マシンは0台になっています。

Convert Clusterの作業中は、Prism Element画面から仮想マシンを編集することはできません。

クラスター内のすべてのホストがAHVに変換されると、タスクが終了し、そのままAHVクラスターとして利用できるようになります。


これで、Convert Clusterの作業は終了です。

かかる時間はサーバーの性能などにもよりますが、今回検証した環境では、通常のFoundationで行うイメージング作業に加えて、仮想マシンの変換作業にかかる時間は、おおよそ5分程度でした。


実は、事前準備ができていれば、わずかな時間でESXiからAHVへハイパーバイザーを変更できます。

次回は、Convert Clusterにおける注意点を含め、まとめの情報を記載いたします。





Nutanix+ESXi環境をNutanix+AHVにハイパーバイザーを変更する(その4)

前回までに、Convert Clusterを実行するためのvCenter Serverの設定変更を行いました。

では、準備フェーズとして最後の手順を行います。


4.仮想マシンへのNGTのインストール

AHVへの変換を行うと、ゲストOS側でVirtIO Driverが読み込まれていない場合、正常に起動できません。そのため、あらかじめゲストOSにNutanix Guest Tools(NGT)をインストールします。NGTをインストールすると、VM Mobilityの機能としてVirtIO Driverがインストールされます。

Prism ElementのVM画面から、NGTをインストールする仮想マシンを選択し、「Manage Guest Tools」をクリックして設定画面を開きます。

「Enable Nutanix Guest Tools」にチェックを入れ、「Mount Nutanix Guest Tools」にチェックを入れます。

以下の画面のように「Guest Tools cannot be mounted as there not enough empty CD-ROM(s)」と表示される場合は、OSインストールメディアなど、CD-ROMドライブに何らかのISOがマウントされている可能性があります。


CDがマウントされていた場合は、vCenter Serverの画面から仮想マシンのCD-ROMドライブのマウントを解除し、「クライアントデバイス」に変更します。


次に、ゲストOSのコンソール画面に入ります。

まずは、Windows版のインストール方法から紹介します。

CD-ROMドライブを見ると、「NUTANIX_TOOLS」というメディアがマウントされているかと思いますので、「setup.exe」を実行します。


インストールウィザードが表示されますので、ライセンスを承諾し、「Install」をクリックします。

すると、すぐにインストールが開始されます。


インストールは数分で終わります。


すでにNGTをインストールしている環境で、NGTをアップグレードインストールした場合は、ドライバーが更新されるためOSの再起動を要求されます。
新規でNGTをインストールした場合は、ゲストOSの再起動は不要です。


続いて、Linux版のインストール方法をご紹介します。

Prism Elementの画面から、同様にNGTのISOをマウントします。


ここでは、Rocky Linux 10.1で説明しますが、Linux系であれば基本的な手順は同じです。

まず、mountコマンドを利用し、CD-ROMドライブをマウントします。(ここでは、/mediaにマウントしています)

sudo mount /dev/cdrom /media

続いて、CD-ROM内のディレクトリに移動します。

cd /media/installer/linux

インストールにはPythonを利用します。Python 3がインストール済みの場合は、以下のように実行します。

python3 ./install_ngt.py --operation install

以下のような形で、インストールが完了します。

[root@rocky10 linux]# python3 ./install_ngt.py --operation install
[2026-09-12 16:08:17] {install_ngt.py:61} INFO - Executing command: which rpm
[2026-09-12 16:08:17] {install_ngt.py:81} INFO - Output: /bin/rpm

[2026-09-12 16:08:17] {install_ngt.py:61} INFO - Executing command: which dpkg
[2026-09-12 16:08:17] {install_ngt.py:106} WARNING - Dpkg command failed due to error : which dpkg failed, Status code:1, Output:'', Error:'which: no dpkg in (/root/.local/bin:/root/bin:/sbin:/bin:/usr/sbin:/usr/bin)\n'
[2026-09-12 16:08:17] {install_ngt.py:61} INFO - Executing command: sh /media/installer/linux/ngt_rpm_installer/ngt_install_upgrade.sh
[2026-09-12 16:09:54] {install_ngt.py:81} INFO - Output: Current Directory: /media/installer/linux/ngt_rpm_installer
Linux Distribution : NAME="ROCKY LINUX"
VERSION="10.1 (RED QUARTZ)"
ID="ROCKY"
ID_LIKE="RHEL CENTOS FEDORA"
VERSION_ID="10.1"
PLATFORM_ID="PLATFORM:EL10"
PRETTY_NAME="ROCKY LINUX 10.1 (RED QUARTZ)"
ANSI_COLOR="0;32"
LOGO="FEDORA-LOGO-ICON"
CPE_NAME="CPE:/O:ROCKY:ROCKY:10::BASEOS"
HOME_URL="HTTPS://ROCKYLINUX.ORG/"
VENDOR_NAME="RESF"
VENDOR_URL="HTTPS://RESF.ORG/"
BUG_REPORT_URL="HTTPS://BUGS.ROCKYLINUX.ORG/"
SUPPORT_END="2035-05-31"
ROCKY_SUPPORT_PRODUCT="ROCKY-LINUX-10"
ROCKY_SUPPORT_PRODUCT_VERSION="10.1"
REDHAT_SUPPORT_PRODUCT="ROCKY LINUX"
REDHAT_SUPPORT_PRODUCT_VERSION="10.1"
ROCKY LINUX RELEASE 10.1 (RED QUARTZ)
ROCKY LINUX RELEASE 10.1 (RED QUARTZ)
ROCKY LINUX RELEASE 10.1 (RED QUARTZ)
Rocky Linux 10 - BaseOS                         8.6 kB/s | 4.3 kB     00:00
Rocky Linux 10 - BaseOS                          27 MB/s |  27 MB     00:00
Rocky Linux 10 - AppStream                      9.1 kB/s | 4.4 kB     00:00
Rocky Linux 10 - AppStream                      739 kB/s | 2.6 MB     00:03
Rocky Linux 10 - Extras                         7.0 kB/s | 3.1 kB     00:00
Rocky Linux 10 - Extras                          11 kB/s | 5.8 kB     00:00
インストール済みパッケージ
名前         : rpm
バージョン   : 4.19.1.1
リリース     : 20.el10
Arch         : x86_64
サイズ       : 3.0 M
ソース       : rpm-4.19.1.1-20.el10.src.rpm
リポジトリー : @System
repo から    : anaconda
概要         : The RPM package management system
URL          : http://www.rpm.org/
ライセンス   : GPL-2.0-or-later
説明         : The RPM Package Manager (RPM) is a powerful command line driven
: package management system capable of installing, uninstalling,
: verifying, querying, and updating software packages. Each software
: package consists of an archive of files along with information about
: the package like its version, a description, etc.

利用可能なパッケージ
名前         : rpm
バージョン   : 4.19.1.1
リリース     : 23.el10
Arch         : x86_64
サイズ       : 543 k
ソース       : rpm-4.19.1.1-23.el10.src.rpm
リポジトリー : baseos
概要         : The RPM package management system
URL          : http://www.rpm.org/
ライセンス   : GPL-2.0-or-later
説明         : The RPM Package Manager (RPM) is a powerful command line driven
: package management system capable of installing, uninstalling,
: verifying, querying, and updating software packages. Each software
: package consists of an archive of files along with information about
: the package like its version, a description, etc.

Nutanix NGT                                     390 kB/s | 2.1 kB     00:00
利用可能なパッケージ
nutanix-guest-agent.i686            4.3.1-1           nutanix-ngt-20260912160817
nutanix-guest-agent.x86_64          4.3.1-1           nutanix-ngt-20260912160817
メタデータの期限切れの最終確認: 0:00:01 前の 2026年07月12日 16時08分30秒 に実施 しました。
依存関係が解決しました。
============

# パッケージ           Arch    バージョン      リポジトリー                サイズ

インストール:
nutanix-guest-agent  x86_64  4.3.1-1         nutanix-ngt-20260912160817   60 M
依存関係のインストール:
libxcrypt-compat     x86_64  4.4.36-10.el10  appstream                    90 k

# トランザクションの概要

インストール  2 パッケージ

合計サイズ: 60 M
ダウンロードサイズの合計: 90 k
インストール後のサイズ: 302 M
パッケージのダウンロード:
libxcrypt-compat-4.4.36-10.el10.x86_64.rpm      1.0 MB/s |  90 kB     00:00
---------------------------------------------------------------------------

合計                                            181 kB/s |  90 kB     00:00
Nutanix NGT                                     3.0 MB/s | 3.1 kB     00:00
鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備             :                                                        1/1
インストール中   : libxcrypt-compat-4.4.36-10.el10.x86_64                 1/2
scriptletの実行中: nutanix-guest-agent-4.3.1-1.x86_64                     2/2
Pre: RPM is getting installed

インストール中   : nutanix-guest-agent-4.3.1-1.x86_64                     2/2
scriptletの実行中: nutanix-guest-agent-4.3.1-1.x86_64                     2/2
Post: RPM is getting installed.
Running installer utility script.
/usr/local/nutanix/ngt//src/rpm_installer_utils.py:74: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
if LooseVersion(self.version) < LooseVersion(self.REDHAT_8_VERSION):
INFO: Setting up Nutanix Guest Tools - VM mobility drivers.
WARNING: Kernel module bochs-drm does not exist.
INFO: Successfully set up Nutanix Guest Tools - VM mobility drivers.
INFO: Creating desktop shortcuts...

Reloading systemd manager configuration...
Restarting ngt_guest_agent.service systemctl service...
ngt_guest_agent.service service restart done.
Restarting ngt_self_service_restore.service systemctl service...
ngt_self_service_restore.service service restart done.

インストール済み:
libxcrypt-compat-4.4.36-10.el10.x86_64   nutanix-guest-agent-4.3.1-1.x86_64

完了しました!
メタデータの期限切れの最終確認: 0:01:23 前の 2026年07月12日 16時08分30秒 に実施 しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
cleanup started...
Removing yum repo : /etc/yum.repos.d//nutanix-ngt-20260912160817.repo, if exists.
Removing temporary created repo file : /tmp/nutanix-ngt-20260912160817.repo, if exists.
cleanup done...

[2026-07-12 16:09:54] {install_ngt.py:83} ERROR - Failure : GPG 鍵 0x6E4B3ED2 をインポート中:
Userid     : "Nutanix, Inc. (NGT Packaging) "
Fingerprint: 112B XXXX XXXX XXXX XXXX XXXX XXXX 46BC 6E4B 3ED2
From       : /media/installer/linux/ngt_rpm_installer/RPM-GPG-PUBLIC-KEY

[root@rocky10mst linux]# 

最後にGPG鍵のインポートエラーが出ていますが、ドライバーのインストール自体は完了しているため、ここでは一旦この問題はスキップします。

これで、NGTのインストールは完了です。


ただし、インストールしただけではなく、Convert ClusterのValidationでWarningが表示されないようにするため、NGTとNutanixクラスターが正常に通信できていることを確認します。


CVMにSSHでログインし、NGTエージェントとNutanixクラスターが通信できているかを確認します。

ncli vm lsで、NGTをインストールした仮想マシンのUUIDを確認します。

nutanix@NTNX-XXXX-A-CVM:XX.XX.XX.XXX:~$ ncli vm ls name=CNV-RokcyLinux10.1

```
Id                        : 00063087-e3d4-f515-1df0-1866da62c70a::50380ffc-8f75-393c-49c0-a1164d96d1a2
Uuid                      : 9566cc78-ba5d-4ab7-9763-ebce99dca637 #★こちらを控える
Name                      : CNV-RokcyLinux10.1
VM IP Addresses           : XX.XX.XX.18, fe80::250:56ff:feb8:ffe0
Hypervisor Host Id        : 00063087-e3d4-f515-1df0-1866da62c70a::6
Hypervisor Host Uuid      : b17e247e-aa3c-4da0-94f3-5eb251e3991a
Hypervisor Host Name      : ESX3
Memory                    : 4 GiB (4,294,967,296 bytes)
Virtual CPUs              : 4
VDisk Count               : 2
VDisks                    : 00063087-e3d4-f515-1df0-1866da62c70a::NFS:4:0:13174, 00063087-e3d4-f515-1df0-1866da62c70a::NFS:4:0:13231
Protection Domain         :
Consistency Group         :
```

nutanix@NTNX-XXXX-A-CVM:XX.XX.XX.XXX:~$ ncli ngt get vm-id=9566cc78-ba5d-4ab7-9763-ebce99dca637

```
VM Id                     : 00063087-e3d4-f515-1df0-1866da62c70a::50380ffc-8f75-393c-49c0-a1164d96d1a2
VM Name                   : CNV-RokcyLinux10.1
NGT Enabled               : true
Tools ISO Mounted         : false
Vss Snapshot              : true
File Level Restore        : false
Communication Link Active : true #★ここがtrueならOK
```


「Communication Link Active」がtrueになっていれば問題ありません。

2026年9月時点でサポートされているAOS 6.10以降であれば、NGTはNutanixクラスターのVIP以外に、COMポートを使用してハイパーバイザーとの通信も行えるようになっているため、仮想マシンのネットワークとNutanixクラスターの管理ネットワークが分離されていても、通信上の問題はありません。


これで、仮想マシンの準備は終わりました。

仮想アプライアンスなど、NGTをインストールできないものについては、あらかじめVirtIO Driverが組み込まれているかを確認してください。仮想アプライアンスがESXi版とAHV版で分かれている場合は、仮想アプライアンス上で稼働するシステム設定のバックアップを取得し、AHV版のアプライアンスを再展開して設定をインポートするなど、無理に変換だけにこだわらない手法を選択してください。


5.仮想マシンの保護

クラスターを変換する準備ができたら、必ずData Protectionで、すべての仮想マシンを保護してください。万が一、変換中にエラーが発生した場合でも、Protection Domainから仮想マシンを復旧することができます。(AHVへの変換後にリストアした場合、自動的にAHVに変換された仮想マシンとしてリストア可能です)


以上で準備は整いました。次回は、Convert Clusterの作業を行いたいと思います。