Inleiding
In dit document wordt beschreven hoe u bestanden van de systeemschijf kunt opschonen.
Minimale software- en hardwareplatforms
Manager(s) en Versie(s): FMC/FDM 7.6.0 CLI uitgevoerd in het FMC of de FTD CLI
Toepassing (ASA/FTD) en minimale versie van toepassing: FTD 7.6.0
Ondersteunde platforms: Alle FMC- en FTD-apparaten hebben deze functie.
Kenmerken Beschrijving en Walkthrough
Overzicht
De diskcleaner en de bijbehorende scripts worden bij de installatie/upgrade geïnstalleerd. Het maakt geen deel uit van de upgrade scripts. Het proces diskcleaner.py wordt gestart door de Process Manager bij het opstarten van het systeem. Het wordt uitgevoerd als een daemon-proces dat wordt beheerd door de Process Manager en wordt uitgevoerd totdat het systeem is uitgeschakeld. De schijfreiniger heeft schijfscripts die worden aangeroepen wanneer het schijfvolume= gebruikspercentage de geconfigureerde drempelwaarden overschrijdt. Er zijn momenteel bijvoorbeeld scripts voor schijfreiniging die worden aangeroepen wanneer het volume volheid bereikt 85% en anderen die worden aangeroepen wanneer de schijf volheid bereikt 95%. Als de schijfvolheid 95% bereikt, voert deze de 95% volheid opruimingsscripts uit en als de schijfvolheid groter blijft dan 85%, voert deze de 85% volheid opruimingsscripts uit.
FMC Diskcleaner
Dit is wat de diskcleaner momenteel is geconfigureerd voor gebruik op de FMC:
- 85% Schijfgebruik opruimacties:
- Afkappen (tot 0 bytes) van verwijderde bestanden (bestanden die zijn verwijderd maar nog steeds geopend zijn door een lopend proces). Deze bestanden kunnen worden weergegeven met de opdracht lsof +L1.
- Forceer de schijfbeheerder om alle silo's leeg te laten lopen.
- Verwijder alle geroteerde logbestanden (bestanden met bestandsextensies xxxxxxxx.n.gz zoals messages.1.gz)
- 95% Schijfgebruik opruimacties:
- Forceer de schijfbeheerder om een maximale drain van alle silo's te doen. Hierdoor worden de silo's afgevoerd naar 25% van hun normale laagwatermarkering.
FTD Diskcleaner
Dit is wat de diskcleaner momenteel is geconfigureerd om op de FTD te werken:
- 85% Schijfgebruik opruimacties:
- Afkappen (tot 0 bytes) van verwijderde bestanden (bestanden die zijn verwijderd maar nog steeds geopend zijn door een lopend proces). Deze bestanden kunnen worden weergegeven met de opdracht lsof +L1.
- Forceer de schijfbeheerder om alle silo's leeg te laten lopen.
- Verwijder alle geroteerde logbestanden (bestanden met bestandsextensies xxxxxxxx.n.gz zoals messages.1.gz)
- 95% acties voor schijfgebruik:
- Forceer de schijfbeheerder om een maximale drain van alle silo's te doen. Hierdoor worden de silo's afgevoerd naar 25% van hun normale laagwatermarkering.
NOTE: At the current time, FXOS files and logs are outside of the scope of the diskcleaner!!!
De beschikbare Diskcleaner-scripts bekijken
Gebruik de opdracht schijfopschonershow voor systeemondersteuning om te zien welke schijfopschonerscripts beschikbaar zijn om uit te voeren. De hier weergegeven scripts kunnen handmatig worden uitgevoerd met de opdracht diskcleaner-run om handmatig schijfruimte vrij te maken. Elk van deze disk cleanup scripts worden beschreven in deze slides met aanroepingsvoorbeelden.
> 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
De Diskcleaner handmatig uitvoeren
Voer de opdracht diskcleaner in. De bestaande schijfbeheer- en schijfprunermethoden zijn onvoldoende voor deze nieuwe taak. De diskmanager is ontworpen om de volheidsniveaus van de schijf in realtime te regelen wanneer bestanden worden geopend en gesloten. De configuratiebestanden van diskmanager zijn selectief, ingewikkeld en kwetsbaar. Het prunerproces is ontworpen om het gebruik van bestandsruimte voor afzonderlijke functiecomponenten bij te snijden zonder zich bewust te zijn van de algehele niveaus van schijfvolheid van het systeem. Het nieuwe schijfopruimingsframework is gemaakt om de mogelijkheid te bieden om bestanden te verwijderen op basis van de volheidsniveaus van de systeemschijf die vergelijkbaar zijn met de schijfbeheerder, met de eenvoud van het gebruik van een scripttaal die vergelijkbaar is met die van het schijfopruimingsproces.
Gebruik de opdracht diskcleaner-run om handmatig een diskcleaner-script uit te voeren. Het commando is:
system support diskcleaner-run
waarbij de bestandsnaam de naam is van het DiscCleaner-script dat moet worden uitgevoerd. Het kan een volledig pad zijn met directory en bestandsnaam, een relatief pad (van /etc/sf/dc), of de naam van een script (zoals het in /etc/sf/dc wordt genoemd). Standaardbestandenglobben worden geaccepteerd. De bestandsnaam is onderworpen aan beveiligingsvereisten die de toegestane set tekens kunnen beperken (zoals geen gebruik van backticks'). Vergeet niet dat de diskcleaner gewoon blindelings scripts uitvoert. U kunt dus een nieuw script maken dat verschillende diskcleaner-scripts uitvoert en vervolgens dat nieuwe script uitvoeren (zodat alle diskcleaner-scripts die daarin zijn opgenomen, worden uitgevoerd).
Geroteerde logs verwijderen
Verwijder alle geroteerde logbestanden op het opgegeven koppelpunt.
> system support diskcleaner-run sfims-file-mgmnt-infra-delete-rotated-logs.sh --help
Verwijder alle geroteerde logbestanden op het opgegeven koppelpunt.
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.
Disk Manager Partition Drain
Schijfbeheer maximaal laten leeglopen op alle partities
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-partition-drain-max.sh --help
Maak van schijfbeheer een maximale drain van alle partities.
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
...
>
Disc Manager Silo Drain
Laat schijfbeheer een maximale drain uitvoeren op alle silo's
> system support diskcleaner-run sfims-file-mgmnt-infra-diskmanager-silo-drain-all.sh --help
Maak van de schijfbeheerder een maximale drain van alle silo's.
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
>
Verwijderde bestanden afkappen
Afkappen tot nul bytes alle verborgen verwijderde bestanden die aanwezig zijn als gevolg van open bestands handles.
> 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 stoppen en starten
Gebruik de opdracht pmtool om de diskcleaner te stoppen en te starten.
> pmtool disablebyid diskcleaner
>
> pmtool status
...
diskcleaner (normal) - User Disabled
...
> pmtool enablebyid diskcleaner
>
> pmtool status
...
diskcleaner (normal) – Running 17086
...
softwaretechnologie
Diskcleaner.py
Dit script is het hoofdprogramma voor de diskcleaner. Dit Python-script wordt als volgt uitgevoerd:
diskcleaner.py [--debug] [--help] [--interval <interval>]
Als foutopsporing is opgegeven, voert het script foutopsporingsinformatie uit en wordt de informatie over het uitvoergebruik en het afsluiten weergegeven.
Het interval (in seconden) tussen de reinigingscycli van de schijf. Als dit niet is opgegeven, is de standaardinstelling 600 seconden. diskcleaner.py wordt gestart door Process Manager bij het opstarten van het systeem. Het wordt uitgevoerd als een daemon-proces dat wordt beheerd door de Process Manager en wordt uitgevoerd totdat het systeem wordt afgesloten. Wanneer de diskcleaner wordt gestart, voert deze een lus uit die elke intervalseconden wordt uitgevoerd. Bij elk programma scant de diskcleaner alle koppelpunten (/, /Volume, ...) die zijn opgegeven door de opdracht df -a en krijgt hij het huidige schijfgebruik (gemeten met de opdracht df).
De schijfreiniger loopt door elk reinigingsniveau vanaf niveau 0 en werkt zich een weg omhoog totdat het niveauaantal groter is dan het schijfgebruikspercentage van dat koppelpunt. U hoeft alleen een niveau schoon te maken als het gebruik van het bevestigingspunt op of groter is dan het niveaunummer. Dus, als het gebruik 55% is, voer dan elk schijfreinigingsniveau uit in volgorde – 0, 1, 2, …, 55.
Wanneer het schoonmaken moet worden gedaan, wordt het shell script diskcleaner.sh (zie hieronder) aangeroepen om de daadwerkelijke schoonmaak te doen. Dat script roept blindelings elk script dat in de diskcleaner-directory van het koppelpunt wordt gevonden voor het opgegeven schone niveau.
- Laten we bijvoorbeeld zeggen dat het / mount-punt momenteel 96% gebruikt wordt. Wanneer de diskcleaner zijn cyclus start, voert deze de df-opdracht uit en ziet u dat het /koppelpunt op 96% gebruik staat. Het gebruiksniveau voor reiniging op niveau 0 is ingesteld op 0%, zodat de diskcleaner alle scripts op niveau 0 uitvoert die voor het / koppelpunt zijn opgegeven. Op dit punt voert de diskcleaner de opdracht df opnieuw uit. Stel dat het niveau 0 schoonmaken niets heeft gedaan, dus het gebruik is nog steeds 96%. De diskcleaner voert nu alle scripts van niveau 1 uit, dan niveau 2 enzovoort.
- Laten we zeggen dat er scripts op niveau 50 zijn die het / mount point-gebruik verminderen tot 90%. De schijfreiniger gaat verder met niveau 51, 52,...
- Laten we zeggen dat er scripts op niveau 80 zijn die het gebruik van het /koppelpunt verminderen tot 75%. Nu is de diskcleaner klaar met het / montagepunt omdat 75% minder is dan het volgende niveau dat 81 is.
Diskcleaner.sh
De diskcleaner.sh is een bash-script dat de schijfreiniginggebeurtenis initieert.
diskcleaner.sh <mount point> <level>
waarbij het bevestigingspunt het te reinigen montagepunt is en het niveau verwijst naar het uit te voeren reinigingsniveau. Dit is het percentage waarmee de reiniging wordt uitgevoerd. Als er bijvoorbeeld 85 worden ingevoerd, zou het schijfreiniger op 85% draaien.
Alle scripts voor schijfreiniging die in de directory aanwezig zijn:
[/ngfw]/etc/sf/dc/<mount point>/dc<clean level>
die overeenkomen met het bestand glob DC* worden uitgevoerd (in alfabetische volgorde).
Merk op dat omdat de namen van de koppelpunten meestal schuine strepen (/) bevatten, het gebruik van de eigenlijke naam van het koppelpunt in het directorypad onhandig (of illegaal) is. Dus, wijzig elke / naar _. Dus om het koppelpunt /dev/shm schoon te maken op niveau 85 (voor 85% schijfgebruik), moeten de scripts overeenkomen met: [/ngfw]/etc/sf/dc/_dev_shm/85/DC*
Dit paradigma is gebaseerd op het rc init script paradigma waarbij alle overeenkomende scripts in de rcn.d directory blindelings worden uitgevoerd. Het DC prefix is ook een overblijfsel van het rc init paradigma – die scripts beginnen allemaal met ofwel S (start) of K (kill). Ik denk dat het je ervan weerhoudt om rotzooi-bestanden op te pakken die gewoon in de map zijn achtergelaten. Gebruik een prefix van DC.
Onder de dekens
De diskcleaner gebruikt de opdracht linux df om te controleren op schijfgebruik:

Diskcleaner voor probleemoplossing
Systeembestanden
- Het oplossen van problemen met de schijfreiniger kan worden gedaan door te kijken naar:
/var/log/process_stdout.log and /var/log/process_stderr.log
- Inzendingen die zijn geregistreerd door de diskcleaner bevatten diskcleaner als procesnaam en de diskcleaner PID.
- Dit is de standaardmanier om te kijken naar logboekregistratie voor een PM-gebaseerd proces.
Stappen voor het oplossen van problemen
Wat de DiscCleaner doet is aangemeld bij process_stdout.log. Meestal is er geen uitvoer omdat er geen schijfreiniging hoeft te worden uitgevoerd. Maar als het schijfopschonen moet worden gedaan, worden alle bestanden die worden verwijderd, ingelogd in process_stdout.log. Op de volgende pagina staat een voorbeeld van wat process_stdout.log kan bevatten. Grep op schijfreiniger. ̌Voorbeelduitvoer in 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%.