KVMをCUIで管理するときに使用するvirshコマンドの使い方まとめ。(随時更新予定)
ただまとめるだけだと他の技術ブログと同じような内容になってしまうので、意味もなくOracle VM for SPARC(LDOM)のldmコマンドとも比較してみる。(ニッチ過ぎる・・・)
- 所謂「仮想マシン」の呼び名は正式に「ゲストドメイン」です
- 太文字は打ち込んだコマンドです
- []で囲まれた斜体は可変値を表します
情報表示系
仮想マシンの一覧表示
KVM |
# virsh list --all
Id 名前 状態
----------------------------------------------------
1 win2000 実行中
- windows8.1 シャットオフ
※--allを付けないと状態が実行中の仮想マシンのみ表示される
|
OVM for SPARC |
# ldm list-domain
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- UART 16 1984M 0.8% 2h 19m
testvm bound ------ 5000 32 4G
|
OVM for SPARCのほうが割り当てリソースなども表示されるので便利
仮想マシンの詳細表示
KVM |
# virsh dominfo [仮想マシン名]
Id: 1
名前: win2000
UUID: 0983fb9c-1040-ffaf-4e0e-e37f364df13e
OS タイプ: hvm
状態: 実行中
CPU: 1
CPU 時間: 343.4s
最大メモリー: 1048576 KiB
使用メモリー: 1048576 KiB
永続: はい (yes)
自動起動: 無効にする
管理済み保存: いいえ (no)
セキュリティモデル: none
セキュリティ DOI: 0
|
ストレージプールの一覧表示
KVM |
# virsh pool-list
名前 状態 自動起動
----------------------------------------->
default 動作中 はい (yes)
|
OVM for SPARCにはストレージプールの概念はない。
ストレージプールの情報表示
KVM |
# virsh pool-info [ストレージプール名]
名前: default
UUID: fad29cc4-7345-156b-3cf8-f6748d91ab25
状態: 実行中
永続: はい (yes)
自動起動: はい (yes)
容量: 426.76 GiB
割り当て: 30.43 GiB
利用可能: 396.34 GiB
こっちでみないとストレージプールのパスがわからない
# virsh pool-dumpxml [ストレージプール名]
<pool type='dir'>
<name>default</name>
<uuid>fad29cc4-7345-156b-3cf8-f6748d91ab25</uuid>
<capacity unit='bytes'>458231758848</capacity>
<allocation unit='bytes'>32669159424</allocation>
<available unit='bytes'>425562599424</available>
<source>
</source>
<target>
<path>/var/lib/libvirt/images</path>
<permissions>
<mode>0755</mode>
<owner>-1</owner>
<group>-1</group>
</permissions>
</target>
</pool>
|
仮想ネットワークの表示
KVM |
# virsh net-list
名前 状態 自動起動 永続
--------------------------------------------------
default 動作中 はい (yes) はい (yes)
|
物理マシンのインタフェース表示
KVM |
# virsh iface-list --all
名前 状態 MAC アドレス
--------------------------------------------
br0 動作中 00:23:54:73:13:30
eth1 停止状態 00:1b:21:a1:85:0c
eth2 停止状態 00:40:26:f9:7e:ea
lo 動作中 00:00:00:00:00:00
|
OVMforSPARC |
# dladm show-dev
e1000g0 リンク: up 速度: 100 Mbps デュプレックス: half
e1000g1 リンク: unknown 速度: 0 Mbps デュプレックス: half
e1000g2 リンク: unknown 速度: 0 Mbps デュプレックス: half
e1000g3 リンク: unknown 速度: 0 Mbps デュプレックス: half
e1000g4 リンク: unknown 速度: 0 Mbps デュプレックス: half
e1000g5 リンク: unknown 速度: 0 Mbps デュプレックス: half
|
仮想マシンの管理
正直、GUI(仮想マシンマネージャ)から管理したほうが楽ですよ。どうせ仮想マシンのGUIコンソール使うんだし。現場がSSHしかリモート接続許可していないとか、CUI萌え~な人はどうぞ。
仮想マシン用ディスク作成
KVM |
# qemu-img create -f qcow2 [仮想ディスクファイルのパス] [サイズ]
例
# qemu-img create -f qcow2 /vmdata/images/test.qcow2 8G
# ls -l /vmdata/images/test.qcow2
-rw-r--r-- 1 root root 262144 8月 13 01:45 2014 /vmdata/images/test.qcow2
|
OVM for SPARC |
# mkfile 64g /export/home/LDOM/testvm_vdisk1 # 仮想ディスク作成
# ldm add-vdsdev /export/home/LDOM/testvm_vdisk1 vol1@vds0 # 制御ドメインに仮想ディスクを登録
# ldm list-services
VCC
NAME LDOM PORT-RANGE
vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV ID DEVICE LINKPROP DEFAULT-VLAN-ID PVID VID MTU MODE INTER-VNET-LINK
vsw0 primary 00:14:4f:f9:b6:f6 igb2 0 switch@0 1 1 1500 on
vsw1 primary 00:14:4f:f8:d9:6b igb3 1 switch@1 1 1 1500 on
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
vds0 primary vol1 /export/home/LDOM/testvm_vdisk1
# ldm add-vdisk vdisk1 vol1@vds0 testvm # 制御ドメインに登録したディスクをゲストドメインに割り当て
# ldm list-domain -o disk testvm
NAME
testvm
DISK
NAME VOLUME TOUT ID DEVICE SERVER MPGROUP
vdisk1 vol1@vds0 0
※先にゲストドメインを作ってあげないといけない。
※仮想ディスクを一旦制御ドメインに登録して、制御ドメインからゲストドメインに割り当てるイメージ |
仮想マシン作成
KVM |
※実行前にブート可能なCDROMイメージを用意すること
# virt-install --connect=qemu:///system \
--name=[仮想マシン名] \
--hvm --accelerate \
--disk path=[仮想ディスクのパス],size=[仮想ディスクサイズ(GB)],device=disk,bus=virtio,format=qcow2 \
--ram=[メモリサイズ(MB)] \
--vcpus=[仮想CPU数] \
--cdrom [CDROMイメージのパス] \
--network network=[接続先仮想ネットワーク名],model=virtio \
--graphics vnc \
--vnc --os-type=linux
例 失敗してますが・・・
# virt-install --connect=qemu:///system --name=testvm --hvm --accelerate \
--disk path=/vmdata/images/test.qcow2,size=8,device=disk,bus=virtio,format=qcow2 \
--ram=2048 --vcpus=1 --cdrom /vmdata/ISO/CentOS-6.4-x86_64-bin-DVD1.iso --network network=default,model=virtio --vnc --os-type=linux
Starting install...
ドメインを作成中... | 0 B 00:00
ディスプレイをオープンできません:
Run 'virt-viewer --help' to see a full list of available command line options
Domain creation completed. You can restart your domain by running:
virsh --connect qemu:///system start testvm
成功すると仮想マシンが起動している
# virsh list --all
Id 名前 状態
----------------------------------------------------
1 win2000 実行中
2 testvm 実行中
- windows8.1 シャットオフ
/etc/libvirt/qemu以下に仮想マシン定義のxmlファイルができている
# ls /etc/libvirt/qemu
networks testvm.xml win2000.xml windows8.1.xml
# virsh domblklist testvm
ターゲット ソース
------------------------------------------------
vda /vmdata/images/test.qcow2
hdc /vmdata/ISO/CentOS-6.4-x86_64-bin-DVD1.iso
# virsh domiflist testvm
インターフェース 種類 ソース モデル MAC
-------------------------------------------------------
- network default virtio 52:54:00:8b:41:a4
|
OVM for SPARC |
# ldm add-domain testvm
# ldm list-domain
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- UART 16 1984M 0.3% 1h 33m
testvm inactive ------
# ldm add-vcpu 32 testvm # CPU割り当て
# ldm list-domain
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- UART 16 1984M 0.2% 1h 34m
testvm inactive ------ 32
# ldm add-memory 4096M testvm # メモリ割り当て
# ldm list-domain
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- UART 16 1984M 0.2% 1h 34m
testvm inactive ------ 32 4G
# ldm add-vnet id=0 vnet0 vsw0 testvm # NIC割り当て
# ldm add-vnet id=1 vnet1 vsw1 testvm # NIC 割り当て
# ldm list-domain -o network testvm
NAME
testvm
NETWORK
NAME SERVICE ID DEVICE MAC MODE PVID VID MTU LINKPROP
vnet0 vsw0 0 00:14:4f:fb:7b:c7 1
vnet1 vsw1 1 00:14:4f:f8:65:42 1
|
仮想マシン CUIコンソール接続
KVM |
# virsh console [仮想マシン名]
ドメイン testvm に接続しました
エスケープ文字は ^] です
※「^]」はctrl+]
※他のセッションを奪う場合は–force オプションを付ける |
OVM for SPARC |
※CONS列の番号がポート番号
# ldm list-domain
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- UART 16 1984M 0.8% 2h 19m
testvm bound ------ 5000 32 4G
# telnet localhost 5000
|
仮想マシン停止
KVM |
# virsh shutdown [仮想マシン名]
ドメイン [仮想マシン名] をシャットダウンしています
※acpiを有効にしておかないとシャットダウンできない |
OVM for SPARC |
# ldm stop-domain testvm
LDom testvm stopped
|
仮想マシン 強制停止
KVM |
# virsh destroy [仮想マシン名]
ドメイン [仮想マシン名] は強制停止されました
※物理マシンの電源ブチ切りと同じです。良い子のみんなはしてはいけません。
※仮想マシンがフリーズしたときの最終手段
|
vrishコマンドのヘルプ
KVM |
# virsh help
グループ別コマンド:
Domain Management (ヘルプのキーワード 'domain'):
attach-device XML ファイルによるデバイスの接続
attach-disk ディスクデバイスの接続
attach-interface ネットワークインターフェースの接続
autostart ドメインの自動起動
blkdeviotune ブロックデバイスの I/O チューニングパラメーターの設定または取得
blkiotune ブロック I/O パラメーターの取得または設定
blockcommit ブロックのコミット操作の開始
blockcopy ブロックコピー操作の開始
blockjob アクティブなブロック操作の管理
blockpull 既存のイメージからのディスクの配置
blockresize ドメインのブロックデバイスの容量変更
change-media CD またはフロッピードライブのメディアの変更
console ゲストのコンソールへの接続
cpu-baseline ベースライン CPU の計算
cpu-compare XML ファイルに記載された CPU とホスト CPU の 比較
cpu-stats ドメインの CPU 統計情報の表示
create XML ファイルによるドメインの作成
define XML ファイルによるドメインの定義(起動なし)
desc ドメインの説明またはタイトルの表示または設定
destroy ドメインの強制停止
detach-device XML ファイルによるデバイスの切断
detach-disk ディスクデバイスの切断
detach-interface ネットワークインターフェースの切断
domdisplay ドメインのディスプレイ接続 URI
domhostname ドメインのホスト名の表示
domid ドメイン名または UUID からドメイン ID への変 換
domif-setlink 仮想インターフェースのリンクステートの設定
domiftune 仮想インターフェースのパラメーターの取得・設 定
domjobabort ドメインの実行中ジョブの中止
domjobinfo ドメインのジョブ情報
domname ドメイン ID または UUID からドメイン名への変 換
dompmsuspend 電源管理機能を使用したドメインの穏やかな一時 停止
dompmwakeup ドメインのサスペンド状態からの再開
domuuid ドメイン名または ID からドメイン UUID への変 換
domxml-from-native ネイティブ設定からドメイン XML への変換
domxml-to-native ドメイン XML からネイティブ設定への変換
dump 解析用ファイルへのドメインのコアダンプ
dumpxml XML 形式のドメイン情報
edit ドメインの XML 設定の編集
inject-nmi ゲストへの NMI の送信
send-key ゲストへのキーコードの送信
managedsave ドメインの状態の管理保存
managedsave-remove ドメインの管理保存の削除
maxvcpus コネクションの最大仮想 CPU 数
memtune メモリーのパラメーターの取得または設定
migrate 他ホストへのドメインのマイグレーション
migrate-setmaxdowntime 最大許容停止時間の設定
migrate-setspeed マイグレーションの最大帯域の設定
migrate-getspeed マイグレーションの最大帯域の取得
numatune NUMA パラメーターの取得または設定
reboot ドメインの再起動
reset ドメインのリセット
restore ファイルの保存状態からドメインの復元
resume ドメインの再開
save ドメインの状態のファイルへの保存
save-image-define ドメインの状態保存ファイルの XML の再定義
save-image-dumpxml XML 形式の状態保存されたドメイン情報
save-image-edit ドメインの状態保存ファイルの XML の編集
schedinfo スケジューラーのパラメーターの表示/設定
screenshot カレントドメインのコンソールについてのスクリ ーンショットの取得およびファイルへの保存
setmaxmem 最大メモリー上限の変更
setmem メモリー割り当て量の変更
setvcpus 仮想 CPU 数の変更
shutdown ドメインの穏やかな停止
start 停止状態の(定義済み)ドメインの起動
suspend ドメインの一時停止
ttyconsole TTY コンソール
undefine ドメインの定義解除
update-device XML ファイルによるデバイスの更新
vcpucount ドメインの仮想 CPU 数
vcpuinfo ドメインの仮想 CPU 情報の表示
vcpupin ドメインの仮想 CPU アフィニティーの制御または表示
emulatorpin ドメインのエミュレーターアフィニティの制御ま たは確認
vncdisplay VNC ディスプレイ
Domain Monitoring (ヘルプのキーワード 'monitor'):
domblkerror ブロックデバイスにおけるエラーの表示
domblkinfo ドメインのブロックデバイス容量の情報
domblklist ドメインの全ブロックの一覧表示
domblkstat ドメインのデバイスブロックの状態の取得
domcontrol ドメイン制御インターフェース状態
domif-getlink 仮想インターフェースのリンクステートの取得
domiflist すべてのドメインの仮想インターフェースの取得
domifstat ドメインのネットワークインターフェースの状態 取得
dominfo ドメインの情報
dommemstat ドメインのメモリー統計情報の取得
domstate ドメインの状態
list ドメインの一覧表示
Host and Hypervisor (ヘルプのキーワード 'host'):
capabilities ケイパビリティ
freecell NUMA 空きメモリー
hostname ハイパーバイザーのホスト名の表示
node-memory-tune ノードメモリーパラメーターの取得または設定
nodecpustats ノードの CPU 統計情報の表示
nodeinfo ノード情報
nodememstats ノードのメモリー統計の表示
nodesuspend 指定された間ホストデバイスの一時停止
qemu-attach QEMU 接続
qemu-monitor-command QEMU モニターコマンド
qemu-agent-command QEMU ゲストエージェントコマンド
sysinfo ハイパーバイザーのシステム情報の表示
uri ハイパーバイザーの正規化 URI の表示
version バージョンの表示
Interface (ヘルプのキーワード 'interface'):
iface-begin 現在のインターフェース設定のスナップショット 作成、後からコミット (iface-commit) または復元 (iface-rollback) 可能
iface-bridge ブリッジデバイスの作成および既存ネットワーク デバイスへの接続
iface-commit iface-begin 後の変更のコミットおよび復元ポイ ントの開放
iface-define XML ファイルによる物理ホストインターフェース の定義(起動なし)
iface-destroy 物理ホストインターフェイスの停止("if-down" による無効化)
iface-dumpxml XML 形式のインターフェース情報
iface-edit XML 設定を物理ホストインターフェイス用に編集
iface-list 物理ホストのインターフェイスの一覧表示
iface-mac インターフェース名からインターフェースの MAC アドレスへの変換
iface-name インターフェースの MAC アドレスからインターフェース名への変換
iface-rollback iface-begin により作成された以前の保存された 設定へのロールバック
iface-start 物理ホストインターフェイスの開始("ifup" による有効化)
iface-unbridge スレーブデバイスの切断後、ブリッジデバイスの 定義解除
iface-undefine 物理ホストインターフェイスの定義解除(設定か ら削除)
Network Filter (ヘルプのキーワード 'filter'):
nwfilter-define XML ファイルによるネットワークフィルターの定 義または更新
nwfilter-dumpxml XML 形式のネットワークフィルター情報
nwfilter-edit ネットワークフィルターの XML 設定の編集
nwfilter-list ネットワークフィルターの一覧表示
nwfilter-undefine ネットワークフィルターの定義解除
Networking (ヘルプのキーワード 'network'):
net-autostart ネットワークの自動起動
net-create XML ファイルによるネットワークの作成
net-define XML ファイルによるネットワークの登録(起動な し)
net-destroy ネットワークの強制停止
net-dumpxml XML 形式のネットワーク情報
net-edit ネットワークの XML 設定の編集
net-info ネットワーク情報
net-list ネットワークの一覧表示
net-name ネットワーク UUID からネットワーク名への変換
net-start 停止状態の(定義済み)ネットワークの起動
net-undefine 停止状態のネットワークの登録削除
net-update update parts of an existing network's configuration
net-uuid ネットワーク名からネットワーク UUID への変換
Node Device (ヘルプのキーワード 'nodedev'):
nodedev-create ノードに XML ファイルで定義されたデバイスの作成
nodedev-destroy ノードのデバイスの削除(停止)
nodedev-detach デバイスドライバーからノードデバイスの切断
nodedev-dumpxml XML 形式のノードデバイス詳細
nodedev-list ホストにあるデバイスの一覧表示
nodedev-reattach デバイスドライバーへのノードデバイスの再接続
nodedev-reset ノードデバイスのリセット
Secret (ヘルプのキーワード 'secret'):
secret-define XML ファイルによるシークレットの定義または変 更
secret-dumpxml XML 形式の secret 属性
secret-get-value シークレット値の出力
secret-list シークレットの一覧表示
secret-set-value シークレット値の設定
secret-undefine シークレットの定義解除
Snapshot (ヘルプのキーワード 'snapshot'):
snapshot-create XML によるスナップショットの作成
snapshot-create-as 一組の引数からのスナップショットの作成
snapshot-current カレントスナップショットの取得または設定
snapshot-delete ドメインのスナップショットの削除
snapshot-dumpxml ドメインのスナップショットの XML 形式ダンプ
snapshot-edit スナップショットの XML の編集
snapshot-info スナップショット情報
snapshot-list ドメインのスナップショットの一覧表示
snapshot-parent スナップショットの親の名前の取得
snapshot-revert ドメインのスナップショットへの復帰
Storage Pool (ヘルプのキーワード 'pool'):
find-storage-pool-sources-as 潜在的なストレージプールソースの検索
find-storage-pool-sources 潜在的なストレージプールソースの探索
pool-autostart プールの自動起動
pool-build プールの構築
pool-create-as 一組の引数からプールの作成
pool-create XML ファイルによるプールの作成
pool-define-as 一組の引数からのプールの定義
pool-define XML ファイルによるプールの定義(起動なし)
pool-delete プールの削除
pool-destroy プールの強制停止
pool-dumpxml XML 形式のプール情報
pool-edit ストレージプールの XML 設定の編集
pool-info ストレージプール情報
pool-list プールの一覧表示
pool-name プール UUID からプール名への変換
pool-refresh プールのリフレッシュ
pool-start (以前に定義した)停止状態のプールの起動
pool-undefine 停止状態のプールの定義解除
pool-uuid プール名からプール UUID への変換
Storage Volume (ヘルプのキーワード 'volume'):
vol-clone ボリュームのクローン
vol-create-as 一組の引数からボリュームの作成
vol-create XML ファイルによるボリュームの作成
vol-create-from 別のボリュームを入力として使用したボリューム の作成
vol-delete ボリュームの削除
vol-download ボリュームのファイルへのダウンロード
vol-dumpxml XML 形式のボリューム情報
vol-info ストレージボリューム情報
vol-key 任意のボリューム名またはパスのボリュームキー の表示
vol-list ボリューム一覧の表示
vol-name 任意のボリュームキーまたはパスのボリューム名 の表示
vol-path 任意のボリューム名またはキーのボリュームパス の表示
vol-pool 任意のボリュームキーまたはパスのストレージプ ールの表示
vol-resize ボリュームの容量変更
vol-upload ボリュームへのファイルのアップロード
vol-wipe ボリュームの完全消去
Virsh itself (ヘルプのキーワード 'virsh'):
cd カレントディレクトリーの変更
connect ハイパーバイザーへの(再)接続
echo 引数のエコー
exit 対話式ターミナルの終了
help ヘルプの表示
pwd カレントディレクトリーの表示
quit 対話式ターミナルの終了
|
ダメだ。ぜんぜんまとまってない・・・