Caru.moeCARU.moe
プロジェクトスキル経歴ブログ
ブログ一覧

© 2026 Caru

  • X
  • Discord
  • メール
Proxmox

CABG-006 · 2025.12.7

Proxmox VMのディスク容量をDiscardで節約しよう

fstrim一発で16.3GB戻ってきて気持ちいい!VMで消した分がProxmoxに返らない理由と、自動化の設定です

Server · Linux · Storage

はじめに

どうも、Caruです。

Proxmoxを使っていると「VMを作成するたびにディスク容量が確保され、他のVMやシステムがその領域を使えなくなってしまう」という問題に直面することがあります。

これは、Proxmoxがデフォルトで「VMに割り当てられた領域をそのまま予約し続け、たとえ空きが出ても他のVMには使わせない」という挙動をするためです。 OS上でファイルを削除しても、ファイルシステムが「ここは空いたよ」とマークするだけで、物理的なディスク上のデータはそのまま占有され続けてしまうんですね。

今回は、この「使っていないのに確保されっぱなしの領域」を解放して、ディスク容量を節約する方法を紹介します。

Discard (TRIM) とは?

Discard(SSDではTRIMとも呼ばれます)は、OSがストレージデバイスに対して「このデータブロックはもう使ってないから、物理的に消しちゃっていいよ」と伝える機能です。

これを有効にすることで、Proxmox側も「あ、ここはもうVMが使ってないんだ」と認識できるようになり、その分の領域を解放してくれます。

手順1: Proxmox側の設定

まずは、Proxmoxの管理画面でVMの設定を変更します。 該当のVMを選択し、Hardwareタブを開きます。

ハードディスクの設定(例: scsi0)をダブルクリックして編集画面を開き、以下の設定を確認・変更します。

  1. Discard: チェックを入れる
  2. SSDエミュレーション: チェックを入れる(推奨。OSにSSDとして認識させることで、TRIMが効きやすくなります)
  3. バス/デバイス: VirtIO SCSI であることを確認(VirtIO BlockだとDiscardが効かない場合があります)
  4. (Optional) Cache: Writeback (安全に、書き込みを若干早くできます) Proxmox Disk Configuration

設定を変更したら、一度VMを完全にシャットダウンしてから起動し直してください。(再起動ではなく、停止→開始)

例えば、

sudo shutdown now

のようにシャットダウンしてから起動してください。

手順2: ゲストOSでの実行

VMが起動したら、今度はゲストOS側から「不要な領域の解放」を指示します。 Linuxの場合、fstrim コマンドを使用します。

ターミナルを開き、以下のコマンドを実行してみましょう。

sudo fstrim --fstab --verbose
  • --fstab: /etc/fstab に記載されているすべてのマウントポイントに対して実行
  • --verbose: 解放されたバイト数を表示

実行すると、以下のように解放された容量が表示されます。

fstrim execution

16.3GB解放されました!

多いときは画像のように数十GBもの容量が解放されることもあり、かなり気持ちいいです。

ProxmoxのWebUIを確認すると、local-lvmの容量が解放されていることが確認できます。

自動化する

毎回手動でコマンドを叩くのは面倒なので、定期的に実行されるようにしておきましょう。 最近のLinuxなら systemd のタイマーが用意されています。

sudo systemctl enable --now fstrim.timer

これで、週に1回などの頻度で自動的に fstrim が走り、ディスク容量を健全に保ってくれます。

まとめ

ProxmoxでVMを運用するなら、Discard設定はProxmoxを使うなら必須の設定だと思います! Proxmoxをお使いの方の参考になれば嬉しいです!

Caruこの記事を書いた人

Web開発が大好きな、エンジニアを目指す大学生です。

  • GitHub
  • Link集
前の記事Nginxはもう古い?最強のWebサーバーCaddyを使おうCABG-005 · 2025.11.30次の記事NovelAI APIを簡単に使えるPython SDKを作ったCABG-007 · 2025.12.21

目次

  1. はじめに
  2. Discard (TRIM) とは?
  3. 手順1: Proxmox側の設定
  4. 手順2: ゲストOSでの実行
  5. 自動化する
  6. まとめ