ラベル AHV の投稿を表示しています。 すべての投稿を表示
ラベル AHV の投稿を表示しています。 すべての投稿を表示

2025年12月20日土曜日

Nutanix AHVクラスターにおけるHAの挙動について

Nutanixクラスターで仮想化環境を作る場合、高可用性という観点でHA機能については、誰しもが利用する機能であると思います。

このHA機能は、各ハイパーバイザーソフトウェアによって異なります。NutanixにおけるHAの構成について簡単に紹介します。


HAの検出とその方法

3Tierの場合、

  • 特定のハイパーバイザーホストの障害
  • ストレージパスの障害
  • ネットワークパスの障害
という3つの観点で、HAの発動トリガーがあるかと思います。

Nutanixの場合、ストレージパスと仮想マシンのサービスネットワークも同じイーサネットを利用する観点から、ネットワークの障害がノード間通信を妨げる障害となるため、HA発動のトリガーの1つとなる点をまず押えておく必要があります。

AHVにおけるHAのトリガー

  • ノード間の通信断
  • AHVホストの「ルート」ファイルシステムの破損問題や「ルート」ファイルシステムが読み取り専用状態になった場合
  • Libvirtデーモン(libvirtd)のダウン
  • AHV ホストエージェント (ahv-host-agent)のダウン
がHAの対象となります。

libvirtdは、KVMを利用する際には、監視が必要なプロセスであると思いますが、それ以外にNutanixは、AHVとして独自の監視エージェントがHAの挙動を左右していることがわかります。

Acropolisリーダーが孤立や障害が発生した場合、クラスタ内の正常なホストから新しいAcropolisリーダーが選出されます。クラスタが分断された場合(例:Xノードが他のYノードと通信できない場合)、稼働状態を維持しクォーラムを維持しているクラスタのホスト分でVMが再起動されます。


HAが発動するタイミング

  • Libvirtd から切断された場合、そこから 40 秒でHA発動
  • それ以外の場合は、60秒でHA発動
    (キープアライブタイムアウト期間20秒(4 * 5)とHAタイムアウト40秒を合計すると、最初のキープアライブの失敗から60秒になります。)

HAが、発動するとアラート「A1137」が発行されます。
こちらは、KB-10612を参考にすると良いと思います。


HA発動時の確認すべくログの場所

HAが発動した場合、AcropolisリーダーCVMの以下のログに記載されますので、障害調査の場合このログを参考にすると良いと考えられます。

/home/nutanix/data/logs/acropolis.out

AHV側のログは、以下の場所に保存されています。

/var/log/libvirt/libvirtd.log


Nutanixにおいて、HAが発動したりクラスターの動作の挙動がおかしくなる場合、大半ネットワーク周りの障害に起因していることが多いように感じています。

Nutanix CVM内では、定期的に他のホストやCVMに定期的にPINGを投げた結果をログとして保存しています。

/home/nutanix/data/logs/sysstats/ping_hosts.INFO

/home/nutanix/data/logs/sysstats/ping_gateway.INFO

のファイルで、ノードや各コンポーネントのログを確認すると、何らかの障害解消のヒントになる可能性があります。


(参考)KB-4636 VM High Availability (HA) on AHV














 

2025年9月22日月曜日

AOSとAHVのアップグレード順序とAOS6.5から6.10へのアップグレード時の注意

Nutanix製品は、NCI Release Modelが発表され、従来のLTS/STSに比べ製品バージョンの選定しやすくなったと思います。

アップグレードについても現在では、LCMによりコンパチビリティに適合したバージョンを自動選定してくれるので、特に考えることなく必要なタイミングに応じてアップデートをすることが可能です。

各コンポーネントのアップグレードバージョンはLCMで指定してくれますが、各コンポーネントの順序を事前に押えておく必要があります。


アップグレードの順番は、以下の順番で実行します。

  1. Prism Centralのバージョンアップ(アップグレードするAOSに対応したバージョンを選択)
  2. AOSをアップグレード
  3. AHVをアップグレード
2と3は、LCMで同時にコンポーネントを選択することが出来ます。その場合、AOSアップグレードが優先されて行われます。


ただし、以下のバージョンにおいては、AOS 6.5から6.10にアップグレードする場合、状況によっては同一AOSバージョンないのマイナーバージョンアップや先にAHVをアップグレードする必要があります。

<対象AOS/AHV>

AOS : 6.5 / 6.5.1 / 6.5.1.5 / 5.5.1.6

AHV : 20201105.30398 / 20201105.30411 / 20201105.30417


上記の場合は、以下のステップを踏んでアップグレードを行う必要があります。

  • AOS 6.5 および AHV 20201105.30398 の場合、AOS および AHV を、AHV 20220304.x リリースをサポートする任意の AOS 6.5.x バージョン (例: AOS 6.5.6.7 および AHV 20220304.521) にアップグレードしてください。
  • AOS 6.5.1、6.5.1.5、または 6.5.1.6 で AHV 20201105.30411 または 20201105.30417 の場合は、AHV を少なくとも 1 回 20220304.242 にアップグレードするか、AOS と AHV を AHV 20220304.x リリースをサポートする任意の AOS 6.5.x バージョン (例: AOS 6.5.6.7 と AHV 20220304.521) にアップグレードしてください。

このケースは大変イレギュラーのケースですが、以下のKBを参考にAOS 6.10へのアップグレードを行ってください。




2025年9月20日土曜日

nutanixやadminユーザーがロックされた場合の対応

CVMやAHVにSSHでログインして作業することは、メンテナンス時にまれに行うことがあるかともいます。普段行わない作業のため、nutanixユーザーのパスワードやAHVのrootパスワードを忘れてしまい、アカウントロックされてしまう問題に遭遇する可能性があります。そのような際の対処法をご紹介します。

まずは、CVMにログインを行います。

CVMにログインするnutanixユーザーのパスワードを忘れたんだよ!という方は、慌てずPrismでログインするadminユーザーのパスワードでCVMにSSH等でログインします。

CVMになにかしログインができればOKです。
状況によって、以下のコマンドを実行します。


AHVのrootユーザーのアカウントロックを解除する場合

hostssh "faillock --user root --reset"


CVM上のnutanixユーザーのアカウントロックを解除する場合

allssh "faillock --user nutanix --reset"


CVM上のadminユーザーのアカウントロックを解除する場合

allssh "faillock --user admin --reset"


AOS 6.7以降でAOS6.10.1.9、AOS7.0.1未満の場合、ロックされたユーザーは自動でロック解除されません。AOS6.10.1.91/AOS 7.0.1以降、AHVは、20230302.102001以降は、ロックされたユーザーは、900秒後にロック解除されます。


(参考)
KB17355:Users nutanix/admin and root are not getting unlocked automatically after 900 seconds





 

2024年8月3日土曜日

アップリンクの設定変更をコマンドで行う場合のコマンド集

Nutanix+AHV環境において、AOS5.19以降は、Prismの画面からアップリンクNICの各種設定変更ができるようになりました。

しかし、例えばLACPに設定変更後うまくネゴシエーションができなくなったなど、様々なトラブルシューティングの際には、状態確認を含めコマンドで確認する必要が出てきます。

今回は、アップリンクまわりの設定をコマンドから行う場合の設定例をまとめてご紹介いたします。

まず、manage_ovsコマンドは、CVMから実行します。ネットワークに性上に接続が出来ない状態の場合は、サーバーホストのコンソールを開き、そこから「ssh [email protected]」で、CVMにログインし、作業を行います。


仮想スイッチとアップリンクNICの設定状況

> manage_ovs show_uplinks

結果

Bridge: br0
  Bond: br0-up
    bond_mode: active-backup
    interfaces: eth3 eth2
    lacp: off
    lacp-fallback: false
    lacp_speed: slow
    lacp_status: off

Bridge: br1
  Bond: br1-up
    bond_mode: balance-tcp
    interfaces: eth1 eth0
    lacp: active
    lacp-fallback: True
    lacp_speed: fast
    lacp_status: configured

この環境では、2つの仮想スイッチがあり、active-backupのチーミングモードと、balance-tcp(LACP)のチーミングモードでそれぞれ設定されています。


各アップリンクNICの状況(リンクアップ・ダウンや速度)

> manage_ovs show_interfaces

結果

name  mode  link speed
eth0  1000 False  None
eth1  1000 False  None
eth2 10000  True 10000
eth3 10000  True 10000

ここでは、10GNICと1GNICで構成されており、10G NICだけが、10Gでリンクアップしていることがわかります。10Gポートが仮に1Gでリンクアップしている場合は、speedが、1000で表示されます。


仮想スイッチの作成

manage_ovs --bridge_name br1 create_single_bridge

ここでは、br1で指定していますが、実際には仮想スイッチの追加番号を入力します。


仮想スイッチの削除

manage_ovs --bridge_name br1  delete_single_bridge


アップリンクNICをactive-backupで構成する

manage_ovs --bridge_name br1 --interfaces eth0,eth1 --bond_mode active-backup  update_uplinks

アップリンクNICを変更する場合や、チーミングモードを変更する場合もこちらのコマンドを利用します。


アップリンクNICをLACPで構成する

manage_ovs --bridge_name br1 --interfaces eth0,eth1 --bond_mode balance-tcp --lacp_mode fast --lacp_fallback true update_uplinks


あわせて、AHVのホスト側から確認する方法もご紹介します。

アップリンクの設定確認

ovs-appctl bond/show br0-up 


LACPの確認(balance-tcpで設定された仮想スイッチのみ指定可能)

ovs-appctl lacp/show br0-up 


特にLACPで構成して、疎通ができない場合は、CVMで「manage_ovs show_uplinks」を実行し、「lacp_status」が「negotiated」になっているかを確認しましょう。

> manage_ovs show_uplinks
Bridge: br0
  Bond: br0-up
    bond_mode: balance-tcp
    interfaces: eth1 eth0
    lacp: active
    lacp-fallback: True
    lacp_speed: fast
    lacp_status: negotiated ★


LACP構成時は、Nutanix側で、fallbackを有効化しているので、スイッチ側がLACPモードになっていない場合、AHV側が標準ポートとして動作します。


あわせて以下も確認しましょう。

Bridges with single uplink on AHV hosts
https://portal.nutanix.com/kb/8015

How to Enable, Disable, and Verify LACP on AHV hosts
https://portal.nutanix.com/kb/3263

AHV host networking
https://portal.nutanix.com/kb/2090







2024年7月27日土曜日

AHVにおけるNICの追加または交換時の作業

Nutanixを導入後、一時してからNICの交換や追加といった作業は、通常想定される作業となるかと思います。AHV環境において、NICを追加又は交換をした場合、その後AHVを起動しても新しいNICが見えない状態になります。NICの交換や追加を行った場合は、以下のコマンドを実行します。

AHVで実行

/usr/local/bin/nic_add_or_replace


上記コマンドが実行できない場合は、

rm /etc/udev/rules.d/70-persistent-net.rules

を実行ごAHVを再起動します。


こちらのコマンドで、NICの再認識を来ないます。

但し注意が必要です。このコマンドを利用するとeth0,eth1などの順序が以前と異なる事があります。また、1G NICだけしか構成していない環境に10G NICを追加後上記コマンドを実行すると、1G NICがアップリンクから外されるなど、単純にNICの認識だけでにとどまらないケースがあります。

CVM側で、アップリンクの状態を確認しておきましょう。

AHVから実行

$ssh [email protected]
CVMのnutanixユーザーのパスワードを入力

$ manage_ovs  show_uplinks
#↓結果
Bridge: br0
  Bond: br0-up
    bond_mode: active-backup
    interfaces: eth3 eth2 ★ここを確認する
    lacp: off
    lacp-fallback: false
    lacp_speed: slow

NIC故障など、急に対応が必要になることもあるかと思いますので、この手順は頭の片隅に入れておくと便利かと思います。




2023年12月19日火曜日

AHVでアップリンクNICにLACPを利用する場合

AHV環境でアップリンクNICにLACPを利用したチーミングを行うケースがあります。

AHVは、もちろんLACPに対応しています。今回は、以前にも紹介しましたが改めてLACPを含めアップリンクのチーミング方法とLACPの設定方法についてお伝えします。

AHVのチーミング方法

AHVは、3つのアップリンクにおけるチーミング方法をサポートしています。

チーミングモード使用事例
active-backupデフォルト構成では、単一のアクティブなアダプターを介してすべてのトラフィックが送信されます。
balance-slbマルチキャストトラフィックに関する注意事項があります。ホスト帯域幅の使用率が単一の 10 GbE アダプターを超えて増加します。各 VM NIC を一度に 1 つのアダプターに配置します。 
LACP and balance-tcpLACPとリンクアグリゲーションが必要です。アダプター間で VM NIC の TCP および UDP セッションのバランスをとることにより、ホストと VM の帯域幅使用率が単一の 10 GbE アダプターを超えて増加します。物理ネットワーク スイッチでLACP ネゴシエーションを必要とします。

AHVのデフォルトは、「active-backup」構成であり、こちらがメーカー推奨の構成となります。複数NICでアップリンクを構成した場合、アクティブとして利用するNICがⅠ本になるため、4本アップリンク構成などの場合はNICが無駄になってしまいますので、Nutanixの構成の推奨としては、2本のNICでチーミング構成を作成し、「active-backup」構成を利用することです。こちらの構成が推奨な理由は、Nutanixは、10Gのネットワーク帯域をフルで利用しない仕組みであることと、LAGにおけるスイッチとの相性およびスイッチの設定ミスによる通信不能状態を引き起こすことをなくすというメリットがあるためです。
当然ながらActive-Backup構成であれば、接続するスイッチ側は、LAGなど設定の必要なく、通常のAccessもしくはTrunkポートで設定すればOKです。

▼Acrive-Backupのアップリンク利用イメージ


balance-slbは、複数のアップリンクNICに対して、仮想マシン毎に特定の物理NICを利用するという構成です。こちらもスイッチ側には、LAGなどのポートを束ねる設定は必要ありません。仮想マシンに搭載された仮想NIC毎に利用する物理NICが割り当てられるため、仮想マシントラフィックによっては、物理NICのトラフィック量が不均等になる可能性はあります。

balance-slbのアップリンク利用イメージ


最後にLACP and balance-tcpですが、こちらはLACPを利用した構成です。スイッチ側でLAGの設定をする際のバランシングモードは「balance-tcp」を設定する必要があります。
物理NICが分散されて利用するため、負荷分散ができかつチーミングされた物理NICの性能を最大限利用することができます。

▼LACPを利用した場合のアップリンク利用イメージ


ここまで、アップリンクモードについて確認してみました。
重要なことは、LAG構成は、LACPのみサポートされており、静的LAGは非サポートであることに注意してください。


<LACPの設定方法>

では、LACPを利用する場合について考えてみましょう。

現在、Nutanixでは、Prism上でアップリンクNICのチーミングモードを変更することができ、Prismでのオペレーションが強く推奨されています。GUIで簡単に変更できることは大変便利です。しかし、Prismを利用して設定を変更するということは、Nutanixクラスターサービスが起動していることが前提です。
ノード追加を行う場合も、追加ノードのチーミングモードを設定できる項目がExpand Clusterの画面に追加されています。

▼Expand Cluster時に拡張ノードに対してチーミングの個別設定が可能


Nutanixの初期設定は、Active-Backupですのでこの状態でクラスターを起動させるために、Nutanixに接続される物理スイッチは、LACPモードではなく、通常のポートで設定する必要があります。一方、Prismからチーミングモードを変更すると1ノードずつチーミングモードがLACPに変更されます。(従来はここでノードの再起動が発生していましたが、AOS6.7においては、再起動は、発生しなくなっています)

しかし、1ノードのチーミングモードがLACPに変わると物理スイッチ側は、まだ通常のポートモードであることから、チーミングモードが変更されたノードは、疎通ができなくなってしまいます。

これを防ぐために、スイッチ側は、LACPの設定を行いつつもfallbackモードを有効化しておくことが必要となります。このfallbackモードは、物理スイッチでLACPを設定されたポートで、LACPのネゴシエーションができなかった場合、標準ポートとしてネゴシエーションするという機能です。この機能を利用することで、予め物理スイッチはLACPに設定しつつも、Nutanix側は、Active-Backupで起動時は、fallback機能が働き、通常ポートとして稼動し、PrismからLACPモードに変更すると、Nutanix側でLACPが有効化されるため、物理スイッチもLACPモードが有効化されるため、疎通が出来なくなるという事故をなくすことができます。

しかし、物理スイッチのメーカーにおいては、fallbackモードが実装されていない場合があります。この場合は、予めNutanixクラスターにLACPモードを有効化した上で、物理スイッチもLACPモードにしておけば、問題なくネゴシエーションができるかと思います。では、NutanixのノードをクラスタースタートせずにLACPモードにする方法としては、CVMから以下のコマンドを入力することでチーミングモードを変更します。

この手順は、クラスターメンバーに入る前のノードでもサ行が可能です。既にクラスターメンバーには行っているノードにおいて設定変更する場合は、クラスターサービスを「cluster stop」コマンドをCVMで実行し、予めクラスターサービスを停止しておきます。

まず、ノードの物理NICを確認します。

nutanix@NTNX-23SM6C-CVM:10.38.51.173:~$ manage_ovs show_uplinks
Bridge: br0
  Bond: br0-up
    bond_mode: active-backup
    interfaces: eth5 eth4 eth3 eth2 eth1 eth0
    lacp: off
    lacp-fallback: false
    lacp_speed: slow
    lacp_status: off

ここでは、eth0からeth5全てが1つの仮想スイッチのアップリンクNICとして構成されており、現行はLACPモードではないことがわかります。

では、LACPモードを有効化します。

nutanix@NTNX-23SM6C-CVM:10.38.51.173:~$ manage_ovs --bridge_name br0 --interfaces eth0,eth1,eth2,eth3,eth4,eth5  --bond_mode balance-tcp --lacp_mode fast --lacp_fallback true  update_uplinks
2023-12-16 05:09:49,505Z WARNING manage_ovs:1361 Failed to fetch gflags. Acropolis service might be down: HTTPConnectionPool(host='127.0.0.1', port=2030): Max retries exceeded with url: /h/gflags?show=hypervisor_username (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f5e411bc350>: Failed to establish a new connection: [Errno 111] Connection refused',)).
2023-12-16 05:10:02,734Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:02,856Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:03,265Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:03,267Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:03,280Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:03,661Z INFO cpdb.py:141 Failed to send RPC request. Retrying.
2023-12-16 05:10:13,008Z INFO manage_ovs:700 Node: 10.38.51.173 failed to connect to IDF while validating virtual switch configuration. Continuing further may result in inconsistency with the existing virtual switch configuration and require manual remediation once IDF is available.
Do you want to proceed? (Y/[N]):

クラスターサービスが上がっていないので色々コンソールに出力されますが、気にせず、Y/Nの質問が来るまで待った上で、Yを入力設定を完了します。


設定が完了したら、再度アップリンクのステータスを確認します。

nutanix@NTNX-17SM6C100126-C-CVM:10.38.51.173:~$ manage_ovs show_uplinks
2023-12-16 05:19:26,915Z WARNING manage_ovs:1361 Failed to fetch gflags. Acropolis service might be down: HTTPConnectionPool(host='127.0.0.1', port=2030): Max retries exceeded with url: /h/gflags?show=hypervisor_username (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f687cc8b350>: Failed to establish a new connection: [Errno 111] Connection refused',)).
Bridge: br0
  Bond: br0-up
    bond_mode: balance-tcp
    interfaces: eth5 eth4 eth3 eth2 eth1 eth0
    lacp: active
    lacp-fallback: true
    lacp_speed: fast
    lacp_status: configured ★

ここで確認すべき情報は、「lacp_status」です。

こちらの例では、LACP設定は完了していますが、スイッチとLACPでネゴシエーションで来てない状態になります。この項目が「negotiated」であれば、スイッチとのLACPネゴシエーションが確立されています。

なお、AOS6.7「el8.nutanix.20230302.207」のAHVバージョンにおいては、従来AHVがら設定をしていた「ovs-vsctl」や「ovs-appctl」コマンドが利用できなくなっているようです。

AHV上で、ovsコマンドの一覧を確認した際の結果

[nutanix@NX-AHV3 bin]$ ls -alg | grep ovs
-??????????  ? ?            ?            ? ovs-appctl
-rwxr-xr-x.  1 root    234440 May  1  2023 ovsdb-client
-rwxr-xr-x.  1 root    185560 May  1  2023 ovsdb-tool
-rwxr-xr-x.  1 root      8064 Feb 24  2023 ovs-docker
-rwxr-xr-x.  1 root     47168 May  1  2023 ovs-dpctl
-rwxr-xr-x.  1 root     61740 May  1  2023 ovs-dpctl-top
-rwxr-xr-x.  1 root    453544 May  1  2023 ovs-ofctl
-rwxr-xr-x.  1 root      2862 May  1  2023 ovs-parse-backtrace
-rwxr-xr-x.  1 root      3418 May  1  2023 ovs-pcap
-rwxr-xr-x.  1 root     15121 May  1  2023 ovs-pki
-rwxr-xr-x.  1 root     17347 May  1  2023 ovs-tcpdump
-rwxr-xr-x.  1 root      2195 May  1  2023 ovs-tcpundump
-rwxr-xr-x.  1 root     12104 May  1  2023 ovs-vlan-test
-??????????  ? ?            ?            ? ovs-vsctl


今後は、CVMから「manage_ovs」を利用することが前提となっている流れでは無いかと思います。








2023年12月12日火曜日

仮想マシンにのNICにVLANトランクを設定する方法

ネットワーク関連の仮想アプライアンスなど、複数のネットワークを持たせた仮想マシンを構成することがあるかと思います。AHVの場合、「AHV-20230302.207」バージョンの場合、1つの仮想マシンに対して、仮想NICの搭載は15個が最大とされています。

なお、15を超えるNICを仮想マシンに追加することは、Prismの画面上可能なのですが、仮想マシンのパワーオンに時間がかかります(NICの数に応じて30秒を超える)。

コンパチビリティを考えてもNICの数は15個以内に収めておきたいところですが、Firewall的な動作をする仮想マシンなどNICを15個以上必要とする場合があるかと思います。

このような場合、仮想マシンの仮想NICに対して、TAGVLANをそのまま仮想NICに流す、トランクモードの設定を行うことが出来ます。

今回は、AHV環境において仮想マシンにVLAN Trunkを渡すNICの作成方法をご紹介します。

まずは、Prism画面から普通通り仮想マシンを作成します。この際、NICは搭載せずNICなしの仮想マシンとして作成してください。


次に、acliで、仮想NICの割当を行います。

acli vm.nic_create [仮想マシン名] vlan_mode=kTrunked trunked_networks=[通信させたいVLAN-IDをカンマ区切りで記入] network=[UNTAGで割り当てるNIC]

仮想マシンに対して、UNTAGのネットワーク(いわゆるNativeVLAN)を割り当てたくない場合であっても、「network」の定義は必須となります。
(UNTAG側で通信をさせたくない場合は利用しないVLANを作成し、そのVLANを割り当ててください)

では、仮想マシン側ではどのように設定をするかもご紹介します。

まずは、Windows Serverの場合です。

サーバーマネージャーのNICチーミング機能を有効化します。


まずは、チームから「チームの新規作成」をクリックします。


チーミング設定を行います。とはいえ、NICは1本しかありませんの、1本のNICを選択します。1本のNICですからバランシングもできません。仮想マシンの場合は、チーミングモードを「スイッチに依存しない」、負荷分散モードを「アドレスのハッシュ」を選択します。(それ以外のオプションを選択した場合、チーミングNICは作成できません)

プライマリ チームインターフェースは、このNICに対して割り当てるVLANをNativeVLAN以外にする場合は、こちらのオプションで「特定のVLAN」で、指定したいVLAN-IDを入力します。


作成が完了すると、アダプターとインターフェースの部分に、作成したNICが表示されます。

ここからさらに違うVLAN用にNICを作成する必要がありますが、「アダプターとインターフェース」の「タスク」メニューから「新しいチームに追加」がクリックできません。
わかりにくいのですが、「チームインターフェース」を選択し、再度「タスク」をクリックすることで、「新しいチームを追加する」がクリックできるようになります。


▼チームインターフェースを選択


こちらのインターフェースの追加をクリックすることで、別のVLANを割り当てたNICを作成することができます。


ネットワーク接続の画面から見ると、物理のNIC(こちらは、IPアドレスなどの設定をしないでください)と、チーミングされた2つのNICが見えています。IPアドレスの付与や各種設定は、このチーミングされたNICに設定を行います。



LinuxOSの場合もご紹介します。

Rocky Linux 9.3での設定方法を見てみましょう。(他のRHEL互換OSである、Alma Linuxなども同様の設定となります)

最初に、「ip addr」で、既存NICの情報を確認します。

[root@rocky93master admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:6b:8d:86:5c:7d brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.168.1.70/24 brd 10.168.1.255 scope global dynamic noprefixroute ens3

       valid_lft 28434sec preferred_lft 28434sec
    inet6 fe80::526b:8dff:fe86:5c7d/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

この場合、VLAN用にNICを作成する元NICが、「ens3」であることがわかります。このNICをもとにVLAN401のNICを作成してみます。

シェル画面で「nmtui」を実行し、「接続の編集」をクリックします。

新規NICを作成するので、「追加」を選択します。

作成したNICは「VLAN」を選択します。


プロファイル名はわかりやすい名称にします。デバイス名も管理しやすいデバイス名にしておきます。
親は、VLAN通信をする元NICになります。先ほど事前に調査したNIC「ens3」を入力します。VLAN idには、通信させたいVLAN IDを入力します。IPv4設定等は、状況に応じてIPアドレス付与を行います。

作成されたVLAN NICができたことを確認し、「戻る」を選択します。


nmtuiを終了します。


シェル画面から、「ip addr」コマンドで再度、NICの状態を確認します。

[root@rocky93master admin]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:6b:8d:86:5c:7d brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.168.1.70/24 brd 10.168.1.255 scope global dynamic noprefixroute ens3
       valid_lft 27267sec preferred_lft 27267sec
    inet6 fe80::526b:8dff:fe86:5c7d/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
5: ens401@ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 50:6b:8d:86:5c:7d brd ff:ff:ff:ff:ff:ff
    inet 10.14.254.75/16 brd 10.14.255.255 scope global dynamic noprefixroute ens401
       valid_lft 5878sec preferred_lft 5878sec
    inet6 fe80::442a:a590:abec:e8a0/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

追加したNICである、「ens401」が追加され、この場合、DHCPを使ってIPアドレスが取得できていることがわかります。

その他仮想アプライアンスの場合は、そのアプライアンスの指示に従いVLANインターフェースの作成が可能かと思いますので、利用したい製品でのVLANインターフェース作成方法をご参照ください。






2023年8月7日月曜日

AHVにおけるメモリーオーバーコミットの利用方法(その1)

AHV環境においては、長らく仮想マシンのメモリー割り当ては、ハードウェアからの予約となり、他の仮想マシンとのメモリーの空き容量を相互に使うメモリーオーバーコミット機能が利用できませんでした。AHV 20201105.30007 以降を備えたハイパーバイザーとAOS 6.0.2以降であれば、メモリーオーバーコミットが利用可能となります。

今回は、このメモリーオーバーコミットの紹介をします。

そもそもメモリーオーバーコミットとは、なにかをおさらいしておきましょう。

メモリーオーバーコミットは、仮想マシンに割り当てられたメモリーのうち、仮想マシンのOSレイヤー以上で利用されていないメモリーを、Balloonドライバーで回収し、ハイパーバイザーに戻すことで、本来のホストの持つ物理メモリーサイズを超えて、仮想マシンにメモリーを割り与えることです。即ち、空いている容量を他の仮想マシンに転用するだけであって、物理的に利用できるメモリー容量が増えるわけでは、ありません。また、メモリーは、1台のホスト内でメモリーのやりくりを行うので、ホストを超えてのメモリーのオーバーコミットはできません。

単純にわかりやすく考えると、月極駐車場で、100台の駐車スペースを法人契約していた場合、平日の10時から16時までは、平均80台の車が営業車として利用されており駐車スペースが空いているため、10時から16時までの間に別の利用者に貸し出すような考え方です。(オーバーブッキングビジネスの考え方)

要は、枠としては、既に押えられているが、実質使われていない空いているキャパシティーを、さらに利用するような考え方となります。


では、メモリーオーバーコミットの利用方法を具体的にご紹介します。

メモリーオーバーコミットは、仮想マシン単位で設定します。

Prism Centralで仮想マシンを作成する際、もしくは作成済みの仮想マシンに対して、Enable Memory Overcommitメニューで、メモリーオーバーコミット機能を有効化します。


Prism Centralでの有効/無効以外に、acliを利用して、メモリーオーバーコミットの有効/無効の設定が可能です。

acli vm.update 仮想マシン名 memory_overcommit=true/false


環境としては、以上で設定は終わりです。仮想マシンには、VirtIO Driverの最新版(Ver 1.2.1)を利用して、バルーンドライバーのインストールが必須となります。

Windowsの場合は、Nutanixが提供する、VirtIO Driverからインストールを行います。


Linuxの場合は、カーネルにバルーンドライバーが入っているかを確認します。

lsmod | grep baloon

で、以下のように結果が表示されれば、バルーンドライバー(カーネルモジュール)が入っています。

virtio_balloon         24576  0

もし入っていない場合は、カーネルモジュールの設定変更する必要があります。

Ballon Driverは、カーネルビルド時に利用する"make menuconfig"の「Device Drivers -> Virtio Drivers」の中にあります。


メモリーオーバーコミットの仕様も確認しておきましょう。

  • AOS6.0.2以降/AHV 20201105.30007以降でサポート
  • 最新のVirtIO Driverを仮想マシンインストールします
  • メモリーオーバーコミットの有効/無効は、仮想マシン単位で、仮想マシンがパワーオフの状態で設定します。
  • PrismCentral 2022.4以降であれば、GUIで仮想マシン単位でメモリーオーバーコミットの設定が可能です。
  • ホストを超えたメモリーオーバーコミットはできませんん。
  • GPUパススルーやvGPUを設定した仮想マシン、vNMUA設定をした仮想マシンは、メモリーオーバーコミットできません。
  • メモリーオーバーコミットを有効にした仮想マシンは、仮想マシンのメモリーホットアドは、できません。
  • ライブマイグレーションを行う場合、通常に比べ移動の速度が遅くなる可能性があります。
  • 物理メモリーの枯渇に備え、スワップファイルが内部的にNutanixManagementShareストレージコンテナ内に作成されます。
  • デフォルトで、各仮想マシンは、割り当て容量の25%が物理メモリーに割り当てが保証(予約)されます。残りの75%は、他の仮想マシンのメモリーオーバーコミット領域として利用されることがあります。(すなわち、4倍までオーバーコミット可能)


仮想マシン側も準備ができれば、あとは、動きを見てみましょう。

メモリーオーバーコミットは、ホストを超えてメモリーをオーバーコミットすることができませんので、今回は、わかりやすいように1台のNutanixホストで試してみたいと思います。

物理搭載メモリー192GBから、CVMが消費するメモリー32GBとハイパーバイザーが利用するメモリーが4GB程度ありますから、実際には、160GB程度しか仮想マシンは利用できないと思います。

この環境で、メモリーを160GB割り当てた仮想マシンを作成します。

この場合、160GBのメモリーをこの仮想マシン専用に確保することができないため、仮想マシンを起動することができません。


しかし、メモリーオーバーコミット機能をONにすると仮想マシンを起動することができます。実際に利用されているメモリー容量は、この場合、160GBのメモリー割り当てに対して、20.67%しか利用していないことがわかります。メモリーオーバーコミットが有効化された仮想マシンは、割り当てられたメモリーサイズの75%がメモリーのオーバーコミットとして他の仮想マシンで起動する際に利用される領域となります。


しかし、CVMは、オーバーコミットができないはずですが、なぜかハイパーバイザーの容量を考えても物理メモリーとして利用できる範囲を超えていると思われます。

では、物理メモリーを超えた容量を割り当てた場合はどうなるのでしょうか?最初に256GBで割り当てたところ、仮想マシンは起動しませんでした。200GBでも起動しませんでしたが、199GBにすると仮想マシンは起動します。はっきりした仕様がわかりませんが、おそらく物理メモリー容量に、8GB未満までであれば仮想マシンに物理容量を超えるメモリーサイズが利用できる可能性があります。


ここからさらに、28GBのメモリーを割り当てた仮想マシンを起動すると、きちんと起動します。最大4倍までがオーバーコミットできるので、トータルで物理メモリー容量を超えた形で仮想マシンを起動することができます。

次回は、より詳細にメモリーオーバーコミットの動きを見ていきたいと思います。




2023年6月3日土曜日

AHV環境におけるWindows仮想マシンのシャットダウンについて

AHV環境では、仮想マシンの電源管理に、物理的なPCなどでも利用されているACPIの命令を利用しています。このACPIの命令は、業界標準の規格であるためどのようなOSに対しても統一的に電源制御できるのが特徴です。

しかし、Windows OSについては、ACPI命令に対応しているものの初期設定の場合、条件によっては、ACPIによるシャットダウン命令を受けてくれないことがあります。

そのため、NGTを経由してシャットダウンする方法が提供されていますが、環境によってはNGTを稼動できない状況下があるかと思います。

本日は、ACPIコールによるシャットダンをWindows仮想マシンで行うポイントをご紹介します。

1.一定時間無操作によるディスプレイの電源OFF

サーバーOSであっても一定時間無操作であると、ディスプレイの電源をOFF(信号出力を止める)のがデフォルトでオンになっています。ディスプレイ電源がOFFになった状態で、ACPI経由でシャットダウン命令がコールされると、ディスプレイの電源が表示(画面出力の信号が行われる)だけで、シャットダウンは行われません。さらにもう一度シャットダウンのACPI命令を投げることでシャットダウンが行われます。
UPS連携などでシャットダウンを行う場合、このままでは正常にシャットダウン出来ない可能性があります。従ってディスプレイの電源を切るは、「なし」に設定しておくことが大事です。

▼設定画面からの変更方法

▼コントロールパネルからの設定変更


2.画面ロック時のシャットダウン

ディスプレイの信号停止によるシャットダウンの影響は比較的簡単に対策をすることができます。一方で、画面ロック時のシャットダウンについては、少々厄介です。
これは、Windowsの画面で操作を行い一定時間無操作の場合や、意図的に離席するなどので「Ctrl + Alt + Delete」でロック、もしくは、「Windowsキー + L」で画面を見えないようにして、第三者の不正な操作や機密情報を盗み見るショルダーハックを防止する機能です。
これはこれで、重要な意味を持つのですが、Windows OSのデフォルト設定では、画面ロックが行われている場合、ACPIによるシャットダウン命令を無視する仕様となっています。

▼画面ロックの状態


これは、ロック時は、作業途中という扱いになりシャットダウンが行われないように設計されているWindows OSのデフォルトの動作となります。
しかし、VDI環境や停電時は、安全なシャットダウンが優先されますので、OSの正常シャットダウンを優先すべきなケースがあります。

ロック時におけるシャットダウンの設定について、ご説明していきます。

Windowsには、ロック時でもシャットダウンを強制するオプションがあるのですが、こちらがデフォルトでは非表示になっています。

▼電源ボタンに対する設定が表示されない


そこで、まずは強制シャットダウンのメニューを表示させる必要があります。
該当のWindowsマシンから、以下のコマンドを管理者で実行します。

powercfg -attributes SUB_BUTTONS 833a6b62-dfa4-46d1-82f8-e09e34d029d6 -ATTRIB_HIDE

このコマンドを実行後、「コントロールパネル」→「電源オプション」→現在設定されているプランの「プラン設定の変更」を開きます。

「電源ボタンとカバー」→「強制ボタン/カバーシャットダウンを有効にする」→「設定」を「オン」に変更します。


この設定を行うことで、画面ロック時にもシャットダウンを行うことが出来るようになります。

なお、間違えやすいのですが、電源ボタンとカバーの配下にある「電源ボタンの操作」をシャットダウンにしてもロック状態でのシャットダウンはできません。「強制ボタン/カバー シャットダウンを有効にする」の項目を「オン」にするので、間違えないようにして下さい。


詳細は、こちらもご参考下さい。
Power actions initiated from Prism or API may fail for Windows VMs





2022年10月1日土曜日

仮想TPM機能を生かしてWindows 11を稼動させる ~AOS6.5の機能紹介(その5)~

Windows 11がリリースされて約1年。AHVにおいては、今までTPMの仮想化機能が提供されていなかったので、正式な方法でWindows 11のインストールが出来ませんでした。

Windows 11をインストールするためには、以下の環境が必要となります。

  1. 1GHz以上で2コア以上のx64プロセッサー
  2. 4GB以上のメモリー
  3. 64GB以上の記憶装置
  4. UEFI セキュアブート
  5. TPM 2.0を搭載
  6. DirectX 12をサポート(WDDM 2.0ドライバー)するグラフィックカード
(参考)Windows 11 の仕様、機能、コンピューターの要件を確認する


ここで仮想化環境でハードルになってくる部分は、UEFI セキュアブートとTPM2.0の部分になります。UEFI セキュアブートについては既にAOS 5.20系でサポートされていますので、問題ありませんが、TPM2.0の要件をAHVは、満たしていませんでした。

しかし、先日リリースされたAOS "6.5.1"AHV "Nutanix 20220304.242"のバージョン組み合わせで、仮想TPMに対応しました。(AOS 6.5.1は、LTSリリースになりますので、長期サポートを受けることができます)

従来AOSの新バージョンと併せてAHVもセットでリリースされることが多かったのですが、今回は、AOSのリリース日とは別に2022/9/29に、"20220304.242"としてAHVのバージョンが大きく上がる形で単独リリースされました。またWindows 11に対応した"VirtIO Driver 1.2.1"を利用します。
(AOS 6.5.1にバンドルされたAHVは、"AHV-20201105.30411"になります。AHV-20201105.30411では、仮想TPMに対応していませんので、AHVを個別でアップグレードする必要があります)

なお、TPM利用においては、今後のバージョンでPrism上で操作できるようになる予定ですが、リリースしたてのAOS6.5.1との組み合わせの場合、acliコマンドで仮想TPMを有効化する必要があります。

まずはじめに、普通通りに仮想マシンをPrism上で作成します。

仮想マシンを作成する際には、UEFIを選択してください。併せて、Diskの項目で予め作成されているIDEのCDROMドライブを削除し、CDROMドライブは、SATAを、DISKは、原則SCSI(なんらかの事情が場合はSATA)を選択してください。


VirtIO DriverとWindows OSの2つのISOを利用しますので、CDROMドライブは、2つ用意しておくと便利です。

続いて、SSHを利用して、任意のCVMに接続します。

接続後、以下のコマンドを実行します。

acli vm.update "仮想マシン名" virtual_tpm=true

コマンド実行後「complete」と表示されれば設定完了です。

SSHを閉じた上で、作成した仮想マシンをパワーオンします。

Windows 11のインストーラーが起動したら順次ウィザードを進めていきます。


ドライバー一覧が表示されますので、全てのドライバーを選択します。
全てのドライバーを選択することで、NICなどディスク以外のデバイスもOSインストール時にドライバーが適用されます。


あとはウィザードをすすめ、インストールを行います。
Windows 11の環境条件が整っていない仮想マシンの場合、インストール自体がそのままの状態では出来ませんので、インストールまでウィザードが進むと言うことは、仮想マシンが、Windows 11の要件を満たした環境であることが分ります。

インストールのウィザードをすすめていくと、無事にWindows 11のインストールが完了すると思います。

デバイスマネージャーでも、TPM2.0が認識されていることがわかります。


Prismの操作だけでは無く、acliでコマンド実行をするという一手間は入ってしまいますが、レジストリなどを操作すること無く、通常の操作だけでWindows 11がインストールできるようになりました。

Windows 11で、VDI環境を作る場合などは、AOS 6.5.1とAHV-20201105.30411以降のバージョンを利用して構築しましょう。





2020年12月21日月曜日

AHV環境のネットワークチーミングについて

vSphereでは、標準スイッチと分散スイッチの2つのスイッチが構成できます。
Nutanix環境でvSphereを利用する場合は、どちらのスイッチ方式もvSphereのベストプラクティスに従って利用可能です。

一方、AHVにおける仮想スイッチは、Open vSwitchが実装されています。

今回は、AHVにおけるアップリンクNICのチーミングについてみていきたいと思います。

まず、AHV環境においては、仮想マシンとの疎通で利用できる1つの仮想スイッチ(ブリッジ)が作成されています。ブリッジはFoundationでイメージングをすると自動で作成されます。

AHV環境におけるアップリンクのボンディング(チーミング)は、デフォルトがActive/Backupで構成されます。

AHVにおけるアップリンクのチーミング方法は、以下の3つの方法があります。


<Active/Backup>

Nutanixにおける推奨設定になります。単一なアクティブNICを利用し、障害発生時にはBackupのNICに切り替わります。


<balance-slb>

仮想マシンのMACアドレスごとに、アップリンクNICが割り付けられます。単体の仮想マシンとしては、最大1NICの速度しか出ませんが、アップリンクのNICを最大限利用することができます。この場合、MACアドレスごとにNICが異なる疎通だけが行えますので、スイッチ側でLink Aggricationを構成する必要はありません。
balance-slbは、マルチキャストトラフィックで問題が発生することがありますので、構成は推奨されていません。


<LACP with balance-tcp>

LACPを利用し、TCPのポート番号ごとにアップリンクNICが割り付けられます。
LACPを利用するため、スイッチ側を静的LAGでの構成はしないでください。

アップリンクにおける注意点としては、以下の通りです。

  • 異なる速度のNICでチームを組んではいけない。
    (アップリンクに1Gと10G NIC混在などはNG)
  • 異なるベンダーのNICでチームを組んではいけない
    (intelのNICとMellanoxのNICでチームを組むなどはNG)
  • LACPがどうしても必要という理由がない場合は、Active/Backupのロードバランシングを使用してください。
  • AHVで、静的LAGを利用しないでください。

アップリンクモードの変更は、PrismのNetworkから設定変更が可能です。
ネットワークページの「+ Uplink Configration」をクリックします。


アップリンクのチーミングモードを変更し、Saveボタンをクリックすると、1ホストずつ設定変更が行われ、ホストが再起動します。(仮想マシンはライブマイグレーションされます)



次回はアップリンクのチーミングモード変更について、コマンドでの操作を紹介します。

2020年12月19日土曜日

AHVでのOVAのインポート/エクスポートについて

NutanixでAHV環境におけるOVA対応は、今までもOVAファイルを展開して仮想ディスクファイル等を個別でインポートすれば、稼働させることができるという形で運用が可能でした。(OVAでパッケージングされていことにメリットがあるものを分解してアップロードするという時点でかなり無理やり感がありますが...)

一方でAHVで展開した仮想マシンをExportする機能は存在していませんでした。

しかし、Prims Central 2020.8以降、OVAの取り扱いができるようになりました。

今日は、仮想マシンのOVA/qcow2エクスポートとOVAインポートについてご紹介します。

操作には、Prism Centralを利用します、今回は、「Prism Central 2020.9.0.1」で確認を行います。


<エクスポート方法>

Prism Centralの仮想マシン一覧から、エクスポートしたい仮想マシンを選択し、Actionから、「Export as OVA」を選択します。


エクスポートの名称とQCOW2とVMDKのどちらの形式に知るかを選択し、Exportボタンをクリックします。

すると、Exportのタスクが作成されます。エクスポートボタンを押してもすぐにOVAファイルがダウンロードされるわけではありません。


次に、メニューから、「Virtual Infrastructure」から「OVAs」を選択します。


ここで、エクスポートされたOVAファイルが表示されます。(当然ながらエクスポート中のタスクが完了している必要があります)

ここから、先ほど選択したファイルをダウンロードします。



<インポート方法>

OVAのインポートは、先ほどの「Virtual INfrastructure」の「OVAs」の画面から行います。


ここで、インポートするクラスターおよび、OVAの名称を入力します。
Nameを入力せずに、OVAファイルを選択すると自動的にNameにOVAのファイル名が記入されそのままインポートが開始されます。

OVAファイルを選択する前にすべての項目を入れておかないと、OVAファイルを選択した時点ですぐにインポートが始まってしまいます。

アップロードが完了すると、一覧に表示されますので、そこからActionボタンから、「Deploys as VM」を選択します。

ここからウィザードで、仮想マシン名とスペックを設定できます。

次に、BIOS/UEFIの設定や、ディスク構成、ネットワーク構成を設定します。
ディスクの追加やNICの追加は、Attach Disk、Attach to Networkをクリックします。

OVAに設定されているNICに対してVLANを割り当てる場合、鉛筆マークをクリックしVLANの割り当てをおこないます。

最後に、PrismCentralで利用するカテゴリ(未記入可能)、タイムゾーンを設定します。cloud-initやsysprepを利用することもできます。

最後にレビューを行い、LaunchボタンをクリックするとDeployが開始されます。


OVAのデプロイが完了すると自動的に仮想マシンがパワーオンされます。

なお、OVAのインポート時、インポートしたファイルは、「SelfServiceContainer」ストレージコンテナの.ovaディレクトリ配下に保存されます。


OVAの取り扱いは従来すこしハードルが高いものでしたが、現在ではすべてマウス操作だけで簡単にインポート・エクスポートができるようになりました。
また、インポートしたOVAは、Nutanix上に保存されますので、よく利用する仮想マシンは、そのまま残しておくことでテンプレート的に利用することも可能です。