ウェブサイト検索

Linux CLIを使用したProxmoxストレージディスクスペースの再取得


Proxmox VEのストレージ管理は、特にディスクスペースの使用状況が予想と一致しない場合、難しいことがあります。このガイドでは、LinuxコマンドラインからProxmoxストレージを分析するための実用的なコマンドを提供し、仮想マシンやコンテナによるスペース使用状況を特定し、未計上のストレージスペースを検出し、一般的なストレージの問題をトラブルシューティングして、Proxmox環境を最適化する手助けをします。

このチュートリアルでは、次のことを学びます:

  • Proxmoxのストレージ構成を特定し、調査する方法
  • 仮想マシンとLXCコンテナによるストレージ使用量の確認方法
  • 「失われた」または未使用のストレージスペースを検出する方法
  • スペースを消費している可能性のあるVMスナップショットを見つけて管理する方法
  • 大きなバックアップとISOイメージを特定する方法
  • Proxmox環境でスペースを取り戻す方法

ソフトウェア要件とLinuxコマンドラインの規則

Proxmoxストレージアーキテクチャの理解

ストレージアーキテクチャの概要
Proxmox VEは、分析のための特定のコマンドを持つ異なるストレージバックエンドを使用します。一般的なストレージタイプには、ローカルディレクトリ、LVM-thin、ZFS、Ceph、ネットワークストレージが含まれます。正確な分析のためには、特定のストレージ構成に精通していることが不可欠です。

コマンドに入る前に、Proxmoxがどのようにストレージを一般的に整理しているかを理解することが重要です。あなたのProxmoxのバージョンによって、ストレージは以下のいくつかの主要な場所にある場合があります:

  • /var/lib/vz/images/ – VM ID ごとに整理された VM ディスクイメージ (qcow2、raw) を含む
  • /var/lib/lxc/ – LXCコンテナデータが含まれており、コンテナIDによって整理されています
  • /var/lib/vz/template/iso/ – ISOイメージを保存します
  • /var/lib/vz/template/cache/ – コンテナテンプレートを保存します
  • /var/lib/vz/dump/ – VM とコンテナのバックアップが含まれています

ストレージ構成は、Proxmox ストレージマネージャーコマンドを使用して表示できます。

pvesm status

ステップバイステップの指示

  1. Proxmoxストレージ構成を表示: ストレージプールの概要を取得します。

    pvesm status

    このコマンドは、Proxmox環境内のすべての構成されたストレージプールを表示し、それらのタイプ、ステータス、総容量、使用済みスペース、利用可能スペース、および使用率を示します。出力の例:

  2. この例は、ディレクトリベースのストレージが87%の容量に達している一方で、LVMの薄プロビジョニングストレージが33%の容量にあることを示しています。80%以上の高いパーセンテージは調査の必要があります。

  3. 全体のディスクスペースの使用状況を確認: ファイルシステムの使用状況を表示します。

    df -h

    このコマンドは、すべてのマウントされたファイルシステムのディスクスペース使用量を人間が読みやすい形式で表示します。例として、出力は次のようになるかもしれません:

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/pve-root   94G   82G  7.4G  92% /
  4. 使用率が85%を超えると、注意が必要なファイルシステムを示します。最適なパフォーマンスのためには、ほとんどのファイルシステムに少なくとも10〜15%の空き容量が必要です。

  5. すべての仮想マシンを一覧表示する: システム上のすべてのVMを確認してください。

    qm list

    このコマンドは、ID、名前、ステータス、メモリ割り当て、ディスクサイズを伴うすべての仮想マシンをリストします。以下は出力の例です:

    VMID NAME                 STATUS     MEM(MB)    BOOTDISK(GB) PID       
    100 VM1                  stopped    2048              32.00 0         
    101 VM2                  running    1024              15.00 1119524   
    102 VM3                  running    8192             150.00 309833    
    106 VM4                  running    2048              32.00 3812960   
    107 VM5                  running    6000              32.00 3839516   
    108 VM6                  running    4000              50.00 1743913   
    109 VM7                  stopped    8192              60.00 0
  6. この出力は、割り当てられたディスクサイズを持つすべてのVMを表示し、最適化の候補となる可能性のある大容量ストレージを持つVMを特定するのに役立ちます。

  7. すべてのコンテナを表示: LXC コンテナを表示します.

    pct list

    このコマンドはシステム上のすべてのLXCコンテナを表示します。例の出力:

    VMID       Status     Lock         Name                
    103        running                 CT1
  8. これはコンテナのID、ステータス、および名前を表示します。これはストレージ使用量を調査するためにどのコンテナを確認する必要があるかを特定するのに役立ちます。

  9. 大きなVMディスクイメージを見つける: サイズでVMイメージを特定します。

    find /var/lib/vz/images -type f -name "*.qcow2" -o -name "*.raw" | xargs du -h | sort -hr

    このコマンドは、VMストレージの場所にあるすべてのQCOW2およびRAWディスクイメージを見つけ、サイズ順(大きいものから先)に並べます。以前の出力に基づいて、次のようなものが見つかるかもしれません:

    62G     /var/lib/vz/images/109/vm-109-disk-0.qcow2
  10. これは、VM7(ID 109)が62GBのディスクイメージを持っていることを示しており、これはあなたのストレージの大きな部分を占めています。

  11. LXCコンテナストレージの確認: コンテナのディスク使用量を確認します。

    du -sh /var/lib/lxc/*
  12. このコマンドは、すべてのLXCコンテナによって使用されているディスクスペースを確認します。ほとんどのProxmoxインストールでは、コンテナは/var/lib/lxc/ディレクトリに保存されます。

  13. VMスナップショットの確認: スペースを消費しているスナップショットを見つける。

    for VM in $(qm list | tail -n +2 | awk '{print $1}'); do
        echo "VM $VM:";
        qm listsnapshot $VM 2>/dev/null;
    done

    このコマンドはすべてのVMのスナップショットを一覧表示します。特定のVMの例としての出力は以下のようになります:

    `-> fresh-install               2025-01-23 11:28:52     no-description
     `-> LXready                    2025-03-28 11:45:52     no-description
      `-> current                                           You are here!
  14. 複数のスナップショットをリンクした場合、高いディスクアクティビティを持つVMにとってはかなりのスペースを消費する可能性があります。スナップショットは定期的に見直し、不必要なものは削除するべきです。

  15. バックアップを確認する: 大きなバックアップファイルを見つける.

    find /var/lib/vz/dump -type f -name "*.tar" -o -name "*.vma" | xargs du -h | sort -hr
  16. このコマンドは標準バックアップ場所にあるバックアップファイルを探し、それらをサイズでソートします。バックアップはかなりのスペースを消費する可能性があり、古いものやもはや必要でない場合はクリーンアップの候補となることがあります。

  17. ISOイメージをチェックする: 大きなISOファイルを見つける。

    find /var/lib/vz/template/iso -type f -name "*.iso" | xargs du -h | sort -hr
  18. このコマンドは、サイズ順に並べられたすべてのISOイメージをリストします。ISOイメージは非常に大きいことがあり、VMのインストール後に忘れられることが多く、貴重なスペースを占有します。

  19. コンテナテンプレートをチェック: 未使用のテンプレートを見つける。

    find /var/lib/vz/template/cache -type f | xargs du -h | sort -hr
  20. このコマンドはサイズごとにコンテナテンプレートをリストします。もはや必要ないテンプレートは、スペースを回収するために削除できます。

  21. ファイルシステムとディレクトリのサイズを比較する: ‘ゴーストスペース’を見つける。

    df -h /
    du -sh --exclude=/proc --exclude=/sys --exclude=/run --exclude=/dev /
  22. これらの出力を比較して不一致を特定してください。もしdfがduが報告するよりも著しく多くの使用スペースを示している場合、プロセスによってまだ保持されているが削除されたファイルや、他のファイルシステムメタデータがスペースを消費している可能性があります。

  23. 削除されたが開いているファイルをチェック: 隠れたスペースの消費を見つける。

    lsof | grep deleted | grep -E '(vz|lxc)'
  24. このコマンドは削除されたがプロセスによってまだ開かれているファイルを表示します。これにより、通常のディレクトリリストでは見えない「ゴーストスペース」が生じる可能性があります。

ストレージの種類と分析アプローチ
異なるProxmoxストレージタイプには異なる分析アプローチが必要です。ディレクトリベースのストレージには、dfやduのような標準Linuxコマンドが適しています。LVMスリムプロビジョニングには特定のLVMコマンドが必要です。ZFSストレージにはZFS専用コマンドが必要で、CephストレージにはCephツールが使用されます。分析を進める前に、必ずpvesm statusでストレージの種類を特定してください。

Proxmoxにおけるストレージスペースの再取得

重要な警告
スペースを回収する操作を実行する前に、必ずバックアップを作成してください。スナップショットの削除やディスクイメージの削除などのいくつかの操作は元に戻すことができず、誤って実行するとデータの損失を引き起こす可能性があります。

上記のコマンドでProxmox環境を分析した後、ほとんどのProxmoxインストールに適用できる効果的なスペース回復方法は以下の通りです。

  1. 不要なVMスナップショットを削除: もはや必要でないスナップショットを削除してください。

    qm listsnapshot VMID
    qm delsnapshot VMID SNAPNAME
  2. 最初のコマンドは特定のVMのスナップショットをリストし、2番目のコマンドは名前付きスナップショットを削除します。スナップショットは、特に大きなVMやディスク書き込み活動が多いVMでは、大量のスペースを消費する可能性があります。チェーン内の複数のスナップショットは、時間の経過とともに substantial なディスク使用量を蓄積することがあります。

  3. ISOストレージを整理する: 使用されていないISO画像を削除します。

    find /var/lib/vz/template/iso -type f -name "*.iso" | xargs du -h | sort -hr
    rm /var/lib/vz/template/iso/unused-iso.iso
  4. まず、サイズ順にISOをリストし、その後必要ないものを削除します。ISOイメージは、VMのインストール後に忘れられることが多く、数ギガバイトのスペースを消費することがあります。削除する前に、ISOがどのVMでも使用されていないことを必ず確認してください。

  5. 古いバックアップの削除: もはや必要でないバックアップを削除します。

    find /var/lib/vz/dump -type f -mtime +30 | xargs du -h | sort -hr
    rm /var/lib/vz/dump/old-backup.vma
  6. 最初のコマンドは、30日以上古いバックアップファイルを見つけ、そのサイズを表示します。定期的なバックアップは重要ですが、古いバックアップは保持ポリシーに従って安全に削除できることがよくあります。特定の期間が経過した後、頻繁なバックアップを削除しながら、長期間にわたり月次バックアップを保持することを検討してください。

  7. 未使用のコンテナテンプレートを削除: もはや必要ないテンプレートを削除します。

    find /var/lib/vz/template/cache -type f | xargs du -h | sort -hr
    rm /var/lib/vz/template/cache/unused-template.tar.xz
  8. コンテナテンプレートは新しいコンテナを作成する際にダウンロードされますが、その後はほとんど削除されることはありません。同じ種類のコンテナを再度作成する予定がない場合は、これらのテンプレートを安全に削除してスペースを回収できます。

  9. コンパクトqcow2イメージ: VMディスクイメージ内のスペースを回収します。

    qm stop VMID
    cd /var/lib/vz/images/VMID/
    cp vm-VMID-disk-0.qcow2 vm-VMID-disk-0.qcow2.bak
    qemu-img convert -O qcow2 vm-VMID-disk-0.qcow2 vm-VMID-disk-0-new.qcow2
    mv vm-VMID-disk-0-new.qcow2 vm-VMID-disk-0.qcow2
    qm start VMID
  10. この手順は、VM内で削除されたファイルからスペースを再利用するためにqcow2イメージを圧縮します。VM内でファイルが削除されると、ディスクイメージは自動的に縮小されません。この変換プロセスは、使用されていないブロックを省略してイメージを再構築します。この操作を試みる前に、必ず最初にVMを停止し、バックアップを作成してください。

  11. ログファイルのクリーンアップ: 大きなログファイルを削除またはローテーションします。

    find /var/log -type f -name "*.log" -o -name "*.gz" | xargs du -h | sort -hr | head -n 20
    journalctl --vacuum-time=30d
  12. 最初のコマンドは大きなログファイルを見つけ、2番目のコマンドはsystemdジャーナルログを過去30日間に制限します。ログファイルは時間とともに蓄積し、特に多忙なシステムやログローテーションが適切に設定されていない場合には、かなりのスペースを消費する可能性があります。

  13. 未使用の仮想マシンを削除する: もはや必要のないVMを削除してください。

    qm list
    qm destroy VMID --purge
  14. 最初にすべてのVMをリストアップして削除候補を特定し、その後、削除コマンドをパージオプションを使用してVMとその関連ディスクを完全に削除します。本当に不要なVMに対してのみこれを行ってください。

  15. ZFSストレージの最適化: 適用可能な場合はZFSプールのスペースを回収します。

    zpool list
    zfs list
    zpool trim poolname
  16. ProxmoxシステムがZFSストレージを使用している場合、trimコマンドはSSD上の削除されたファイルからのスペースを回収するのに役立ちます。さらに、圧縮設定を調整するか、データの整合性を確認するためにスクラブ操作を実行することを検討してください。

結論

Proxmox環境におけるストレージの監視と管理には、Proxmox固有のストレージメカニズムと一般的なLinuxファイル管理の概念の両方を理解することが必要です。このガイドのコマンドは、ストレージがどこで使用されているかを特定し、異常を検出し、Proxmoxシステムを効率的に運用するためにスペースを回収するのに役立ちます。

定期メンテナンスの実施には以下が含まれるべきです:

  • 大規模な仮想マシンのためのVMディスクイメージ最適化
  • 定期的なスナップショット管理と統合
  • ISOイメージとコンテナテンプレートの定期的なレビュー
  • 古いバックアップを自動的に管理するためのバックアップ保持ポリシーを実装する
  • 実際のディスク使用量と割り当てられたスペースを監視すること、特にスリムプロビジョニングの場合

これらのコマンドを定期メンテナンス手順に組み込むことで、Proxmox環境における最適なストレージ使用を維持し、ディスクスペースの緊急事態を防ぐことができます。

よくある質問 (FAQ)

  1. なぜProxmoxのウェブインターフェースはCLIコマンドと異なるディスク使用量を表示するのですか?

    Proxmoxのウェブインターフェースは、いくつかの理由によりCLIコマンドと異なる値を報告することがあります:スリムプロビジョニングは実使用量ではなく割り当てられたスペースを表示する可能性があり、ウェブインターフェースは最近の変更を反映していないキャッシュデータを使用するかもしれません。また、ウェブUIにはCLIツールが表示しないオーバーヘッド計算が含まれる場合があります。最も正確なデータを得るためには、このガイドに記載されたCLIコマンドを使用してください。

  2. VMスナップショットはディスクスペースの使用にどのように影響しますか?

    VM スナップショットは、ベースイメージや以前のスナップショットからの変更を追跡するデルタファイルを作成します。それらは最初は小さく見えますが、VM の変更が増えるにつれてかなり大きくなることがあります。複数のスナップショットが存在すると、特にディスクアクティビティが高い VM の場合、かなりのスペースを使用する可能性があります。あなたの VM 101 には、予想以上のスペースを消費している可能性のある複数のスナップショットがあります。

  3. ディスク使用量が表示されているファイルと一致しない「ゴーストスペース」の原因は何ですか?

    ゴーストスペースは通常、以下のような場合に発生します:1) ファイルが削除されているが、実行中のプロセスによってまだ保持されている、2) ジャーナルまたはログファイルがファイルシステムのメタデータでスペースを使用している、3) スナップショットまたはLVMメタデータがスペースを消費している、または4) ファイルシステムの破損。オープンな削除ファイルを特定するには、lsof | grep deleted コマンドを使用します。これはゴーストスペースの一般的な原因です。

  4. データ損失なくVMディスクイメージのサイズを縮小するにはどうすればよいですか?

    VMディスクイメージを縮小するには、まずゲストOS内で不要なファイルを削除し、ディスククリーンアップユーティリティを実行し、zerofree(Linux)やSDelete(Windows)などのツールを使用して空きスペースをゼロ化します。その後、qcow2イメージの場合は、VMを停止し、qemu-img convert -O qcow2 source.qcow2 optimized.qcow2を使用して、よりコンパクトなイメージを作成します。これは、62GBのWindows11 VMイメージに特に効果的です。

  5. LVMベースのストレージにおける薄割り当ては、ストレージ管理にリスクがありますか?

    薄いプロビジョニングを使用すると、実際に利用可能なストレージよりも多くのストレージを割り当てることができ、効率的ですが、慎重な監視が必要です。一般的なシステムでは、LVMの薄いストレージが低い使用率を示している一方で、基盤となる物理ストレージはほぼ満杯である可能性があります。この不一致は薄いプロビジョニングで一般的であり、実際の物理ディスク使用量を監視すること(df -hを使用)を重要視する理由を示しています。高い物理ディスク使用量に対するアラートを常に設定して、予期しないストレージ不足の事態を防ぐことが重要です。これらはVMのクラッシュやデータの破損を引き起こす可能性があります。

関連記事: