2020年3月20日金曜日

AHVのUEFIの対応と注意点

AOS5.16からUEFIのSecure Bootにも対応しました。
以前に、AOS5.11でUEFIには対応していましたが、UEFIへの対応強化となります。

では実際にUEFIで仮想マシンを作るところから見ていきたいと思います。

こちらはAOS5.16.1の環境の画面ですがAOS5.11以降、Prism画面からUEFIかBIOSかのどちらかを選択するモードが出てくるようになっています。

UEFIに関してはここから、UEFIを選択するだけです。

acliで確認すると、Prismで作成するとUEFIの領域が、ストレージコンテナが、ManagementShareに作成されます。

vm.get UEFITEST1
UEFITEST1 {
  config {
    agent_vm: False
    allow_live_migrate: True
    boot {
      firmware_config {
        nvram_disk_spec {
          create {
            container_id: 8
            size: 540672
          }
        }
        nvram_disk_uuid: "b329af2f-1ad6-4698-a989-f11f87888c23"
      }
      uefi_boot: True
    }
    cpu_passthrough: False
    disable_branding: False


では、A Sync DRで他のNutanixクラスターにレプリケーションをする際にManagementShareのストレージコンテナも一緒にレプリケーション対象にする必要があるかというと、実際に動きを見たところ、ManagementShareのストレージコンテナをレプリケーション対象に入れなくても、問題なくレプリケーション及びリストア可能です。

現行UEFIでの起動に対応しているOSは、以下の通りです。
  • Windows Server 2012R2/2016/2019 (x64)
  • Windows 10 Pro/Home (x64)
  • CentOS 7.4/7.5/8.0 (x64)
  • RedHat Enterprise Linux 7.1/8.0 (x64)
  • Ubuntu 12.04.x LTS Desktop/Server (x64)
  • Ubuntu 16.04.x LTS Desktop/Server (x64)
  • Ubuntu 18.04.x LTS Desktop/Server (x64)
  • SUSE Linux Enterprise Server 12 SP3 (x64)

なお、Prism上でUEFIで仮想マシンを作成しても、セキュアブートモードにはなりません。
セキュアブートを有効にするには、acliで以下のコマンドを実行する必要があります。

vm.update 仮想マシン名 secure_boot=true machine_type=q35

secure_boot=trueと共に「machine_type=q35」の設定が必要となります。
セキュアブートが有効になると、以下のようにacliで確認するとsecure_boot:Trueと表示が追加されます。

vm.get UEFITEST1
UEFITEST1 {
  config {
    agent_vm: False
    allow_live_migrate: True
    boot {
      firmware_config {
        nvram_disk_spec {
          create {
            container_id: 8
            size: 540672
          }
        }
        nvram_disk_uuid: "b329af2f-1ad6-4698-a989-f11f87888c23"
      }
      secure_boot: True
      uefi_boot: True
    }
=中略=
    hwclock_timezone: "Asia/Tokyo"
    machine_type: "q35"
    memory_mb: 6144
    name: "UEFITEST1"

なお、セキュアブートに対応したOSは、AOS5.16時点で以下の通りです。

  • Windows Server 2016
  • Windows Server 1809
  • CentOS 7.3
  • Red Hat Enterprise Linix 7.7

  • なお、私が試した限りAOS5.16.1では、セキュアブートを有効にした状態で、Windows Server 2019はインストーラー画面の表示がされない(おそらく固まっている)事象を確認しています。
    このあたりはドキュメントに従って、アップデートを待つ必要があるようです。

    ▼UEFI起動時の仮想マシンのブート画面


    一方、セキュアブートでの起動時は、XマークではなくTianoCoreのロゴが表示されます。

    ▼セキュアブート時の仮想マシンブート画面


    また、セキュアブートを有効にした環境では、IDEバスを利用したCDROMドライブや仮想ディスクのマウントとはサポートされていません。セキュアブートの対応によりNGT(Nutanix Guest Tools)は、SATAデバイスのCDROMドライブでも対応することがAOS5.16.1で確認できております。

    UEFI利用時に1点だけ注意点があります。
    UEFI利用時にWindows OSを利用する場合、画面の解像度が800×600に固定され変更することが出来ません。これは、AHV上でVGAドライバーを提供していないことに理由があります。サーバーオペレーションの場合ほとんどがRDPやSSHなどリモートからの操作のため大きな影響はありませんが初期設定が800×600ですと、少々操作し辛い感があります。しかし、UEFIの設定画面で変更することが出来ます。

    ▼画面解像度が固定されている

    仮想マシン起動時にF2キーを押してUEFIの設定画面に入ります。
    [Device Manager]→[OVMF Platform Configuration]から[Change Preferred]で
    画面解像度を変更します。

    設定完了後、「F10」キーを押し、「Y」を押し設定を保存し、その後「ESC」→「ESC」でメインメニューに戻り、[Continue]を選択肢「Enter]キーを押します。
    そのままOSが起動しますが、まだUEFIの設定が反映されていませんので、一度OSを再起動すると新しいUEFIの設定が反映されます。


    なお、AOS5.10であってもUEFIでの設定は可能ですが、UEFIへの対応は正式にはAOS5.11から、セキュアブートはAOS5.16からのサポートとなります。
    AOS5.10でのUEFIで仮想マシンを稼動した場合、先程ご紹介した解像度の設定変更が正しく反映されない制限事項があります。

    AHVにおけるUEFIの対応は、AOS5.11以降急速に進んでいます。
    まだセキュアブートにおいてサポートされるOSが一部少ないなどの課題事項もありますが、これらは近いうちに修正されると思われます。

    Hyper-V 第2世代の仮想マシンからの移行などの場合は、UEFIでの利用が伴いますが、そういった場合も万全に対応可能です。