一応、目的としては 「2.5GbE ルーターを作成する」ことになります。
比較的新しいハードウェアを使うためには、新しいLinux Kernelバージョンが必要となります。
仮想化OSとしてVMware製品などがあるが、これは最新ハードウェアに対応しておらず有志が作成したカスタムドライバーを手動で導入する必要もあり、不具合があっても有志のサポート次第ということもあり多少リスクが発生する。
ごく普通なLinuxを使用してKVM( Kernel-based Virtual Machine)を使ってもよいのだが、前々からProxmoxが気になっていたので、これを機会に導入して運用してみることにしました。
「2.5GbE ルーターを作成する」という目的は達成済み。
現在は自作NASにも導入済み。
扱いが面倒だが、次はメインPCで導入しようかと考えている。
その前に iGPU と dGPU の設定をマスターしたい。
そのうえでPCIパススルー構成を考えたいな。
【導入済みアイテム】
個人や小規模利用に便利
Proxmox VE について簡単に特徴を列挙してみました。
・WEBブラウザから管理画面へアクセスし VMware ESXi に近い操作が可能
・有償ライセンスを使用せず、無償ライセンスで運用可能。(恐らく個人使用のみ)
・KVM( Kernel-based Virtual Machine)による仮想化
・LXC(Linux Containers)によるコンテナ管理
・GNOMEやKDEなどを導入して、Linuxデスクトップとして使うことも可能
用途として下記が想定出来ると考えます。
・自作NASとしてのOS
・自作ルーターとしてのOS
・WEBサーバー等の仮想マシン・コンテナ管理のサーバーのOS
・小規模チームによる開発環境サーバーとしてのOS
OSイメージは下記から取得します。
https://pve.proxmox.com/wiki/Downloads
USBメモリを使用した方法の場合、Etcher を使用するとよいそうです。
[Proxmox VE 8.0] 初期設定など
CPUはIntelを使用します。
事前にBIOSのCPU設定でVT-dを有効化しておきます。VT-xも有効可能ならそちらも設定しておきます。
LANケーブルは1本だけインターネットへ繋がるものを挿しておきます。
OSイメージからインストールします。
詳細は調べれば出てきますので省きます。
問題なく設定出来れば、ブラウザから管理画面を開くことが出来ます。
Proxmox固有のその他の設定。
ネットワークデバイス設定は下記で記載。
当初、PCIパススルーでネットワークデバイスをOpnSenseへ渡そうと思っていたが、うまく認識せず断念。
管理用にUSB LANを付けて vmbr0 として Linux Bridge を追加。
OpnSenseに渡すwanとして、上記のネットワークデバイスを Linux Bond で 2つを1つに纏めて、Linux Bridge で追加。
OpnSenseに渡すlanとして2.5 GbE x4 を Linux Bridge で追加。
wan・lanはIPアドレスをあえて付与させないのがポイント。
[Proxmox VE 8.0] PCIパススルーの設定
結局使用することを見送りましたが、やり方の手順としてだけ残しておきます。
PCIパススルーについて公式に記されています・・・が、詳しい記載はありません。
https://pve.proxmox.com/wiki/PCI_Passthrough
PCIパススルーを行う上で既出情報が古い感じであったため、私が実施した方法を提示します。
シェル画面で、GRUB_CMDLINE_LINUXに intel_iommu=on iommu=pt を追加し、update-grubを実行するだけです。
追加設定の参考:https://kagasu.hatenablog.com/entry/2021/01/05/201126
# vi /etc/modules-load.d/kvm-gvt-g.conf
kvmgt
vfio_iommu_type1
vfio_mdev
### Intel 向け
# vi /etc/default/grub
GRUB_CMDLINE_LINUX="i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=on iommu=pt video=efifb:off"
# update-grub
# reboot
リブート完了後、シェル画面で下記コマンドを実行し「DMAR: IOMMU enabled」が表示されることが確認出来ればOKです。
# dmesg | grep -e DMAR -e IOMMU
[ 0.011159] ACPI: DMAR 0x000000008AB733C8 0000A8 (v01 INTEL KBL 00000001 INTL 00000001)
[ 0.011193] ACPI: Reserving DMAR table memory at [mem 0x8ab733c8-0x8ab7346f]
[ 0.059368] DMAR: IOMMU enabled
[ 0.152986] DMAR: Host address width 39
[ 0.152987] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.152994] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.152997] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.153001] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.153004] DMAR: RMRR base: 0x0000008a04c000 end: 0x0000008a06bfff
[ 0.153005] DMAR: RMRR base: 0x0000008b800000 end: 0x0000008fffffff
[ 0.153008] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.153010] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.153011] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.154582] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.426465] DMAR: No ATSR found
[ 0.426466] DMAR: No SATC found
[ 0.426467] DMAR: IOMMU feature fl1gp_support inconsistent
[ 0.426469] DMAR: IOMMU feature pgsel_inv inconsistent
[ 0.426470] DMAR: IOMMU feature nwfs inconsistent
[ 0.426471] DMAR: IOMMU feature pasid inconsistent
[ 0.426472] DMAR: IOMMU feature eafs inconsistent
[ 0.426473] DMAR: IOMMU feature prs inconsistent
[ 0.426474] DMAR: IOMMU feature nest inconsistent
[ 0.426475] DMAR: IOMMU feature mts inconsistent
[ 0.426476] DMAR: IOMMU feature sc_support inconsistent
[ 0.426477] DMAR: IOMMU feature dev_iotlb_support inconsistent
[ 0.426478] DMAR: dmar0: Using Queued invalidation
[ 0.426482] DMAR: dmar1: Using Queued invalidation
[ 0.426977] DMAR: Intel(R) Virtualization Technology for Directed I/O
★2024-03-21
iGPU、dGPU向けで、AMDの場合は下記が参考になった。
https://zenn.dev/fukumen/articles/proxmox-gpu-passthrough-cezanne
[Proxmox VE 8.0] KVMにOpnSenseを入れる
事前準備
・仮想NICとしてWANとLANの2つをハードウェア定義をする必要がある。
下記を参考にしてみる。Chromeの翻訳機能を使えば普通に見れる。
https://www.wundertech.net/how-to-install-opnsense-in-proxmox/
初期導入としては上記サイトで記載されているので、ここでは詳細には記載しない。
以降、OpnSenseのことは下記で記載していきます。
[Proxmox VE 8.0] LXC環境としてUbuntuを入れる
ある程度Proxmox VEを触ってわかったこと。
・KVMやLXCに対してスナップショットやバックアップを取れる機能がある。・・・が、仮想環境が停止状態でないとフルバックアップが取れない。
また、KVMなどの事前OS停止の操作を手動でしないとならないが、いい感じにやってくれるような機能が見当たらない。
大本がLinuxなのでCronが使って時刻でシャットダウンとか可能とは思うが、微妙に誤差が発生すると復旧が面倒なので時代錯誤(レガシー)な気がする。(大手企業などは未だにそのような運用しているところもあるようだが・・・)
LXC環境にUbuntuを用意して、そのあたりを管理するような細かい場所まで手が届くシステム・・・Node-REDを導入したいと思う。
現状見切り発車だが、Proxmox側にもAPIが存在していると思う。最悪はSSH接続なりで直接コマンド実行すればよい話。
要は単発の機能は実装されていると思うが、流れるような自動化などの仕組みが無い状態。それをNode-REDで実現させてあげるのが本コンセプト。
下記の参考サイトをベースに環境構築してみる。
参考サイト:https://blog.hitsujin.jp/entry/2023/05/18/tailscaleadguard
動作は未確認だが、Tailscale、AdGuard Homeはインストールした。
後日Node-REDを導入する。
フルバックアップした場所やスナップショットの場所は別途調査する必要がある。
特定の時間帯などでNASへ保存させる必要がある。
[Proxmox VE 8.0] クラスターノードの削除について
クラスターノード内のサーバーがシャットダウンしていたりすると、ノード内の全環境が通信不能になりました。
家庭向けではクラスターノードを組まない方がよいことを改めて実感しました。
なので、クラスターノードを削除しようと思い、手探り色々と情報を探して削除を実行。
下記サイトが非常に参考になりました。
参考サイト:https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node
しかし、結局クラスター削除は出来ない、出来てもVM環境が権限無くて起動しないなどのトラブルに見舞われます。
結論としてはProxmoxを再インストールした方が早いと感じました。
Proxmoxとしては特別なことはせず、必要であればLXC環境を作成してそちらで処理させる方がよさそう。
①退避用のNASをマウントする。
# mount -t cifs //192.168.100.x/backup/ /mnt/ReadyNAS -o rw,iocharset=utf8,user=xxxx,pass=xxxx@,dir_mode=0777,file_mode=0777
②設定情報の格納先やファイル名を確認し、NASへ退避する。
# ls -l /etc/pve/nodes/[node-name]pve/qemu-server/
-r--r----- 1 root www-data 489 Sep 17 16:21 100.conf
-r--r----- 1 root www-data 974 Sep 17 16:19 102.conf
# cp /etc/pve/nodes/[node-name]/qemu-server/*.conf /mnt/ReadyNAS/Proxmox/
③VMのストレージをエクスポートする。
# ls /dev/pve/
root swap vm-100-disk-0 vm-102-disk-0
# qemu-img convert -O qcow2 /dev/pve/vm-100-disk-0 /mnt/ReadyNAS/Proxmox/vm-100-disk-0.qcow2
# qemu-img convert -O qcow2 /dev/pve/vm-102-disk-0 /mnt/ReadyNAS/Proxmox/vm-102-disk-0.qcow2
④WEB管理画面からネットワーク構成をメモして残す。
⑤Proxmoxを再インストール
[Proxmox VE 8.0] NASのOSとして使ってみる
NASのOSとして使用するには下記の知識が別途必要と感じました。
- ストレージのLVMコマンド操作
- ストレージのZFSコマンドの操作
- 必要であれば自身でNICなどのドライバを個別導入出来るくらいのスキル
- NFS/SMB/CIFSなどの構築スキル
・Proxmox上に拡張ストレージを導入します。
単体ドライブならLVMとして、RAIDなどのハードウェアの冗長性確保のためにZFSを利用することになります。
CPUが貧弱な場合、ZFSの圧縮機能はOFFを推奨します。使用するなら zstd かな。lz4でもよいと思う。各自調べて決めてください。
・Proxmox上にNFSサーバーを構築します。
NAS上に様々なVMを構築する場合を考慮しています。
・Proxmox上にファイル共有用のLXCでコンテナを作成します。
注意点として「非特権コンテナ」のチェックを外すことです。
メモリ設定は搭載メモリの8割くらいでしょうか。
外枠が設定出来たら、LXCコンテナの「オプション」「機能」をダブルクリック。
「NFS」と「SMB/CIFS」の2つをチェックします。
・LXCコンテナ側でSMBサーバーを構築します。
起動時にProxmox上のNFSをマウントさせます。
あとは自由にディレクトリ構成を作成して smb.conf を修正して構築します。
[Proxmox VE 8.1] Windows11 設定(2024-03-21更新)
TPM設定を付与して普通にWindows11環境を作成。
CPUのプロセッサの種別はデフォルトではなく「host」にして、元のCPUをそのまま渡すようにした。
下記記事の設定を施した。
https://zenn.dev/fukumen/articles/proxmox-gpu-passthrough-cezanne
グラフィックボードは下記のRadeon R9 280X を使用しdGPU設定で使ってみた。
もう10年前のグラフィックボードか・・・。
グラフィックボードのドライバをダウンロードしてきて適用した。
Windows環境の方で、Windows VirtIO Driversをインストールした。
https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers
「download the latest stable」から最新のISOファイルをダウンロード。
この時点では「virtio-win-0.1.240.iso」であった。
これをProxmoxの local(pve) へアップロード。
WindowsのCDROMへISOファイルをアタッチする。
CDドライブから「virtio-win-gt-x64.exe」をインストールする。
3DMARKのFIRE STRIKEでベンチマークを行った。
10年前の Graphics Score は 8182 だったが、なぜか 9531 とスコアが上がっている。
仮想環境とはいえ、マザーボードやメモリの部分などの根幹部分が高速になっているからだろうと推測してみる。
Radeonドライバの品質が向上しているとか、OSが上がっているためとか色々考えられるかも。
とはいえ、古いグラフィックボードをフルでぶん回してもOSのブルースクリーンとかは発生しなかったのは上々。
-
購入金額
0円
-
購入日
2023年08月10日
-
購入場所
Proxmox VE公式
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。