🎃

Proxmox VEでVM作成

2021/05/03に公開

概要

proxmox ve(以下pve)のインストールと設定は完了したので、VM作成をしていく。
isoのアップロードからVM作成までを書く。
インストール編はこっち。
https://zenn.dev/northeggman/articles/0203320c4a2690

2022/03/27追記
CLIでのVMの起動・停止の中身を更新

環境

proxmox ve : 6.3

isoのアップロード

データセンター > 対象ノード > local(対象ノード) > ISO Images
アップロードを選択。

ファイルを選択からisoを選択し、アップロード。

ちなみにisoは/var/lib/vz/template/iso/ディレクトリに格納されている。
なのでCLIやSSHでのファイル転送で格納してもよい。

VM作成

今回はcentOSのインストールをする。

GUIの右上のVM作成をクリック。

詳細設定のチェックを入れておく。

・全般タブ
ノード : pve01(リソースを使用するホスト)
VM ID : デフォルト(VM作成するたびに順番に割り振られるのでいじらなくてよい、100から始まる)
名前 : なんでも

・OSタブ
CD/DVDイメージファイル(iso)を使用するから、アップロードしたisoを選択する。
ゲストOS : 対応したものを選ぶ(今回はlinux)

・システムタブ
グラフィックカード : 既定値
SCSIコントローラ : VirtlO SCSI(既定値)
Qemuエージェント : 有効(vSphereでいうvmware toolsみたいなもの。あとから有効にすることもできる。キューエミュって読む)
あくまでもpve上で有効となるだけで、VM上でqemuをインストールする必要がある。
https://fefcc.net/archives/1038#VM-3
https://pve.proxmox.com/wiki/Qemu-guest-agent

・ハードディスクタブ
バス/デバイス : SCSI(LinuxだとデフォルトでSCSIだが、windowsだとIDEになるので変更するのを忘れない。IDEだと遅いらしい)
ストレージ : 使いたいストレージを使用する
ディスクサイズ : 使いたい容量を入力
キャッシュ : 既定値(none)
このキャッシュはKVMに関係しているので、どのキャッシュを使用するかは”KVM ディスク キャッシュ”などで検索すること
検証ならnoneでいいと思う
参考
https://blog.etsukata.com/2013/02/qemu-cache-mode.html

・CPUタブ
ソケット : ホストサーバに1CPUしか積んでないので1(2とかにしたら動くのだろうか)
コア : 使いたいコア数を入力(コア数を変更するとvCPUが変わる)

・メモリタブ
メモリ : 使いたいメモリ数を入力
Ballooning Device : 無効
Ballooningを無効にすると最小メモリ量がグレーアウトしたから、重要なサーバとかにはBallooningを有効にした方がいいのかもしれない。

・ネットワークタブ
ブリッジ : 使いたいnic(管理IPと同じにするならvmbr0(nic1になるわけではない))
モデル : VirtlO or VMware vmxnet3(windowsの場合はデフォルトがintel E1000なので、VirtlOやVMware vmxnet3とかに変更すること)
関係ないけど、vmxnet3ってかなり性能が良いらしく50Gだか100Gの世界になるとかなり優秀らしい。VMwareすごい。ギガや10Gくらいの環境なら気にしなくていいと思う。

・確認タブ
問題なければ完了を選択

開始を選択しVMを起動する。
コンソールを押すと別ウィンドウが立ち上がる。そこでOSのインストールを行う。

OSのインストールが完了したら、pveのハードウェアの設定からCD/DVDドライブは削除してしまう(削除しなくてもいいけど、vSphereでクラスタ組んでる時とかにvMotionするとややこしいことになる時があるので、同じように使わないなら削除してしまった方が管理がしやすいと思う)。
ただしwindowsOSの場合はQEMUエージェントのインストールが待っているのでまだ削除しなくていい。

VMのテンプレート化

テンプレートにしたいVMを右クリックして、テンプレートに変換を選択。

注意事項としてテンプレートにすると、VMを開始させることができなくなる。
通常VM状態でもクローンができることを考えると、個人環境ではテンプレートにする理由はないかな。

CLIでのVMの起動・停止

VMのOSのインストール中に「あ、間違えちゃったからVM再起動したい」って時あると思います。でもOSインストール前はqemuエージェントがインストールされていないからか、GUI上でVMの停止なり再起動をクリックしても「can't lock file '/var/lock/qemu-server/lock-"VMID".conf' - got timeout.」って出てシャットダウンされないことが頻発しました。OSインストールしちゃえばこれは出なかったです。OSによるかもですが、インストールをキャンセルすることができないOSや解像度の問題で終了ボタンが押せないOSだったりすると詰みます。
そのたびに全VMシャットダウンしてノードの再起動をするというのはさすがに非効率だしありえない話なので、こういう時はコマンドのVMの停止で対応します。OSのインストール中はロックファイルを削除してから、qm stopやqm rebootで強制的に止めてました。
せっかくなので電源に関するコマンドだけまとめました。

作業前に対象VMのVMIDを控えておくこと
(""は入力しなくていいです)

//VMの停止(電源ボタンを押すイメージ)
# qm shutdown "VMID"

//VMの停止(電源コードを抜くイメージ(VMのデータに損傷を与える可能性があるので、緊急時以外使わない方が良い))
# qm stop "VMID"

//VMの開始
# qm start "VMID"

//VMの再起動
# qm reboot "VMID"

//VMの停止や再起動時にファイルがロックされてコマンドが失敗するときは、ロックファイルを削除する(この後に停止コマンドを実施する)
# rm /var/lock/qemu-server/lock-"VMID".conf

参考
https://pve.proxmox.com/pve-docs/qm.1.html

qm stopコマンドで停止できない問題にぶつかったので、原因をもうちょっと考えた。
ただメモってたらこのプロセスがなぜか終了していたので、killコマンドは実施していない。
なのでこれで良いのかはよくわかってない。

追記
killコマンド実施してもqm stopコマンドで停止できないことが判明した...
多分ロックファイルを削除するのが正解だと思う

//プロセス確認
# lsof /var/lock/qemu-server/lock-"VMID".conf
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
task\x20U 22320 root    6wW  REG   0,28        0   17 /run/lock/qemu-server/lock-104.conf

//プロセスの停止
# kill -9 PID

参考
https://forum.proxmox.com/threads/trying-to-aquire-lock-task-error-cant-lock-file-var-lock-qemu-server.16235/

windowsOSの作成

windowsOSをインストールする場合、いつものwindowsをインストールする画面でインストールするディスクが認識されないという問題が発生する。
その対応方法。Linux系はこういう問題は発生しない。

1. VirtIOドライバーのisoのダウンロード

windowsのisoとは別にVirtIOのドライバーを以下からダウンロード。
ダウンロードしたisoをpveのisoディレクトリにアップロードする。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

2. windowsVMにVirtIOのisoを追加

いつものようにVM作成後、アップロードしたVirtIOのisoをハードウェア設定から追加する。

バス/デバイス : IDE
CD/DVDイメージファイル(iso)を使用する
ストレージ : local
ISOイメージ : virtio-win-0.1.185.iso

3. OSインストール

windowsVMを起動する。

windows server2019 standard(デスクトップエクスペリエンス)を選択。

ライセンスに同意。

カスタムを選択。

いつものようにカスタムでインストールしようとしたらディスクが認識していない。
なのでドライバーの読み込みを選択。

参照を選択。

・ハードディスクのドライバー
ここからはインストールするwindowsのバージョンによって使用するものがことなる。

windows server2019の場合 : 2k19
windows server2016の場合 : 2k16
windows 10の場合 : w10

このように違うので、適したものを使用すること。
今回はwindows server2019のインストールなので2k19を使用している。

Dドライブ(virtio-win-0.1.185) > vioscsi > 2k19 > amd64

次へを選択。

ハードディスクが認識した。

・ネットワークのドライバー
同じようにドライバーのインストールをする。
Dドライブ(virtio-win-0.1.185) > vioscsi > 2k19 > amd64

次へを選択。

・メモリバルーンのドライバー
必要があれば同じようにドライバーのインストールをする。
以下のディレクトリに自分の場合だとなかったので、必須ではなさそう。
おそらくメモリバルーンをpve上で有効にしていないからだと思われる。
Dドライブ(virtio-win-0.1.185) > vioscsi > 2k19 > amd64

ドライバーのインストールが終了したら、いつものようにOSをインストールしたいディスクを選択して次へを選択。

いつものようにインストールされる。

ネットワーク関係のドライバーもインストールしたので、windowsログイン後普通にnicは認識している。

参考
https://pve.proxmox.com/wiki/Windows_2019_guest_best_practices

QEMUエージェントのインストール

pve上でQEMUエージェントを有効の設定にしていること。

1. RedHat/CentOS

# yum install qemu-guest-agent

2. Debian/Ubuntu

# apt-get install qemu-guest-agent

3. Windows

インストールの時に使用したVirtIOのisoをまだマウントしていること。
コンピュータの管理 > デバイスマネージャー
PCIシンプル通信コントローラーのドライバーがインストールされていない。これがQEMUエージェントになる。

PCIシンプル通信コントローラーを右クリックし、ドライバーの更新を選択。

コンピュータを参照してドライバーソフトウェアを検索を選択。
(インターネットから自動検索しても見つからない)

フォルダの参照でDドライブ(virtio-win-0.1.185) > vioserial > 2k19 > amd64 を選択する。
2k19の部分は自分のwindowsOSに応じて適したものを選択すること。

次へを選択。

警告が出るがインストールを選択。

ドライバーのインストールが完了。

エクスプローラーを開き、Dドライブ(VirtIO-win-0.1.185) > guest-agent
今どきはほとんど64ビットOSなので、qemu-ga-x86_64.msiを実行。

特にインストールウィザードとかが出るわけでもなく、インストールが終わる。
インストール終了後、pve上でIPアドレスの確認ができるようになる。
ただし、windows側でイーサネットと日本語で書かれているため、pve上で文字化けしているのはどうしようもない。

ちなみにQEMUエージェントが動いているかを確認するにはpowershellで確認できる。

> Get-Service QEMU-GA

Status   Name               DisplayName
------   ----               -----------
Running  QEMU-GA            QEMU Guest Agent

QEMUエージェントのインストールが完了したら、windowsのisoとVirtIOのisoをVMの設定から削除しておく。

参考
https://pve.proxmox.com/wiki/Qemu-guest-agent

参考

https://fefcc.net/archives/1038#VM
https://sys-guard.com/post-15337/

所感

vSphereだとシンプロビジョニングとシックプロビジョニングがあるけど、pveってどうなってるんだろう。ホストの使用ディスク容量を見るとシンプロビジョニングっぽいんだけど、設定するところがないんだろうか。

Linux系のOSは普通にVM作成でOSインストールできるのに、windows系は追加でやらなきゃいけないことがあるのは面倒。

Discussion