はじめに
このドキュメントでは、システムディスクからファイルを消去する方法について説明します。
最低限のソフトウェアおよびハードウェアプラットフォーム
マネージャおよびバージョン: FMC/FDM 7.6.0 CLIがFMCまたはFTD CLIで実行されます。
アプリケーション(ASA/FTD)およびアプリケーションの最小バージョン:FTD 7.6.0
サポート対象プラットフォーム:すべてのFMCおよびFTDデバイスにこの機能があります。
移行元:https://confluence-eng-rtp2.cisco.com/conf/display/IFT/Diskcleaner
機能説明とウォークスルー
概要
diskcleanerとそのスクリプトは、インストール/アップグレード時にインストールされます。これはアップグレードスクリプトの一部ではありません。diskcleaner.pyプロセスは、システムの起動時にプロセスマネージャによって起動されます。プロセスマネージャによって管理されるデーモンプロセスとして実行され、システムがシャットダウンされるまで実行されます。ディスククリーナには、ディスクボリューム=使用率が設定されたしきい値を超えたときに起動されるディスクスクリプトがあります。たとえば、現在、ボリューム使用率の使用率が85%に達したときに呼び出されるディスククリーニングスクリプトと、ディスク使用率の使用率が95%に達したときに呼び出されるディスククリーニングスクリプトがあります。ディスクの空き容量が95%に達すると、95%の空き容量のクリーンアップスクリプトが実行され、ディスクの空き容量が85%を超えたままの場合は、85%の空き容量のクリーンアップスクリプトが実行されます。
FMCディスククリーナ
FMCで実行するようにdiskcleanerが現在設定されているのは次のとおりです。
– 削除されたファイル(削除されたが、実行中のプロセスによって開かれているファイル)を0バイトに切り捨てます。 これらのファイルは、lsof +L1コマンドを使用して表示できます。
– ディスクマネージャを強制的にすべてのサイロを削除します。
– 回転したすべてのログファイル(messages.1.gzのようなファイル拡張子xxxxxxxxx.n.gzのもの)を削除します。
– ディスクマネージャがすべてのサイロの最大ドレインを実行するようにします。これにより、サイロのスペースが通常の最低水準点の25 %にまで広がります。
FTDディスククリーナ
FTDで実行するようにdiskcleanerが現在設定されているのは次のとおりです。
– 削除されたファイル(削除されたが、実行中のプロセスによって開かれているファイル)を0バイトに切り捨てます。 これらのファイルはlsof +L1コマンドで表示できます。
– ディスクマネージャを強制的にすべてのサイロを削除します。
– 回転したすべてのログファイル(messages.1.gzのようなファイル拡張子xxxxxxxxx.n.gzのもの)を削除します。
– ディスクマネージャがすべてのサイロの最大ドレインを実行するようにします。これにより、サイロのスペースが通常の最低水準点の25 %にまで広がります。
NOTE: At the current time, FXOS files and logs are outside of the scope of the diskcleaner!!!
使用可能なDiskcleanerスクリプトの表示
system support diskcleaner-showコマンドを使用して、実行可能なディスククリーナスクリプトを表示します。ここで表示されるスクリプトは、diskcleaner-runコマンドを使用して手動で実行し、ディスク領域を手動で解放できます。これらの各ディスククリーンアップスクリプトについては、これらのスライドで呼び出し例とともに説明します。
> system support diskcleaner-show
sfims-file-mgmnt-infra-delete-rotated-logs.sh
sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh
sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh
sfims-file-mgmnt-infra-truncate-deleted-files.py
Diskcleanerの手動実行
diskcleanerコマンドを入力します。既存のディスクマネージャとディスクプルーナの方法では、この新しいタスクには不十分です。Diskmanagerは、ファイルを開いたり閉じたりするときに、ディスクの満杯レベルをリアルタイムで制御するように設計されています。ディスクマネージャの設定ファイルは、選択的で、複雑で、脆弱です。プルーナプロセスは、システムディスク全体の満杯レベルを認識することなく、個々の機能コンポーネントのファイル領域使用量を減らすように設計されています。新しいdiskcleanerフレームワークは、ディスクマネージャと同様のシステムディスクの満杯レベルに基づいてファイルを削除する機能と、ディスクプルーナプロセスと同様のスクリプト言語を簡単に使用できる機能を提供するために作成されました。
diskcleaner-run コマンドを使用して、diskcleanerスクリプトを手動で実行します。コマンドは、次のとおりです。
system support diskcleaner-run
ここで、file nameは、実行するdiskcleanerスクリプトの名前です。ディレクトリ名とファイル名を含むフルパス、(/etc/sf/dcからの)相対パス、または(/etc/sf/dcでの名前のように)スクリプトの名前を指定できます。 標準のファイルグローバルが受け入れられます。ファイル名はセキュリティ要件に従うため、許可される文字セットを制限できます(たとえば、バックティック'は使用されません)。 diskcleanerは単にスクリプトを盲目的に実行しているだけであることを覚えておいてください。したがって、複数のdiskcleanerスクリプトを実行する新しいスクリプトを作成し、その新しいスクリプトだけを実行できます(これにより、含まれるすべてのdiskcleanerスクリプトが実行されます)。
回転したログの削除
指定したマウントポイント上の回転されたログファイルをすべて削除します。
> system support diskcleaner-run sfims-file-mgmnt-infra-delete-rotated-logs.sh --help
指定したマウントポイント上の回転されたログファイルをすべて削除します。
sfims-file-mgmnt-infra-delete-rotated-logs.sh [--debug] [--help] <mount point>
> system support diskcleaner-run sfims-file-mgmnt-infra-delete-rotated- logs.sh --debug /ngfw/Volume
Deleting all rotated log files on mount point '/ngfw/Volume'.
Deletion of all rotated log files on mount point '/ngfw/Volume' has
completed - 0 bytes.
ディスクマネージャのパーティションドレイン
ディスクマネージャがすべてのパーティションで最大ドレインを実行するようにします
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh --help
ディスクマネージャを使って、すべてのパーティションを最大限に使い切るようにします。
sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh [--debug] [--help]
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh
Performing a maximum drain on all disk manager partitions - current disk usage:
Partition:Silo Used Minimum Maximum
/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB
...
Performing a maximum drain on disk manager partition '/ngfw/var'.
Partition /ngfw/var has been drained.
Maximum drain on all disk manager partitions has completed - current disk usage:
Partition:Silo Used Minimum Maximum
/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB
...
>
ディスクマネージャのサイロドレイン
ディスクマネージャがすべてのサイロで最大ドレインを実行するようにします
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh --help
ディスクマネージャを作成して、すべてのサイロを最大限に活用します。
sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh [--debug] [--help]
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh
Draining all disk manager silos to their low-water mark - current disk usage:
Partition:Silo Used Minimum Maximum
/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB
...
Draining all disk manager silos..
All silos have been drained.
Draining all disk manager silos to their low-water mark has completed - current disk usage:
Partition:Silo Used Minimum Maximum
/ngfw/var:Temporary Files 0 KB 121.704 MB 486.817 MB
>
削除されたファイルの切り捨て
ファイルハンドルが開いているために存在するすべての非表示の削除されたファイルを0バイトに切り捨てます。
> system support diskcleaner-run sfims-file-mgmnt-infra-truncate-deleted-files.py -h
usage: sfims-file-mgmnt-infra-truncate-deleted-files.py [-h] [--debug]
[ignored]
Truncate all deleted (zombie) files to zero-length.
positional arguments:
ignored
optional arguments:
-h, --help show this help message and exit
--debug If specified, the script will output lots of debug information.
> system support diskcleaner-run sfims-file-mgmnt-infra-truncate-deleted-files.py
Truncating all deleted (zombie) files.
Deleted file '/run/nscd/dbGG9F8K' is on the deleted files exclude list - NOT truncating.
All deleted (zombie) files have been truncated - total size = 0 bytes.
>
Diskcleanerの停止と起動
pmtoolコマンドを使用して、ディスククリーナを停止および開始します。
> pmtool disablebyid diskcleaner
>
> pmtool status
...
diskcleaner (normal) - User Disabled
...
> pmtool enablebyid diskcleaner
>
> pmtool status
...
diskcleaner (normal) – Running 17086
...
ソフトウェア技術
ディスククリーナ.py
このスクリプトは、diskcleanerのメインプログラムです。このPythonスクリプトは次のように実行されます。
diskcleaner.py [--debug] [--help] [--interval <interval>]
debuggingが指定されている場合、スクリプトはデバッグ情報を出力し、helpは使用状況情報を出力して終了します。
ディスククリーニングのサイクル間隔(秒単位)。指定しない場合、デフォルトは600秒です。diskcleaner.pyは、システム起動時にプロセスマネージャーによって起動されます。プロセスマネージャによって管理されるデーモンプロセスとして実行され、システムがシャットダウンされるまで実行されます。diskcleanerが起動されると、間隔秒ごとに実行されるループが実行されます。ディスククリーナは、df -a コマンドで指定されたすべてのマウントポイント(/、/Volume、...)をサイクルごとにスキャンし、それぞれの現在のディスク使用量(df コマンドで測定)を取得します。
ディスククリーナは、レベル0から始まる各クリーニングレベルを順に実行し、そのレベル番号がマウントポイントのディスク使用率を超えるまで作業を続けます。マウント・ポイントの使用率がレベル番号以上の場合にのみ、レベルのクリーニングを実行する必要があります。したがって、使用率が55%の場合は、各ディスククリーニングレベルを0、1、2、...、55の順に実行します。
クリーニングを実行する必要がある場合は、シェルスクリプトdiskcleaner.sh (以下を参照)を呼び出して、実際のクリーニングを実行します。このスクリプトは、指定されたクリーンレベルのマウントポイントのdiskcleanerディレクトリにあるすべてのスクリプトを自動的に呼び出します。
- たとえば、/マウントポイントの使用率が現在96 %であるとします。ディスククリーナがサイクルを開始すると、dfコマンドを実行して、/マウントポイントの使用率が96 %であることを確認します。レベル0のクリーニングの使用レベルは0%に設定されているため、diskcleanerは/マウントポイントに指定されたすべてのレベル0スクリプトを実行します。この時点で、ディスククリーナはdf コマンドを再実行します。レベル0のクリーニングでは何も行われず、使用率が96 %のままであると仮定します。これで、diskcleanerはレベル1のスクリプトをすべて実行し、次にレベル2のスクリプトなどを実行します。
- /マウントポイントの使用率を90%に減らすスクリプトがレベル50にあると仮定します。diskcleanerはレベル51、52、...で続きます。
- たとえば、レベル80のスクリプトによって/マウントポイントの使用率が75 %に減ったとします。75 %が次のレベルの81よりも少なくなったので、これでディスククリーナは/マウントポイントで終了します。
ディスククリーナ.sh
diskcleaner.shは、ディスククリーニングイベントを開始するbashスクリプトです。
diskcleaner.sh <mount point> <level>
ここで、マウント・ポイントはクリーニングするマウント・ポイントで、レベルは実行するクリーニング・レベルを示します。これは、クリーニングが実行されるパーセンテージです。たとえば、85と入力すると、diskcleanerは85%で実行されます。
ディレクトリに存在するすべてのディスククリーニングスクリプト:
[/ngfw]/etc/sf/dc/<mount point>/dc<clean level>
ファイルglob DC*にマッチするファイルが実行される(アルファベット順)。
マウントポイント名には通常スラッシュ(/)が含まれているため、ディレクトリパスに実際のマウントポイント名を使用するのは不自然(または不正)です。 したがって、/を_に変更します。したがって、マウント・ポイント/dev/shmをクリーン・レベル85(ディスク使用率85%)でクリーンアップするには、スクリプトが次のように一致する必要があります: [/ngfw]/etc/sf/dc/_dev_shm/85/DC*
このパラダイムはrc initスクリプトパラダイムに基づいており、rcn.dディレクトリ内のすべての一致するスクリプトが自動的に実行されます。DCプレフィックスは、rc initパラダイムのホールドオーバーでもあります。これらのスクリプトはすべてS(start)またはK(kill)で始まります。 ディレクトリに残されたcrapファイルを拾うのを防ぐことができます。したがって、DCのプレフィックスを使用します。
カバーの下
ディスククリーナはlinuxのdfコマンドを使用して、ディスクの使用状況をチェックします。

Diskcleanerのトラブルシューティング
システムファイル
- diskcleanerのトラブルシューティングは、次の項目を参照して行うことができます。
/var/log/process_stdout.log and /var/log/process_stderr.log
- diskcleanerによってログに記録されるエントリには、プロセス名としてdiskcleaner、およびdiskcleaner PIDとしてdiskcleanerが含まれます。
- これは、PMベースのプロセスのロギングを調べる標準的な方法です。
トラブルシューティング手順
diskcleanerの動作は、process_stdout.logに記録されます。通常、ディスククリーニングを行う必要がないため、出力はありません。ただし、ディスク・クリーニングを実行する必要がある場合は、削除されたファイルはすべてprocess_stdout.logに記録されます。次のページに、process_stdout.logに含めることができる内容の例を示します。Diskcleanerをgrepします。 ̌process_stdout.logの出力例:
Feb 9 04:10:23 uhura diskcleaner[2639]: Starting level 85 disk cleaning for mount point '/ngfw/Volume': current usage = 97%.
Feb 9 04:10:23 uhura diskcleaner[2639]: Starting disk cleaning scripts in directory '/etc/sf/dc/_ngfw_Volume/dc85' for mount point '/ngfw/Volume'.
Feb 9 04:10:23 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on
Feb 9 04:10:23 uhura diskcleaner[2639]: /dev/sda5 40511148 39040764 1470384 97% /ngfw/Volume
Feb 9 04:10:23 uhura diskcleaner[2639]: Executing '/etc/sf/dc/_ngfw_Volume/dc85/DC660-truncate-deleted- files.py' ...
Feb 9 04:10:23 uhura diskcleaner[2639]: Truncating all deleted (zombie) files.
Feb 9 04:10:23 uhura diskcleaner[2639]: Deleted file '/run/nscd/dbZ5hobS' is on the deleted files exclude list - NOT truncating.
Feb 9 04:10:23 uhura diskcleaner[2639]: All deleted (zombie) files have been truncated - total size = 0 bytes.
Feb 9 04:10:23 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on
Feb 9 04:10:23 uhura diskcleaner[2639]: /dev/sda5 40511148 39040764 1470384 97% /ngfw/Volume
Feb 9 04:10:23 uhura diskcleaner[2639]: '/etc/sf/dc/_ngfw_Volume/dc85/DC660-truncate-deleted-files.py' completed in 0.43 seconds - status = 0.
Feb 9 04:10:23 uhura diskcleaner[2639]: Executing '/etc/sf/dc/_ngfw_Volume/dc85/DC663-delete-rotated- logs.sh' ...
Feb 9 04:10:23 uhura diskcleaner[2639]: Deleting all rotated log files on mount point '/ngfw/Volume'.
Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/top.log.1.gz' - 2771386 bytes.
Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.1.gz' - 1073741824 bytes.
Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.2.gz' - 1073741824 bytes.
Feb 9 04:10:24 uhura diskcleaner[2639]: Deleted file '/ngfw/Volume/root1/ngfw/var/log/test/fake-rotated- log.log.3.gz' - 1073741824 bytes.
Feb 9 04:10:24 uhura diskcleaner[2639]: Deletion of all rotated log files on mount point '/ngfw/Volume' has completed - 25772575162 bytes.
Feb 9 04:10:24 uhura diskcleaner[2639]: Filesystem 1K-blocks Used Available Use% Mounted on
Feb 9 04:10:24 uhura diskcleaner[2639]: /dev/sda5 40511148 13872228 26638920 35% /ngfw/Volume
Feb 9 04:10:24 uhura diskcleaner[2639]: '/etc/sf/dc/_ngfw_Volume/dc85/DC663-delete-rotated-logs.sh' completed in 0.21 seconds - status = 0.
Feb 9 04:10:24 uhura diskcleaner[2639]: Completed disk cleaning scripts in directory '/etc/sf/dc/_ngfw_Volume/dc85' for mount point '/ngfw/Volume' in 0.69 seconds.
Feb 9 04:10:24 uhura diskcleaner[2639]: Finished level 85 disk cleaning for mount point '/ngfw/Volume': current usage = 35%.