次の方法で共有


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

この記事では、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 メニュー タイムアウト

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

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

第 2 世代仮想マシンには PIT タイマーがないため、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 ディストリビューションのドキュメントを参照してください。

ヌマ

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 がパーティションの末尾より前の場所に圧縮されている場合、データが失われたり、そのパーティションが破損したり、パーティションの読み取り時に無効なデータが返されたりします。

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