ESXi上のNutanix CE AHVの中でPrism Centralを立ち上げようとしたらKernel Panicで何もできない


ESXi6.0上に3ノードのNutanix CE AHVクラスタを組み、Prism Centralをインストールしようとしたら失敗した。

コンソールを開いてみるとKernel Panicしている。

Nutanix CE ce-2017.07.20-stableにおけるPrism Centralの1-Clickデプロイがコケる場合のバッドノウハウ的なワークアラウンド」をみてbootとhomeを入れ替えてみたが、何も状況は変わらなかった。
結果的にはこのbootとhomeの入れ替えはやる必要は無かった。

解決につながる情報は「Run Nutanix CE nested on VMware ESXi 6.5 – solving some of the challenges you will face」で引用されている「Prism Central not booting」にあった。

原文は下記

1/ deploy PrismCE using ce-pc-2017.07.20-metadata.json and ce-pc-2017.07.20.tar

2/ grab /var/lib/libvirt/NTNX-CVM/svmboot.iso from an AHV host using SCP/SFTP

3/ upload it as an ISO image in a PrismCE container with name boot_PRISMCE

4/ edit PrismCE VM settings:
delete DISK scsi.0
delete CDROM ide.0
add new disk type CDROM / Clone from Image service / Bus type=IDE / Image=boot_PRISMCE
select CDROM as Boot Device

5/ power on PrismCE VM
blank screen during 20 sec and then everything works

Nutanix CE AHVホストの/var/lib/libvirt/NTNX-CVM/svmboot.iso をscpで手元にダウンロードし、
Nutanix上のISOイメージとして登録
その後、Prism Central VMのCD-ROMドライブの割り当てを上記のsvmboot.isoにして起動

そうすることで、ログイン画面にたどり着きました。
ここからの手順は「INSTALLING THE PRISM CENTRAL VM (AHV)」の7番から参考にします。
ログインは「nutanix」「nutanix/4u」

初期プロセスがいろいろ動いてるようなのでログイン可能状態であっても、10分ぐらい待ちます
なお、キーボード配列を調整していない場合は「]む」で「|」を入力出来ます。
で、待ってると1回再起動すると思います。

再起動後「sudo tail -f /tmp/config_home_dir.log」を実行して、プロセスが一段落するのを待ちます。

この段階ではDHCPでIPアドレスを取得していると思われるので、/etc/sysconfig/network-scripts/ifcfg-eth0 を編集し、固定IPアドレスを設定
/etc/hostsに「127.0.0.1 NTNX-10-3-190-99-A-CVM」といった行がある場合は削除
/etc/resolv.conf にDNSサーバのエントリを登録
で、再起動。
IPアドレスが変わった場合は、起動後、即再起動がかかる。

その後、再度ログインしてから「ps -ef|grep rc.local」を実行して、rc.localの実行が終わることを確認。
rc.lcoal内に「sleep 120」があるので、最低2分かかる。

再起動して、またnutanixユーザでログイン
「cluster –cluster_function_list=”multicluster” -s IPアドレス create」を実行
ここら辺からは「Nutanix CE ce-2017.07.20-stableにおけるPrism Centralの1-Clickデプロイがコケる場合のバッドノウハウ的なワークアラウンド」の8番以降の手順を行うこととなる。

で、「REGISTER (UNREGISTER) WITH PRISM CENTRAL」でNutanixのクラスタにPrism Centralを接続する。

・・・というのをやろうとしたが、結局、cluster setupで延々とリトライを繰り返し、成功することはなかった・・・
Prism Centralを使わなくてもやりたかったことはできるというのがわかって、セットアップは諦めました。

なお、セットアップ途中のPrism Centrl仮想マシンはWeb GUIから削除できなかったので
Nutanix CVMにsshでログインしたあと
「acli vm.list」で仮想マシン名を確認し
「acli vm.delete 仮想マシン名」で削除を実行しました。

ESXi上にNutanix CE AHVをインストールした


ESXi 6.0基盤上で、Nutanix CEをインストールした。

インストール手順は下記の2つを参考にした
・ネットワールド Nutanix CE を Nested ESXiへインストールする9つのTips
・NTNX ESXi で Nested Nutanix CE を構成してみる。(ce-2018.01.31-stable 対応版)

iSCSIストレージのVMFS上に仮想ディスクをおいたところ、/sys/block/sd?/queue/rotationalの値は1だけど、Nutanix CE環境起動後に確認してみると、全部SSD認識となっていたので、ここの値変更は実施していない。

また、NTNXのページの方に書かれている「/home/install/phx_iso/phoenix/svm_template/kvm/default.xml」のmachineタイプ変更はやらなくても動いたので実施していない。
pmuの追加も「仮想 CPU のパフォーマンス カウンタの有効化」のチェックをオンにできる環境なので実施していない。

クラスタ作成は、インストーラ上の「Create single-node cluster?」にチェックを入れる手法は使わず、インストール後に手動でclusterコマンドを実行する手法をとった。
ただし、「cluster -s 192.168.1.191 create」というやり方では無く「cluster –dns_servers=192.168.1.100 –ntp_servers=192.168.1.101 -s 192.168.1.191 create」という形でDNSサーバとNTPサーバを指定する手法をとっている。

ただし、この手法の場合、DNSサーバとして追加で「8.8.8.8, 8.8.4.4」、NTPサーバとして「0.pool.ntp.org, 1.pool.ntp.org」も登録されているので、セットアップ完了後必要に応じ削除する必要がある。

詳細については→ Create & Configure Nutanix Cluster via command line を参照

インストール完了後、Nutanix CE仮想マシンにログインし、「/var/cache/libvirt/qemu/capabilities/3c76bc41d59c0c7314b1ae8e63f4f765d2cf16abaeea081b3ca1f5d8732f7bb1.xml」の値を変更しないと、仮想マシンが正常に起動しません。

通常、仮想マシンを作成すると「machine=’pc’」と設定されています。
NUTANIX AHV 20180425.199環境では、この「pc」というのは「pc-i440fx-rhel7.3.0」のエイリアスになっています。
ESXi上の仮想マシンの場合「pc-i440fx-rhel7.2.0」でないと起動しないので、エイリアスの設定先を変更します。

変更前

<machine name='pc-i440fx-rhel7.3.0' alias='pc' hotplugCpus='yes' maxCpus='240'/>
<machine name='pc-i440fx-rhel7.2.0' hotplugCpus='yes' maxCpus='240'/>

変更後

<machine name='pc-i440fx-rhel7.3.0' hotplugCpus='yes' maxCpus='240'/>
<machine name='pc-i440fx-rhel7.2.0' alias='pc' hotplugCpus='yes' maxCpus='240'/>

設定変更後は、全体の再起動を行います。

Hypervisorのホスト名を変える場合は、/etc/hostname と /etc/sysconfig/network のホスト名記載を書き換えます。
参考:CHANGING THE ACROPOLIS HOST NAME

CVMのホスト名を変える場合は、clusterを作った後にCVM上でrootになって「change_cvm_hostname 新ホスト名」を実行します
参考:Change CVM name
change_cvm_hostnameで変えたらPrismで「Rename CVM back to what it was originally. The CVM name is nonconfigurable by the end user.」という警告が・・・
どうやら、いまのバージョンではお薦めではないらしい

FreeBSD+bhyveベースのハイパーバイザーTidalScaleについて調べて見た


巨大HPCシステムを作る際に、巨大なデータを複数に分割してサーバに投げるのではなく、そのまま処理できるようなシステムとして、Linuxベースの「ScaleMP」というシステムがある。
2005年から製品をリリースしており、2010年にはXen/KVMに対応し始め、仮想化機能もだいぶ進んでいる。

それに似たようなものとして、最近、TidalScaleという製品が登場してきた。
こちらはFreeBSD 10.3Rベースで、ハイパーバイザー層はbhyveを使っているというもの。

これについて調べて見た・・・
といっても、最近全部公開された公式マニュアルを見ただけですが・・・

・管理サーバ(admin node)とworker nodeに分かれている。

・admin nodeには全体の管理機能と、ストレージを提供する役割がある
・worker nodeはCPUコアとメインメモリを提供する役割がある。
  現状、Intel CPUのみサポート
・worker nodeは使われていない時は電源がoffとされており、使用する際に自動的にonとする
  OS用ディスクは不要で、admin node上のNFSストレージからネットワークブートする
  この起動したOSを「TidalScale HyperKernel」といっている

・ストレージはadmin node上のzfsストレージか、外部のiSCSIストレージを使用することができる
  zfsの機能を使ってSSDを使ったアクセスの高速化を使うことも出来る
  FCストレージは今後のバージョンでサポートするらしい

・複数の物理サーバを使って1台の仮想マシンを作ることができる。
  この仮想マシンを「TidalPod virtual machine」といっている
  CPU 12コア/RAM 128GBの物理サーバを2台使って、CPU 24コア/RAM 256GBの仮想マシンを作る
・1台の物理サーバを複数の仮想マシンで使うことはできない
・サーバ間接続(Interconnect)は現状10Gb NICのみ
  InfinibandではなくEthernet
  Infinibandでなくても遅延が少ないという主張
・仮想マシンを構成する物理サーバが壊れた場合、仮想マシンが止まる
  現状、HAや予防交換の機能は無い。
  2019年対応したバージョンが出る予定

・ネットワークは4系統必要
  Guest subnet: 仮想マシンが外にでる為のネットワーク
  Storage subnet: ストレージ用ネットワーク(iSCSIベース)
  Control subnet: サーバ間の管理通信用 BMC/iLOなどの管理アクセス用
  Interconnect: IPアドレスを必要としないサーバ間管理通信用

・NIC冗長化機能が無い
 現バージョンは、trunking(bonding)機能が未サポート

・RedHat/SuSE/Ubuntuなどをサポートで、Windowsはサポートをうたっていない。

ScaleMPと同じような感じですね。

ScaleMPとの違い
・Interconnectが ScaleMPはInfiniband(HCA) / TidalScaleは10Gb Ethernet NIC(今後他のEthernet NICにも対応予定)
・用途が ScaleMPがHPC向けのデータ処理を主眼 / TidalScaleはでっかい仮想マシンをデータセンタ事業者向けに
・ScaleMPは1つの仮想マシンを立てる / TidalScaleは複数の仮想マシンを立てることができる(ただし物理サーバは別であること)

ScaleMPだと仮想マシンを複数立てられないので、TidalScaleがある、といった感じですかねぇ・・・

まぁ、調べて見ると、ScaleMPから2018年3月頃に訴えられているようです。

ScaleMP, Inc. v. TidalScale, Inc. et al 3:18-cv-04716」にScaleMPが提出した書類が載っていますが下記の様な感じです。(超意訳)
・ScaleMPの持ってる3件の特許を侵害している
・2010年8月にScaleMPがSAPおよびいまはTidalScale CTOになっているNessiに対してScaleMPのプレゼンをした
・2010年10月にScaleMP上にSAP HANAを載せる話をした
・2010年12月にNessiがScaleMPの評価を開始した
・2011年1月にdeep-diveセッションとして技術的にかなり深いミーティングをNessiとした
・2011年2月にNessiがイベントでScaleMPと似たような感じのものを発表した
・2011月9月にNessiがSAPをやめると発表
・2011年10月にNessiにScaleMPにCTOかアドバイザーとしてこない?と誘ったけど断られた
・2012年3月、TidalScale公開。Nessi CTOに
・2013年1月、SAPでScaleMPの評価をしてた人がScaleMPの価格情報とかいろいろ聞いたあとSAPを退社し、8月にTidalScaleに入社
・というわけで、うちのScaleMPを解析してソース公開しなくてもいいライセンスのFreeBSD/bhyveで再実装したんでしょ!?

TidalScale側の主張が書かれた資料が入手できていないので、上記が正しいのかはわかりません。
果たして、この後、どう決着がつくのかな、と

RHEL7.4をHyper-V上で動かしたらstorvscでSense Key関連メッセージが出た(未解決


Windows Server vNextのHyper-Vの上で、RHEL7.4の仮想マシンを動かしていたら、storvscに関するメッセージが出力される。
[storvsc] Sense Key : Illegal Request [current]
[storvsc] Add. Sense: Invalid command operation code

うちの環境ではハングアップはしていないが、関連しそうな事例として下記を発見。
Bug 1502601 – [Hyper-V][RHEL7.4] hang when thaw on microsoft hyper-v
この問題は「RHSA-2018:1062 – Security Advisory」で解決しているらしい。

…kernelが3.10.0-862.el7ということはRHEL7.5ということですね
とりあえずkernelだけアップデートして様子見・・・

まだ出力される
では、3.10.0-862.9.1.el7にしてみる・・・
やっぱりまだ出力される

果たして、これはどういう問題なんだろうか・・・

Orange Pi 2/armbianでVMware PowerCLIが動いた


先日、「CentOS7環境にPowerShell CoreとVMware PowerCLIをインストール」で書いたように、普通のCentOS7環境でVMware PowerCLIを動かしてみた。

で、ラズパイの上でもPowerShell Coreは動く。
Running PowerShell Core on Raspberry Pi 2

arm32というくくりでは同じだけど、SoCがAllwinner H3のOrange Pi 2でPowerShell Coreが動くか、
また、VMware PowerCLIがインストールでき、仮想マシン操作を行えるかを確認してみた。

現時点では、ARM Linux向けにはtar.gzで固めたものしか出ていないのでgithubのPowerShell Releasesからlinux-arm32.tar.gzとなっているものを入手。

2018/07/13時点だと「wget https://github.com/PowerShell/PowerShell/releases/download/v6.1.0-preview.3/powershell-6.1.0-preview.3-linux-arm32.tar.gz」でダウンロードした。

これを~/powershellディレクトリに展開

# mkdir ~/powershell
# cd ~/powershell
# tar xfz ../powershell-6.1.0-preview.3-linux-arm32.tar.gz
#

そして、PowerShell Coreを実行

PS /root> uname -a
uname -a
Linux orangepi2 4.14.18-sunxi #24 SMP Fri Feb 9 16:24:32 CET 2018 armv7l GNU/Linux
PS /root> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      6.1.0-preview.3
PSEdition                      Core
GitCommitId                    v6.1.0-preview.3
OS                             Linux 4.14.18-sunxi #24 SMP Fri Feb 9 16:24:3...
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0


PS /root>

普通に動いているようだ。

続いて、PowerCLIのインストール

PS /root> Install-Module -Name VMware.PowerCLI

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this
repository, change its InstallationPolicy value by running the Set-PSRepository
 cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "N"):y
PS /root>

何事もなく終了。
モジュールの確認

PS /root> Install-Module -Name VMware.PowerCLI

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this
repository, change its InstallationPolicy value by running the Set-PSRepository
 cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "N"):y
PS /root>
PS /root> Get-Module                                                            
ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Content, Clea...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-T...
Script     1.1.7.0    PackageManagement                   {Find-Package, Fin...
Script     1.6.0      PowerShellGet                       {Find-Command, Fin...
Script     2.0.0      PSReadLine                          {Get-PSReadLineKey...


PS /root> Get-Module -ListAvailable


    Directory: /usr/local/share/powershell/Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     6.7.0.8... VMware.DeployAutomation             {Add-DeployRule, A...
Script     6.7.0.8... VMware.ImageBuilder                 {Add-EsxSoftwareDe...
Manifest   10.1.1.... VMware.PowerCLI
Script     6.7.0.8... VMware.Vim
Script     10.1.0.... VMware.VimAutomation.Cis.Core       {Connect-CisServer...
Script     10.0.0.... VMware.VimAutomation.Cloud          {Add-CIDatastore, ...
Script     10.1.0.... VMware.VimAutomation.Common
Script     10.1.0.... VMware.VimAutomation.Core           {Add-PassthroughDe...
Script     6.5.4.7... VMware.VimAutomation.HA             Get-DrmInfo
Script     7.5.0.8... VMware.VimAutomation.HorizonView    {Connect-HVServer,...
Script     10.0.0.... VMware.VimAutomation.License        Get-LicenseDataMan...
Script     10.1.0.... VMware.VimAutomation.Nsxt           {Connect-NsxtServe...
Script     10.0.0.... VMware.VimAutomation.PCloud         {Connect-PIServer,...
Script     10.1.0.... VMware.VimAutomation.Sdk
Script     10.0.0.... VMware.VimAutomation.Srm            {Connect-SrmServer...
Script     10.1.0.... VMware.VimAutomation.Storage        {Add-KeyManagement...
Script     1.2.0.0    VMware.VimAutomation.StorageUtility Update-VmfsDatastore
Script     10.1.0.... VMware.VimAutomation.Vds            {Add-VDSwitchPhysi...
Script     10.0.0.... VMware.VimAutomation.Vmc            {Connect-Vmc, Disc...
Script     10.0.0.... VMware.VimAutomation.vROps          {Connect-OMServer,...
Script     6.5.1.7... VMware.VumAutomation                {Add-EntityBaselin...


    Directory: /root/powershell/Modules


ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.1.0.0    Microsoft.PowerShell.Archive        {Compress-Archive,...
Manifest   3.0.0.0    Microsoft.PowerShell.Host           {Start-Transcript,...
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Content, Clea...
Manifest   3.0.0.0    Microsoft.PowerShell.Security       {Get-Credential, G...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Format-List, Form...
Script     1.1.7.0    PackageManagement                   {Find-Package, Get...
Script     1.6.0      PowerShellGet                       {Install-Module, F...
Script     0.0        PSDesiredStateConfiguration         {ThrowError, Node,...
Script     2.0.0      PSReadLine                          {Get-PSReadLineKey...


PS /root>

で・・・画面は省略しますが、connect-viserverして、get-vmして、とか普通に動きました。