はじめに
大学でインフラやネットワークを勉強していて、就活のポートフォリオも兼ねて自宅でホームラボを運用しています。手持ちの古いノートPC(Core i7-7500U / 16GB RAM)を自宅サーバーにして、これまでRocky Linuxをベアメタル(OSを物理マシンに直接インストールする構成)で動かしていました。
今回、このベアメタル構成を見直して、Proxmox VE 9.2をハイパーバイザーとして導入し、その上にRocky LinuxをVMとして構築する形に移行しました。
構成イメージはこんな感じです。
[移行前]
ノートPC = Rocky Linux(ベアメタル)
[移行後]
ノートPC = Proxmox VE 9.2(ハイパーバイザー)
└─ VM: Rocky Linux
この記事では、なぜ仮想化に踏み切ったのか、移行前の準備、そしてProxmoxのインストールからRocky LinuxをVMとして立ち上げるところまでを記録として残します。実際に手を動かして踏んだトラブルも含めて書いていきます。
なぜベアメタルから仮想化に切り替えたのか
正直なところ、ベアメタルのRocky Linux 1台でも、それまで動かしていたサービス自体に大きな問題はありませんでした。それでもProxmoxを挟むことにしたのは、勉強になりそうだったのと、運用面でのメリットが大きいと判断したからです。
- スナップショット機能:OS側で何か壊れても、VM単位で一瞬前の状態に戻せる
- バックアップの簡略化:vzdumpでVM全体をまるごとバックアップできる
- コンソールアクセスでの復旧:OSが起動しなくなっても、Proxmoxのコンソールから状態を確認できる
- 将来の拡張性:今後VMを増やしたいときに、ハードウェアの再構築なしで対応できる
「サービスを1台にまとめているのに、わざわざ仮想化までする必要があるのか?」という疑問は自分でも持ちました。でも、単一OS構成であっても上記のような運用上のメリットがありますし、何より仮想化基盤を自分で構築する経験そのものが勉強になると思ったので、導入することにしました。
移行前の準備
ディスク構成の確認
作業を始める前に、改めてディスク構成を確認しました。
lsblk
-
/dev/sda:約920GBのSATAドライブ(旧Rocky Linuxが稼働中) -
/dev/nvme0n1:119GBのNVMeドライブ
この結果を踏まえて、
-
Proxmox本体はNVMe(
/dev/nvme0n1)にインストールして速度を優先する - 旧Rocky Linuxが入っているSATA(
/dev/sda)は、後でProxmoxの二次ストレージ(ISOイメージやvzdumpバックアップの保存先)として再利用する
という方針にしました。SATAの初期化は今回のスコープには含めず、後日の作業として残しています。
データのバックアップ
ベアメタルの環境を消す前に、必要なデータを全部洗い出してバックアップを取りました。ここから先は「ディスクを消してProxmoxを入れる」という不可逆な作業に入るので、失うと困るものは全部別のPC(Windows)に退避させておきます。
データ整合性を保つため、稼働中のサービスを一度停止してからまとめてアーカイブ化し、SFTPでWindows PCに転送しました。
cd ~
sudo tar czf homelab-backup-$(date +%Y%m%d).tar.gz \
(バックアップ対象のディレクトリ・ファイル)
ls -lh homelab-backup-*.tar.gz
バックアップが手元のPCに無事保存できたことを確認してから、次の作業に進みました。
Proxmox VEのインストール
Windows PC側でProxmox VE 9.2のISOをダウンロードし、USBメディアを作成してノートPCから起動しました。インストール先ディスクには、速度を優先して/dev/nvme0n1を指定し、ファイルシステムはext4を選びました。
主な設定値は以下の通りです(IPやホスト名は環境に合わせて設定してください)。
- IPアドレス:自宅LAN内の固定IP(例:
192.168.1.xx) - ホスト名:任意のFQDN
インストール完了後、ブラウザからhttps://<設定したIP>:8006にアクセスして、Proxmoxの管理画面が表示されることを確認しました。Web UIから操作できるようになると、一気に「仮想化基盤を立てた感」が出てきてテンションが上がりました。
Rocky Linux VMの作成
Proxmox上に、旧環境と同じ役割を持たせるRocky Linux VMを作成しました。
- ディスク:60GB(local-lvm)
- CPU:2コア
- メモリ:12GB
- NIC:VirtIO(vmbr0に接続)
- IPアドレス:旧環境と同じIPを維持
旧環境のIPをそのまま引き継いだのは、外部公開まわりの設定を変更せずに済ませたかったからです。新しく振り直すと関連する設定もあちこち直す必要が出てくるので、ここは旧環境に合わせました。
つまずきポイント①:ISOのアップロードとCD/DVDドライブの設定
VMを作っただけではインストーラーは起動しません。ProxmoxのlocalストレージにRocky LinuxのISOをアップロード(OSのISOインストールするURLからでもできます)し、VMの「Hardware」タブでCD/DVDドライブにそのISOを割り当てる必要があります。さらに「Options」タブの「Boot Order」でCD/DVDが起動対象に入っているかも確認しました。ここの設定が漏れているとそもそもインストーラーまで辿り着けないので、最初の関門でした。
つまずきポイント②:Guest Agent導入前のシャットダウン操作
VM作成直後、Qemu Guest Agentがまだインストールされていない状態で「Shutdown」を実行しても反応がない、という場面がありました。
調べてみると、Guest Agentが入っていないと、ProxmoxからのACPIシャットダウン信号をゲストOS側がうまく処理できないことが原因でした。この段階では「Stop」(強制停止に近い動作)を使うか、OSのセットアップ後にGuest Agentを入れてから「Shutdown」を使う、という使い分けが必要だと分かりました。仕組みを理解すると挙動の理由が腑に落ちるので、いい勉強になりました。
Rocky Linuxのインストール
CD/DVDドライブの設定が正しくできていれば、VMを起動するとRocky Linuxのインストーラーが立ち上がります。ここから先は、以前ベアメタルでRocky Linuxを入れたときと基本的には同じ流れです。
- 言語選択(日本語を選択)
- インストール先ディスクの設定(VMに割り当てた仮想ディスクを選択)
- ネットワーク設定(旧環境と同じIPを固定で設定)
- ユーザー・パスワードの設定
インストールが完了してVMを再起動し、Rocky Linuxが正常に立ち上がってログインできることを確認できたところで、今回のゴールである「Proxmox上でRocky LinuxがVMとして動く」状態が完成しました。
まとめ
今回はベアメタルのRocky LinuxをProxmox VE 9.2に載せ替えて、その上にRocky LinuxをVMとして構築するところまでをやりました。実際に手を動かして得られた学びは、座学だけでは身につかない実務寄りの内容ばかりでした。
- 不可逆な作業の前に、データを別マシンへ確実に退避させておく重要性
- VMにISOを割り当ててブートさせるまでの一連の設定(ISOアップロード、CD/DVDドライブ、Boot Order)
- Guest Agent導入前後でシャットダウン操作の挙動が変わるという仕組みの理解
今後は、旧Rocky Linuxが入っていた/dev/sdaをProxmoxの二次ストレージ(ISOイメージ・vzdumpバックアップ用)として活用する作業や、VM上でのサービス構築を進めていく予定です。同じように古いノートPCで自宅サーバーを始めてみたい人の参考になればうれしいです。