KVMでVMのセットアップ方法


KVM使う時に、VMのインストールの方法が複数あって毎回どうやってやろうか悩むので、自分が知っている範囲でまとめておきます。

#環境
- 手元のマシン
 - Mac OS X 10.9.5
- ホストOS
 - Ubuntu 14.04
 - IPアドレス:10.0.0.1
- ゲストOS
 - CentOS 6
- KVM
 - virsh 1.2.2

#前提
- ホストOSのインストールは完了している
- KVMのインストールも完了している

#インストール方法
##virt-managerを使う
`virt-manger`を使うとGUIでインストールが出来ます。
ホストOSに対して`ssh`して操作する場合は、X11を転送してあげると手元のマシンから`virt-manager`が使えます。
X11の転送については調べればあちこちに載っているので省略します。

```console:Mac
$ ssh -X user@10.0.0.1
```

ログイン先で

```console:Ubuntu
$ virt-manager
```

と打てば以下の様な画面が開けて、あとは「New」など打てばVMを生成できます。

![kobito.1413271975.325882.png](https://qiita-image-store.s3.amazonaws.com/0/56222/c8bafbb5-13eb-224e-b2f9-4ff7eb5edb5a.png "kobito.1413271975.325882.png")

ということで非常に簡単なのであとは省略します。

##virt-installを使う
`virt-install`を使うこともできます。
その場合でもVNCでやる場合とconsoleでやる方法があるので両方載せておきます。

###consoleでやる場合
consoleでやる場合は全てキーボードで完結できるので、エンジニアが好きな方法かもしれません。
virt-installするときに一緒にimageも作ってくれます。
imageのパスは`/var/lib/libvirt/images/`を指定しました。

| 設定項目 | 設定値 |
|:-----------|------------:|
| OS       |        CentOS 6 |
| VM名     |      centos_x86_64 |
| image       |       centos_x86_64.img |
| image size         |          8GB |
| image type       |       qcow2 |
| CPU    |     1コア |
| メモリ    |     1GB |
| ネットワーク    |     default |


上記の条件で作成する場合、以下のコマンドになります。

```console
$ virt-install \
--connect=qemu:///system \
-n centos_x86_64 \
-r 1024 \
--disk path=/var/lib/libvirt/images/centos_x86_64.img,size=8,format=qcow2 \
--vcpus=1 \
--os-type linux \
--os-variant=virtio26 \
--network network=default \
--nographics \
--extra-args='console=tty0 console=ttyS0,115200n8 keymap=ja' \
--location http://ftp.jaist.ac.jp/pub/Linux/CentOS/6/os/x86_64/
```

こうするとconsoleモードでインストールが始まります。
インストールが終わったあと、`virsh console`でコンソールがつかめます。
`extra-args`でコンソールの設定することで次からもコンソールつかめるようになってました。
前はログインしてからコンソールをつかめるように自分で設定してた気がするのですが、何か便利になってました。
＃元から出来たのに以前のやり方が駄目だったのか、最近コマンドが進化したのか。。

###VNCでやる場合
VNCによってリモートデスクトップでインストールすることも出来ます。
VNCはポート番号やパスワードを決めることが出来ます。
今回は以下のようにします。

| 設定項目 | 設定値 |
|:-----------|------------:|
| port         |          5901 |
| listen       |       0.0.0.0 |
| keymap    |     ja |
| password    |     hoge |


その場合のコマンドは以下です。

```console
$ virt-install \
--connect=qemu:///system \
-n centos_x86_64 \
-r 1024 \
--disk path=/var/lib/libvirt/images/centos_x86_64.img,size=8,format=qcow2 \
--vcpus=1 \
--os-type linux \
--os-variant=virtio26 \
--network network=default \
--location http://ftp.jaist.ac.jp/pub/Linux/CentOS/6/os/x86_64/ \
--graphics vnc,port=5901,listen=0.0.0.0,keymap=ja,password=hoge

Starting install...
Retrieving file .treeinfo...
Retrieving file vmlinuz...
Retrieving file initrd.img...
Allocating 'virtinst-vmlinuz.Pqtk92'
Transferring virtinst-vmlinuz.Pqtk92
Allocating 'virtinst-initrd.img.IS1ztU'
Transferring virtinst-initrd.img.IS1ztU
Creating domain...

** (virt-viewer:14551): WARNING **: Could not open X display
Cannot open display:
Run 'virt-viewer --help' to see a full list of available command line options
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
```

Xが開けないと言われますが問題ありません。
あとは手元のマシンからVNCで接続してあげればよいです。
例としては`vnc://ホストマシンのIPアドレス：ポート番号`という感じです。
今回の場合、ホストマシンは`10.0.0.1`とし、ポート番号は`5901`にしたので、接続してみます。
Macの場合はFinderから「移動」→「サーバへ接続」を押して`vnc://10.0.0.1:5901`として「接続」を押したあと、上記で設定したパスワードを入力してあげればよいです。

![kobito.1413274141.430636.png](https://qiita-image-store.s3.amazonaws.com/0/56222/818df1c7-4c56-7899-6ffb-2cbe919a5df5.png "kobito.1413274141.430636.png")

そうするとCentOSのインストール画面が開きます。

![kobito.1413274228.954527.png](https://qiita-image-store.s3.amazonaws.com/0/56222/8b6ebda2-9aea-980f-cecd-447c4c1c6a89.png "kobito.1413274228.954527.png")

最近はVagrantなどの自動化ツールが流行っているので自分でインストールすることが少なくなるかもしれませんが、ツールを使いすぎると裏で何をしているのかわからなくなります。
そうなると困ったときにトラブルシューティングできません。
あくまで自分でもできた上で省略のためにツールを使う、という形が良いかと思い今回紹介しました。