4 min read

自宅ESXiをProxmoxVEに移行した

2023年11月にVMwareがBroadcomに買収され、2024年2月には無償版ESXiの提供が終了した。
うちでは閉じた環境でESXiを使っていたが、アップデートがないというのはやはりどうなのかと思いProxmox VEに移行することにした。

それとこの機にサーバー本体を新調した。

次期メイン鯖を買った
次期メインサーバーを買った。高スペックで安く出品されていた。メモリもマウンタも買い足して高スペックをさらに増強。FWアップデートも行った。

ISOからのインストールはふつうの作業なので省略。
Proxmox VEの初期設定だけを主に書き残しておく。

PVE Repository

初期状態ではサブスクリプション用のリポジトリが設定されているので乞食用に変更する。

左側のナビゲーションで「データセンター」→「proxmox(ホスト名)」ときて、その中の「アップデート」→「リポジトリ」を開く。

以下の画像の通りに設定する。

Before After
  • コンポーネントが enterprise pve-enterprise のものを無効化
  • 無効化したものと同じものの乞食版を追加(おそらく以下2点)
    • No-Subscription
    • Ceph Quincy No-Subscription
PVE8.3.0で追加できるリポジトリ一覧
  • Enterprise
  • No-Subscription
  • Test
  • Ceph Quincy Enterprise
  • Ceph Quincy No-Subscription
  • Ceph Quincy Test
  • Ceph Reef Enterprise
  • Ceph Reef No-Subscription
  • Ceph Reef Test
  • Ceph Squid Enterprise
  • Ceph Squid No-Subscription
  • Ceph Squid Test

どれがどんな意味なのかは知らん

これで /etc/apt/sources.list 系の操作は終わり。
上の階層の「アップデート」に行き、「再表示」ボタン(update処理)からの必要なら「アップグレード」をする。

アップグレード時に再起動を要求されたら再起動する。
再起動後に「アップデート」を確認して空っぽになっていればOK。

PVE NTP

ntpd ではなく chrony を使っている模様(初めて聞いた)

PVEのコンソールからコンフィグをいじってサービスを再起動する。

vi /etc/chrony/chrony.conf
# pool 2.debian.pool.ntp.org iburst をコメントアウトして
# pool ntp.nict.jp などを追加
systemctl restart chronyd

# ntpq -p と同等のものは
chronyc sources
Time Synchronization - Proxmox VE

PVE Bonding

「ボンディング」とか「チーミング」とか「リンクアグリゲーション」とかいうやつ。

Debianの機能がそのまま使えるので難しいことはない。

bond0 を作ってそれを vmbr0 のブリッジポートに設定してあげればOK。
LACPを使う場合はL2スイッチ側の設定も忘れずに行うように注意する。

Network Configuration - Proxmox VE

PVE PCIe/USBパススルー

公式のWikiを見ると、PCIeは以下のように設定しろ的なことが書いてある。

# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

ただこれを行わず、デフォルトの "quiet" のみでも問題なくパススルーできた。
PT3が例外なだけで普通はやらないといけないのかもしれない。
自身の環境で試してみて。
(軽く調べた感じだとGPUのパススルーでは必須みたい…?)

USBのパススルーはなにもしなくて大丈夫みたい。

PCI(e) Passthrough - Proxmox VE
USB Devices in Virtual Machines - Proxmox VE

VM Agent

ESXiで言う open-vm-tools と同等のものを入れる。
なおPVE側のゲストのオプションで「QEMU Guest Agent」が有効になっているか確認すること。

ただ、VMをクリーンインストールすれば初期状態から勝手に入っているはず。

apt install qemu-guest-agent

初期設定終了

初期設定や注意点はこれで終了。
あとは黙々とVMの移行作業を行った。

ESXiのVMDKなどをそのままの形式でPVEへマイグレーションする方法もあるのだが、ハイパーバイザの変更ということで心機一転、全11VMをすべてクリーンインストールすることにした。
あとマイグレーションはなにかと失敗するのでやりたくなかった。

  1. ESXiのVM内のファイルをバックアップ
  2. ESXi鯖のシャットダウン
  3. ESXi鯖からPVE鯖にPT3とSSDを移設
  4. PVE鯖にRAID1トリプルを構築
  5. PVE鯖にPVEをインストール
  6. PVEに各VMをクリーンインストールしてバックアップからのリストアなど再構築

このような感じで進めていく計画を立てた。

01:50 開始
02:27 バックアップとシャットダウン完了
03:13 PT3の移設完了
03:30 SSDの移設完了
04:04 RAID1トリプルの構築完了
04:30 PVEインストール完了
05:05 PVEの初期設定完了
12:54 全11VMのクリーンインストールとリストアなど、再構築の完了

スクショにもあるがPVEを起動してから実に8時間かけてすべてのVMの移行が完了した。
VM内でいくらDockerを使って管理しやすくしているとはいえ、やはりクリーンインストールからだと非常に時間がかかった。

おわり

11時間の工程はさすがに疲れた。
それでもバックアップするファイルなどを前々から書き溜めていたので、すんなりいったほうなのだと思う。

すべてのVMに共通する基本構成をバックアップするスクリプトを一応貼っておく。
crontab -l > ~/crontab.bak; \
sudo ufw status > ~/ufw.bak && \
df -h > ~/df.bak && \
sudo tar aczvfp $(hostname)-common.tar.gz \
  ~/crontab.bak \
  ~/ufw.bak \
  ~/df.bak \
  ~/.ssh \
  /etc/apt/sources.list* \
  /etc/hosts \
  /etc/fstab \
  /etc/ntp* \
  /etc/zabbix && \
rm ~/crontab.bak ~/ufw.bak ~/df.bak

こういったスクリプトを各VM用にも作っていたのでバックアップ作業は割とサクサク進んだ。

しかしVMのクリーンインストールからのそれらの復元は非常に大変だった。
足りないファイルなどはなかったのだが、同じような作業の繰り返しになり精神的に疲れたというのが大きいかもしれない。
しかしそのおかげで溜まったゴミファイルも一掃できたし、VMDKから卒業することもできた。

VMware関連のものをすべてなくし、VMたちには心機一転Proxmox VEのVMとしてがんばってもらいたい(?)
さらばVMware、ようこそProxmox VE。

サーバー自体のスペックもとても向上したし、メモリも爆増したので次はどんなVMを建てようかな。
大変ではあったが将来が楽しみになる良い移行作業だった。

新鯖くん、PVEくん、ふたりともこれから数年間よろしくね。