XenServerのバージョンをGuest OSから判別する方法

#1. はじめに
Bluemix Infrastructure(旧SoftLayer)などのクラウドでは、仮想サーバーのハイパーバイザーとしてXenServerが利用されています。Guest OSから現在利用されているXenServerのバージョンを判別するのが本記事の目的です。

#2. XenServerとXenのバージョンの関係
XenServerはXenをベースに作っており、別々にバージョン管理されています。
XenServer = 「Xen（オープンソース） + CiTRIX社による管理ツール(XenCenterなど）や管理機能や商用サポート」
みたいな関係にあります。[「XenServerはXenとは違うものですか？」](http://ascii.jp/elem/000/000/215/215167/)という記事が参考になります。

下記リンク先の記事から判断すると、以下の組み合わせからなるようです。
https://en.wikipedia.org/wiki/Xen
https://docs.citrix.com/en-us/legacy-archive/citrix-hypervisor.html
https://support.citrix.com/article/CTX122443
https://www.citrix.co.jp/downloads/xenserver/
https://www.citrix.co.jp/support/product-lifecycle/product-matrix.html

| XenServer       | Xen  | リリース日|
|:----------------|:-----|:---------|
| XenServer 6.1   | 4.1.3|2012/09/28|
| XenServer 6.2   | 4.1.5|2013/06/18(SP1は2013/12/16)|
| XenServer 6.5   | 4.4.1|2015/01/13(SP1は2015/05/12)|
| XenServer 7.0   | 4.6.1|2016/05/24|
| XenServer 7.1(LTSR)   | 4.7.1|2017/02/23|
| XenServer 7.4   | 4.7.4|2018/02/27|
| XenServer 7.5   | 4.7.x|2018/05/30|
| XenServer 7.6   | 4.7.6|2018/09/06|

各バージョンでは目玉機能があるので、例えば「新たに無停止でセキュリティーパッチを適用する機能を提供するために、サーバーの再起動を要します」という説明がサポートからあれば「ははぁー、、、今のバージョンはxxxなので、恐らくこれはLive Patching機能を追加しようとしてXenServer 7.1以降にバージョンアップするのだな？」という**想像**が付きます。

**[2017/7/20追記]**
なお、XenServer 7.1はLong Term Service Release(LTSR: 長期サービスリリース）として5年間の標準サポートと更に追加契約で5年間のオプションの拡張サポートを受けることによって、最大10年間のサポートを受けられる長期サービス用リリースです。次のLTSR対象のバージョンまでは新機能は追加されませんが、代わりにバグ修正やセキュリティー対応を定期的に行い長期利用可能な安定バージョンです。詳細は[こちら](https://www.citrix.com/support/programs/software-maintenance/xenapp-and-xendesktop-servicing-options.html)をご参照ください。



#3. 判別方法(Linux)

```txt:XenVersionが4.1.5
# # dmesg |grep -i xen
 Xen: 0000000000000000 - 00000000000a0000 (usable)
 Xen: 00000000000a0000 - 0000000000100000 (reserved)
 Xen: 0000000000100000 - 0000000040000000 (usable)
  #1 [0005ef6000 - 0005f29000]   XEN PAGETABLES ==> [0005ef6000 - 0005f29000]
  #5 [0005cf3000 - 0005ef6000]   XEN START INFO ==> [0005cf3000 - 0005ef6000]
Booting paravirtualized kernel on Xen
Xen version: 4.1.5 (preserve-AD)
Xen: using vcpu_info placement
Xen: using vcpuop timer interface
installing Xen timer for CPU 0
installing Xen timer for CPU 1
xen_balloon: Initialising balloon driver.
Switching to clocksource xen
XENBUS: Device with no driver: device/vbd/51712
XENBUS: Device with no driver: device/vbd/51728
XENBUS: Device with no driver: device/vif/0
XENBUS: Device with no driver: device/vif/1
Initialising Xen virtual ethernet driver.

# rpm -qa|grep xe-guest
xe-guest-utilities-6.0.0-743.x86_64
xe-guest-utilities-xenstore-6.0.0-743.x86_64
```
この場合だと、Xenのバージョンが4.1.5なので、XenServer 6.2を利用しています。また、Guest OSのXenServer Toolは6.0です。


```txt:XenVersionが4.6.1
# dmesg | grep -i xen
[    0.000000] DMI: Xen HVM domU, BIOS 4.6.1-xs129782 12/15/2016
[    0.000000] Hypervisor detected: Xen HVM
[    0.000000] Xen version 4.6.
[    0.000000] Xen Platform PCI: I/O protocol version 1
[    0.000000] Netfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated NICs.
[    0.000000] Blkfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated disks.
[    0.000000] ACPI: RSDP 00000000000ea020 00024 (v02    Xen)
[    0.000000] ACPI: XSDT 00000000fc00cf40 00044 (v01    Xen      HVM 00000000 HVML 00000000)
[    0.000000] ACPI: FACP 00000000fc00cc80 000F4 (v04    Xen      HVM 00000000 HVML 00000000)
[    0.000000] ACPI: DSDT 00000000fc0042a0 08956 (v02    Xen      HVM 00000000 INTL 20150619)
[    0.000000] ACPI: APIC 00000000fc00cd80 000D8 (v02    Xen      HVM 00000000 HVML 00000000)
[    0.000000] ACPI: HPET 00000000fc00ced0 00038 (v01    Xen      HVM 00000000 HVML 00000000)
[    0.000000] ACPI: WAET 00000000fc00cf10 00028 (v01    Xen      HVM 00000000 HVML 00000000)
[    0.000000] Booting paravirtualized kernel on Xen HVM
[    0.000000] xen:events: Xen HVM callback vector for event delivery is enabled
[    0.172014] Xen: using vcpuop timer interface
[    0.172021] installing Xen timer for CPU 0
[    0.316063] xen:balloon: Initialising balloon driver
[    0.318024] xen_balloon: Initialising balloon driver
[    0.339029] Switched to clocksource xen
[    0.361778] xen: --> pirq=16 -> irq=8 (gsi=8)
[    0.361815] xen: --> pirq=17 -> irq=12 (gsi=12)
[    0.361841] xen: --> pirq=18 -> irq=1 (gsi=1)
[    0.361866] xen: --> pirq=19 -> irq=6 (gsi=6)
[    0.361905] xen: --> pirq=20 -> irq=4 (gsi=4)
[    0.361943] xen: --> pirq=21 -> irq=7 (gsi=7)
[    0.412997] xen: --> pirq=22 -> irq=23 (gsi=23)
[    0.829607] xen: --> pirq=23 -> irq=30 (gsi=30)
[    0.829683] xen:grant_table: Grant tables using version 1 layout
[    1.041312] xenbus_probe_frontend: Device with no driver: device/vbd/832
[    1.043818] xenbus_probe_frontend: Device with no driver: device/vbd/768
[    1.046305] xenbus_probe_frontend: Device with no driver: device/vbd/5696
[    1.048744] xenbus_probe_frontend: Device with no driver: device/vif/0
[    1.095152] xenbus_probe_frontend: Device with no driver: device/vif/1
[    1.116039] systemd[1]: Detected virtualization xen.
[    1.780242] xen_netfront: Initialising Xen virtual ethernet driver
[    1.793978] vbd vbd-5696: 19 xenbus_dev_probe on device/vbd/5696
[    1.875414] xen: --> pirq=24 -> irq=24 (gsi=24)


# rpm -qa|grep "xe-guest"
xe-guest-utilities-6.5.0-1393.x86_64
xe-guest-utilities-xenstore-6.5.0-1393.x86_64
```

この場合だと、Xenのバージョンが4.6.1なので、XenServer 7.0を利用しています。また、Guest OSのXenServer Toolは6.5です。

```txt:XenVersionが4.7.1
# dmesg | grep -i xen
 Xen: 0000000000000000 - 00000000000a0000 (usable)
 Xen: 00000000000a0000 - 0000000000100000 (reserved)
 Xen: 0000000000100000 - 0000000040000000 (usable)
  #1 [0005ef5000 - 0005f28000]   XEN PAGETABLES ==> [0005ef5000 - 0005f28000]
  #5 [0005cf2000 - 0005ef5000]   XEN START INFO ==> [0005cf2000 - 0005ef5000]
Booting paravirtualized kernel on Xen
Xen version: 4.7.1-1.3 (preserve-AD)
Xen: using vcpu_info placement
Xen: using vcpuop timer interface
installing Xen timer for CPU 0
installing Xen timer for CPU 1
xen_balloon: Initialising balloon driver.
Switching to clocksource xen
XENBUS: Device with no driver: device/vbd/51728
XENBUS: Device with no driver: device/vbd/51712
XENBUS: Device with no driver: device/vif/0
XENBUS: Device with no driver: device/vif/1
Initialising Xen virtual ethernet driver.

# rpm -qa|grep "xe-guest"
xe-guest-utilities-6.0.0-743.x86_64
xe-guest-utilities-xenstore-6.0.0-743.x86_64
```

この場合だと、Xenのバージョンが4.7.1なので、XenServer 7.1を利用しています。また、Guest OSのXenServer Toolは6.0です。

#4. 判別方法(Windows)
Windowsでは`msinfo32`コマンドでシステム情報を表示することが可能です。

![msinfo32_windows2008.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/d46f5f71-854a-ac59-785d-ae28532d8167.jpeg)
こちらはWindows2008でのキャプチャー画像ですが、Xenのバージョンが4.1.5であることから、XenServer 6.2が利用されています。

![msinfo32_windows2016.jpg](https://qiita-image-store.s3.amazonaws.com/0/62127/a0337f88-ad03-e072-397c-3c3fadaa3079.jpeg)
こちらはWindows2016でのキャプチャー画像ですが、Xenのバージョンが4.6.1であることから、XenServer 7.0が利用されています。