KVM で作業環境をクラウド化、または1台のPCにOSを何本もインストールして好きなだけ使い倒す

yasukawa

2018年04月26日 19:04



各スタッフに宛がう PC についてクラウド化をし、場所に関係ない業務環境をデザインし提供する。
最終的に接続する端末が必要になるので運用オペレーションの吟味とホストになるハードにスペックが必要だが、子関係の端末については性能を必要としない。以下のようなメリットデメリットがある。

・場所や端末自体を変えても、業務の続きそのまんまで再開できる。
・機種変更しても作業環境が変わらない。移行作業が無い。
・開発環境などディスクイメージでの保存ができ、バックアップを一元管理できる。
・様々なハードを物理的に管理する必要が無い。ハードどころかコードが少なくなるので執務室が片付く。
・リソースを無駄なく使えるが、一人だけ高負荷をかける作業している人がいると困る。
・会議室・社外など移動先でもデータへのアクセスが楽。

個人の仕事への向きあい方にもよるが「どこからでも自分の机の上のものがとれる・置き忘れがなくなる」という環境がストレスになるのか、それともストレスから解放されるものなのか。ライフスタイルのデザインは難しいところ。

1つのホストマシン(サーバ)を電源入れっぱなしにし、その中に複数の仮想マシン(OS)をインストール構築し、必要な人が必要な人数だけ必要な時に接続して使用する。

各個の物理的な故障や紛失からデータを守ることができるが、1人の管理者が遠隔保守すれば楽になるが、必ずネットワークが必要になるので充分なネット環境とセキュリティの構築だけは必要。
今回は試験的に運用するので、11年前のゴミみたいな PC(Win7・i5)を再利用。
CentOS をインストールして、仮想マシンを構築する。Windows でも VMware などがあるので、Linux の環境構築を練習したい時など便利。

■KVMスイッチ
http://www.linux-kvm.org/page/Main_Page

KVM は Kernel Virtual Machine の略。

Windows にVMware を入れた時は簡単にブリッジ接続ができたのだけど、CentOS の時は手こずったので覚書。

〇ブリッジインターフェースを表示(デフォルト状態)
# brctl show

bridge name bridge id STP enabled interfaces
--------------------------------------------------
virbr0 xxxx.xxxxxxxxxxxx yes virbr0-nic

※virbr0 はデフォルトで設定されている仮想ブリッジ。使用することは無い。
ifconfig virbr0 コマンドで内容の確認できる。

〇仮想ネットワークを表示(デフォルト状態)
# virsh net-list --all

Name State Autostart Persistent
--------------------------------------------------
default active no yes

この状態で外部へのインターネットへ到達はできるのでネットサーフィンだけさせるのは可能。
ただし仮想マシンへアクセスさせる使用の仕方(通常のホスティングサービスやレンタルサーバ)のような環境を構築するには外部サーバから内部の仮想マシンへ到達できるようにする必要がある。

libvirtd サービスをインストールし、オフラインゲスト編集ツールもインストールする。
# yum -y install '*guestf*'

仮想マシン起動
# systemctl start libvirtd

CentOS のネットワーク設定は下記にあるのでバックアップをとっておく。
/etc/sysconfig/network-scripts/

デフォルトの設定ではブリッジに対応していないため、ためネットワークマネージャーを停止する。
# systemctl stop NetworkManager
# systemctl start network
# systemctl disable NetworkManager
# systemctl enable network

netowork を起動させるが、GUI だとこの時点でネットワークアイコンが消える。また GUI でのネットワーク設定がエラーになってできなくなる。CUI からは可能なのであんまり関係ないが GUI版の人は注意。

(1)ブリッジを作成する
# brctl addbr br0
# brctl show

bridge name bridge id STP enabled interfaces
--------------------------------------------------
br0 xxxx.xxxxxxxxxxxx yes ←★ここ空白になっている
virbr0 xxxx.xxxxxxxxxxxx yes virbr0-nic
vnet0

(2)仮想ブリッジに物理NICを接続する
# brctl addif br0 eth0
# brctl show

bridge name bridge id STP enabled interfaces
--------------------------------------------------
br0 xxxx.xxxxxxxxxxxx yes eth0 ←★eth0 が付いた
virbr0 xxxx.xxxxxxxxxxxx yes virbr0-nic

この時点でエラーが出てコケること多い。

古き良き資料では NIC のデバイス名は eth0 が定番だが、今どきのルールは enp0s25。
「en」、「p0」、「s25」と分けて読み、en はイーサネットの略、p0 は PCI Express の0番、s25 は PCI Express の25番スロットを表している。

(3)br0 の設定をちゃんと修正する。ここでは固定IPを利用。
vi /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge" //ここでブリッジ設定
BOOTPROTO="none"
IPADDR="192.168.xx.xx" //ホスト側のIP
GATEWAY="192.168.xx.xx"
STP="on"
DELAY="0.0"

(4)eth0(LANインタフェース)の設定をちゃんとする

DEVICE="eth0"
ONBOOT="yes"
BRIDGE="br1"
NM_CONTROLLED="no"//Network Manager を無効

(5)リスタート

# systemctl restart network
# brctl show //確認

KVM の GUI から設定する場合は、詳細から新規で「ブリッジ」を開き、相手にイーサネットを選択。ホストの IP アドレスを静的に指定する。仮想マシンのインストール画面で 新たな固定 IP を設定する。
選択するのは「Host device eth0 (Bridge 'br0') 」日本語環境だとブリッジ→ホストと表記されているもの。

SSH 接続などを試し、外部から仮想マシンへの接続ができることを確認。

2018/04/08
暇を持て余して、古いPCを Linux 化してみる。ヒューレットパッカードでペン4&Windows XP。このスペックで快適な環境は望めないので、用途は限られるとは思うけど。それにしても WindowsXP って今思うと凄い良い OS でしたね。シリーズの 95 なんたらとか 98 なんたらのクソっぷりもありましたけど、me とか vista …

2018/04/20
関連記事