仮想化をやってみようということでKVMを用いて構築を行う
環境
- Ubuntu server 11.10 64bit
インストール
$ sudo aptitude install qemu-kvm libvirt-bin virtinst
kvm
KVM。qemu-kvmというパッケージ名で提供されている
ちなみにkvmというパッケージ名にはこうかかれている
kvm - dummy transitional package from kvm to qemu-kvm
インストールするとkvm-okというコマンドが使えるようになる。これで使用の可否が判断可能
$ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
libvirt
libvirtは仮想マシンを管理するために必要なAPIを提供してくれるライブラリ
元々Xen向けに開発されていたもののようだが、現在では今回使用するKVMも含めVirtualBoxやVMwareでも使えるようだ。
詳しいことはこのあたりをみるといいのかもしれない
virt-install
virtinstパッケージに含まれているvirt-installコマンドは、libvirtをバックエンドにコマンドラインからゲストOSのインストールを行う
Ubuntuでは他にもubuntu-vm-builderというものもあるのだけど今回はvirt-installを使ってみる
ubuntu-vm-builderはこのへんをみるといいのかもしれない
ブリッジ設定
ホストOS上で仮想ブリッジを作成して、ゲストOSはこのブリッジネットワークに接続しようと思う
ゲストOSも同一ネットワーク内に存在できるようになるので、ゲストOSに直接アクセスできる(んだとおもう
Ubuntuでのブリッジ設定
vim sudo:/etc/network/interfaces
--- /etc/network/interfaces.static 2011-11-19 22:05:08.664892671 +0900 +++ /etc/network/interfaces 2011-11-19 23:50:53.655320655 +0900 @@ -7,11 +7,16 @@ # The primary network interface auto eth0 -iface eth0 inet static +iface eth0 inet manual + +auto br0 +iface br0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1 + bridge_ports eth0 + bridge_step off # This is an autoconfigured IPv6 interface iface eth0 inet6 auto
各所の説明をみるかぎりだとeth0をプロミスキャスモードにすることでうまいこといくらしい。
これも各所の設定をみるとだけど、eth0をmanualにするまたはeth0の固定IPを0.0.0.0にするといいらしい。
このあたり全く理解していないので後で調べる必要あり。# TODO
ゲストOSのインストール
libvirtの場合ゲストOSのイメージファイルは/var/lib/libvirt/images配下に置かれるようなのでここにイメージは作る。
virt-installコマンドのオプションでイメージの作成までできるので特に準備はしない。
オプションである程度のところは指定できる。
オプションについては理解しているもので必要そうなものだけ。適宜修正したりするかも
CentOS6 64bitをCPU数2,メモリ2GB,ストレージサイズ20GBでhttpからOSのファイルを取得してインストールする
$ sudo virt-install \ --connect=qemu:///system \ -n centos_x86_64 \ -r 2048 \ --disk path=/var/lib/libvirt/images/centos_x86_64.img,size=20,format=qcow2 \ --vcpus=2 \ --os-type linux \ --os-variant=virtio26 \ --network bridge=br0 \ --nographics \ --extra-args='console=tty0 console=ttyS0,115200n8' \ --location http://ftp.riken.jp/Linux/centos/6.0/os/x86_64/
今回はCentOS6_x86_64をインストールしてみている。実行するとテキストモードのインストール画面になる
この画面はゲストOS側のコンソールになっている
なお、ゲストOSからホストOSに戻るさいにはCtrl-]を叩くと戻れる
virt-installのオプション
とりあえず指定しているものとか理解したものだけメモしとく(適宜足す)
オプション | 説明 |
---|---|
--connect | 接続するハイパーバイザ(KVMだとqemu:///systemがデフォルト) |
-n,--name | 仮想マシンの名前 |
-r,--ram | 仮想マシンに割り当てるメモリ(MegaByte) |
--vcpus | 仮想マシンのCPUコア数 |
--location | 仮想マシンのインストール元 |
--os-type | OSのタイプ(ex. linux, windows) |
--os-variant | OSの種類(ディストリビューションとかバージョンとか) |
--disk | 仮想マシンのストレージの設定 |
-f,--file | --disk path=の省略形 |
-s,--size | --disk size=の省略形 |
--network | 仮想マシンのネットワーク |
--extra-args | カーネルに渡すパラメータ |
OS_VARIANT
## virt-install --os-variant listするとリストみれる $ sudo virt-install --os-variant list win7 : Microsoft Windows 7 vista : Microsoft Windows Vista winxp64 : Microsoft Windows XP (x86_64) winxp : Microsoft Windows XP win2k : Microsoft Windows 2000 win2k8 : Microsoft Windows Server 2008 win2k3 : Microsoft Windows Server 2003 openbsd4 : OpenBSD 4.x freebsd8 : FreeBSD 8.x freebsd7 : FreeBSD 7.x freebsd6 : FreeBSD 6.x solaris9 : Sun Solaris 9 solaris10 : Sun Solaris 10 opensolaris : Sun OpenSolaris netware6 : Novell Netware 6 netware5 : Novell Netware 5 netware4 : Novell Netware 4 msdos : MS-DOS generic : Generic debiansqueeze : Debian Squeeze debianlenny : Debian Lenny debianetch : Debian Etch fedora16 : Fedora 16 fedora15 : Fedora 15 fedora14 : Fedora 14 fedora13 : Fedora 13 fedora12 : Fedora 12 fedora11 : Fedora 11 fedora10 : Fedora 10 fedora9 : Fedora 9 fedora8 : Fedora 8 fedora7 : Fedora 7 fedora6 : Fedora Core 6 fedora5 : Fedora Core 5 mes5.1 : Mandriva Enterprise Server 5.1 and later mes5 : Mandriva Enterprise Server 5.0 mandriva2010 : Mandriva Linux 2010 and later mandriva2009 : Mandriva Linux 2009 and earlier rhel6 : Red Hat Enterprise Linux 6 rhel5.4 : Red Hat Enterprise Linux 5.4 or later rhel5 : Red Hat Enterprise Linux 5 rhel4 : Red Hat Enterprise Linux 4 rhel3 : Red Hat Enterprise Linux 3 rhel2.1 : Red Hat Enterprise Linux 2.1 sles11 : Suse Linux Enterprise Server 11 sles10 : Suse Linux Enterprise Server ubuntuoneiric : Ubuntu 11.10 (Oneiric Ocelot) ubuntunatty : Ubuntu 11.04 (Natty Narwhal) ubuntumaverick : Ubuntu 10.10 (Maverick Meerkat) ubuntulucid : Ubuntu 10.04 (Lucid Lynx) ubuntukarmic : Ubuntu 9.10 (Karmic Koala) ubuntujaunty : Ubuntu 9.04 (Jaunty Jackalope) ubuntuintrepid : Ubuntu 8.10 (Intrepid Ibex) ubuntuhardy : Ubuntu 8.04 LTS (Hardy Heron) virtio26 : Generic 2.6.25 or later kernel with virtio generic26 : Generic 2.6.x kernel generic24 : Generic 2.4.x kernel