QEMU 経由の IP-KVM

QEMU 経由の IP-KVM

KVM のないサーバー上でオペレーティング システムの起動に関する問題をトラブルシューティングするのは簡単な作業ではありません。 リカバリ イメージと仮想マシンを使用して、自分用の KVM-over-IP を作成します。

オペレーティング システムに問題が発生した場合 リモートサーバー上で、管理者はリカバリイメージをダウンロードし、必要な作業を実行します。この方法は、障害の原因がわかっていて、サーバーにインストールされているリカバリ イメージとオペレーティング システムが同じファミリーのものである場合に効果的です。障害の原因がまだ不明な場合は、オペレーティング システムのロードの進行状況を監視する必要があります。

リモートKVM

IPMI やインテル® vPro™ などの組み込みツールを使用するか、IP-KVM と呼ばれる外部デバイスを介してサーバー コンソールにアクセスできます。リストされているテクノロジーのすべてが利用できない場合があります。ただし、これで終わりではありません。サーバーをリモートで再起動して、Linux オペレーティング システムに基づくリカバリ イメージを作成できる場合は、KVM-over-IP を迅速に構成できます。

リカバリ イメージは、RAM に配置される本格的なオペレーティング システムです。したがって、仮想マシン (VM) を含むあらゆるソフトウェアを実行できます。つまり、サーバー オペレーティング システムが実行される VM を起動できます。 VM コンソールへのアクセスは、たとえば VNC 経由で整理できます。

VM 内でサーバー オペレーティング システムを実行するには、サーバー ディスクを VM ディスクとして指定する必要があります。 Linux ファミリのオペレーティング システムでは、物理ディスクは次の形式のブロック デバイスで表されます。 / dev / sdX、通常のファイルと同様に操作できます。

QEMU や VirtualBox などの一部のハイパーバイザーでは、VM データを「生」形式、つまりハイパーバイザー メタデータのないストレージ データのみで保存できます。したがって、サーバーの物理ディスクを使用して VM を起動できます。

この方法では、回復イメージとその中の VM を起動するためのリソースが必要です。ただし、4 GB 以上の RAM がある場合、これは問題になりません。

環境の準備

軽量でシンプルなプログラムを仮想マシンとして利用可能 QEMU、ほとんどの場合、これはリカバリ イメージの一部ではないため、個別にインストールする必要があります。当社がお客様に提供するリカバリイメージは、 アーチのLinux、パッケージマネージャーを使用します パックマン.

最初に行う必要があるのは、リカバリ イメージが最新のソフトウェアを使用していることを確認することです。次のコマンドを使用して、すべての OS コンポーネントを確認して更新できます。

pacman -Suy

アップデート後、QEMU をインストールする必要があります。 pacman によるインストール コマンドは次のようになります。

pacman -S qemu

qemu が正しくインストールされていることを確認してみましょう。

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

すべてが正しい場合は、リカバリ イメージを使用する準備ができています。

仮想マシンの起動

まず、VM に割り当てるリソースの量を決定し、物理ディスクへのパスを見つける必要があります。この例では、2 つのコアと 2 GB の RAM を仮想マシンに割り当て、ディスクはその途中に配置されます。 / dev / sdaに и / dev / sdb。 VM を起動しましょう。

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio

各パラメータの意味についてもう少し詳しく説明します。

  • -m 2048M — 2 GB の RAM を VM に割り当てます。
  • -net NIC -net ユーザー — NAT (ネットワーク アドレス変換) を使用して、ハイパーバイザーを介してネットワークに簡単な接続を追加します。
  • -有効-kvm — 完全な KVM (カーネル仮想マシン) 仮想化を有効にします。
  • -cpu ホスト — 仮想プロセッサにサーバー プロセッサのすべての機能を取得するように指示します。
  • -M PC — PC 機器の種類。
  • -smp 2 — 仮想プロセッサはデュアルコアである必要があります。
  • -vga標準 — 大画面解像度をサポートしていない標準ビデオ カードを選択します。
  • -drive file=/dev/sda、format=raw、index=0、media=disk
    • ファイル=/dev/sdX — サーバーディスクを表すブロックデバイスへのパス。
    • フォーマット=生 — 指定されたファイルでは、すべてのデータが「生」形式、つまりディスク上にあることに注意してください。
    • インデックス= 0 — ディスク番号。後続のディスクごとに 1 つずつ増加する必要があります。
    • メディア=ディスク — 仮想マシンはこのストレージをディスクとして認識する必要があります。
  • -vnc :0、パスワード — デフォルトで VNC サーバーを 0.0.0.0:5900 で起動し、認証としてパスワードを使用します。
  • -標準出力をモニターする — 管理者と qemu 間の通信は、標準の入出力ストリームを通じて行われます。

すべてが正常であれば、QEMU モニターが開始します。

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)

認証はパスワードを使用して行われることを示しましたが、パスワード自体については示しませんでした。これは、vnc パスワード変更コマンドを QEMU モニターに送信することで実行できます。重要な注意事項: パスワードは 8 文字を超えることはできません。

(qemu) change vnc password
Password: ******

この後、サーバーの IP アドレスと指定したパスワードを使用して、任意の VNC クライアント (たとえば、Remmina) に接続できます。

QEMU 経由の IP-KVM

QEMU 経由の IP-KVM

読み込み段階で起こり得るエラーを確認するだけでなく、それらに対処することもできるようになりました。

完了したら、仮想マシンをシャットダウンする必要があります。これは、OS 内でシャットダウン信号を送信するか、コマンドを実行することで実行できます。 システムパワーダウン QEMU モニターで。これはシャットダウン ボタンを 1 回押すのと同じです。仮想マシン内のオペレーティング システムはスムーズにシャットダウンされます。

オペレーティング システムのインストール

仮想マシンはサーバー ディスクへの完全なアクセス権を持っているため、オペレーティング システムを手動でインストールするために使用できます。唯一の制限は RAM の量です。ISO イメージは常に RAM に配置できるわけではありません。画像を保存するために 4 GB の RAM を割り当てましょう。 / mnt:

mount -t tmpfs -o size=4G tmpfs /mnt

FreeBSD 12.0 オペレーティング システムのインストール イメージもダウンロードします。

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

これで、VM を起動できるようになりました。

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
-boot d

Флаг -ブートd CD ドライブから起動してインストールします。 VNC クライアントに接続し、FreeBSD ブートローダーを確認します。

QEMU 経由の IP-KVM

インターネットへのアクセスには DHCP 経由のアドレスの取得が使用されていたため、構成後に、新しくインストールしたシステムを起動してネットワーク設定を修正する必要がある場合があります。場合によっては、サーバーにインストールされているネットワーク カードと VM でエミュレートされているネットワーク カードが異なるため、ネットワーク アダプター ドライバーのインストールが必要になることがあります。

まとめ

サーバー コンソールへのリモート アクセスを構成するこの方法は、サーバー リソースの一部を消費しますが、サーバー ハードウェアに特別な要件を課さないため、ほぼすべての状況で実装できます。このソリューションを使用すると、ソフトウェア障害の診断とリモート サーバーの機能の復元がはるかに簡単になります。

出所: habr.com

コメントを追加します