VMwareのライセンスはパーペチュアル(Perpetual:永続型)ライセンスといって、買ったら最後ずっと使い続けていても問題のないライセンスでした。つまり、製品のライセンスは購入した人の所有になっていたわけです。それに対して製品に対するサポートは別途 Support & Subscription(SnS)サービスを購入する必要がありました。つまり初年度はライセンス+SNSの費用が発生しました。このあたり、図にすると以下のようになります。
まずは「やっちゃえ!」で試してみます。VMware Workstation 16.2.0 Playerを起動して、新規仮想マシンの作成からスタートです。インストーラ ディスク イメージ ファイルでダウンロードしておいた Windows 11 iso イメージを指定します。OSチェックが入りますが「このディスクイメージの OS の種類を検出できませんでした。」になります。これは Windows 11 は認識されないので当たり前。
先の記事にも書きましたが、VMware Workstation 16.2.0 Pro / Player では、Software TPM が使えるようになっています。なので、今作成した仮想マシンの .vmx に Software TPM を使う記述を追記してみます。場所はどこでもよいのですが、私はわかりやすくするために最後に追記しました。
managedvm.autoAddVTPM = "software"
そして仮想マシンを再起動して進めていきます。そしていつもならライセンスキー入力の後に無情にも表示される「この PC では Windows 11 を実行できません」が表示されず以下の画面に。つまり、インストールができます。
.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 使うこと多いと思いますが覚えておくと便利な裏技ですね。
前回の 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」を参照して行ってください。
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ホストにデプロイしようとしてもできないため、ファイルの削除処理が走るとともに再度のデプロイ処理も走るため、延々と処理が続いているような状態になります。)
この 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 ホストは必要になるかなと思います。
Windows 11 の利用ができるようになって、多くの人が Windows 11 へのアップグレードをし始めています。その中、ハードウエア要件に引っかかってアップグレードができなかったりする人も続出。企業が導入している低スペックの PC に至っては、Windows 11 にアップグレードできない低スペックが大量に社内にあるという状態に陥っています。この問題、セキュリティ対策が強化されたことによるのが一番大きな原因なのですが、これについては VMware の製品の仮想化環境でも同じような問題が出てきています。例えば、
問題なく Windows 11 のインストールが完了しました。仮想マシンのディスクも暗号化されていないので、すべてのファイルを見ることができます。
ただし、残念ながらこの記事の最初のほうに書いた、仮想マシンの OVF 出力はできません。そして以前のバージョンにはあった TAR へのエクスポートもメニューから消えています。つまり現状の Windows 11 仮想マシンを他の環境に仮想マシンを移すには、仮想マシンのフォルダごとそのままコピーしていくという方法しかないということのようです。これは OVF エクスポートができるようになったかと調べ始めた私にとっては、ある意味衝撃的な結果になりました。
``` 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 canonicalURI 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
$ 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 $