コミュニティソリューション

CasaOSでncduを使ってストレージを圧迫している原因を見つける

A 2024 CasaOS tutorial introduced ncdu as a quick way to find large folders and mystery disk usage.

CasaOSで実際にどのフォルダーがディスク容量を消費しているかを確認する必要がある場合はncduを使用しますが、小さなコンテナファイルシステムだけでなく、正しいホストパスをスキャンしてください。現在のLinuxシステムでは、上流プロジェクトが静的バイナリを提供しており、ncdu 2.xが対話型のディスク使用量分析を最も迅速に行う方法です。

2024年のBigBearチュートリアルは入門として役立ちますが、ncduを使うために特別なアプリストアコンテナは必要ありません。ストレージのトラブルシューティングでは、ホストターミナル、または対象を明示的に読み取り専用でマウントしたコンテナの方が透明性に優れています。

ncduが得意なこと

ncduは対話型のディスク使用量アナライザーです。ディレクトリをスキャンしてサイズ順に並べ替え、コマンドを手動で連結しなくても容量の大きいフォルダーを掘り下げて確認できます。 du コマンド。

現在のncduプロジェクトページには、x86_64、ARM、AArch64向けのncdu 2.x静的バイナリが掲載されています。

実際に容量を使い切っているファイルシステムから始める

実行:

df -h

空き容量の少ないマウントを特定します。その後、ncduを無闇に実行するのではなく、そのマウントをスキャンします。 /.

CasaOSのデータパスをスキャンする

一般的な例:

ncdu /DATA
ncdu /media
ncdu /var/lib/docker

正確なパスはインストール方法によって異なります。DockerまたはAppDataが原因と考えられる場合は、その場所を直接確認してください。

Dockerの内部をスキャンする際は注意する

/var/lib/docker イメージレイヤー、書き込み可能なレイヤー、ログ、メタデータが含まれています。ncduを使えば容量の大きいディレクトリを確認できますが、overlayファイルを無作為に手動削除するとDockerの状態が破損するおそれがあります。

ncduから内部のレイヤーディレクトリを削除するのではなく、イメージ、コンテナ、キャッシュにはDocker対応のクリーンアップコマンドを使用してください。

コンテナ化されたncduには可視範囲の制限がある

コンテナ内でncduを実行した場合、そのコンテナにマウントしたパスしか確認できません。コンテナのルートをスキャンしても、CasaOSのディスク使用量全体についてはほとんど何も分かりません。

Dockerを使う場合は、対象のホストパスを読み取り専用でマウントし、そのマウント先をスキャンしてください。原因を調査している間は削除を無効にしておきます。

大容量のAppDataフォルダーを最初に見つける

セルフホストアプリは、サムネイル、ログ、キャッシュ、データベース、ダウンロードしたメタデータを蓄積することがあります。Dockerストレージガイドでは、コンテナイメージが小さくてもホストのAppDataが増加する理由を説明しています。

大容量を占有する一般的な原因

  • メディアのトランスコードキャッシュ。
  • コンテナの JSON ログ。
  • データベースファイル。
  • 写真のサムネイルと機械学習用インデックス。
  • ダウンロードクライアントの未完了フォルダー。
  • 古いバックアップ。
  • Docker イメージとビルドキャッシュ。

フォルダーの所有者が分かるまで削除しない

ncdu で容量の大きなパスを特定し、どのアプリケーションが所有しているかを確認します。現在書き込まれている可能性のあるデータを削除する前に、関連するアプリケーションを停止してください。

除外を使って大規模なスキャンをより有効にする

ネットワーク共有、バックアップ、外付けディスクがマウントされたサーバーでは、誤ったツリーをスキャンすると時間がかかり、関係のないストレージが一つの結果に混在する可能性があります。まず、次に示す df の正確なマウントポイントから開始します。 df -h また、問題の対象でない限り、リモートマウントに入り込まないようにします。

繰り返しトラブルシューティングを行う場合、ncdu はスキャンデータをエクスポートできるため、セッションごとに巨大なファイルシステムを再スキャンする代わりに、時間の経過に伴う増加を比較できます。

削除済みだが開いたままのファイルを理解する

場合によっては df ファイルシステムが満杯だと報告される一方で、ncdu ではそれを説明できるだけの表示可能なファイルが見つからない場合があります。原因の一つは、プロセスがすでに削除されたファイルを開いたまま保持していることです。ディレクトリエントリは消えていますが、プロセスがファイルを閉じるまでブロックは割り当てられたままです。

ncdu の合計と df 大きく食い違う場合は、次のようなツールで開いたままの削除済みファイルを調べます。 lsof +L1 ホスト上で利用可能な場合。何が容量を占有しているかを把握したうえで、該当するサービスを再起動すると容量が解放されることがあります。

ncdu はクリーンアップ方針ではなく、測定ツールとして使う

大きなキャッシュは安全に削除できる場合がありますが、同程度のサイズのデータベースディレクトリは重要な可能性があります。ncdu の価値は、容量がどこで使われているかを示すことにあります。その容量をどのように解放するかは、所有するアプリケーションが判断すべきです。

よくある質問

ncdu でファイルを削除できますか?

はい。ただし、削除は慎重に行ってください。Docker の内部データ、データベース、アプリが管理するデータについては、アプリケーション独自のクリーンアップ手順を優先してください。

ncdu が df より少ない容量しか表示しないのはなぜですか?

考えられる理由には、削除済みだが開いたままのファイル、アクセスできないディレクトリ、ファイルシステムのメタデータ、スナップショット、またはスキャン対象のマウント外にあるデータなどがあります。

ncdu のインストールに BigBearCasaOS は必要ですか?

いいえ。これはパッケージングの選択肢の一つです。現在の upstream では、スタンドアロンの静的バイナリも提供されています。

最初にどこをスキャンすべきですか?

使用する df -h 完全なマウントポイントを特定し、その正確なパスを ncdu でスキャンします。