"Proxmox VE" on "Proxmox VE"を試してみるの巻

こんにちは。
クラスアクトの大塚と申します。
この記事では題名の通り、社内にあるProxmox VE上にProxmox VEを立ててみます。
※検証用に個人で弄り倒せる環境が欲しくて、社長に直接許可を頂きました笑
　ESXiとかopenstackとかその手の仮想化技術を知っておくのは重要だよなーと思う今日この頃。

# Proxmox VEとは？
KVMをベースとしたハイパーバイザになります。
KVMはざっくり書くと"Linuxをハイパーバイザ化する技術"です。
ハイパーバイザもざっくり書きますが、仮想サーバを立ち上げるためのものです。
Proxmox VE、KVMはもちろんのこと、ESXiもそれになります。

https://www.redhat.com/ja/topics/virtualization/what-is-KVM

https://www.proxmox.com/en/proxmox-ve

読み方はどこ探しても表記されていないのですよね。。。
YouTubeで発音しているのを聞いてみる感じ「プロックスモックス」な気がしてます。

# 環境
ゲスト側のProxmox VEは以下スペックで構成しています。
|  HW  |  スペック  |
| ---- | ---- |
|  vCPU  |  1 socket 4 core  |
|  memory  |  32768 MiB  |
|  Disk  |  200 GiB  |

# 構築
まず以下Proxmox VE公式サイトよりISOをインストールします。
今回はこの記事執筆時（2023年3月3日）で最新版のVersion: 7.3-1を使用しました。

https://www.proxmox.com/en/downloads/category/iso-images-pve

インストールしたProxmox VEのISOファイルをホストProxmox VE上に登録します。
登録の仕方は今回は割愛します。今後書くかもしれません。

VMの設定をしていきます。
Systemは特に変更するものはなく次へ。
![20230303_proxmox01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/dc61a684-a4f9-a15c-ab5f-f236e1cf1d95.png)

DisksはのDisk sizeは今回200GiBのものを構築しようとしているので、その数値を入力。
StorageはホストProxmox VE側がSSDを持っているため、そちらを指定。
![20230303_proxmox02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/8678a0ec-8d9e-7892-d95a-9401e5c6642e.png)

CPUは今回1 socket 4 coreの構成。
注意しなければならない点としては、Typeをhostに変更しなければならない点かと思います。
これを実行しないと、ネストがうまくいかずゲスト側のProxmox VE上でVMを立ち上げようとするとエラーをはいてくるようになると思います。
※エラー内容については後程記載します。
![20230303_proxmox03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4cbb8b13-714f-aa37-7159-32542410c7c7.png)

Memoryは今回30GiB(32768MiB)で構成しています。
![20230303_proxmox04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/c9eed1a1-fce1-9334-990d-468c3f5c6aba.png)

Networkは変更する部分はありません。
この画面のあと、最終確認のポップが表示されるので確認しましょう。
![20230303_proxmox05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/b04ee908-2520-0aef-81fd-e368d2076872.png)

ホストProxmox VE上で設定したVMを起動すると、下記のような表示がされると思います。
Install Proxmox VEの文字の色がオレンジ色になっていることを確認してEnterを押下します。
![20230303_proxmox06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/7a11f9c1-c798-a75c-a14a-6159774f5558.png)

ライセンスについての同意を求められますので確認し、右下に表示されている
I agreeを押下します。
![20230303_proxmox07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/32b3d99f-bc98-d1ca-eb03-fc6e5031d4cb.png)

どのHarddiskにProxmox VEをインストールしていくか確認を求められます。
今回はHarddisk1つ（/dev/sda）しか用意しておりませんので、特に変更を加えずNextを押下します。
![20230303_proxmox08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6a5c276d-2352-fc45-4be3-1fc7d4fcaf84.png)

言語や地域の設定を求められます。
Countryをjapan、TimeZoneをAsia/Tokyo、KeyboardLayoutをJapaneseにしてNextを押下します。
![20230303_proxmox09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6e0dff69-0e72-8dc3-8ba1-6408db2e5768.png)

Proxmoxのrootユーザのパスワードと、Emailアドレスの設定を求められます。
Emailはdefaultのままだとはじかれるので、変更はマストの様です。
アドレスを入れたところでメールが届くようになるとかではなさそうなので、普段使っているものを入れてしまえばいいと思います。
![20230303_proxmox10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/99d695c9-b57e-4d8a-dfc6-2d0f79e06e82.png)

サーバのホスト名とそれに対応付けるIPアドレス、Gateway、問い合わせをするDNSサーバのIPアドレスを入力します。
これは個々の環境に併せて設定をしていけば良いと思います。
今回はIPアドレス192.168.2.150で登録しています。
![20230303_proxmox11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/f1974b0a-8c8c-9b83-ef39-cc11a63af6f6.png)

最終確認画面が表示されます。
今までの設定が反映されているかをしっかり確認し、installを押下しましょう。
![20230303_proxmox12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/f50f1b14-3e3b-7a86-e35c-5be6f28a4ea7.png)

インストールが始まると以下の様な画面が表示されます。
私の環境では10分20分くらい待ったイメージです。
もっとかかるかと思ったのですが、想定よりかなり早く終わりました。
別作業をしていたら「あれ？もう終わったの？」という感覚です。
![20230303_proxmox13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/231b87c7-fd5c-869e-73ab-9fdf030172ba.png)

CUIのログイン画面は以下の様になっています。
このような状態まで遷移しましたら普通のサーバ同様にTera Termを使ってsshすることが出来ます。
ユーザはデフォルトで作成されるroot。パスワードは上記で設定したものでログイン出来るはずです。
![20230303_proxmox14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/d82a4549-6f09-1ab1-78ae-cbb412943304.png)

Webブラウザでアクセスする方法なのですが
https://"サーバに設定したIPアドレス":8006/
でアクセス出来来ます。

デフォルトでは自己証明を使用している為、下記の画面が表示されますがそのまま接続を継続してください。
![20230303_proxmox15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/b23adc2e-c6e4-b1c1-583b-d5fa18acc86d.png)

ログインのユーザ：パスワードを求められますがSSH接続したもので問題ありません。
Linux PAMに変更するのを忘れないでください。
![20230303_proxmox16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/7bda1cb1-2d57-9106-94fe-e7c357a7b63f.png)

次のような画面が表示されればOKです。
![20230303_proxmox17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/c76224c2-b650-1c47-79e6-7dc28fee58a5.png)


# 構築時に確認したエラー
試験的にVMを立ち上げようとしたところ、以下の様なエラーを吐かれた。
TASK ERROR: KVM virtualisation configured, but not available. Either disable in VM configuration or enable in BIOS.
![20230303_proxmox18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/bcdd68bb-f365-a925-fc06-74b8ea9d527f.png)

これはゲスト側のProxmox VEが上手くネスト出来ていないことにより発生するエラーとなります。
以下のコマンドを実行し、何も出力されなければネストされていないということで問題無いかと思います。
```
root@ohtsuka:/var/lib/vz/template/iso# cat /proc/cpuinfo | grep vmx 
root@ohtsuka:/var/lib/vz/template/iso#
```

ネストされていない理由として、VM起動時のCPUの設定時にTypeをhostにしていないことが挙げられます。
※最も、ホスト側のProxmox VE上でVMが立ち上げられる設定をしていなければ元も子も無いのですが。。。

ネストがうまくいっていると、上記コマンドでの出力のされ方が変わります。
```
[root@openstack-full ~]# cat /proc/cpuinfo | grep vmx 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities 
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip spec_ctrl intel_stibp arch_capabilities
```