だいぶ仕事がまとまってきて、新しく学生なども入ってくるようになった。こうなるとそのうちインフォマティクスをやりたいという学生もきっと入ってくるだろう。最初のうちはとりあえず自分のPCでどうにかしてもらえばいいが、そのうちきっとサーバを触ることになるに違いない。
自分の経験からして、最初の頃はメモリオーバーフローだとかでしょっちゅうハングアップさせてたから、やはり最初は実機ではなく仮想環境だけでやってもらうのが得策だろう。
ということで、休日を利用して仮想環境構築を試してみるのであった。
まずは昨日RAIDをキャンセルしてCentOS7をインストールしたRX200S6 (E5630*2/4G/100G)を用意する。ネットワーク上はメインサーバの内側のサブLANに位置しているが、クラスタには組み込んでおらず、NISによるユーザー共有もあえて行っていない。とりあえずはできるだけシンプルな構成で試してみたいからね。
# yum install -y qemu-kvm libvirt virt-install libvirt-python libvirt-client
んでサクッと起動
# systemctl start libvirtd # systemctl enable libvirtd
NASにおいてあったCentOS-7-x86_64-DVD-1908.isoを/tmp/にコピーしておいて
# virt-install --name kvm1 --memory 1024 --disk size=20 --vcpu 4 --location /tmp/CentOS-7-x86_64-DVD-1908.iso --network default --graphics none --extra-args='console=tty0 console=ttyS0'
実機のメモリ・HDDスペックにあまり余裕が無いのでミニマムなサイズで試す。
インストールの開始中... ファイル .treeinfo を読み出し中... | 354 B 00:00 ファイル vmlinuz を読み出し中... | 6.4 MB 00:00 ファイル initrd.img を読み出し中... | 53 MB 00:00 割り当て中 'kvm1.qcow2' | 20 GB 00:05 ドメイン kvm1 に接続しました エスケープ文字は ^] です [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 [ 0.000000] Command line: console=tty0 console=ttyS0 ・・・・・・・ Starting installer, one moment... anaconda 21.48.22.156-1 for CentOS 7 started. * installation log files are stored in /tmp during the installation * shell is available on TTY2 * when reporting a bug add logs from /tmp as separate text/plain attachments 02:32:38 Not asking for VNC because we don't have a network ================================================================================ ================================================================================ Installation 1) [x] Language settings 2) [!] Time settings (English (United States)) (Timezone is not set.) 3) [!] Installation source 4) [!] Software selection (Processing...) (Processing...) 5) [!] Installation Destination 6) [x] Kdump (No disks selected) (Kdump is enabled) 7) [ ] Network configuration 8) [!] Root password (Not connected) (Password is not set.) 9) [!] User creation (No user will be created) Please make your choice from above ['q' to quit | 'b' to begin installation | 'r' to refresh]:
sshでアクセスしてインストールしているのでGUIは開かずこんな感じでcuiインストーラが立ち上がる。
まあ設定内容はGUIのインストールをやったことがあればだいたい想像できるはず。
とりあえずネットワークだけ何も設定せずにインストールしてみる。
Performing post-installation setup tasks . Configuring installed system . Writing network configuration . Creating users . Configuring addons . Generating initramfs . Running post-installation scripts . Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA Installation complete. Press return to quit
こんな感じでインストール完了。
returnを押すとずらずらと見慣れた起動シークエンスが流れ、
CentOS Linux 7 (Core) Kernel 3.10.0-1062.el7.x86_64 on an x86_64 localhost login:
と無事に起動した。
なお、インストール〜再起動するとKVM内でシステムが立ち上がるが、起動していない状態から起動するにはコンソールから
# virsh list --all Id 名前 状態 ---------------------------------------------------- 4 kvm1 実行中 # virsh start kvm1
とする
シャットダウンは普通に仮想環境内で
sudo shutdown -h now
すればいいが、
仮想環境外から
# virsh shutdown kvm1
で強制終了もできるようだ。
なお起動しても裏で起動しているだけでコンソールに入れないので
# virsh console kvm1
としてコンソールに入る。
仮想環境をGUIで作成したときは
# virt-viewer kvm1
でデスクトップを表示できる。
この状態ではネットワークにはつながっていないので、次はネットワークの設定だな。
まずはお手軽なIPマスカレードによるNAT方式を試す。
この場合一旦ホストにログインしないと仮想環境に外から直接アクセスできないのでちょっと不便。ただしその分セキュリティーも高くできるかな。
現在の場合ホストがサブLANに接続しているし、完全に外部からアクセスしようとすると外→VPN→学内LAN→Lab内LAN→クラスタ用サブLAN→KVMホスト→仮想環境という感じでめちゃめちゃ奥底にあることになる。最終的にはLab内LANから直接アクセスできるくらいにはしたい。
# virsh attach-interface kvm1 network default
以上。
これだけで仮想環境kvm1から外のネットワークまで出ることができる様になった。pingもyum updateもOKなはず。
設定を変更すべくネットワークを遮断するなら
virsh detach-interface kvm1 --type network --mac XX:XX:XX:XX:XX:XX
MACアドレスはkvm1のなかでip aで調べる。仮想MACなのでattach-interfaceするたびにランダムに変更されるため注意。
次にブリッジ接続をためす。
これだと物理NICに仮想アドレスを接続するのでホストに一旦ログインしなくてもsshで入れるはず。
とおもって早速ちょっと設定をし始めたらすぐにホストごとハングして、にっちもさっちもいかなくなった。
# brctl addbr br0 # brctl addif br0 eno0
こうするとだめだった。
やっぱブリッジは難しい。少なくとも実機のそばでやらないと、遠隔地からネットワーク越しにやってると、ネットワークの設定をミスった時点で何もできなくなる。というわけで休日の遠隔アクセス終了っと。
ちなみにコンソールから抜けるときはctrl+]