LoginSignup
17
22

More than 1 year has passed since last update.

Ubuntuにkvm/QEMUをいれてCockpitで快適に仮想マシンサーバを運用してみる

Last updated at Posted at 2022-09-16

ご家庭にある開発サーバっぽくつかうMini PCが低スペック×複数台になってしまったので、タイムセールで買ったMini PCに集約することにしました。ここではUbuntuで仮想サーバを構築したメモを残します。

今回入れ替えた環境

    • Intel NUCほかMini PC×3台
    • CPUスコア 1500-2000おもにCeleronなど
    • Ryzen 4700U
    • RAM 16GB SSD 500GB
    • 5万円くらい
    • Windows 11を削除してUbuntu 22をインストール

今回のゴール

各マシンを集約して効率運用したい。先日試したvscode-serverやDockerホスト用、家庭内DNSサーバほかツール群、たまに使うクリーンなWindows検証環境、その他立てたいときに使うサーバ用など、マシンリソースの効率化と管理の容易さを上げたいなと思っていました。

もともとはvirtualboxで行おうと思っていたのですが、kvmのパフォーマンスがいいらしいと聞いてkvm/QEMU環境で構築することにしました。サーバ用でGUI環境はインストールしていないものの、Webコンソールなんかがあったら便利だなーと思っていました。

検索したところ、Cockpitと呼ばれる管理コンソールが便利らしく、こいつを使うことにしました。

構築手順

前提:Ubuntu 22 ServerのisoをダウンロードしてUbuntu Server (minimal)でインストールした状態からスタートします。

(たぶん不要)UbuntuのLVパーティションをディスク目いっぱいに広げる

なんかUbuntu 22では標準でLV(論理ボリューム)になっていたのですが、インストーラーデフォルトだと100GBしかアロケーションされていませんでした。そこで目一杯広げます。

## 確認
$ df -h
$ lsblk
## 広げる
$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
## 確認
$ lsblk
## ファイルシステムを追随させる
$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
## 確認
$ df -h

kvm/QEMUのインストール

おおむねこのサイトのとおり(Bridgeネットワーク以降はCockpitで実施します)

# 仮想化対応CPUか確認
$ egrep -c '(vmx|svm)' /proc/cpuinfo
8
# 0でなければOK 無事8コアぶん認識されてる
$  sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system \
   virtinst libvirt-clients bridge-utils

仮想化daemonの有効化

$ sudo systemctl enable --now libvirtd
$ sudo systemctl start libvirtd
$ sudo systemctl status libvirtd

kvmグループにユーザを追加

$ sudo usermod -aG kvm $USER
$ sudo usermod -aG libvirt $USER

cockpit(WebGUI)をインストール

sudo apt install cockpit -y
sudo systemctl status cockpit
sudo systemctl start cockpit
sudo systemctl status cockpit

これでhttps://{IPアドレス}:9090/でWebGUIにアクセスできます。

image.png

かっちょいい画面が立ち上がりました。ここにUbuntuのユーザでログインします。

ネットワーク管理をNetworkManagerに変更

標準のUbuntu Serverではnetplanによるネットワーク管理になっていたので、Cockpitで扱えるようにNetworkManagerでの管理に変更します。

$ sudo vim /etc/netplan/00-installer-config.yaml 


# This is the network config written by 'subiquity'
network:
  #  ethernets:
  #  enp1s0:
  #    dhcp4: true
  renderer: NetworkManager
  version: 2

version以外の定義をコメントアウトし、renderer: NetworkManagerを追加しました。

有効にします

$ sudo netplan generate
$ sudo systemctl restart NetworkManager

これで、Cockpitからネットワークを管理することができるようになりました。

image.png

bridgeネットワークの作成

※この作業は既存のネットワークを一度切断し、あたらしいbridgeネットワークで接続するため、DHCP環境ではIPアドレスの変更を伴います。そのためリモート経由でなくオフライン操作ができる環境で作業しましょう。

ちなみに今回bridgeネットワークを作成しましたが、どういう用途でどのネットワークを作成すべきかは、この記事がわかりやすいのでおススメです。kvmようではありませんが、もともとvboxユーザなので。。。

bridgeネットワークの作成はCockpit左側のネットワーキングから、「ブリッジの追加」を押して、既存のインターネットにつながるデバイスを選択するだけです。

image.png

適用すると、リモートから作業している場合いきなり切断されるのでご注意ください。あらたにip addrなどでIPアドレスを調べて、再接続します。

仮想マシンの作成

仮想マシンもこの勢いで作っていきましょう。cockpitにプラグインがありますので導入します。

$ sudo apt install cockpit-machines

Web画面をリロードすると、仮想マシンというメニューが現れます。ここから仮想マシンを作成するのですが、リモートからダウンロードする方法ではうまくいかなかったため、isoイメージをダウンロードしておきました。

$ wget "https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-live-server-amd64.iso"

そうすると、メモリとストレージ容量を選択するだけですぐに作成することができます。

image.png

起動中の仮想マシン画面を開くとこんな感じで、勝手にVNCからコンソール画面が転送されてきてめちゃくちゃ使いやすいです。

image.png

インストール完了時にcdromのejectに失敗したので、そこだけコマンド打ち込みました。

$ virsh change-media ubuntu-code --path sda --eject --live

まとめ

ベンチはとっていませんがいろいろインストールしたりソースをビルドした感じ、なかなかパフォーマンスは良さそうです。管理画面からvCPUの数やメモリの量を再割り当て可能なので、とても使いやすい感じです。ぜひお手持ちの仮想環境をひっこしする際には候補に入れてあげてください。

17
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
22