Het beheren van logbestanden die veel schijfruimte in beslag nemen in Exchange kan een flinke uitdaging zijn, vooral omdat ze constant groeien en snel schijfruimte opslokken. Als uw server fouten geeft 452 4.3.1 Insufficient system resourcesof als mailboxdatabases onverwacht worden ontkoppeld, zijn de logbestanden waarschijnlijk de boosdoener. Het gaat niet alleen om het netjes houden van de boel – logbestanden zijn essentieel voor herstel – maar wanneer ze uit de hand lopen, maken ze de server traag of zelfs helemaal onbruikbaar. Het doel is dus om oplossingen te vinden om logbestanden op te schonen, in te korten of te verplaatsen zonder iets te beschadigen.
Mijn ervaring is dat dit geen eenmalige oplossing is; het gaat erom routines in te stellen om te voorkomen dat die logbestanden zich blijven ophopen. Je kunt logbestanden periodiek opschonen, de locatie van de logbestanden wijzigen of bepaalde logfuncties inschakelen die het zware werk voor je doen. Houd er wel rekening mee dat paden en gedragingen enigszins verschillen per Exchange-versie, dus het is de moeite waard om je eigen omgeving te controleren. Laten we nu eens kijken naar een aantal praktische methoden.
Hoe los je het probleem op dat logbestanden veel ruimte innemen in Exchange?
Methode 1: Transactielogboeken wissen — maar wees voorzichtig
Transactielogboeken zijn cruciaal voor herstel; ze registreren alle wijzigingen totdat ze in de database zijn opgeslagen. Het handmatig verwijderen ervan kan riskant zijn, tenzij u recente back-ups hebt of uw database zich in een schone afsluitstatus bevindt. Toch kunt u voor een snelle opruiming het volgende doen:
- Zorg ervoor dat u recent een back-up van uw mailboxdatabases hebt gemaakt. Alleen dan kunnen logboeken veilig worden verwijderd zonder risico op gegevensverlies. Gebruik een moderne back-upoplossing die Volume Shadow Copy (VSS) of Windows Server Backup ondersteunt. Dit proces werkt alleen als de database is gemarkeerd als ‘clean shutdown’ (controleer dit met
Get-MailboxDatabase -Identity "DatabaseName" | Select-Object Name, Mounted). - Na bevestiging kunt u het volgende commando uitvoeren
Restart-Service MSExchangeISom te controleren of de database is gekoppeld en in een schone staat verkeert. - Logbestanden worden automatisch verwijderd als u een back-up van uw databases maakt. Als u direct wilt verwijderen zonder back-up, kunt u eerst proberen circulaire logboekregistratie uit te schakelen (indien ingeschakeld), omdat dit voorkomt dat logbestanden automatisch worden verwijderd.
Let op: Handmatig verwijderen zonder back-up kan bij storingen leiden tot gegevensverlies, ga daarom voorzichtig te werk. Vaak is het maken van een back-up al voldoende.
Methode 2: Schakel circulaire logboekregistratie in (indien van toepassing)
Dit kan een doorslaggevende factor zijn, vooral wanneer de schijfruimte beperkt is. Circulaire logboekregistratie overschrijft oude gegevens in de logboeken, zodat ze zich niet oneindig ophopen. Maar let op: het beperkt de mogelijkheden voor herstel naar een specifiek tijdstip, dus doe dit alleen als uw back-upplan waterdicht is.
- Ga in het Exchange-beheercentrum naar Servers > Databases.
- Klik met de rechtermuisknop op de database en kies Eigenschappen.
- Vink het vakje voor circulaire logboekregistratie aan en sla op.
- Om dit via PowerShell te doen, voert u het volgende commando uit:
Set-MailboxDatabase -Identity "DatabaseName" -CircularLoggingEnabled $true - Ontkoppel en herkoppel vervolgens de database:
Dismount-Database -Identity "DatabaseName"Mount-Database -Identity "DatabaseName"
De logbestanden zouden nu na elk checkpoint automatisch overschreven moeten worden. In sommige configuraties kan het nodig zijn om de computer opnieuw op te starten of even geduld te hebben voordat de ruimte vrijkomt.
Methode 3: Verplaats de database en logbestanden naar een andere schijf.
Dit is zo’n klus die ingewikkeld lijkt, maar niet zo moeilijk is als je het eenmaal door hebt. Door je mailboxdatabase en de bijbehorende logbestanden naar een grotere, minder drukke schijf te verplaatsen, kun je enorm veel ruimte vrijmaken en de prestaties verbeteren.
- Bereid eerst de bestemmingsmap voor, bijvoorbeeld M:\DB\Mdb1.
- Gebruik de PowerShell-
Move-DatabasePathcmdlet: - Voorbeeld:
Move-DatabasePath -Identity "MDB1" -EdbFilePath "M:\DB\MDB1\mdb1.edb" -LogFolderPath "M:\DB\MDB1\logs" - Stop altijd eerst de database:
Dismount-Database "MDB1"Move-DatabasePath...Mount-Database "MDB1"
Bij de ene configuratie verliep alles probleemloos, maar bij een andere was er een probleem met de machtigingen. Zorg er dus voor dat het account dat dit uitvoert de juiste rechten heeft. Controleer ook de padmachtigingen en quota.
Methode 4: Transport- en IIS-logboeken omleiden
Transportlogboeken kunnen ook enorm groeien als ze niet worden bijgehouden, vooral in drukke omgevingen. U kunt deze logboeken verplaatsen naar een aparte schijf of netwerkshare, zodat u ze later gemakkelijker kunt opruimen.
- Om de paden voor gegevensverzameling te wijzigen, gaat u naar het Exchange-beheercentrum of gebruikt u PowerShell. Voor IIS-logboeken opent u IIS Manager, selecteert u uw site en vervolgens het tabblad Logboekregistratie.
- Wijzig de maplocatie, bijvoorbeeld M:\IISLogs.
- Of, voor liefhebbers van de commandoregel, gebruik PowerShell:
Import-Module WebAdministrationSet-ItemProperty 'IIS:\Sites\Default Web Site' -name logfile.directory 'M:\IISLogs' - Als je oude logbestanden wilt bewaren maar verplaatsen, hoef je alleen maar IIS te stoppen, de map te verplaatsen en IIS opnieuw te starten — zo simpel is het.
Je kunt ook symbolische links maken om mklink /dlogmappen naar nieuwe locaties om te leiden zonder de IIS-configuratie rechtstreeks te wijzigen.
Methode 5: Logboekopschoning automatiseren met PowerShell
Zonder automatisering is dit een vervelende klus. Gebruik geplande taken om oude logboeken te verwijderen. Hier is een eenvoudig script dat logboeken ouder dan 21 dagen in uw Exchange-logboekmappen verwijdert:
$dirs = @( "C:\inetpub\logs\LogFiles\", "C:\Program Files\Microsoft\Exchange Server\V15\Logging\", "C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\", "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\" ) Get-ChildItem $dirs -Recurse -File | Where-Object { $_. LastWriteTime -lt (Get-Date).AddDays(-21) } | Remove-Item -Force -ErrorAction SilentlyContinue
Stel dit script in om dagelijks of wekelijks te worden uitgevoerd via de Windows Taakplanner. Zorg er wel voor dat het uitvoeringsbeleid van PowerShell het uitvoeren van scripts toestaat, of voer het uit met de optie `–run` -ExecutionPolicy Bypass.
Samenvatting
Het aanpakken van schijfruimteproblemen met logboeken in Exchange is vergelijkbaar met het opruimen van je kledingkast: regelmatig opruimen voorkomt latere problemen. Het verplaatsen van logboeken naar een aparte schijf, het inschakelen van circulaire logboekregistratie (indien mogelijk) of het instellen van automatisering kan het leven een stuk gemakkelijker maken. Vergeet niet om altijd recente back-ups te hebben voordat je handmatig opruimt, vooral als je met transactielogboeken werkt. Ik weet niet precies waarom, maar na het instellen van een aantal van deze routines duiken schijfruimteproblemen zelden meer onverwacht op.
Samenvatting
- Regelmatige back-ups helpen om oude logbestanden automatisch te verwijderen, maar controleer altijd eerst de status van de database.
- Door circulaire logboekregistratie in te schakelen, kan de opbouw van logbestanden worden verminderd, maar dit gaat ten koste van de mogelijkheid tot herstel naar een specifiek tijdstip.
- Het verplaatsen van database- en logbestanden naar grotere of snellere schijven verbetert de prestaties en het ruimtebeheer.
- Het verplaatsen van transport- en IIS-logboeken is eenvoudig met PowerShell of IIS Manager.
- Automatiseer opschoontaken met geplande PowerShell-scripts voor gemoedsrust.
Laten we hopen dat dit helpt om die steeds groter wordende logbestanden onder controle te krijgen en dat de serverruimte beperkt blijft. Succes!