kuroの覚え書き

96の個人的覚え書き

CentOS7に仮想環境を構築

だいぶ仕事がまとまってきて、新しく学生なども入ってくるようになった。こうなるとそのうちインフォマティクスをやりたいという学生もきっと入ってくるだろう。最初のうちはとりあえず自分の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方式を試す。
f:id:k-kuro:20200620122334p:plain

この場合一旦ホストにログインしないと仮想環境に外から直接アクセスできないのでちょっと不便。ただしその分セキュリティーも高くできるかな。
現在の場合ホストがサブLANに接続しているし、完全に外部からアクセスしようとすると外→VPN→学内LAN→Lab内LAN→クラスタ用サブLAN→KVMホスト→仮想環境という感じでめちゃめちゃ奥底にあることになる。最終的にはLab内LANから直接アクセスできるくらいにはしたい。

# virsh attach-interface kvm1 network default

以上。
これだけで仮想環境kvm1から外のネットワークまで出ることができる様になった。pingyum updateもOKなはず。

設定を変更すべくネットワークを遮断するなら

virsh detach-interface kvm1 --type network --mac XX:XX:XX:XX:XX:XX

MACアドレスはkvm1のなかでip aで調べる。仮想MACなのでattach-interfaceするたびにランダムに変更されるため注意。


次にブリッジ接続をためす。
これだと物理NICに仮想アドレスを接続するのでホストに一旦ログインしなくてもsshで入れるはず。
f:id:k-kuro:20200620122434p:plain
とおもって早速ちょっと設定をし始めたらすぐにホストごとハングして、にっちもさっちもいかなくなった。

# brctl addbr br0
# brctl addif br0 eno0

こうするとだめだった。

やっぱブリッジは難しい。少なくとも実機のそばでやらないと、遠隔地からネットワーク越しにやってると、ネットワークの設定をミスった時点で何もできなくなる。というわけで休日の遠隔アクセス終了っと。


ちなみにコンソールから抜けるときはctrl+]