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

適用対象: Windows Server 2022、Azure Stack HCI バージョン 20H2;WindowsServer 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 で 1 MB の BlockSizeBytes (既定の 32 MB から) を使用します。次に例を示します。
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 メニュー タイムアウトVirtual Machines

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

第 2 世代での PxE ブート Virtual Machines

PIT タイマーは第 2 世代 Virtual Machines に存在しないので、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/ /queue/scheduler というファイル システムの場所で確認できます。現在選択されているスケジューラは角かっこで囲まれます <diskname> 。 このファイル システムの場所に書き込み、スケジューラを変更できます。 再起動をまたがって保持するには、変更を初期化スクリプトに追加する必要があります。 詳細については、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 のようなユーティリティを使用するか、パーティション、ボリューム、およびファイル システム構造を更新して、ディスクのサイズの変更を反映する必要があります。 GUID パーティション テーブル (GPT) を持つ VHD または VHDX のサイズを縮小または拡張すると、パーティション管理ツールを使用してパーティションレイアウトを確認すると警告が発生し、管理者に最初と 2 番目の GPT ヘッダーを修正する警告が表示されます。 この手動の手順は、データを失わずに安全に実行できます。

その他の参照情報