4.2. デモ: コマンドラインユーティリティーを使用したゲストの作成と管理
このセクションでは、CLI でどのように仮想化タスクを実行するかを示すために、新しいゲスト仮想マシンを作成し、そこに OS をインストールし、その後 CLI コマンドを使用してゲストを操作および管理するデモを提供します。
4.2.1. インストール
ここでは、
guest1-rhel7
という名前の新しいゲストを作成し、Red Hat Enterprise Linux 7 Workstation の ISO イメージから OS のインストールを開始します。このイメージは、カスタマーポータル で入手できます。この例では、現在、~/Downloads/
フォルダーにあります。ゲストには、2 つの仮想 CPU、2048 MB の RAM、および 8 GB のディスク領域を割り当てます。
# virt-install --name guest1-rhel7 --memory 2048 --vcpus 2 --disk size=8 --cdrom /home/username/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --os-variant rhel7
Starting install...
Allocating 'guest1-rhel7.qcow2' | 8.0 GB 00:00:00
これを実行すると、virt-viewer アプリケーションでグラフィカルな Anaconda インストーラーが起動します。インストールの詳細は、インストールガイド を参照してください。
注記
グラフィカルインターフェイスにアクセスできないホストシステムでは、次のような virt-install コマンドを使用して、テキストベースの Anaconda を使用してゲスト OS をインストールできます。
# virt-install -name rhel7anaconda-guest -r 1024 --location=/home/jherrman/Downloads/rhel-workstation-7.4-x86_64-dvd.iso --disk size=8 --nographics --extra-args="console=tty0 console=ttyS0,115200n8"
インストールが正常に完了すると、コマンドラインに次のように表示されます。
Domain creation completed. Restarting guest.
これで、ゲストに望ましい設定を行えるようになりました。ただし、ゲストの設定を安全に管理するために、まずゲストをシャットダウンすることを推奨します。
# virsh shutdown guest1-rhel7
Domain guest1-rhel7 is being shutdown
4.2.2. デバイスの接続
ホストに接続された USB デバイス (この例では Samsung 携帯電話) をゲストが検出して使用できるようにするには、まずホストで lsusb コマンドを使用してデバイスの ID を取得します。
# lsusb
[...]
Bus 003 Device 007: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
次に、ホストで任意のテキストエディターを使用して、デバイスの XML ファイル (この例では
samsung_USB_device.xml
) を作成し、ベンダー ID と製品 ID を入力します。
# vim samsung_USB_device.xml
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x04e8'/> <product id='0x6860'/> </source> </hostdev>
最後に、virsh attach-device コマンドを使用してデバイスをゲストに接続します。
# virsh attach-device guest1-rhel7 --file samsung_USB_device.xml --config
Device attached successfully
注記
実行中のゲストにデバイスを接続することもできます。これを行うには、
--live
オプションを使用します。
4.2.3. ゲストの操作
guest1-rhel7 ゲストの使用を開始するには、まずゲストを起動します。
# virsh start guest1-rhel7
Domain guest1-rhel7 started
ホストシステムにグラフィカルディスプレイがあるかどうかに応じて、virt-viewer アプリケーションまたは SSH シェルを使用してゲストを操作できます。
- グラフィカルディスプレイを備えたシステムでは、virt-viewer を使用します。
# virt-viewer guest1-rhel7
その後、物理マシンの OS GUI と同様に、virt-viewer ウィンドウで画面出力を操作できます。たとえば、Subscription Manager アプリケーションを使用して、Red Hat Enterprise Linux ゲスト OS を登録できます。 - ホストまたはゲストがテキストのみのインターフェイスを備えている場合は、SSH を使用します。これには、ゲストの IP アドレスを知っている必要があります。IP アドレスがわからない場合は、virsh domifaddr コマンドを使用して取得できます。
# virsh domifaddr guest1-rhel7 Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet0 52:54:00:65:29:21 ipv4 10.34.3.125/24 # ssh root@10.34.3.125 root@10.34.3.125's password: Last login: Wed Jul 19 18:27:10 2017 from 192.168.122.1 [root@localhost ~]#
注記virsh domifaddr が機能するには、ゲストが実行されていて、ネットワーク上でアクセス可能である必要があります。また、QEMU ゲストエージェント をアクティブにする必要がある場合があります。その後、ゲストマシン上のターミナルを使用するときと同じように、ホストターミナルを操作できます。たとえば、subscription-manager ユーティリティーを使用して、Red Hat Enterprise Linux ゲスト OS を登録できます。[root@localhost ~]# subscription-manager register Registering to: subscription.rhsm.redhat.com:443/subscription Username: username@sample.com Password: The system has been registered with ID: 30b5e666-67f9-53bb-4b90-c2a88e5be789
4.2.4. 診断
ゲストの状態に関する一般的な情報を表示します。
# virsh dominfo guest1-rhel7
Id: 1
Name: guest1-rhel7
UUID: ec0c0122-fb63-4a54-b602-5cf84f5e2dfd
OS Type: hvm
State: running
CPU(s): 2
CPU time: 33.4s
Max memory: 2097152 KiB
Used memory: 2097152 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: unconfined_u:unconfined_r:svirt_t:s0:c102,c792 (enforcing)
4.2.5. スナップショットの作成
ゲストの状態をバックアップするには、virsh snapshot-create コマンドを使用できます。
# virsh snapshot-create guest1-rhel7
Domain snapshot 1500563241 created
現在のスナップショットと各ゲストの XML 設定を表示できます。
# virsh snapshot-list guest1-rhel7 Name Creation Time State ------------------------------------------------------------ 1500563241 2017-07-20 17:07:21 +0200 shutoff # virsh snapshot-dumpxml guest1-rhel7 1500563241 <domainsnapshot> <name>1500563241</name> <state>shutoff</state> <creationTime>1500563241</creationTime> <memory snapshot='no'/> <disks> <disk name='vda' snapshot='internal'/> [...]
このスナップショットを後でロードして、ゲストをスナップショットに保存された状態に戻すことができます。
# virsh snapshot-revert guest1-rhel7 --snapshotname 150056324