GUIが選択肢にないとき:午前2時のトラブル劇
午前2時、静寂を破って電話が激しく鳴り響きました。設定ミスにより、重要なステージングサーバーが「消失」してしまったのです。開発チームは、顧客が起き出す前に修正版をテストするため、即座に同等の環境を必要としていました。しかし、予備の物理サーバーはUbuntu ServerのMinimal版。デスクトップ環境も、X11フォワーディングも、当然ながらvirt-managerの影も形もありません。
もし、あなたがVNCをインストールしようとしたり、SSH経由で無理やりグラフィカルインターフェースを表示させようとしているなら、今すぐ止めてください。それは貴重な時間の無駄です。このような時、virt-installこそが唯一の救世主となります。このツールは強力なだけでなく、自動化タスクにおいて極めて高い安定性を誇ります。
私のホームラボ環境では、Proxmoxで10台以上のVMを管理していますが、純粋なLinuxノードに対しては依然としてvirt-installを優先して使用しています。コマンドを入力し、数MB単位のRAMやCPUサイクルを正確に制御できる感覚は、マウス操作のツールでは決して味わえない絶対的な安心感をもたらしてくれます。
なぜvirt-managerではなくvirt-installを使うべきなのか?
virt-installはvirt-instパッケージに含まれるコマンドラインツールで、libvirtライブラリと直接連携します。ウィザード形式で何度もフォームを入力する代わりに、たった一行のコマンドで仮想マシンのすべてのパラメータを定義できます。
最大のメリットは「再現性」です。シンプルなBashスクリプトがあれば、全く同じ構成のVMを20台同時に、わずか数分でデプロイできます。これは、DevOpsやプロフェッショナルなLinuxシステム管理の分野でステップアップを目指すなら、必須のスキルです。
実戦環境の準備
開始する前に、システムに必要なパッケージがインストールされていることを確認してください。virtinstとKVMのデーモンが必要になります。
sudo apt update
sudo apt install virt-inst libosinfo-bin -y
ちょっとしたコツ:osinfo-query osコマンドを実行して、正しいOS識別子を確認しておきましょう。--os-variantパラメータを正確に指定することで、KVMは自動的にvirtioドライバーを選択します。このドライバーを使用することで、ディスクI/Oパフォーマンスが通常のIDEドライバーより最大30%向上することがあります。
実践:Ubuntu Server VMを一瞬で作成する
例えば、2 vCPU、2GB RAM、20GBのディスクを持つ Ubuntu 22.04の仮想マシンを構築する必要があるとします。GUIを開く代わりに、以下のコマンドを実行します。
virt-install \
--name ubuntu-server-01 \
--vcpus 2 \
--memory 2048 \
--disk path=/var/lib/libvirt/images/ubuntu-01.qcow2,size=20 \
--os-variant ubuntu22.04 \
--location /var/lib/libvirt/images/ubuntu-22.04-live-server-amd64.iso \
--network bridge=br0 \
--graphics none \
--extra-args 'console=ttyS0,115200n8 serial'
重要なパラメータの解説:
- –name: 仮想マシン名。後で
virshで管理しやすいよう、スペースを含まない短い名前にしましょう。 - –memory:
--memory 2048,maxmemory=4096のように指定することもできます。このオプションにより、仮想マシンを停止せずにRAMをホットプラグでアップグレードできるようになります。 - –disk:
qcow2形式のイメージファイルは、スナップショットをサポートし、実際に使用している容量のみを消費するため、最適な選択肢です。 - –location: ISOファイルを指定します。注意:
libvirtは専用のユーザーで動作するため、Permission Deniedエラーを避けるためにISOは/var/lib/libvirt/images/内に置いてください。 - –graphics none & –extra-args: これはインストール画面全体を現在のコンソールに転送するテクニックです。現在開いている SSH ウィンドウ内で OS のインストール作業を直接行うことができます。
Cloud-initでプロレベルへステップアップ
ISO経由で一歩ずつ手動でインストールが終わるのを待つのは、非常に時間がかかります。プロセスを完全にマスターするには、Cloud ImageとCloud-initを活用すべきです。
ゼロからインストールする代わりに、公式(Ubuntu Cloud Imagesなど)からビルド済みの.qcow2ファイルをダウンロードします。user-data設定ファイルと組み合わせることで、仮想マシンは起動直後に自動的にSSHキーを認識し、ネットワーク設定を完了します。これにより、デプロイ時間は15分から40秒足らずに短縮されます。
virt-install \
--name fast-vm-01 \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/fast-vm.qcow2,backing_store=/var/lib/libvirt/images/ubuntu-22.04-cloud.img \
--import \
--network bridge=br0 \
--cloud-init user-data=/path/to/config.yaml \
--noautoconsole
backing_store

