HYPER-V で Linux を実行するためのベスト プラクティス

適用対象: Windows Server 2022、Azure Stack HCI バージョン 20H2、Windows Server 2019、Windows Server 2016、Hyper-V Server 2016、Windows Server 2012 R2、Hyper-V Server 2012 R2、Windows Server 2012、Hyper-V Server 2012、Windows Server 2008 R2、Windows 10、Windows 8.1、Windows 8、Windows 7.1、Windows 7

このトピックには、Hyper-V で Linux 仮想マシンを実行する場合の推奨事項の一覧が含まれています。

動的 VHDX ファイルでの Linux ファイル システムの調整

一部の Linux ファイル システムでは、ファイル システムがほとんど空の場合でも、実際のディスク領域が大量に消費される場合があります。 動的 VHDX ファイルの実際のディスク領域の使用量を減らすために、次の推奨事項を検討してください。

  • VHDX を作成するときに、PowerShell で (既定の 32 MB から) 1 MB の BlockSizeBytes を使用します。以下に例を示します。
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
  • 動的 VHDX ファイルで使用する場合、ext4 は ext3 よりも領域効率が高いので、ext4 形式が ext3 よりも優先されます。

  • ファイル システムを作成するときに、グループの数を 4096 に指定します。以下に例を示します。

# mkfs.ext4 -G 4096 /dev/sdX1

第 2 世代仮想マシンの grub メニュー タイムアウト

レガシ ハードウェアは第 2 世代仮想マシンでのエミュレーションの対象から除外されるため、grub メニューのカウントダウン タイマーのカウント ダウンが速すぎて grub メニューを表示できず、既定のエントリがすぐに読み込まれます。 grub が EFI でサポートされているタイマーを使用するように修正されるまで、/boot/grub/grub.conf、/etc/default/grub、または同等のものを、既定の "timeout=5" ではなく "timeout=100000" に変更します。

第 2 世代仮想マシンでの PxE ブート

PIT タイマーは第 2 世代仮想マシンに存在しないので、PxE TFTP サーバーへのネットワーク接続が途中で終了し、ブートローダーによって Grub 構成が読み取られて、サーバーからカーネルが読み込まれるのが妨げられる可能性があります。

RHEL 6.x では、次の説明に従って、grub2 の代わりにレガシ grub v0.97 EFI ブートローダーを使用できます。https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

RHEL 6.x 以外の Linux ディストリビューションでは、同様の手順に従って、PxE サーバーから Linux カーネルを読み込むように grub v0.97 を構成できます。

さらに、RHEL/CentOS 6.6 のキーボードおよびマウス入力は、メニューでインストール オプションを指定できないプレインストール カーネルでは機能しません。 インストール オプションの選択を許可するようにシリアル コンソールを構成する必要があります。

  • PxE サーバーの efidefault ファイルに、次のカーネル パラメーター "console=ttyS1" を追加します

  • Hyper-V の VM で、この PowerShell コマンドレットを使用して COM ポートを設定します。

Set-VMComPort -VMName <Name> -Number 2 -Path \\.\pipe\dbg1

プレインストール カーネルに kickstart ファイルを指定すると、インストール時のキーボードとマウスの入力の必要もなくなります。

フェールオーバー クラスタリングで静的 MAC アドレスを使用する

フェールオーバー クラスタリングを使用してデプロイされる Linux 仮想マシンは、仮想ネットワーク アダプターごとに静的メディア アクセス制御 (MAC) アドレスを使って構成する必要があります。 一部のバージョンの Linux では、新しい MAC アドレスが仮想ネットワーク アダプターに割り当てられているため、フェールオーバー後にネットワーク構成が失われる可能性があります。 ネットワーク構成が失われないようにするには、各仮想ネットワーク アダプターに静的 MAC アドレスがあることを確かめます。 MAC アドレスは、Hyper-V マネージャーまたはフェールオーバー クラスター マネージャーで仮想マシンの設定を編集することで構成できます。

レガシ ネットワーク アダプターではなく、Hyper-V 固有のネットワーク アダプターを使用する

パフォーマンスが向上した Hyper-V 固有のネットワーク カードである、仮想イーサネット アダプターを構成して使用します。 レガシおよび Hyper-V 固有の両方のネットワーク アダプターが仮想マシンに接続されている場合、ifconfig -a の出力のネットワーク名に、_tmp12000801310 などのランダムな値が示される場合があります。 この問題を回避するには、Linux 仮想マシンで Hyper-V 固有のネットワーク アダプターを使用するときにすべてのレガシ ネットワーク アダプターを削除します。

I/O スケジューラ noop または none を使用してディスク I/O パフォーマンスを向上させる

Linux カーネルでは、要求の順序を変更するための 2 セットのディスク I/O スケジューラが提供されます。 1 つのセットは古い 'blk' サブシステム用で、1 つのセットは新しい 'blk-mq' サブシステム用です。 いずれの場合も、現在のソリッド ステート ディスクでは、基になる Hyper-V ハイパーバイザーにスケジュールの決定を渡すスケジューラを使用することをお勧めします。 'blk' サブシステムを使用する Linux カーネルの場合、これは "noop" スケジューラです。 'blk-mq' サブシステムを使用する Linux カーネルの場合、これは "none" スケジューラです。

特定のディスクの場合、使用可能なスケジューラは、/sys/class/block/<diskname>/queue/scheduler というファイル システムの場所で確認できます。現在選択されているスケジューラは角かっこで囲まれます。 このファイル システムの場所に書き込むことで、スケジューラを変更できます。 再起動後も保持されるようにするには、変更を初期化スクリプトに追加する必要があります。 詳細については、Linux ディストリビューションのドキュメントを参照してください。

NUMA

2\.6.37 未満の Linux カーネル バージョンは、HYPER-V で大きい VM サイズの NUMA をサポートできません。 この問題は、主に、アップストリームの Red Hat 2.6.32 カーネルを使用した古いディストリビューションに影響し、Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504) で修正されました。 2\.6.37 より古いカスタム カーネルまたは2.6.32-504 より古い RHEL ベースのカーネルを実行しているシステムでは、grub.conf のカーネル コマンドラインで、ブート パラメーター numa=off を設定する必要があります。 詳細については、Red Hat KB 436883 を参照してください。

kdump 用により多くのメモリを予約する

ダンプ キャプチャ カーネルの起動時にパニックが発生した場合は、カーネル用により多くのメモリを予約します。 たとえば、Ubuntu grub 構成ファイルのパラメーター crashkernel=384M-:128Mcrashkernel=384M-:256M に変更します。

VHDX を縮小したり、VHD および VHDX ファイルを拡大したりすると、GPT パーティション テーブルに誤りが生じる可能性がある

Hyper-V を使用すると、ディスク上に存在する可能性があるパーティション、ボリューム、またはファイル システムのデータ構造に関係なく、仮想ディスク (VHDX) ファイルを縮小できます。 VHDX の最後がパーティションの最後の前に来る場所まで VHDX が縮小された場合、データが失われるか、そのパーティションが破損するか、パーティションの読み取り時に無効なデータが返される可能性があります。

VHD または VHDX のサイズを変更した後、管理者は fdisk や parted のようなユーティリティを使用してパーティション、ボリューム、およびファイル システムの構造を更新し、ディスクのサイズの変更を反映する必要があります。 GUID パーティション テーブル (GPT) を持つ VHD または VHDX のサイズを縮小または拡大すると、パーティション管理ツールを使用してパーティション レイアウトを確認するときに警告が示され、管理者に最初と 2 番目の GPT ヘッダーを修正するように警告が示されます。 この手動の手順は、データを失わずに安全に行うことができます。

その他の参照情報