Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

20.27. ホストマシンの管理

本セクションには、ホストシステムを管理するために必要なコマンド (コマンドによりnode と呼ばれる) が記載されています。

20.27.1. ホスト情報の表示

virsh nodeinfo コマンドは、モデル番号、CPU 数、CPU の種類、物理メモリーのサイズなど、ホストに関する基本情報を表示します。出力は、virNodeInfo 構造に対応します。具体的には、"CPU socket(s)" フィールドは NUMA セルごとの CPU ソケット数を示します。

例20.54 ホストマシンの情報を表示する方法

以下の例では、ホストに関する情報を取得します。
$ virsh nodeinfo
CPU model:           x86_64
CPU(s):              4
CPU frequency:       1199 MHz
CPU socket(s):       1
Core(s) per socket:  2
Thread(s) per core:  2
NUMA cell(s):        1
Memory size:         3715908 KiB

20.27.2. NUMA パラメーターの設定

virsh numatune コマンドは、指定したゲスト仮想マシンの NUMA パラメーターを設定または取得できます。ゲスト仮想マシンの設定 XML ファイル内では、このパラメーターは <numatune> 要素にネストされています。フラグを使用しないと、現在の設定のみが表示されます。numatune domain コマンドには、指定したゲスト仮想マシン名が必要で、次の引数を使用できます。
  • --mode - モードは、strictインターリーブ、または 推奨 のいずれかに設定できます。稼働中のドメインでは、ゲスト仮想マシンが strict モードで起動しない限り、モードを変更できません。
  • --nodeset には、ゲスト仮想マシンの実行にホスト物理マシンが使用する NUMA ノードのリストが含まれています。このリストには、それぞれがコンマで区切られたノードが含まれ、ノード範囲に使用されるダッシュ-と、ノードの除外に使用されるカレット^ も含まれています。
  • インスタンスごとに、以下の 3 つのフラグのいずれかを使用できます。
    • --config は、永続ゲスト仮想マシンの次回の起動時に影響を及ぼします。
    • --live は、実行中のゲスト仮想マシンのスケジューラー情報を設定します。
    • --current は、ゲスト仮想マシンの現在の状態を有効にします。

例20.55 ゲスト仮想マシンの NUMA パラメーターを設定する方法

以下の例では、実行中のguest1 仮想マシンのノード 0、2、および 3 の NUMA モードを strict に設定します。
# virsh numatune guest1 --mode strict --nodeset 0,2-3 --live
このコマンドを実行すると、guest1 の実行中の設定が、その XML ファイルの以下の設定に変更されます。
<numatune>
        <memory mode='strict' nodeset='0,2-3'/>
</numatune>

20.27.3. NUMA セルの空きメモリー量の表示

virsh freecell コマンドは、指定された NUMA セル内に、マシンで利用可能なメモリー容量を表示します。このコマンドは、指定したオプションに応じて、マシンで利用可能なメモリーを、3 つの異なるディスプレイのいずれかに表示します。 指定されたセル。

例20.56 仮想マシンおよび NUMA セルのメモリープロパティーを表示する方法

以下のコマンドは、すべてのセルで利用可能なメモリーの合計量を表示します。
# virsh freecell
Total: 684096 KiB
個々のセルに使用可能なメモリー容量も表示するには、--all オプションを使用します。
# virsh freecell --all
    0:     804676 KiB
--------------------
Total:     804676 KiB

指定したセルの個々のメモリー容量を表示するには、--cellno オプションを実行します。
# virsh freecell --cellno 0
0: 772496 KiB

20.27.4. CPU リストの表示

virsh nodecpumap コマンドは、ホストマシンで利用可能な CPU の数と、現在オンラインになっている数を表示します。

例20.57 ホストで利用可能な CPU の数を表示する方法

以下の例では、ホストで利用可能な CPU の数を表示します。
# virsh nodecpumap
   CPUs present: 4
   CPUs online: 1
   CPU map: y

20.27.5. CPU 統計の表示

virsh nodecpustats [cpu_number] [--percent] コマンドは、ホストコンピューターの CPU 負荷ステータスに関する統計情報を表示します。CPU を指定した場合は、指定した CPU のみが統計情報となります。percent オプションを指定すると、1 秒間隔で記録された各タイプの CPU 統計の割合がコマンドで表示されます。

例20.58 CPU 使用率の統計情報を表示する方法

以下の例は、ホスト CPU の負荷に関する一般的な統計を返します。
# virsh nodecpustats
user:               1056442260000000
system:              401675280000000
idle:               7549613380000000
iowait:               94593570000000
この例では、CPU 番号 2 の統計をパーセンテージで表示します。
# virsh nodecpustats 2 --percent
usage:            2.0%
user:             1.0%
system:           1.0%
idle:            98.0%
iowait:           0.0%

20.27.6. デバイスの管理

20.27.6.1. virsh を使用したデバイスの接続および更新

ストレージデバイスの接続の詳細は、「ゲストへのストレージデバイスの追加」 を参照してください。

手順20.4 ゲスト仮想マシンが使用するホットプラグ USB デバイス

USB デバイスは、ホットプラグにより実行している仮想マシンに接続するか、ゲストのシャットダウン中に接続できます。ゲストで使用するデバイスをホストマシンに接続している必要があります。
  1. 次のコマンドを実行して、接続する USB デバイスを特定します。
    # lsusb -v
    
    idVendor           0x17ef Lenovo
    idProduct          0x480f Integrated Webcam [R5U877]
    
  2. XML ファイルを作成し、論理名 (usb_device.xml など) を付けます。検索で表示されたとおりに、ベンダーと製品 ID 番号 (16 進数) をコピーします。図20.2「USB デバイスの XML スニペット」 に示すように、この情報を XML ファイルに追加します。このファイルは次の手順で必要となるため、名前を覚えておいてください。

    図20.2 USB デバイスの XML スニペット

    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x17ef'/>
        <product id='0x480f'/>
      </source>
    </hostdev>
  3. 次のコマンドを実行して、デバイスを接続します。コマンドを実行したら、guest1 を仮想マシンの名前に置き換え、usb_device.xml を、前の手順で作成したデバイスのベンダーと製品 ID が含まれる XML ファイルの名前に置き換えます。次回のシステムの再起動時に変更が反映されるようにするには、--config 引数を使用します。現在のゲスト仮想マシンで変更を有効にするには、--current 引数を使用します。追加の引数については、virsh の man ページを参照してください。
    # virsh attach-device guest1 --file usb_device.xml --config

例20.59 ゲスト仮想マシンからデバイスをホットアンプラグする方法

以下の例では、usb_device1.xml ファイル で設定した USB デバイスを、guest1 仮想マシンから切り離します。
# virsh detach-device guest1 --file usb_device.xml

20.27.6.2. インターフェイスデバイスの接続

virsh attach-interface domain type source [<target>] [<mac>] [<script>] [<model>] [<inbound>] [<outbound>] [--config] [--live] [--current] コマンドには、以下の引数を使用できます。
  • --type - インターフェイスタイプの設定を許可します。
  • --source - ネットワークインターフェイスの送信元を設定できます。
  • --live - ゲスト仮想マシンの設定を実行してその値を取得します。
  • --config - システムの次回起動時に有効になります。
  • --current - 現在の設定に従って値を取得します。
  • --target - ゲスト仮想マシンのターゲットデバイスを示します。
  • --mac - ネットワークインターフェイスの MAC アドレスを指定します。
  • --script - このオプションは、デフォルトのパスの代わりに、ブリッジを処理するスクリプトファイルへのパスを指定します。
  • --model - このオプションを使用して、モデルタイプを指定します。
  • --inbound - インターフェイスの着信帯域幅を制御します。指定できる値は、averagepeak、および burst です。
  • --outbound - インターフェイスのアウトバウンド帯域幅を制御します。指定できる値は、averagepeak、および burst です。
    注記
    平均値およびピーク値は 1 秒あたりのキロバイト数で表されます。バースト値は、ネットワーク XML アップストリームのドキュメント の説明に従って、ピーク速度における単一バーストのキロバイト数で表されます。
type は、物理ネットワークデバイスを示す network、またはデバイスへの bridge を示すブリッジのいずれかです。source はデバイスのソースです。接続したデバイスを削除する場合は、virsh detach-device コマンドを実行します。

例20.60 デバイスをゲスト仮想マシンに接続する方法

次の例では、networkw ネットワークデバイスをguest1 仮想マシンに割り当てます。インターフェイスモデルは、virtio としてゲストに表示されます。
# virsh attach-interface guest1 networkw --model virtio

20.27.6.3. CDROM のメディアの変更

virsh change-media コマンドは、CD-ROM のメディアを別のソースまたはフォーマットに変更します。このコマンドには、以下の引数が使用されます。これらの引数の例や説明については、man ページも併せて参照してください。
  • --path - ディスクデバイスの完全修飾パスまたはターゲットが含まれる文字列
  • --source - メディアのソースが含まれる文字列
  • --eject - メディアをイジェクトします。
  • --insert - メディアを挿入します。
  • --update - メディアを更新します。
  • --current - --live および --config のいずれかまたは両方を指定できます。これは、ハイパーバイザードライバーの実装に依存します。
  • --live - 実行中のゲスト仮想マシンのライブ設定を変更します。
  • --config - 永続的な設定を変更し、システムの次回起動時に影響が確認されます。
  • --force - メディアの変更を強制します。

20.27.7. ノードメモリーパラメーターの設定および表示

virsh node-memory-tune [shm-pages-to-scan] [shm-sleep-milisecs] [shm-merge-across-nodes] コマンドが表示され、ノードメモリーパラメーターを設定できるようになります。このコマンドでは、以下のパラメーターを設定できます。
  • --shm-pages-to-scan - Kernel Samepage Merging (KSM) サービスがスリープ状態に切り替わる前にスキャンするページ数を設定します。
  • --shm-sleep-milisecs - KSM が次回のスキャンの前にスリープするミリ秒数を設定します。
  • --shm-merge-across-nodes - 別の NUMA ノードのページをマージできるかどうかを指定します。

例20.61 NUMA ノード間でメモリーページをマージする方法

以下の例では、すべての NUMA ノードのメモリーページをすべてマージします。
# virsh node-memory-tune --shm-merge-across-nodes 1

20.27.8. ホストでのデバイスのリスト表示

virsh nodedev-list --cap --tree コマンドは、libvirt サービスに認識されている、ホストで使用可能なすべてのデバイスを一覧表示します。--cap は、機能タイプでリストをフィルタリングするために使用されます。各タイプはコンマで区切られ、--tree と一緒に使用することはできません。引数--tree を使用して、出力をツリー構造に置きます。

例20.62 ホストで利用可能なデバイスを表示する方法

次の例では、ホストで利用可能なデバイスをツリー形式でリスト表示します。このリストは切り捨てられていることに注意してください。
# virsh nodedev-list --tree
computer
  |
  +- net_lo_00_00_00_00_00_00
  +- net_macvtap0_52_54_00_12_fe_50
  +- net_tun0
  +- net_virbr0_nic_52_54_00_03_7d_cb
  +- pci_0000_00_00_0
  +- pci_0000_00_02_0
  +- pci_0000_00_16_0
  +- pci_0000_00_19_0
  |   |
  |   +- net_eth0_f0_de_f1_3a_35_4f
	[...]
この例では、ホストで利用可能な SCSI デバイスのリストを表示します。
# virsh nodedev-list --cap scsi
scsi_0_0_0_0

20.27.9. ホストマシンでのデバイスの作成

virsh nodedev-create file コマンドを使用すると、ホストの物理マシンにデバイスを作成し、ゲスト仮想マシンに割り当てることができます。libvirt は、使用可能なホストノードを自動的に検出しますが、このコマンドを使用すると、libvirt が検出しなかったハードウェアを登録できます。指定するファイルには、ホストデバイスのトップレベル<デバイス>の XML 説明が含まれている必要があります。このようなファイルの例は、例20.65「デバイスの XML ファイルを取得する方法」 を参照してください。

例20.63 XML ファイルからデバイスを作成する方法

この例では、PCI デバイス用の XML ファイルを作成し、それを scsi_host2.xml として保存しています。次のコマンドは、このデバイスをゲストに割り当てることができます。
# virsh nodedev-create scsi_host2.xml

20.27.10. デバイスの削除

virsh nodedev-destroy コマンドは、ホストコンピューターからデバイスを削除します。virsh ノードデバイスドライバーは永続的な設定をサポートしないため、ホストマシンを再起動すると、デバイスが再び使用可能になることに注意してください。
また、割り当てが異なると、デバイスは別のバックエンドドライバー (vfio、kvm) にバインドされることが想定されます。--driver 引数を使用すると、目的のバックエンドドライバーを指定できます。

例20.64 ホストの物理マシンからデバイスを削除する方法

次の例では、ホストマシンから scsi_host2 という名前の SCSI デバイスを削除します。
# virsh nodedev-destroy scsi_host2

20.27.11. デバイス設定の収集

virsh nodedev-dumpxml device コマンドは、指定したホストデバイスの XML 表現を出力します。出力には、デバイス名、デバイスが接続しているバス、ベンダー、プロダクト ID、機能などの情報と、libvirt が使用できる情報が含まれます。引数の デバイス は、デバイス名にすることも、WWNN、WWPN 形式の WWN の組み合わせにすることもできます (HBA のみ)。

例20.65 デバイスの XML ファイルを取得する方法

次の例では、scsi_host2 と識別される SCSI デバイスの XML ファイルを取得します。名前は、virsh nodedev-list コマンドを使用して取得しました。
# virsh nodedev-dumpxml scsi_host2 <device> <name>scsi_host2</name> <parent>scsi_host1</parent> <capability type='scsi_host'> <capability type='fc_host'> <wwnn>2001001b32a9da5b</wwnn> <wwpn>2101001b32a9da5b</wwpn> </capability> </capability> </device>

20.27.12. デバイスのリセットのトリガー

virsh nodedev-reset device コマンドを実行すると、指定したデバイスのデバイスリセットがトリガーされます。ゲスト仮想マシンパススルーまたはホスト物理マシンの間でノードデバイスを転送する前に、このコマンドを実行すると役立ちます。libvirt は必要に応じてこのアクションを自動的に実行しますが、このコマンドは必要に応じて明示的なリセットを許可します。

例20.66 ゲスト仮想マシンのデバイスをリセットする方法

以下の例では、scsi_host2 という名前のゲスト仮想マシンのデバイスをリセットします。
# virsh nodedev-reset scsi_host2