概要
とある事情で自宅のメインサーバーをProxmoxへ移行することにしました。
その移行作業中で、微妙に詰まりやすいような細かいところをメモとして残します。
※リソースプールとかデータストアといった、そもそもの機能面の違いは含まないです
本記事の対象
- ESXiを触ったことがある方
- Proxmoxに触れてみようと思っている方
項目
項目としては以下をそれぞれ書いていきます
- 仮想マシン移行機能でのスナップショットの扱い
- 仮想NICの割り当てスロットの違い
- Windows OS に必要なドライバ
- Proxmox内のviの設定
仮想マシン移行機能でのスナップショットの扱い
まずProxmoxではESXiから仮想マシンを簡単に移行できるようなGUIのツールがあります。
実際にはストレージとしてESXiを選択して追加することができ、その後クリックするだけで簡単に移行できます。
基本的にはデータストア上の仮想マシン等であれば、そのまま移行できます。
※詳細な条件等は以下ドキュメントを参考
ただし、私の環境ではいくつかの仮想マシンにおいて、移行時にエラーが確認されました。
原因を探ったところ、スナップショットがある仮想マシンではこちらのエラーが出てしまうようでした。。
一応メーカードキュメント上はスナップショットあると、遅延があるかもしれないまでだったため、いける想定でしたが、私の環境都合かいけない形でした。
そのため、スナップショットがある場合はこちらの機能では移行できない可能性もあるかもしれないです。
仮想NICの割り当てスロットの違い
仮想マシンではNICを最低1つは割り当てて利用すると思います。
例えば、以下はESXiで作成しているUbuntuの仮想マシンですが、ens33
というNICがついていることが確認できます。
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:af:64:4e brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.0.113/24 brd 192.168.0.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:feaf:644e/64 scope link
valid_lft forever preferred_lft forever
ではこの仮想マシンをProxmoxへ純粋に移行してみます。
すると以下のようになり、NICの名前が変わりIPアドレスが振られていないことが確認できます。
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:50:56:af:64:4e brd ff:ff:ff:ff:ff:ff
altname enp0s18
これが何が起きているかというと大きく以下2つがポイントになっています。
- NICのスロットが異なる
- UbuntuのnetplanでIPを割り当てている
まず1ですが、このNICに割り当てられている名称の後ろの数字が実はNICが接続されているPCIスロットの番号となっています。
例えば、以下のような名称の割り当てになる感じです。
en (ethernet) + s33 (スロット33) → ens33
この割り当てられる1つ目のNICのデフォルト値が、ESXi: 33
、Proxmox: 18
となっているのです。
それによって、NICの名前が変わってしまった形です。
そして2ですが、Ubuntuでは純粋にインストールをした場合、ネットワークの設定周りはNetplan
で管理されていると思います。
その設定内容は、以下のような形でIPアドレスやデフォルトゲートウェイ等を指定しています。
その割り当ての設定としてNIC名称を指定しているため、起動時にens33
に対してネットワークの設定をしようとしたところできなかった結果、IPアドレスが振られていなかった感じです。
network:
ethernets:
ens33:
addresses:
- 192.168.0.113/24
nameservers:
addresses:
- 192.168.0.111
search: []
routes:
- to: default
via: 192.168.0.254
version: 2
対処方法はシンプルで、netplaの設定ファイルの指定しているNICの名称を、実際のNICの名称に変えて再起動するだけです!!
参考: 他のアプリケーションでの影響
このNICの名称ですが、上記のようなOS側の設定だけでなく、アプリケーションの設定にて指定が必要な場合もあるため、その点は移行時に注意が必要です。
例えば私の環境ではWireguard
を使っているのですが、その設定ファイルでもNICの名称の指定がありました
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE
Windows OS に必要なドライバ
これは結構いろんな人が上げている内容となりますが、ProxmoxではWindows OSを仮想マシンとして利用する場合VirtIO
というドライバを入れることが必要となります。
実際に割り当てる手順は簡単で作成時にOSの指定の所で、ドライバのISOをドライブとして追加してあげます。
その後はインストールプロセスの中でドライバを指定してあげる形です
※ちなみに調べていた限りでは、基本上記だけだと思っていたら、
私の環境ではネットワークのドライバだけ何故か入らず、、起動後にマウントされているドライバから直接インストールしています
Proxmox内のviの設定
少しProxmoxの設定ファイルをCLIから編集しようとした際に気づいたのですが、vi
での操作が思うように動きませんでした。。
どうやら、viの互換モードが有効だったり、BackSpaceが無効だったりしているようでした。
参考: https://paradigmshift.x0.to/2021/05/23/661/
上記の記事を参考にさせていただき、以下を追記したところ無事いつも使っているようなvi
操作になりました!!
set nocompatible
set backspace=indent,eol,start
まとめ
今回はProxmoxへ移行した際に微妙に躓いたところをまとめました。
もちろんESXiとProxmoxとでストレージの考え方やリソースプールの考え方など機能として違ってくるところは多々あると思います。
その中、機能差分というよりはちょっと細かいところの違いもあったりするものとして参考にいただけたらと思います。
参考にした記事