CentOS7上にKVM環境を構築する(CUI環境)
物理サーバを触っていると
- OSの再インストールが手軽できない(画面とキーボードを刺して、作業するとか)
- 新しいOS環境を用意するために、新しいハードウェアを購入する必要がある
など、大変なことが多いです。
仮想化
ということで、もうちょっと手軽にサーバを作ったり潰したりしたいと思い、家のサーバに仮想環境を構築することにしました。
http://www.amazon.co.jp/dp/B00HVKLSVCwww.amazon.co.jp 我が家のサーバは、今のところ 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 BOOTPROTO="static" IPADDR="192.168.x.x" PREFIX="24" GATEWAY="192.168.x.x" DNS1="192.168.x.x" ### もとのインターフェースを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アドレスを設定します)
上手く起動できない場合は、エラーメッセージをなんとか読みましょう。。(僕はパーミッションの関係で弾かれてたことがありました)
インストールが完了したら、普通のサーバと同様に(ホストOSのvirsh経由でもOKですが)sshでdhcpで配布された、または設定したIPアドレスに接続しましょう。
% ssh 192.168.xx.xx