Edited at

CentOS7上にKVM環境を構築する (CUI環境)

More than 1 year has passed since last update.


CentOS7上にKVM環境を構築する (CUI環境)

物理サーバを触っていると


  • OSの再インストールが手軽できない(画面とキーボードを刺して、作業するとか)

  • 新しいOS環境を用意するために、新しいハードウェアを購入する必要がある

など、大変なことが多いです。

ということで、もうちょっと手軽にサーバを作ったり潰したりしたいと思い、家のサーバに仮想環境を構築することにしました。

OS: CentOS 7.1 (CUIモード)

CPU: Intel VT-x 対応


KVMでの構築

我が家のサーバは、Intel NUCIntel Celeron N2830 というCPUを積んでいるモデルです。

最初はVMWareのESXiを入れれないかな、と思い調べていたのですが、ちょっと動作しないようでした。

参考: VMware Homeserver – ESXi on 4th Gen Intel NUC

CPUの仕様を見るにIntel VT-xのサポートはされているので、おとなしくKVMでの環境を構築します。


環境構築

環境構築を行っていきます。


必要ソフトウェアのインストール

まず、必要なソフトウェアのインストールとサービスの起動を行います。

### 必要ソフトウェアのインストール

% sudo yum -y install libguestfs libvirt libvirt-client python-virtinst qemu-kvm virt-manager virt-top virt-viewer virt-who virt-install bridge-utils
### libvirtdの起動
% sudo systemctl start libvirtd
### libvirtdの自動起動設定
% sudo systemctl enable libvirtd


ネットワークまわりの設定

ゲストOSが外部ネットワークにアクセスするためのブリッジインターフェースを作成します。

### 元あるネットワーク設定をベースに作成していく

% sudo cp /etc/sysconfig/network-scripts/ifcfg-enp3s0 /etc/sysconfig/network-scripts/ifcfg-br0
### ブリッジインターフェースの設定を編集
### もともとの設定はだいたい残す(UUIDとかは消したような)
% sudo vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
...
(もとのdhcpとかIPとかの設定..)
### もとのインターフェースをbr0経由で使用するよう設定
### もとの設定はだいたい消す
% sudo vim /etc/sysconfig/network-scripts/ifcfg-enp3s0
TYPE="Ethernet"
BRIDGE=br0
NAME="enp3s0"
UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
DEVICE="enp3s0"
ONBOOT="yes"
### ネットワークの再起動
% sudo systemctl restart network
### ブリッジインターフェースの確認
% brctl show
bridge name bridge id STP enabled interfaces
br0 8000.c03fd56f5970 no enp3s0
virbr0 8000.52540083d5a7 yes virbr0-nic
### ネットワーク設定の確認
% ip a show br0
23: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
...
inet 192.168.x.x/24 brd 192.168.11.255 scope global dynamic br0
valid_lft 172672sec preferred_lft 172672sec
...

ブリッジデバイス経由のパケットにiptablesの適用を行わない設定をします。

### パラメーターの設定

% sudo vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
### パラメーターのリロード
% sudo sysctl -p /etc/sysctl.conf


ゲストOSの作成

ゲストOSの作成を行います。

今回はゲストOSとして、CentOS7を使用します。

### OSイメージのダウンロード (CentOS7 -  minimal ISO)

% cd /tmp
% curl -LO http://ftp.nara.wide.ad.jp/pub/Linux/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso
### イメージファイルの作成(仮想ディスク)
% sudo qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.img 20G

それでは、virt-installによりゲストOSのインストールを行います。

--nographics オプションでCUIモードにして、--extra-args によりコンソールに接続するオプションを付けます。

% sudo virt-install --connect=qemu:///system \

--name=centos7 \
--vcpus=1 \
--ram=512 \
--accelerate \
--hvm \
--disk path=/var/lib/libvirt/images/centos7.img,size=20,format=qcow2 \
--location='/tmp/CentOS-7-x86_64-Minimal-1511.iso' \
--network bridge=br0 \
--nographics \
--extra-args='console=tty0 console=ttyS0,115200n8'

うまく起動すると下のようなコマンドラインによるインストール画面が出てくるので、うまく設定できてない項目 [!] や [ ] があったら設定していきます。 (networkはdhcpまたはホストOSと異なるIPアドレスを設定します)

上手く起動できない場合は、エラーメッセージをなんとか読みましょう。。(僕はパーミッションの関係で弾かれてたことがありました)

インストールが完了したら、普通のサーバと同様にsshでdhcpで配布された、または設定したIPアドレスに接続しましょう。(ホストOSのvirsh経由でもよい)

% ssh 192.168.xx.xx


Webインタフェースからの操作

Webからインスタンス等を操作するためのWebVirtMgrのセットアップについても書いているのでご参考にしてください。

KVMをWebから操作できるようにする(WebVirtMgr)

http://qiita.com/jimaoka/items/27205e53097ecab561f7

--

この投稿は、以前にブログに書いたものをまとめた内容になります。

http://jimaoka.hatenablog.jp/entry/kvm-inst