3 つの簡単で素早い自家製 Qemu KVM VPS レシピ! - ほぼすべての Linux ディストリビューションで自分で作れます!

3 つの簡単で素早い自家製 Qemu KVM VPS レシピ! - ほぼすべての Linux ディストリビューションで自分で作れます!

導入

KVMロゴ

既存の Linux マシン上で独自の追加の KVM VPS を簡単に起動できます。

別の Linux ディストリビューションを試してみませんか? あるいは、お気に入りのディストリビューションの別の設定を試してみませんか?

使い慣れた、すでにインストールされているシステムを安全かつ変更せずに維持しながら、不確かな複雑なものをインストールしてテストするのはどうでしょうか?

おそらく、多くの方と同じように、余分なIPアドレスをお持ちではないかもしれません。既存のネットワーク接続で、追加のKVM VPSを簡単に実行できます。

Linux がすでにインストールされたラップトップ、デスクトップ、VPS、または専用サーバーで作業していますか?

ターミナルに数行のコードを入力したり、切り取って貼り付けたりできますか?

上記のすべてのメリットを享受したい場合は、詳細をお読みください。

既存のLinuxインストール内に、独自のLinux VPSを1つまたは12個構築してみましょう。これは、ほぼすべてのLinuxディストリビューションの比較的新しいバージョンで動作するはずです。

スリップ

slirp を使用しているため、追加の IP アドレスや特別なネットワーク設定は必要ありません。slirpqemu に組み込まれたデフォルトのネットワークシステムを提供します。

Slirp は過小評価されているようです!よく2つの問題が挙げられます。1つ目は、Slirp のネットワークが「遅い」と表現されることです。2つ目は、権限のないユーザーの場合、Slirp はICMP プロトコルをサポートしていないため、 ping が機能しないことです。

私にとって、slirpの速度は通常使用には問題ないようです。pingは便利で、ほとんどの人はslirpでpingを取得できます。ほとんどの人は自分のマシンやVPSでroot権限を持っています。そして、root権限があれば、セキュリティを過度に心配することなく、自分のマシンで自分専用のVPSを立ち上げることができます。

Slirpを使った3つの簡単なVPSレシピ

3つの簡単なVPSレシピをご紹介します。まずは、権限のないユーザーでも作成できるシンプルなVPSです。権限のないユーザーを「leb-vps」と呼びます。次に、このユーザーをkvmグループに追加します。これにより、基本的なVPSにKVMソースをかけて高速化できます。最後に、VPSをrootとして起動し、pingが通るようにします。

シンプルでシンプルなVPS

シンプルでシンプルな方法は、root権限のない非権限ユーザーでも動作します。このVPSにはKVMがないため、速度は低下します。また、pingも機能しません。

まず、画像を取得します。

Debian sidの場合:

root@debian:~# wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-amd64-daily.qcow2

leb-vps@debian:~$ wget https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-amd64-daily.qcow2

Red Hat をご希望の場合は、Fedora rawhide イメージがhttps://openqa.fedoraproject.org/nightlies.html から入手できます。

次に、権限のないユーザー(「leb-vps」)としてtmuxに入ります。

leb-vps@debian:~$ tmux

次に、VPS を起動します。

leb-vps@debian:~$ qemu-system-x86_64 -nographic -m 1G -hda \
> /home/leb-vps/debian-sid-nocloud-amd64-daily.qcow2

ブートメッセージが何行もスクロール表示されます。1分ほど待つ場合があります。しばらくすると、ログインプロンプトが表示されます。ログイン名は「root」です。パスワードは不要です。

メモリサイズについては、「-m」フラグを256MBと0.5GBに設定してみました。どちらも正常に起動しました。

このSLIRP VPSにはデフォルトのネットワーク機能が組み込まれています。ホストと同じIPアドレスを使用しますが、ICMPはサポートされていないため、pingは機能しません。

root@localhost:~# ping -c 2 www.google.com
PING www.google.com (142.251.45.68) 56(84) bytes of data.

— www.google.com ping統計 —
送信パケット数2、受信パケット数0、パケットロス100%、時間1022ms

root@localhost:~# curl icanhazip.com
66.11.114.203
root@localhost:~# curl -6 icanhazip.com
2602:ffc5:105:40f::203
ルート@ローカルホスト:~#

おいしい KVM ソースを備えた VPS!

美味しいKVMソースを備えたVPSを構築するには、ルート権限、または少なくともkvmグループのメンバーシップが必要です。kvmグループはDebian sidにデフォルトで存在します。

root@debian:~# grep kvm /etc/group
kvm:x:110:
root@debian:~# ls -l /dev | grep kvm
crw-rw---- 1 root kvm 10, 232 May 19 20:33 kvm
crw-rw---- 1 root kvm 10, 238 May 19 20:33 vhost-net
crw-rw---- 1 root kvm 10, 241 May 19 20:33 vhost-vsock
root@debian:~#

ユーザー leb-kvm を kvm グループに追加しましょう。

root@debian:~# usermod -a -G kvm leb-vps
root@debian:~#

次に leb-vps になります。

root@debian:~# su - leb-vps

KVM を搭載しているため、この VPS の起動が高速化されていることがわかります。ただし、ping はまだ動作しません。ユーザー leb-vps が VPS を起動するための簡単なスクリプトを以下に示します。

tmux 内でスクリプトを起動することを忘れないでください。

leb-vps@debian:~$ cat start-slirp-kvm-vps.sh
#!/bin/bash
# Start qemu and kvm with user mode "slirp" networking.
# Please see http://www.linux-kvm.org/page/Networking
# Default login "root". No password needed.

qemu システム x86_64 \
-ノグラフィック\
-cpu ホスト -enable-kvm \
-m 1G \
-hda /home/leb-vps/debian-sid-nocloud-amd64-daily.qcow2
leb-vps@debian:~$

予想通り、pingは機能しません。ただし、ホストシステムのIPアドレスにはネットワーク機能があります。

root@localhost:~# ping -c 2 www.google.com
PING www.google.com (142.250.138.104) 56(84) bytes of data.

— www.google.com ping統計 —
送信パケット数2、受信パケット数0、パケットロス率100%、時間1013ms

root@localhost:~# curl icanhazip.com
66.11.114.203
root@localhost:~# curl -6 icanhazip.com
2602:ffc5:105:40f::203
ルート@ローカルホスト:~#

動作中のPingのルートとして

以下は、root が ping が機能する slirp KVM VPS を起動するために使用できる小さなスクリプトです。

root@debian:~# cat start-qemu-kvm-slirp.sh
#!/bin/bash
# Start qemu with user mode "slirp" networking.
# Please see http://www.linux-kvm.org/page/Networking
# Default login "root". No password needed.

qemu システム x86_64 \
-ノグラフィック\
-cpu ホスト -enable-kvm \
-m 1G \
-hda /root/debian-sid-nocloud-amd64-daily.qcow2
ルート@debian:~#

VPS を起動するには、tmux を起動し、tumx 内からスクリプトを実行します。

root@debian:~# tmux

root@debian:~# /root/start-qemu-kvm-slirp.sh

今回は ICMP が機能します:

root@localhost:~# ping -c 2 www.google.com
PING www.google.com (142.251.45.68) 56(84) bytes of data.
64 bytes from dfw25s48-in-f4.1e100.net (142.251.45.68): icmp_seq=1 ttl=255 time=s
64 bytes from dfw25s48-in-f4.1e100.net (142.251.45.68): icmp_seq=2 ttl=255 time=s

— www.google.com ping統計 —
送信パケット2個、受信パケット2個、パケットロス0%、時間1002ms
rtt 最小/平均/最大/平均偏差 = 2.251/2.352/2.453/0.101 ミリ秒
root@localhost:~# curl -4 icanhazip.com
66.11.114.203
root@localhost:~# curl -6 icanhazip.com
2602:ffc5:105:40f::203
ルート@ローカルホスト:~#

仮想化のためのハードウェアサポート

VMの作成に問題がある場合、仮想化に必要なハードウェアサポートが不足していることが原因の1つである可能性があります。以下のスクリプトを実行すると、仮想化に必要なハードウェアサポートが有効になっているか無効になっているかがわかります。

root@debian:~# cat cpu-virt.sh
#!/bin/bash
# From https://github.com/masonr/yet-another-bench-script/blob/master/yabs.sh
# Lines 210-212
# Thanks to Mason and yabs developers!

CPU_VIRT=$(cat /proc/cpuinfo | grep 'vmx\|svm')
[[ -z “$CPU_VIRT” ]] && CPU_VIRT=”\xE2\x9D\x8C 無効” || CPU_VIRT=”\xE2\x9C\x94 有効”
echo -e “VM-x/AMD-V : $CPU_VIRT”
ルート@debian:~#

Qemuのインストール

tmux と qemu をインストールする必要があるかもしれません。

apt-get update && apt-get upgrade -y
apt-get install tmux qemu-system

画像検証

Debian クラウド イメージのチェックサムは、https://cloud.debian.org/images/cloud/sid/daily/latest/SHA512SUMS にあります。

leb-vps@debian:~$ wget -q https://cloud.debian.org/images/cloud/sid/daily/latest/SHA512SUMS
leb-vps@debian:~$ sha512sum --ignore-missing -c SHA512SUMS
debian-sid-nocloud-amd64-daily.qcow2: OK
leb-vps@debian:~$

イメージを起動して実行するとイメージが変更されるため、起動して実行する前に確認してください。

辞める方法

VPS を実行したまま tmux を終了するには、「Ctrl-b」と入力してから「d」と入力します。
tmux とすでに実行中の VPS に再度入るには:

tmux attach

VPS を停止して tmux を終了するには:

shutdown -h now
VPS のシャットダウン後にコマンド プロンプトに戻ったら、「exit」と入力します。

su - leb-vpsを使用して権限のないユーザーになった後、root に戻るには、「exit」と入力します。

追加リソース

私が初めて KVM のトリックを試したとき、本当に役立ったリソースはLinux-KVM.org のネットワーク構成ページでした。

おそらく世界で最も徹底的な qemu チュートリアルはDongli Zhang によるものです。

結論

QEMUのデフォルトネットワークツールであるslirpを使用するには、3つの方法があります。KVMなしでユーザーレベルのQEMU仮想マシンを作成したり、KVMを使用してKVMグループ対応のユーザーレベルのマシンを作成したり、ICMPが機能するルートで起動したKVMサーバーを作成したりできます。

おすすめの記事