CentOS7上にKVM環境を構築する (CUI環境)
物理サーバを触っていると
- OSの再インストールが手軽できない(画面とキーボードを刺して、作業するとか)
- 新しいOS環境を用意するために、新しいハードウェアを購入する必要がある
など、大変なことが多いです。
ということで、もうちょっと手軽にサーバを作ったり潰したりしたいと思い、家のサーバに仮想環境を構築することにしました。
OS: CentOS 7.1 (CUIモード)
CPU: Intel VT-x 対応
KVMでの構築
我が家のサーバは、Intel NUC の Intel 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