自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

これから出てくるオンプレミス VDI VMware Horizon での課題

2年前から始まったコロナ禍、各企業は政府の要請に合わせて慌てて在宅勤務環境を用意していったと思います。その在宅勤務の選択肢の中には仮想デスクトップつまり VDI 環境を用意するというのもありました。私も外部講演で仮想デスクトップによる在宅勤務環境の整備の話を良くしていたのですが、ここにきて VMware Horizon がライセンス体系を変えてきたのを理解している人はまだまだ少ないかなと思いました。そこで、どう変わるかということを整理してみました。

今までの VMware Horizon のライセンスは

VMwareのライセンスはパーペチュアル(Perpetual:永続型)ライセンスといって、買ったら最後ずっと使い続けていても問題のないライセンスでした。つまり、製品のライセンスは購入した人の所有になっていたわけです。それに対して製品に対するサポートは別途 Support & Subscription(SnS)サービスを購入する必要がありました。つまり初年度はライセンス+SNSの費用が発生しました。このあたり、図にすると以下のようになります。

f:id:imaisato:20211104212529p:plain

ライセンスとSNS

2021/5/7 から変更されたライセンス

コロナ禍が落ち着いていない今年の5月に、VMwareでは在宅勤務に有用な仮想デスクトップ製品である VMware Horizon のライセンス体系を変更しました。この変更は、クラウドでもライセンスが活用できるようにというとこで変えたように見えますが、実はオンプレミスで VMware Horizon を利用している企業・団体にも大きな影響が出る変更でした。簡単にまとめると、

  • パーペチュアル(永続)ライセンスの廃止
  • 3つのライセンス体系に分類し、それぞれのライセンスを混在利用することはできない

形に変わっています。イメージはこのような感じです。

f:id:imaisato:20211104213538p:plain

VMware Horizon のライセンス提供形態

見た目は大きく変わらないのですが、実は Horizon Term に変わったオンプレミス専用のライセンスでは、ライセンス運用の仕方が変わってしまいました。ここ非常に重要な点で、IT管理者が新パッケージのライセンスモデルに移行した後は、期間限定ライセンスとSnSがセットになったサブスクリプションを購入し、その時に発行されるライセンスを毎回登録するという作業を行わなければならなくなっています。つまり、期間限定ライセンスの満期までの間に新しいライセンスを購入し入れておかないと、Horizon 環境の全停止を引き起こす恐れが出てきたわけです。IT 管理者の負担増!ですね。複数年契約もできますが3年以上5年までとの制限があり、先払いでお金を払わないと 1年ごとのライセンス更新の恐怖にさいなまれることになります。

オンプレミスの Horizon のライセンス、どうしたらいいの?

閉鎖網でどうしても運用しなければならない Horizon 環境の場合では、残念ながら Horizon Term とサブスクリプションの手動更新で運用していくしか方法はありません。でも、閉域網ではなくインターネットに接続されている環境の場合は、Horizon Subscription に移行することでライセンス更新を自動で行うことができます。Horizon Subscription ではオンプレミスだけではなくクラウドでの利用も可能なので、ベアメタルで提供されたクラウドに対しても Horizon Subscription が利用できます。そして、Horizon Subscription では vSAN for Desktop も付属してきますので、Perpetual ライセンスで vSAN を使った環境の場合でも、安心してライセンス移行ができます。(Horizon Team も vSAN for Desktop は付属してきます)

この辺りは以下の図のようになります。

f:id:imaisato:20211104215656p:plain

ライセンスの購入と適用

つまり、Horizon Subscription に移行することで、ライセンスを購入した後の登録含めて、クラウド側ですべて対応していくことができるようになります。ただし、閉域網での利用ができなくなりますので、「我が社は閉域網必須でオンプレミスにしたんだ!!」というような企業では、その環境を見直す必要が出てくるかもしれません。

ライセンスの選択は

3種類の新しいライセンスの選択方法ですが、以下のようになるでしょう。

  • オンプレミスのみで閉域網必須・・・・・・・・Horizon Term

  • オンプレミスでインターネット接続あり・・・・Horizon Subscription
  • オンプレミスまたはクラウドで利用する・・・・Horizon Subscription
  • ハイブリッドクラウド運用・・・・・・・・・・Horizon Universal Subscription

これに加えて、VDI と RDSH を併用するか、それとも RDSH だけまたは VDI だけになるかなどによってライセンスの買い方が変わります。

  • VDI だけまたは VDI と RDSH 両方を使う場合・・Horizon Term / Horizon Subscription / Horizon Universal
  • RDSH だけを使う場合・・Horizon Apps / Horizon Apps Subscription / Horizon Apps Universal Subscription

VDI のライセンスは期限付きのライセンスキーまたは VMware Cloud Connecter によるクラウド管理に移行していますが、RDSH の場合 Horizon Apps はまだ期間限定ライセンスになっていません。なので、オンプレミスで RDSH だけの場合は、今まで通りの永続ライセンスでの利用になるようです。

ライセンスの更新は

現在 Perpetual ライセンスを使っている場合で SnS 更新が来た場合はどうなるかですが、以下の選択肢の中から選ぶことになります。

1. Perpetual ライセンスをそのまま使い続ける

Perpetual ライセンスをそのまま使い続けたい場合は SnS を 3年契約する必要があります。しかも、Basic SnS は 2021/2/8 に提供が終了しているので、Production SnS を購入するしか方法がありません。もしかしたら相当コスト増になる場合も出る可能性があります。

2. Team ライセンスにアップグレードする

現実的にはこれにならざるを得ないと思います。Term Upgrade Program(TUP)tというサービスがありますので、それを利用して既存の Perpetual ライセンスを Horizon Termへ移行します。新規に Team ライセンスを買うよりも安く移行ができるので、Perpetual ライセンスを購入して環境を作ったばかりの場合は、これで Team ライセンスに移行するのも一つの方法だと思います。

3. Subscription にアップグレードする

インターネットに接続されている Horizon 環境であれば、ライセンス管理が楽になる Horizon Subscription へアップグレードするのが一番良いでしょう。こちらも Subscription Upgrade Program(SUP)というサービスがありますので、それを利用して新規購入より安価にHorizon Subscriptionへ移行ができます。

2. 3. の注意点

移行時点は安価ですが、次年度以降の更新費用は安くならないので、そこも含めてコストを計算することも重要です。

VDI をそのままオンプレミスで維持していく?

Horizon のライセンス形態が大きく変わった理由として、VMware ががっぽり儲けたいというのもあるかもしれませんが、実際にはクラウド移行を促しているのではないかと私は感じました。オンプレミスで複雑な Horizon インフラや vSphere インフラを維持管理していくのではなく、その部分は VMware Cloud on AWS 上や Horizon Cloud on Azure を使ってしまい、IT 管理者はそれより上位のユーザーに使ってもらう仮想デスクトップの中身だけ意識すれば済む形に変えたらどう?と言っているような気がしてなりません。だからライセンスもわかりやすくサブスクリプション型にしてクラウドで管理に変えたのではと思いました。

そろそろオンプレミス Horizon の更新を控えている企業・団体も多いでしょうから、この機会にオンプレミスのインフラを捨てて、Horizon 自体をベアメタルのクラウド上に移行するというのもありではないでしょうか。多分パブリッククラウドの DaaS への移行よりも自由度が高く、今までと変わらないユーザーエクスペリエンスを提供できるかと思います。

また、その後は仮想デスクトップの使い方を見ながら、パブリッククラウドEUC サービスと併用していくという選択肢も出てくるかと思います。管理負荷の軽減とコスト削減を両立させるためにも、VMware Horizon のライセンス形態が変わったのをきっかけに、新しいインフラに移行することを検討するのもありではないでしょうか。

VMware Workstation 16 Player だけで Windows 11 をインストール/使用する

Windows 11 を VMware Workstation Player で使いたい

Windows 11 にはハードウエア要件が厳しくなっているため、そもそも TPM が使えない環境にはインストールができません。VMware Workstation Pro では 16.2.0 で対応できる方法が Beta ですが出てきていますが、VMware Workstation Player も 16.2.0 なので、そのままインストールできないかをチャレンジ!!してみました。

Windows 11 については今まで2回ほど記事にしているので、ご興味ある方はそちらもご覧ください。

Workstation Pro の記事

Software TPM を使う記事です。

imaisato.hatenablog.jp

2021年6月の記事

6月の時点での仮想マシン側に設定をすることでインストールと実行ができることは前回のブログの記事で説明しました。

imaisato.hatenablog.jp

そのまま仮想マシンを作ってみる

まずは「やっちゃえ!」で試してみます。VMware Workstation 16.2.0 Playerを起動して、新規仮想マシンの作成からスタートです。インストーラ ディスク イメージ ファイルでダウンロードしておいた Windows 11 iso イメージを指定します。OSチェックが入りますが「このディスクイメージの OS の種類を検出できませんでした。」になります。これは Windows 11 は認識されないので当たり前。

f:id:imaisato:20211027104928p:plain

OSの種類は認識されない

そしてゲストOSの選択でも Windows 11は出てこないので、Windows 10 x64 を選択します。

f:id:imaisato:20211027105031p:plain

Windows 10を選択

この後メモリーサイズを Windows 11 の最低要件の 4GB に設定して仮想マシン作成終了。するとバージョンに「Workstation Beta 仮想マシン」の表示が。もしかして Windows 11 として認識しているかもと期待。

f:id:imaisato:20211027105211p:plain

Workstation Beta 仮想マシン

あとは期待を胸に「仮想マシンの再生(L)」をクリックして、Windows 11 のインストールを始めます。

結果は

インストール画面が表示されセットアップが始まり、

f:id:imaisato:20211026091822p:plain

インストール開始

玉砕しました。

f:id:imaisato:20211027105626p:plain

この PC では Windows 11 を実行できません

魔法の呪文を追加してリトライ

先の記事にも書きましたが、VMware Workstation 16.2.0 Pro / Player では、Software TPM が使えるようになっています。なので、今作成した仮想マシンの .vmx に Software TPM を使う記述を追記してみます。場所はどこでもよいのですが、私はわかりやすくするために最後に追記しました。

managedvm.autoAddVTPM = "software"

そして仮想マシンを再起動して進めていきます。そしていつもならライセンスキー入力の後に無情にも表示される「この PC では Windows 11 を実行できません」が表示されず以下の画面に。つまり、インストールができます。

f:id:imaisato:20211027111541p:plain

セットアップ

.vmx ファイルにも以下の項目が追記されたのも確認できました。

  • managedvm.autoAddVTPM
  • managedVM.ID
  • encryption.encryptedKey
  • vtpm.ekCSR
  • vtpm.ekCRT 
  • vtpm.present
  • encryption.keySafe
  • encryption.data 

値は最初の managedvm.autoAddVTPM 以外は、適切な値が設定されて自動生成されます。そして無事に Windows 11 がインストールできました。

 

ちなみに Windows 11 では Professional 以外はインストール時に Microsoft アカウントが必要になります。でも、Home などでローカルアカウントが欲しい場合は、コンピュータ名の入力になった時点で仮想マシンのネットワークを無効にすることで、ローカルアカウントの作成画面が出てきて登録ができるようになります。検証とかで Home 使うこと多いと思いますが覚えておくと便利な裏技ですね。

Windows 10 からのアップグレードは?

もちろん、上に書いた新規インストールと同様に .vmx ファイルに「managedvm.autoAddVTPM = "software"」を追記するだけでできるようになります。

 

これで TPM 関連で悩まされることもなく、VMware Workstation Player でも Windows 11 が使えるようになりました。めでたしめでたし。

 

ESXi Arm Edition version 1.6 — Oct 6, 2021 の登場

また 2 か月ぶりに、ESXi Arm Edition の新しいバージョンの登場です。今回は  version 1.6 で、今回もまだ vSphere 7.0 0 ベースで、Build 18427252 す。

f:id:imaisato:20210403190605p:plain

ESXi Arm Edition version 1.6

flings.vmware.com

インストールは

前回の version 1.5 までもそうでしたが、今回もフレッシュインストールのみがサポートされます。インストールの際に「Preserve VMFS」を選択すれば、仮想マシンは消えることは無いのでインストール後にデータストアブラウザを開いて仮想マシンの再登録が可能です。x86 の ESXi とは異なりアップグレードはできません。flings なのでそこは我慢。

また、vCenter Server についても vCenter Server Appliance(VCSA)7.0 Update 1 は使えますが、FT や HA を使いたい場合は vCenter Server Appliance(VCSA)7.0cまたは7.0dが必要です。さらに、DRS を使う場合は vCenter Server Appliance(VCSA)7.0cまたは7.0dが必須になります。この vCenter Server Appliance(VCSA)7.0cまたは7.0dを使う場合は、別途vmware-fdm-7.0c-16620014.arm64.vibまたはvmware-fdm-7.0d-16749671.arm64.vibを組み込む必要があります。組み込み方はドキュメントESXi-Arm-Fling-Doc.pdfの28ページからある「10. Enabling vSphere HA」を参照して行ってください。

なにが変わったの?

今回はとても小規模な修正にとどまっています。以下が新しく変わった点です。新しいハードウエアをサポートしたことがメインで、特に機能の追加や変更はありません。追加された新しいハードウエアのサポートは以下の通りです。

  • Oracle Cloud InfrastructureのAmpere Altraベース BM.Standard.A1.160 の実験的サポート
  • Marvell Armada A8040 / Octeon TX2CN9132チップセットの実験的サポート
  • Socionext SynQuacer Developerboxの実験的サポート

私のようにラズパイ使いの人には影響はありません。

 ダウンロード情報

f:id:imaisato:20211027092355p:plain

ESXi for ARM 7.0.0 Build 18427252

ダウンロードには My VMware アカウントが必要です。My VMware アカウントは個人でも作成できるので、リンクから My VMware アカウントを作成の後に、

ESXi Arm Edition | VMware Flings からイメージをダウンロードしてください。

この記事から読み始めた方のための補助情報

ESXi Arm Edition は単体でも使うことができますが、vCenter Server 配下でも

使うことができます。使用できる vCenter Server には以下の要件があります。

  • ESXi-Arm ホストの管理には、vCenter Server Appliance(VCSA)7.0以降が必要です。
  • ESXi-Arm ホストで vSphere HA および vSphere FT を有効にしたいときは、vCenter Server Appliance(VCSA)7.0c または 7.0d を使います。また、vSphere DRSが必要な場合は VCSA7.0c または 7.0d を使用するとともに、VCSA7.0c の場合は vmware-fdm-7.0c-16620014.arm64.vib を、VCSA7.0d の場合は vmware-fdm-7.0d-16749671.arm64.vib をダウンロードし適用する必要があります。
  • vCenter Server Appliance(VCSA)7.0 Update 1以降を使用することは可能ですが、いくつかの制限があります。
    • vSphere DRSは機能が動作しません。
    • vCLS(vCenter Cluster Services)対策が必要です。(現在の vCenter Server Appliance は x86 ベースの仮想マシンのため、vCLS により分散コントロールプレーンサービスをESXiホストにデプロイしようとしてもできないため、ファイルの削除処理が走るとともに再度のデプロイ処理も走るため、延々と処理が続いているような状態になります。)

どうしても VCSA 7.0c または VCSA 7.0d が入手できず VCSA 7.0 U1 以降を使わざるを得ない場合は、以下の KB を参考にして vCLS を無効にしてください。これにより、vCLS の動作が停止してメッセージも出なくなります。

kb.vmware.com

この vCLS 停止は既存の x86 の vSphere 7.0x でも有効なので、vCLS を使用しない場合はこの設定をするのもよいかもしれません。

vCentr Server Appliance は x86 ベースしかないので、ESXi Arm Edition 以外に最低 1台の x86 ESXi が必要になります。でも、それを準備すれば安価に vSAN まで使える vSphere 環境が得られるのは、家ラボやっている人には朗報です。ただし、私のように Raspberry Pi 4 で環境を作っている場合はそのホストのメモリーが 8GB しかないので、できることは最低限になります。例えば vSphere の資格を取るための勉強用としてはs良いかもしれませんが、本格的に vSphere ノウハウを習得するために家ラボを作る場合には、やはり x86 ホストは必要になるかなと思います。

過去の ESXi Arm Edition の記事

今までの記事のリストがここで見られますので、併せてご覧ください。

imaisato.hatenablog.jp

 

VMware Workstation 16 Pro / Player で Windows 11 をインストール/使用する

Windows 11 インストールのハードルが高い

Windows 11 の利用ができるようになって、多くの人が Windows 11 へのアップグレードをし始めています。その中、ハードウエア要件に引っかかってアップグレードができなかったりする人も続出。企業が導入している低スペックの PC に至っては、Windows 11 にアップグレードできない低スペックが大量に社内にあるという状態に陥っています。この問題、セキュリティ対策が強化されたことによるのが一番大きな原因なのですが、これについては VMware の製品の仮想化環境でも同じような問題が出てきています。例えば、

  • VMware Workstation 16 Pro では、TPM やディスクの暗号化を使わない Windows 10 までの仮想マシン構成では Windows 11 がインストールできない。
  • VMware Workstation 16 Player では、そもそもディスクの暗号化や TPM の設定ができないので Windows 11 を扱うことができない。
  • VMware vSphere Hypervisor だけでは vTPM が使えないので、Windows 11 の仮想マシンをインストールできない。
  • vSphere 6.5 までの環境では vTPM 無いので Windows 11 は使えない。

などがあります。これらの制限ですが、最後の vSphere 6.5 以前は問題外として、それ以外の環境では本当に Windows 11 が動かせないのかというとそういうことではなくて、仮想マシン側に設定をすることでインストールと実行ができることは前回のブログの記事で説明しました。

imaisato.hatenablog.jp

ただ、この場合仮想マシンの暗号化が必須となっていてその場合の仮想マシンは OVF への出力ができなくなります。かわりに TAR へのエクスポートがメニューに出るようになるのですがOVF形式じゃないと移行できない環境も多く、どうにかする方法はないかと探していました。

Windows 11 のディスクを暗号化しないで使う

この部分、実は Software TPM を使うことでクリアすることができることがわかりました。といっても前提条件があり、VMware Workstation 16 Pro の 16.2.0 以降を使わないとできません。

これについてこんな記事を書いている人がいました。

www.neowin.net

できるのであればさっそく実行ということで試してみます。

Software TPMを有効にして仮想マシンを作成

まずいつもの通りに仮想マシンを作成していきます。ここで仮想マシンのハードウエア互換性の選択で「Workstation Beta」を選ぶ必要があります。「Workstation 16.x」にしてしまうと仮想ハードウエアバージョンが 18 になってしまうのでこの機能が使えません。「ESXi 7.0」を選択すると仮想ハードウエアバージョンがもっと古い 17 になってしまいますので注意が必要です。

f:id:imaisato:20211026090919p:plain

Workstation Beta

ゲスト OS の選択は Windows 11 がありませんので、そのまま Windows 10 x64 を選びます。これを選択すると「guestOS = "windows9-64"」が仮想マシンに設定されます。

VMware仮想マシンの場合、Microsoft のバージョンと違うので、「guestOS = "windows9-64"」になっていても気にしてはいけません。(笑)

f:id:imaisato:20211026091016p:plain

選択肢がないので Windows 10 x64

ファームウエアは Windows 11 で必要な UEFI を選択します。ここで vTPM では必須だった「セキュアブート」はチェックを入れません。

f:id:imaisato:20211026091113p:plain

セキュアブートしない

仮想マシンの作成が完了後はすぐに起動しません。VMware Workstation 16.2.0 Pro を終了し、作成した仮想マシンの .vmx ファイルを編集し、以下の 1行を追記します。

managedvm.autoAddVTPM = "software"

f:id:imaisato:20211026091522p:plain

managedvm.autoAddVTPM = "software" を追記

追記が終わったら VMware Workstation 16.2.0 Pro を起動します。自動的に Trasted Platform Module が追加されています。

f:id:imaisato:20211026091620p:plain

「自動的に Trasted Platform Module あり」に

ここで仮想マシンを起動します。Windows 11 のインストーラーが起動して、Windows 11 のインストールが開始します。

f:id:imaisato:20211026091822p:plain

インストール開始

 

f:id:imaisato:20211026092624p:plain

順調にアップデートの確認まで進行

f:id:imaisato:20211026093805p:plain

VMware Tools のインストールも完了

問題なく Windows 11 のインストールが完了しました。仮想マシンのディスクも暗号化されていないので、すべてのファイルを見ることができます。

ただし、残念ながらこの記事の最初のほうに書いた、仮想マシンの OVF 出力はできません。そして以前のバージョンにはあった TAR へのエクスポートもメニューから消えています。つまり現状の Windows 11 仮想マシンを他の環境に仮想マシンを移すには、仮想マシンのフォルダごとそのままコピーしていくという方法しかないということのようです。これは OVF エクスポートができるようになったかと調べ始めた私にとっては、ある意味衝撃的な結果になりました。

f:id:imaisato:20211026102244p:plain

OVF出力はできない

Windows 10 からのアップグレードは?

もちろん、上に書いた新規インストールと同様に .vmx ファイルに「managedvm.autoAddVTPM = "software"」を追記するだけでできるようになります。これで TPM 関連で悩まされることもなくなりました。

Software TPM または vTPM で追加される .vmx の項目は?

この Software TPM または vTPM で追加される .vmx の項目は以下の通りになります。

  • managedvm.autoAddVTPM
  • managedVM.ID
  • encryption.encryptedKey
  • vtpm.ekCSR
  • vtpm.ekCRT 
  • vtpm.present
  • encryption.keySafe
  • encryption.data 

最初の managedvm.autoAddVTPM 以外は、適切な値が設定されて自動生成されます。

VMware Workstation 16.2.0 Player での動作は?

VMware Workstation 16.2.0 Pro で作成した仮想マシンを、そのまま VMware Workstation 16.2.0 Player で開いてみます。起動したときは仮想マシンに赤い鍵マークがついています。

f:id:imaisato:20211026103325p:plain

赤い鍵

でも、仮想マシンをクリックすることで鍵が解除されて起動ができるようになります。

f:id:imaisato:20211026093944p:plain

そのまま Workstation 16.2.0 Player へ

そして、問題なく Windows 11 が起動します。

f:id:imaisato:20211026094257p:plain

そのまま動きます

この機能って正式なの?

VMware Workstation 16.2.0 のリリースノートに記載はありません。

docs.vmware.com

なので先ほどの仮想マシンを作成するところに出てきた「Workstation Beta」のように、公開前の機能として 16.2.0 に実装された試験的な機能のようです。そのため、今はテスト用に使う程度でとどめて、本格的に使うのは次以降のリリースでリリースノートに記載されてからにするのが良いでしょう。それでも、よくいろいろなところのブログに書かれているようなレジストリをいじったりすることはしないで、そのまま物理環境と同じように Windows 11 をインストールできるようになるのは便利です。

ちなみに、この Software TPM の機能追加で仮想マシンバージョンがどうなったかというと、

virtualHW.version = "19"

です。vSphere 7 Update 3 は仮想ハードウエアバージョンは 19 のままですので、vSphere 7 Update 2 の時点で実装されている機能のようです。それを VMware Workstation 16.2.0 Pro で使えるようにしたということかもしれません。

新しい OS が出ると追従しなければならないというハイパーバイザー層の宿命ではあると思うのですが、このあたりもっとシンプルになってくれないかなぁと思ったりしました。

都電の模型を作りたい

都電の模型を作りたい、でも一から作るには技や時間が足りない、そう思いつつネットサーフィンをしていたところ、3D CAD を使って模型を作っている人のサイトに遭遇。
radcraft2.blogspot.com

※残念ながら閉鎖されてしまったようです。

運が良いことに、ちょうど私が作ろうと思っていた都電の 5501 の模型。さっそくコンタクトをとってみた。そうしたらすぐに返事を頂け、都電 5501 のデータのシェアを頂けました。

こういう情報を公開している例ってN ゲージは多いのですが、HO ゲージではあまり見たことがなく、そういう面でも貴重かなと思います。

私の場合、今はプラモデルとして販売されていたものを動力付きにするくらいしかできていませんが、私もいつかはこんな情報を公開できるようになってみたいものです。(しっかり使い方をマスターしなければね。)

私はまだこのレベル。

f:id:imaisato:20211005181729j:plain

MODEMO HO EC3 都電7000形 3次車


今はまだこのレベルです。

 

QNAP の VirtualizationStation 3 の設定情報を変更するには

仮想マシンを作った時に OS の種類を間違えた!

先日家ラボの QNAP TS-473 VirtualizationStation 3 に、ラボ管理用の Windows マシンを新規に作りました。その時に「簡単簡単!!」とちゃちゃっと仮想マシンを作ってしまったのですが、作成後に気づいたこと。OS の種類を間違えて Generic にしてあるのに気づきました。そこで、「修正しよっと!」と仮想マシンをシャットダウンして VirtualizationStation 3 の設定を開き、OS の種類を変えようとしたら・・・・

Generic で作ってしまうと変更できるのが Generic, Android-x86, Linux, Unix だけ。Windowsはどうやっても出てきませんでした。

f:id:imaisato:20210925214110p:plain

変更できる範囲

「昔は出ていたような気がする」と思ってのですが、既にする意環境は無いので確認できず。とりあえずしようがないので手作業でなおすことにしました。

KVM仮想マシン名変更は大変。さらに独自OSにしてある QNAP の QTS 上の  VirtualizationStation 3 ではもっと大変

KVM でも仮想マシン名を変えたいということはよくあります。昔はいろいろと設定ファイルを書き換えたりする必要がありましたが、最近は virsh domrename で変えられるので特に苦労はしなくなりました。でも、QNAP の QTS 上の VirtualizationStation 3 ではコマンドで操作することは考慮されていないので、そのまま SSH でログインしても virsh コマンドが使えません。まずは virsh コマンドがある場所から探すことからスタートです。このあたりは Linux やっている人なら簡単、find コマンドを実行して見つけるだけです。QNAP に SSH で接続しても root 権限での接続にはならないので、sudo を使ってコマンドを実行します。

 こんな感じで見つかるはずです。

$ sudo find / -name virsh -print
/share/CACHEDEV3_DATA/.qpkg/QKVM/usr/bin/virsh
$

 この最初の部分「/share/CACHEDEV3_DATA/.qpkg/QKVM/」が曲者で、QNAP の環境を構成してQTS のインストールを実行した時に決まるようで、この QNAP も最初に購入した時は、「/share/CACHEDEV1_DATA/.qpkg/QKVM/」だったのですが、次に環境を再構成しなおしたら「/share/CACHEDEV2_DATA/.qpkg/QKVM/」に、そして今回は「/share/CACHEDEV3_DATA/.qpkg/QKVM/」と変わっていました。なので、SSH で接続して手作業で環境変更する際には、しっかり確認したほうが良いようです。

この virsh コマンドで出来ることは一般の Linux KVM の virsh コマンドと一緒です。help を出すと以下のように表示されます。これは期待できるぞ!!

-----

```
 Domain Management (help keyword 'domain'):
    attach-device                  attach device from an XML file
    attach-disk                    attach disk device
    attach-interface               attach network interface
    autostart                      autostart a domain
    blkdeviotune                   Set or query a block device I/O tuning parameters.
    blkiotune                      Get or set blkio parameters
    blockcommit                    Start a block commit operation.
    blockcopy                      Start a block copy operation.
    blockjob                       Manage active block operations
    blockpull                      Populate a disk from its backing image.
    blockresize                    Resize block device of domain.
    change-media                   Change media of CD or floppy drive
    console                        connect to the guest console
    cpu-baseline                   compute baseline CPU
    cpu-compare                    compare host CPU with a CPU described by an XML file
    cpu-stats                      show domain cpu statistics
    create                         create a domain from an XML file
    define                         define (but don't start) a domain from an XML file
    desc                           show or set domain's description or title
    destroy                        destroy (stop) a domain
    detach-device                  detach device from an XML file
    detach-disk                    detach disk device
    detach-interface               detach network interface
    domdisplay                     domain display connection URI
    domfsfreeze                    Freeze domain's mounted filesystems.
    domfsthaw                      Thaw domain's mounted filesystems.
    domfsinfo                      Get information of domain's mounted filesystems.
    domfstrim                      Invoke fstrim on domain's mounted filesystems.
    domhostname                    print the domain's hostname
    domid                          convert a domain name or UUID to domain id
    domif-setlink                  set link state of a virtual interface
    domiftune                      get/set parameters of a virtual interface
    domjobabort                    abort active domain job
    domjobinfo                     domain job information
    domname                        convert a domain id or UUID to domain name
    domrename                      rename a domain
    dompmsuspend                   suspend a domain gracefully using power management functions
    dompmwakeup                    wakeup a domain from pmsuspended state
    domuuid                        convert a domain name or id to domain UUID
    domxml-from-native             Convert native config to domain XML
    domxml-to-native               Convert domain XML to native config
    dump                           dump the core of a domain to a file for analysis
    dumpxml                        domain information in XML
    edit                           edit XML configuration for a domain
    event                          Domain Events
    inject-nmi                     Inject NMI to the guest
    iothreadinfo                   view domain IOThreads
    iothreadpin                    control domain IOThread affinity
    iothreadadd                    add an IOThread to the guest domain
    iothreaddel                    delete an IOThread from the guest domain
    send-key                       Send keycodes to the guest
    send-process-signal            Send signals to processes
    lxc-enter-namespace            LXC Guest Enter Namespace
    managedsave                    managed save of a domain state
    managedsave-remove             Remove managed save of a domain
    managedsave-edit               edit XML for a domain's managed save state file
    managedsave-dumpxml            Domain information of managed save state file in XML
    managedsave-define             redefine the XML for a domain's managed save state file
    memtune                        Get or set memory parameters
    perf                           Get or set perf event
    metadata                       show or set domain's custom XML metadata
    migrate                        migrate domain to another host
    migrate-setmaxdowntime         set maximum tolerable downtime
    migrate-getmaxdowntime         get maximum tolerable downtime
    migrate-compcache              get/set compression cache size
    migrate-setspeed               Set the maximum migration bandwidth
    migrate-getspeed               Get the maximum migration bandwidth
    migrate-postcopy               Switch running migration from pre-copy to post-copy
    numatune                       Get or set numa parameters
    qemu-attach                    QEMU Attach
    qemu-monitor-command           QEMU Monitor Command
    qemu-monitor-event             QEMU Monitor Events
    qemu-agent-command             QEMU Guest Agent Command
    reboot                         reboot a domain
    reset                          reset a domain
    restore                        restore a domain from a saved state in a file
    resume                         resume a domain
    save                           save a domain state to a file
    save-image-define              redefine the XML for a domain's saved state file
    save-image-dumpxml             saved state domain information in XML
    save-image-edit                edit XML for a domain's saved state file
    schedinfo                      show/set scheduler parameters
    screenshot                     take a screenshot of a current domain console and store it into a file
    set-lifecycle-action           change lifecycle actions
    set-user-password              set the user password inside the domain
    setmaxmem                      change maximum memory limit
    setmem                         change memory allocation
    setvcpus                       change number of virtual CPUs
    shutdown                       gracefully shutdown a domain
    start                          start a (previously defined) inactive domain
    suspend                        suspend a domain
    ttyconsole                     tty console
    undefine                       undefine a domain
    update-device                  update device from an XML file
    vcpucount                      domain vcpu counts
    vcpuinfo                       detailed domain vcpu information
    vcpupin                        control or query domain vcpu affinity
    emulatorpin                    control or query domain emulator affinity
    vncdisplay                     vnc display
    guestvcpus                     query or modify state of vcpu in the guest (via agent)
    setvcpu                        attach/detach vcpu or groups of threads
    domblkthreshold                set the threshold for block-threshold event for a given block device or it's backing chain element

 Domain Monitoring (help keyword 'monitor'):
    domblkerror                    Show errors on block devices
    domblkinfo                     domain block device size information
    domblklist                     list all domain blocks
    domblkstat                     get device block stats for a domain
    domcontrol                     domain control interface state
    domif-getlink                  get link state of a virtual interface
    domifaddr                      Get network interfaces' addresses for a running domain
    domiflist                      list all domain virtual interfaces
    domifstat                      get network interface stats for a domain
    dominfo                        domain information
    dommemstat                     get memory statistics for a domain
    domstate                       domain state
    domstats                       get statistics about one or multiple domains
    domtime                        domain time
    list                           list domains

 Host and Hypervisor (help keyword 'host'):
    allocpages                     Manipulate pages pool size
    capabilities                   capabilities
    cpu-models                     CPU models
    domcapabilities                domain capabilities
    freecell                       NUMA free memory
    freepages                      NUMA free pages
    hostname                       print the hypervisor hostname
    maxvcpus                       connection vcpu maximum
    node-memory-tune               Get or set node memory parameters
    nodecpumap                     node cpu map
    nodecpustats                   Prints cpu stats of the node.
    nodeinfo                       node information
    nodememstats                   Prints memory stats of the node.
    nodesuspend                    suspend the host node for a given time duration
    sysinfo                        print the hypervisor sysinfo
    uri                            print the hypervisor canonical URI
    version                        show version

 Interface (help keyword 'interface'):
    iface-begin                    create a snapshot of current interfaces settings, which can be later committed (iface-commit) or restored (iface-rollback)
    iface-bridge                   create a bridge device and attach an existing network device to it
    iface-commit                   commit changes made since iface-begin and free restore point
    iface-define                   define an inactive persistent physical host interface or modify an existing persistent one from an XML file
    iface-destroy                  destroy a physical host interface (disable it / "if-down")
    iface-dumpxml                  interface information in XML
    iface-edit                     edit XML configuration for a physical host interface
    iface-list                     list physical host interfaces
    iface-mac                      convert an interface name to interface MAC address
    iface-name                     convert an interface MAC address to interface name
    iface-rollback                 rollback to previous saved configuration created via iface-begin
    iface-start                    start a physical host interface (enable it / "if-up")
    iface-unbridge                 undefine a bridge device after detaching its slave device
    iface-undefine                 undefine a physical host interface (remove it from configuration)

 Network Filter (help keyword 'filter'):
    nwfilter-define                define or update a network filter from an XML file
    nwfilter-dumpxml               network filter information in XML
    nwfilter-edit                  edit XML configuration for a network filter
    nwfilter-list                  list network filters
    nwfilter-undefine              undefine a network filter

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
    net-destroy                    destroy (stop) a network
    net-dhcp-leases                print lease info for a given network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-event                      Network Events
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine a persistent network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID

 Node Device (help keyword 'nodedev'):
    nodedev-create                 create a device defined by an XML file on the node
    nodedev-destroy                destroy (stop) a device on the node
    nodedev-detach                 detach node device from its device driver
    nodedev-dumpxml                node device details in XML
    nodedev-list                   enumerate devices on this host
    nodedev-reattach               reattach node device to its device driver
    nodedev-reset                  reset node device
    nodedev-event                  Node Device Events

 Secret (help keyword 'secret'):
    secret-define                  define or modify a secret from an XML file
    secret-dumpxml                 secret attributes in XML
    secret-event                   Secret Events
    secret-get-value               Output a secret value
    secret-list                    list secrets
    secret-set-value               set a secret value
    secret-undefine                undefine a secret

 Snapshot (help keyword 'snapshot'):
    snapshot-create                Create a snapshot from XML
    snapshot-create-as             Create a snapshot from a set of args
    snapshot-current               Get or set the current snapshot
    snapshot-delete                Delete a domain snapshot
    snapshot-dumpxml               Dump XML for a domain snapshot
    snapshot-edit                  edit XML for a snapshot
    snapshot-info                  snapshot information
    snapshot-list                  List snapshots for a domain
    snapshot-parent                Get the name of the parent of a snapshot
    snapshot-revert                Revert a domain to a snapshot
    snapshot-update                Update Snapshots of specific domain

 Storage Pool (help keyword 'pool'):
    find-storage-pool-sources-as   find potential storage pool sources
    find-storage-pool-sources      discover potential storage pool sources
    pool-autostart                 autostart a pool
    pool-build                     build a pool
    pool-create-as                 create a pool from a set of args
    pool-create                    create a pool from an XML file
    pool-define-as                 define a pool from a set of args
    pool-define                    define an inactive persistent storage pool or modify an existing persistent one from an XML file
    pool-delete                    delete a pool
    pool-destroy                   destroy (stop) a pool
    pool-dumpxml                   pool information in XML
    pool-edit                      edit XML configuration for a storage pool
    pool-info                      storage pool information
    pool-list                      list pools
    pool-name                      convert a pool UUID to pool name
    pool-refresh                   refresh a pool
    pool-start                     start a (previously defined) inactive pool
    pool-undefine                  undefine an inactive pool
    pool-uuid                      convert a pool name to pool UUID
    pool-event                     Storage Pool Events

 Storage Volume (help keyword 'volume'):
    vol-clone                      clone a volume.
    vol-create-as                  create a volume from a set of args
    vol-create                     create a vol from an XML file
    vol-create-from                create a vol, using another volume as input
    vol-delete                     delete a vol
    vol-download                   download volume contents to a file
    vol-dumpxml                    vol information in XML
    vol-info                       storage vol information
    vol-key                        returns the volume key for a given volume name or path
    vol-list                       list vols
    vol-name                       returns the volume name for a given volume key or path
    vol-path                       returns the volume path for a given volume name or key
    vol-pool                       returns the storage pool for a given volume key or path
    vol-resize                     resize a vol
    vol-upload                     upload file contents to a volume
    vol-wipe                       wipe a vol

 Virsh itself (help keyword 'virsh'):
    cd                             change the current directory
    echo                           echo arguments
    exit                           quit this interactive terminal
    help                           print help
    pwd                            print the current directory
    quit                           quit this interactive terminal
    connect                        (re)connect to hypervisor

-----

だめでした。OS の種類を変えるオプションは無いようです。そして、最新の でもめげません。次の方法を探します。

昔のように設定ファイルを変更する!!

まずはファイルを編集する仮想マシンを探します。

$ sudo /share/CACHEDEV3_DATA/.qpkg/QKVM/usr/bin/virsh list --all
Password:
 Id    Name                           State
----------------------------------------------------
-     679b2d3d-5efe-4c0d-b308-81b839508901 shut off
-     b7861546-53db-47c3-8a82-53e4de6e2345 shut off
-     f0876249-f022-4eb0-871d-9e95a5a57678 shut off
$

これではどれが対象の仮想マシンかわかりません。でも大丈夫。ここに出てくる Name 

 はVirtulizationStation 3 の仮想マシンのところの情報タブをクリックすると出てくる一般の中の UUID そのものです。なので、その UUID と同じものを見つけます。

f:id:imaisato:20210925222808p:plain

UUID

この UUID の仮想マシンの設定ファイルを virsh edit コマンドを使って編集します。

$ sudo /share/CACHEDEV3_DATA/.qpkg/QKVM/usr/bin/virsh edit b7861546-53db-47c3-8a82-53e4de6e2345

テキストエディタが開いて、設定情報の xml ファイルの編集ができるようになります。この開いたファイルの先頭あたりに、実際の設定情報が書かれています。

こんな感じです。黄色の部分ですね。

$ <name>b7861546-53db-47c3-8a82-53e4de6e2950</name>
  <uuid>b7861546-53db-47c3-8a82-53e4de6e2950</uuid>
  <metadata xmlns:qvs="http://www.qnap.com/schemas/qvs/1.0">
    <qvs:vm>
      <qvs:os arch="x64" type="generic"/>

以下のように変更します。

$ <name>b7861546-53db-47c3-8a82-53e4de6e2950</name>
<uui>b7861546-53db-47c3-8a82-53e4de6e2950</uuid>
  <metadata xmlns:qvs="http://www.qnap.com/schemas/qvs/1.0">
    <qvs:vm>
      <qvs:os arch="x64" type="win100"/>

ちなみに、WIndows 8.1 は "win81"、Windows 8 や 7 はそのまま "win8"、"Win7"、WIndows Vista は "Vista"、Windows XP は "winxp"になります。

これで無事に変更ができました。

f:id:imaisato:20210925231522p:plain

設定変更後

実はそんなことしなくてもよかった!!!

これ、実は QTS 側の表示のバグのようで、日本語環境で設定をする場合、プルダウンメニューの下側が正しく表示されないということがわかりました。なので、VirtualizationStation 3 の GUI からプルダウンを選択した時に必要な情報が出てこない時は、一度英語表示に戻してみると表示されるようになります。こういう所、日本語表示のハンディーなんでしょうね。

QNAP の VirtualizationStation 3 に実現してほしいこと

兎に角、Linux KVM の進化に合わせて機能やデバイスの追加をしてほしいと思いました。まずは Nested Virtualization のサポート。4コアモデルなので KVM 活用しようとして折角 64GB もメモリーを載せたのにそれが使えないため、結局の所単純な NAS としてしか使えない。そこが残念。

あと、仮想マシンのネットワークデバイス e1000e をサポートしていない点。既に e1000 はオワコンなのでそろそろ e1000e のサポートをしてほしいところです。いつまでも古い KVM の仕様を引きずっているままでは魅力半減。新しい使い方として QNAP は単純な NAS 以外も考えているっぽく見えるので、何とか対応してほしいですね。それができればホーム VDI みたいな使い方出来るんですけれど。つまり、QNAP NAS の中に仮想化環境作り、その上に家庭用の VDI 環境作っちゃう。最近のソフトウエアでは WIndowsHyper-V 機能を使うものもあるので、Nested Virtualization が使えればそれらアプリも安心して使える。そして元々 NAS なので別の QNAP の NASレプリケーションしてバックアップ環境を用意する。家族のデータは NAS 本来の所に保存とかすれば、面白い Solution になるのになぁと思ったりしています。どのデバイスからでも自分の PC の環境に入れる。使える。その Windows は QNAP の VirtualizationStation 3 で提供される有償の Windows イメージを使う。レプリケーションWIndows 仮想マシンだけでなくて VirtualizationStation 3 で提供されるイメージに仕込んである QNAP NAS の中にデータを保存、別の NASレプリケーションする。アプリも同じようにインストールすると QNAP の中のインストール領域にインストールされて、各個人の VDI にはストリーミングで配信される。そんな面白い NAS 兼用 VDI あってもよいんじゃないかなぁと思ったりしています。

f:id:imaisato:20210925233438p:plain

VirtualizationStation 3

 

2021年9月11日長野新幹線車両センターの状況

今日は久しぶりに豊野に行く用事があり、ついでに長野新幹線車両センターに行ってきました。8月は忙しくて訪問できなかったので、2か月ぶりの訪問です。

長野新幹線車両センターの周囲は

水害から2年経過し堤防も水門もポンプ場も修復され、長野新幹線車両センターも検修庫含めて業務開始していて、水害以前の状態に戻っています。おいしい豊野の林檎畑も、実が赤くなりつつあります。

f:id:imaisato:20210911182000j:plain

豊野のリンゴ畑

留置線の状況

もう通常状態に戻っているのであえて写真は撮影していません。この平穏な状態が今後も続いていくことを願うのみです。

f:id:imaisato:20210911182602j:plain

検修庫脇の臨修庫への引き上げ線

E723-18 の生首の現況

切り取られて移動した後、変化のない E723-18 と E7 の台車ですが、相変わらず同じところに置いてあります。またカバーの状態が変わっていました。定期的に中を見ているのかもしれません。

f:id:imaisato:20210911182259j:plain

今日の E723-18 の生首

f:id:imaisato:20210718144024j:plain

前回冬の E723-18 の生首

f:id:imaisato:20201226084748j:plain

最初の冬の雪の中の E723-18 の生首

E7 系の台車

こちらも放置状態で時々中身を見ているようです。今日はカバーが外れてしまっていました。

f:id:imaisato:20210911182544j:plain

E7系台車

そして、今までこの台車が T 用なのか M 用なのかわからなかったのですが、この写真ではっきりわかりました。生首 E723-18 の台車である TR7010A ではなくて、F18 編成のいずれかの M 車の台車 DT211 だというのが、台車の特徴ではっきりわかりました。

ただ、もう一つの台車の中身は見えていませんので、そちらも M 台車なのか、それとも T 台車なのかは判断できず。

f:id:imaisato:20210718144129j:plain

前回7月の状態の台車

この設置当初の状態を見ると、今まではずっと継いだと思っていたのが、形が微妙に違うかもと思ってしまいました。

f:id:imaisato:20201220004928j:plain

設置当初

でも、E723-18 の生首と E7系の台車は1年以上この状態ですが、この後どうするんでしょうね。