🚧

Proxmox VEのSSD割り当てプラン

2025/02/20に公開

Proxmox VEを自宅サーバーとして運用するにあたり、いろいろな実験を行いました。手元にテストケースとして小さなPCのSSD領域割り当てについてその理由とともに書き記しておきます。

  • Debian 12
  • Proxmox VE 8.3.3
  • SSD 64GB
  • 主記憶 8GB

前提として、

  • ブート領域を除くすべてのSSD領域がLVM管理下にある。
  • / (root)とswapを先に確保し、残りはすべてLVM thinプールに割り当てる。

という構成であるとします。下の図を参考にしてください。

なお、インストールにはProxmox VEのインストーラISOは使っていません。Debianをインストールし、その上にProxmoxをインストールしています。

Proxmox VEのインストーラを使う場合には、後述のLVM-thinプール用の領域を空けてインストールし、そのあとにLVM-thinプールを作るとよいでしょう。

割り当ての概要

SSDの総容量は64GBとします。

領域 容量等
/ 10GB LVM論理ボリューム
swap 4GB LVM論理ボリューム
VMの仮想ディスク置き場 50GB LVM-thin プール
ISOイメージ置き場 20GB LVM-thin 論理ボリューム

root(/)

rootボリュームは、Proxmox VEの管理WEB画面上ではlocalと表示されます。そのため、Proxmox VEコミュニティではlocalと呼ばれていることもあります。

rootボリュームのサイズをどのくらい確保すればよいのかは、実はProxmox VE Administration Guideにははっきり書いていません。

手元での使用量を見ると、DebianとProxmox VE合わせて4GB以下です。

Proxmoxのコミュニティには長期運用者でも8GB以下しか使用していないと言う声もあます。16GBもあれば十分でしょう。今回はSSDの容量が小さめななので、けちって10GBとしました。

swap

swapサイズのサイズは先の公式ガイドによれば4GBから8GB、SSDの1/8を超えないサイズが推奨値です。

swapサイズはDebianのインストーラ任せなだと1GBしかありません。メモリ使用量が少ないうちに手作業で増量しておきました。

手順としては、まずスワップ論理ボリュームの名前を突き止めます。

cat /etc/fstab | grep swap
/dev/mapper/curie--vg-swap_1 none            swap    sw              0       0

/dev/mapper/curie--vg-swap_1がスワップ論理ボリュームの名前です。いったんスワップを停止し、増量してから再度スワップを始めます。

sudo swapoff -a /dev/mapper/curie--vg-swap_1
sudo lvextend -L 4G /dev/mapper/curie--vg-swap_1
sudo mkswap /dev/mapper/curie--vg-swap_1
sudo mount -a
sudo swapon /dev/mapper/curie--vg-swap_1

VMの仮想ディスク置き場

Proxmox VEでVMを作る時には、同時にVMの仮想ディスクも作ります。そのための領域としてLVMの機能であるLVM-thinのプールを50GB確保しています。

LVM-thinプールはL、thin provisioningと呼ばれる「ファイルシステムのサイズの宣言と実装を分離する」技術を提供します。これを使うと「将来10TBのディスク・ボリュームが必要になるかもしれないが、当面は512GBしか使わない」といった場合にあらかじめ10TBのファイルシステムとして宣言しつつ段階的にディスクを増設しながら運用することが可能になります。

Proxmox VEはVMの仮想ディスクとしてLVM-thin論理ボリュームを使うことができます。これによって、「実際何GB必要かはわからないので大きめの仮想ディスクを作っておこう」という場合にも、実際に使用した領域分しか消費しないコンパクトな運用が可能になります。

さらに、LVM-thinの論理ボリュームにはスナップショット機能があり、これを利用したVMのスナップショットも提供されています。そういうわけで仮想ディスクの置き場にはLVM論理ボリュームではなくLVM-thinプールを使うべきです。

LVM thinプールの割り当てはProxmox VEのインストール前でも後でも構いません。

LVM thinプールを作るにはlvcreateコマンドを使います。-Tオプションを忘れないでください。

sudo lvcreate -l 100%FREE -T -n <作るLVM thinプールの名前> <ボリューム・グループの名前>

ボリュームグループcurie-vgthinpool01を作る場合は次のコマンドを打ちます。

sudo lvcreate -l 100%FREE -T -n thinpool01 curie-vg

ISOイメージ置き場

Proxmox VEは、OSインストール用のISOイメージをホスト(ノード)内部に置くことができます。このISOイメージ置き場にはLVM-thin機能で作った大きめの論理ボリュームを割り当てています。

先のthin provisioning機能を使っているため、20GBの論理ボリュームであっても利用するストレージ容量は実際に置いているISOイメージの総量だけです。

これによってストレージの容量を有効利用できます。

LVM thinプールを使ってLVM論理ボリュームを作るにはlvcreateコマンドを使います。

sudo lvcreate -V <サイズ> -n <作るLVM論理ボリュームの名前> <ボリューム・グループ/thinプール>

ボリュームグループcurie-vgthinpool01を使って20GBの論理ボリュームisoを作る場合は次のコマンドを打ちます。

sudo lvcreate -V 20G -n iso curie-vg/thinpool01 

仕上げに論理ボリュームをext4でフォーマットします。まず、作った論理ボリュームの名前は、/mapper/mapperの中に見つけることができます。

ls /dev/mapper | grep thinpool01

curie--vg-isoというボリュームが見つかります。

curie--vg-iso

これをフォーマットしてお終いです。

sudo mkfs.ext4 /dev/mapper/curie--vg-iso

Proxmox VEの設定

用意したLVM-thinプールとLVM論理ボリュームをProxmoxに追加します。

LVM-thinプールの追加

まず、LVM-thinプールをProxmoxに追加します。

Datacenter->Storageと進んでAddプルダウンメニューからLVM-thinを選びます。

するとAdd:LVM-thinダイアログが現れます。

  • IDに"local-LVM"とタイプする。
  • Volume groupには自動で値が入っている。値が今回使いたいLVM VGでなければ、希望するものに変更する。
  • Thin poolには自動で値が入っている。値が今回使いたいLVM-thinプールでなければ、希望するものに変更する。
  • Contentには"Disk image, Container"が自動で設定されている。変更する必要はない。

Addボタンを押すと入力が適用されて、Proxmox VEのServer Viewに"local-LVM"が現れます。

ISO保存用論理ボリュームの追加

上で作ったISOイメージ置き場用論用ボリュームを例にとって説明します。

まず、このボリュームをマウントしなければなりません。マウントポイントは/var/mnt/isoとします。次のコマンドを実行すると、論理ボリュームをマウントできます。

sudo mkdir -p /var/mnt/iso
echo '/dev/mapper/curie--vg-iso  /var/mnt/iso ext4 defaults  0 0' | sudo tee -a /etc/fstab
sudo mount -a

次にボリュームをマウントしたディレクトリをISO保存用ストレージとして登録します。

Datacenter->Storageと進んでAddプルダウンメニューからDirectoryを選びます。

するとAdd:LVM-thinダイアログが現れます。

  • IDに"local-ISO"とタイプする。
  • Directoryに"/var/mnt/iso"(上でLVMボリュームをマウントしたディレクトリ)と入力します。
  • Contentには"ISO image"を設定する。

Addボタンを押すと入力が適用されて、Proxmox VEのServer Viewに"local-ISO"が現れます。

localボリュームのContent調整

デフォルトではlocalボリュームには何でも置けるようになっています。

しかしながら、既にVMのディスクとISOイメージの置き場を作ったので、間違ってlocalボリュームにそれらを配置しないよう、禁止しておきます。

Datacenter->Storageと進んでlocalボリュームを選択し、Editボタンを押します。

するとEdit directoryダイアログが現れます。

  • Contentの中から、"Disk image", "ISO image", "Container"をディセーブルします。

以上で終わりです。

履歴

  • 2025/Feb/22 : "Proxmox VEの設定"を追加。

Discussion