blog/content/post/2011/07/04/2011-07-04-kvmで仮想環境を整えてみる-2.md

226 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: KVMで仮想環境を整えてみる (2)
author: kazu634
date: 2011-07-04
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5437;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- kvm
- linux
---
<div class="section">
<p>
前回はとりあえずOSイメージを指定して、OSをインストールするところまでできたと思います。OSインストール終了後にリブートすると、おそらくKVM上のゲストOSは再起動しないので、次のコマンドを実行してあげます:
</p>
<pre class="syntax-highlight">
$ sudo virsh <span class="synStatement">start</span> <span class="synStatement">&#60;</span>ゲストOSの名前<span class="synStatement">&#62;</span>
</pre>
<p>
これで CD のマウントオプションを除いて、 virt-install で指示したオプション通りにゲストOSを起動してくれます。しかしここでつまずきの種が。。。
</p>
<h4>
ゲストOSのネットワーク設定について
</h4>
<p>
さて KVM で作成したゲスト OS はNATになります。ゲストOSから外部への通信はできるのですが、ホストOSを含む外部からゲストOSへのアクセスは出来ません。VMWareなんかだとNAT接続でもホスト-ゲスト間は通信できるのですが、KVMはそうではないみたいです。
</p>
<p>
そこでブリッジ接続(ホストOSと同じネットワークセグメントのIPアドレスで通信)をできるようにしてみます。
</p>
<h4>
事前準備
</h4>
<p>
事前に次のコマンドを実行します:
</p>
<pre class="syntax-highlight">
$ sudo apt-get <span class="synStatement">install</span> libcap2-bin
$ sudo setcap <span class="synIdentifier">cap_net_admin</span>=ei /usr/bin/qemu-system-x86_64<span class="synComment"> # x64の場合</span>
$ sudo setcap <span class="synIdentifier">cap_net_admin</span>=ei /usr/bin/qemu <span class="synComment"> # x32の場合</span>
</pre>
<h4>
ブリッジ接続の設定方法
</h4>
<p>
私のホストOSのUbuntuくんはNICが一枚です。初期状態だとネットワークの設定(/etc/network/interfaces)はこんな感じのはず:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
auto eth0
iface eth0 inet dhcp
</pre>
<p>
静的にIPアドレスを割り当てている場合には、こんな感じになるのかな:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
auto eth0
iface eth0 inet static
address 192.168.11.8
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.1
</pre>
<p>
それを次のように変更してしまいます。なお、IPアドレス 192.168.11.8/24,ゲートウェイが192.168.11.1としてホストOSにアクセスすることとします:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.11.8
netmask 255.255.255.0
network 192.168.11.0
broadcast 192.168.11.255
gateway 192.168.11.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
</pre>
<p>
参考:
</p>
<ul>
<li>
<a href="https://help.ubuntu.com/community/KVM/Networking" onclick="__gaTracker('send', 'event', 'outbound-article', 'https://help.ubuntu.com/community/KVM/Networking', 'KVM/Networking &#8211; Community Help Wiki');" target="_blank">KVM/Networking &#8211; Community Help Wiki</a>
</li>
</ul>
<h4>
ゲストOSのNICを変更する
</h4>
<p>
ブリッジの接続設定を実施した後は、ゲストOSに割り当てたNICを変更してあげます。「/etc/libvirt/qemu/<ゲストOS名>」という名称の設定ファイルを書き換えます:
</p>
<p>
変更前:
</p>
<pre class="syntax-highlight">
&#60;interface type=<span class="synConstant">'network'</span>&#62;
&#60;mac address=<span class="synConstant">'52:54:00:bc:d1:55'</span>/&#62;
&#60;source network=<span class="synConstant">'default'</span>/&#62;
&#60;model type=<span class="synConstant">'virtio'</span>/&#62;
&#60;address type=<span class="synConstant">'pci'</span> domain=<span class="synConstant">'0x0000'</span> bus=<span class="synConstant">'0x00'</span> slot=<span class="synConstant">'0x04'</span> function=<span class="synConstant">'0x0'</span>/&#62;
&#60;/interface&#62;
</pre>
<p>
変更後:
</p>
<pre class="syntax-highlight">
&#60;interface type=<span class="synConstant">'bridge'</span>&#62;
&#60;mac address=<span class="synConstant">'52:54:00:bc:d1:55'</span>/&#62;
&#60;source bridge=<span class="synConstant">'br0'</span>/&#62;
&#60;model type=<span class="synConstant">'virtio'</span>/&#62;
&#60;address type=<span class="synConstant">'pci'</span> domain=<span class="synConstant">'0x0000'</span> bus=<span class="synConstant">'0x00'</span> slot=<span class="synConstant">'0x03'</span> function=<span class="synConstant">'0x0'</span>/&#62;
&#60;/interface&#62;
</pre>
<p>
MACアドレスは変更しないほうがいいと思うよ。ネットワークの設定を変更後、設定を反映してあげます:
</p>
<pre class="syntax-highlight">
$ sudo virsh define <span class="synStatement">&#60;</span>変更した設定ファイル名<span class="synStatement">&#62;</span>
</pre>
<h4>
virt-installコマンドでブリッジ接続のNICをゲストOSに割り当てる
</h4>
<p>
こんな感じでコマンドを指定します:
</p>
<pre class="syntax-highlight">
$ sudo virt-<span class="synStatement">install</span> <span class="synSpecial">--connect</span> qemu:///system <span class="synSpecial">--name</span> gateway <span class="synSpecial">--ram</span> <span class="synConstant">256</span> <span class="synSpecial">--disk</span> <span class="synIdentifier">path</span>=<span class="synIdentifier">gateway.img,size</span>=<span class="synConstant">10</span> <span class="synSpecial">--network</span> <span class="synIdentifier">bridge</span>=<span class="synIdentifier">br0,model</span>=virtio <span class="synSpecial">--vnc</span> <span class="synSpecial">--cdrom</span> /mnt/nas/kazu634/OSimages/ubuntu/ubuntu<span class="synConstant">-10</span>.<span class="synConstant">04</span>.<span class="synConstant">2</span>-server-amd64.iso
</pre>
<h4>
virt-installコマンドで複数NICになるようしてゲストOSを作成する
</h4>
<p>
こんな感じで、&#8211;networkを複数指定します:
</p>
<pre class="syntax-highlight">
sudo virt-<span class="synStatement">install</span> <span class="synSpecial">--connect</span> qemu:///system <span class="synSpecial">--name</span> gateway <span class="synSpecial">--ram</span> <span class="synConstant">256</span> <span class="synSpecial">--disk</span> <span class="synIdentifier">path</span>=<span class="synIdentifier">gateway.img,size</span>=<span class="synConstant">10</span> <span class="synSpecial">--network</span> <span class="synIdentifier">bridge</span>=<span class="synIdentifier">br0,model</span>=virtio <span class="synSpecial">--network</span> <span class="synIdentifier">network</span>=<span class="synIdentifier">default,model</span>=virtio <span class="synSpecial">--vnc</span> <span class="synSpecial">--cdrom</span> /mnt/nas/kazu634/OSimages/ubuntu/ubuntu<span class="synConstant">-10</span>.<span class="synConstant">04</span>.<span class="synConstant">2</span>-server-amd64.iso
</pre>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51BpsUti-5L._SL160_.jpg" class="hatena-asin-detail-image" alt="KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド" title="KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド');">KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%BF%BD%E9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%CA%BF%BD%E9', '平初');" class="keyword">平初</a>,<a href="http://d.hatena.ne.jp/keyword/%BF%B9%BC%E3%CF%C2%CD%BA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%BF%B9%BC%E3%CF%C2%CD%BA', '森若和雄');" class="keyword">森若和雄</a>,<a href="http://d.hatena.ne.jp/keyword/%C4%E1%CC%EE%CE%B6%B0%EC%CF%BA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C4%E1%CC%EE%CE%B6%B0%EC%CF%BA', '鶴野龍一郎');" class="keyword">鶴野龍一郎</a>,<a href="http://d.hatena.ne.jp/keyword/%A4%DE%A4%A8%A4%C0%A4%B3%A4%A6%A4%D8%A4%A4" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A4%DE%A4%A8%A4%C0%A4%B3%A4%A6%A4%D8%A4%A4', 'まえだこうへい');" class="keyword">まえだこうへい</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2', '翔泳社');" class="keyword">翔泳社</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2010/07/08
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 大型本
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 5人 <span class="hatena-asin-detail-label">クリック</span>: 227回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4798121401" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4798121401', 'この商品を含むブログ (15件) を見る');" target="_blank">この商品を含むブログ (15件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>