今回はこれの詳細(ホスト側、ゲスト側)を確認したい。
詳細確認は、主にvirshコマンドで実施可能。
なので、1つずつ確認してみる。
ちなみに、KVMやqemu、Xenでは、仮想マシンのことを「Domain」と呼んでいるらしい。従って、virshコマンドにおけるドメインは、仮想マシンのことを指すぞ。
まずは仮想マシンの基本情報を…。
$ virsh list --all
$ virsh dominfo aries
$ virsh dumpxml aries
コマンドを実行してみると分かると思うけど、2つ目は仮想マシンの簡単な概要が表示される。
3つ目は前回も実行したから分かると思うけど、仮想マシンの構成情報がXML形式で出力される。
この中で、仮想ディスクの情報を見てみると、以下のようになっている。
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/aries.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
詳細は色々と調べてみないとはっきりしたことは言えないが、一つだけ間違いないのは、ホストOS上の /var/lib/libvirt/images/aries.qcow2 というファイルが、仮想マシン上のHDDになっている、ということだ。
では、このHDDの状態を確認してみる。
$ virsh pool-list --all
libvirtでは、仮想HDDを置く領域を「プール」と表現している。また、実際の仮想HDDを「ボリューム」と表現している。
上記コマンドで、default と iscsivol という2つのプールが表示されたのではないだろうか?
iscsivol は、OSをインストールする時の.isoファイルが配置されていた場所なので、virt-install が自動的に作ったものだと想定出来る。
となると、default の中に、仮想マシンのHDDが定義されているのだろう。
$ virsh pool-info default
$ virsh pool-dumpxml default
1つ目は、そのプールの簡単な概要だ。
2つ目が、そのプール定義の詳細を表すxmlデータの出力だ。
一部を省略して記載すると、以下の内容になった。
<pool type='dir'>
<name>default</name>
<uuid>略</uuid>
<capacity unit='bytes'>略</capacity>
<allocation unit='bytes'>略</allocation>
<available unit='bytes'>略</available>
<source>
</source>
<target>
<path>/var/lib/libvirt/images</path>
<permissions>
<mode>0711</mode>
<owner>0</owner>
<group>0</group>
</permissions>
</target>
</pool>
このデータで分かるのは、
- プールの形式はDirectory
- パスは/var/lib/libvirt/images
つまり、このプールに仮想ディスクを作成すると、/var/lib/libvirt/images 以下に配置される、ということになる。
具体的な仮想ディスクの詳細を見てみる。
$ virsh vol-list --pool default
$ virsh vol-info aries.qcow2 --pool default
$ virsh vol-dumpxml aries.qcow2 --pool default
2つ目のコマンドを実行すると、容量と割り当てという2つの項目に気がつくはずだ。
私の環境では、
容量:2.00GiB
割当:1.37GiB
となっている。
これは、当該ファイルがスパースファイルと呼ばれる形式で作られており、見た目は2GiBあるように見えるが、実際に物理HDD上は1.37GiBしか(まだ)利用されていない、ということを意味している。
実際にファイルのサイズを見てみよう。
$ ls -lh /var/lib/libvirt/images/aries.qcow2
$ du -h /var/lib/libvirt/images/aries.qcow2
前者はサイズが約2.1G、後者は1.4Gと表示された。
ゲストOS(aries)側で使用量が増えれば、後者の出力結果が徐々に2Gに近づいていくはずだ。
また、dumpxmlでは構成が出力される。こちらは今は詳細を見ないが、軽く目を通しておいてもいいだろう。
続いて、仮想マシンのネットワーク関連を見てみる。
$ virsh dumpxml aries
出力内容のうち、ネットワークに関する部分をピックアップしてみると以下の通りだ。
<interface type='network'>
<mac address='52:54:00:76:db:ef'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
soruce networkがdefaultになっている。これが、前回確認したdefaultネットワークのことだ。
今はネットワークはdefaultしか定義されていないので、これ以外に接続することは出来ない。
別途、ネットワークを作った時に、source networkの違いが分かるようになると思う。
一応、もう一度見ておく。
$ virsh net-list --all
$ virsh net-info default
$ virsh net-dumpxml default
3つ目のコマンドで、以下の出力が確認できる。
<network>
<name>default</name>
<uuid>略</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:25:36:ed'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
これを見る限り、このdefaultネットワークに接続したゲストOSは、dhcpクライアントに設定していたら、192.168.122.2~192.168.122.254のドレかのIPアドレスが渡され、更に192.168.122.1をルータにして外部とのやり取りが行われるのではないだろうか?
そして、192.168.122.1のアドレスを持つルータは、52:54:00:25:36:edというmacアドレスを持っているのではないだろうか?
次回、実際にゲストOSを起動して確認してみることにする。
というわけで、今回はココまで。
0 件のコメント:
コメントを投稿