Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

20170105195738.png

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

  • 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アドレスを設定します)

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

Screen Shot 2016-02-13 at 9.02.15 PM.png

インストールが完了したら、普通のサーバと同様に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

jimaoka
Blogに書いたものをまとめます
http://jimaoka.hatenablog.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away