วิธีล้างข้อมูล ตัดทอน หรือย้ายไฟล์บันทึกใน Exchange Server 2013/2016/2019
หลังจากที่คุณปรับใช้ Exchange คุณอาจสังเกตเห็นว่าพื้นที่ว่างในดิสก์เริ่มลดลงอย่างรวดเร็ว นอกเหนือจากการเติบโตของฐานข้อมูลเมลบ็อกซ์แล้ว บันทึกต่างๆ ยังใช้พื้นที่บนเซิร์ฟเวอร์ Exchange เป็นจำนวนมาก ปัญหาของขนาดบันทึกที่ใหญ่จะสังเกตเห็นได้ชัดเจนเป็นพิเศษในเวอร์ชันที่เริ่มต้นด้วย Exchange 2013 เว้นแต่คุณจะใช้วิธีแก้ไขบางอย่างเพื่อล้างไฟล์บันทึกเก่า เป็นเรื่องปกติมากที่ฐานข้อมูลกล่องจดหมายจะถูกยกเลิกการต่อเชื่อม และบริการ Exchange จะไม่พร้อมใช้งานสำหรับผู้ใช้เนื่องจากบันทึก Exchange ใช้พื้นที่ดิสก์ที่มีอยู่ทั้งหมด (มักมาพร้อมกับไฟล์
452 4.3.1 Insufficient system resourcesข้อผิดพลาด). ในบทความนี้ เราจะดูวิธีต่างๆ ในการล้างข้อมูล ตัดทอน และย้ายไฟล์บันทึกใน Exchange Server 2013/2016/2019
จะตัดทอน/ล้างบันทึกธุรกรรมใน Exchange ได้อย่างไร
บันทึกธุรกรรมของฐานข้อมูลกล่องจดหมายเป็นหนึ่งในองค์ประกอบการแลกเปลี่ยนที่สำคัญที่สุด ตัวอย่างเช่น: เมื่อส่ง/รับข้อความอีเมล ก่อนอื่น Exchange จะเขียนข้อมูลลงในไฟล์บันทึกการทำธุรกรรม จากนั้นจึงบันทึกรายการโดยตรงไปยังฐานข้อมูลกล่องจดหมาย บันทึกธุรกรรมประกอบด้วยการดำเนินการทั้งหมดที่ดำเนินการบนฐานข้อมูล และมีความสำคัญอย่างยิ่งสำหรับการกู้คืนฐานข้อมูลกล่องจดหมายที่เสียหาย ไฟล์บันทึกธุรกรรมเดียวมีขนาด 1 MB และอาจมีหลายพันไฟล์ในโฟลเดอร์ฐานข้อมูลกล่องจดหมาย (จำนวนขึ้นอยู่กับกิจกรรมของผู้ใช้ในฐานข้อมูลกล่องจดหมาย)
มีหลายวิธีในการล้างบันทึกธุรกรรมใน Exchange:
ทำการสำรองข้อมูลฐานข้อมูลกล่องจดหมาย Exchange ของคุณเป็นประจำ หลังจากสำรองข้อมูลอย่างถูกต้อง บันทึกธุรกรรมที่ไม่จำเป็นในการกู้คืนฐานข้อมูลอีกต่อไปจะถูกลบออกโดยอัตโนมัติ ใช้โซลูชันการสำรองข้อมูล Exchange ที่ทันสมัย (Exchange รองรับเฉพาะการสำรองข้อมูลตาม Volume Shadow Copy, VSC) คุณสามารถใช้บทบาท Windows Server Backup ในตัวได้
-
เปิดใช้งาน การบันทึกแบบวงกลม สำหรับบันทึกธุรกรรมของคุณ เมื่อเปิดใช้งานการบันทึกแบบวงกลม บันทึกธุรกรรมจะถูกกำจัดทันทีหลังจากที่ธุรกรรมถูกนำไปใช้กับฐานข้อมูล คุณสามารถเปิดใช้งานการบันทึกแบบวงกลมผ่าน EAC (เปิดใช้งานการบันทึกแบบวงกลมในคุณสมบัติฐานข้อมูลกล่องจดหมาย) หรือใช้ PowerShell:
Set-MailboxDatabase mbxDBname1 -CircularLoggingEnabled $true(หากต้องการใช้การเปลี่ยนแปลง คุณต้องยกเลิกการต่อเชื่อมและต่อเชื่อมฐานข้อมูลกล่องจดหมาย)
ย้ายฐานข้อมูล Exchange ที่มีบันทึกการทำธุรกรรมไปยังไดรฟ์ขนาดใหญ่อื่น ตามค่าเริ่มต้น เมื่อคุณติดตั้ง Exchange ฐานข้อมูลกล่องจดหมายแรกจะถูกบันทึกลงใน C:\Program Files\Microsoft\ โฟลเดอร์ Exchange Server\… ขอแนะนำให้ย้ายฐานข้อมูลกล่องจดหมายจากไดรฟ์ระบบ C: ในการดำเนินการนี้ ให้ใช้ cmdlet ย้ายฐานข้อมูล ตัวอย่างเช่น หากต้องการย้ายฐานข้อมูลและบันทึกธุรกรรมไปยังไดรฟ์ M: ให้รันคำสั่ง:
Move-Databasepath “MDB1” -EdbFilepath “M:\DB\MDB1\databases\mdb1.edb” -LogFolderpath “M:\DB\MDB1\logs\”
เคล็ดลับ วิธีย้ายฐานข้อมูล Exchange ไปยังไดรฟ์อื่น
บันทึกฐานข้อมูล Mail Queue ใน Exchange 2013/2016/2019
ฐานข้อมูลคิว Mail.que เก็บข้อความไว้ชั่วคราวเพื่อรอขั้นตอนการประมวลผลถัดไป รายการทั้งหมดในแต่ละคิวถูกประมวลผลโดยเซิร์ฟเวอร์การขนส่งตามลำดับเฉพาะ ฐานข้อมูลคิวเป็นฐานข้อมูล ESE ปกติ คิวจะอยู่บน Mailbox หรือเซิร์ฟเวอร์การขนส่ง Edge เท่านั้น (ขึ้นอยู่กับเวอร์ชันของ Exchange เนื่องจากสถาปัตยกรรมในปี 2013, 2016 และ 2019 จะแตกต่างกัน) ตำแหน่งของฐานข้อมูลคิวและบันทึกการทำธุรกรรมระบุไว้ในไฟล์การกำหนดค่า XML %ExchangeInstallPath%Bin\EdgeTransport.exe.config (ตรวจสอบ
QueueDatabasePathและ
QueueDatabaseLoggingPathพารามิเตอร์) หากฐานข้อมูลคิวและบันทึกการทำธุรกรรมใช้พื้นที่มาก คุณสามารถย้ายจากไดเร็กทอรีเริ่มต้นได้
%ExchangeInstallPath%TransportRoles\data\Queueไปยังไดรฟ์อื่น (สำหรับข้อมูลโดยละเอียดเกี่ยวกับการย้ายฐานข้อมูลคิว โปรดดูที่ เปลี่ยนตำแหน่งของฐานข้อมูลคิว)
จะย้ายบันทึกการขนส่งบน Exchange Server ได้อย่างไร
บันทึกการขนส่ง Exchange เก็บข้อมูลเกี่ยวกับข้อความทั้งหมดที่ประมวลผลโดยบริการ MSExchangeTransport สำหรับข้อมูลโดยละเอียดเกี่ยวกับวิธีการเปิดใช้งาน ปิดใช้งาน หรือย้ายบันทึกการขนส่งใน Exchange โปรดดูบทความ บันทึกการขนส่ง
คุณสามารถตรวจสอบว่ามีการเปิดใช้งานบันทึกการขนส่งบนเซิร์ฟเวอร์ของคุณและเส้นทางหรือไม่โดยใช้คำสั่ง PowerShell (EMS) ต่อไปนี้:
Get-TransportService -Identity mun-exch1 | fl *logpath*
Get-TransportService -Identity mun-exch1 | fl *logenabled*บันทึกการขนส่งหลักของ Microsoft Exchange Server จะถูกจัดเก็บไว้ในโฟลเดอร์ต่อไปนี้ตามค่าเริ่มต้น:
| %ExchangeInstallPath%TransportRoles\Logs\Hub\Connectivity |
| %ExchangeInstallPath%TransportRoles\Logs\MessageTracking (used when searching messages via Get-MessageTrackingLog) |
| %ExchangeInstallPath%Logging\IRMLogs |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\ActiveUsersStats |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\ServerStats |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\ProtocolLog\SmtpReceive |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\Routing |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\ProtocolLog\SmtpSend |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\QueueViewer |
| %ExchangeInstallPath%TransportRoles\Logs\Hub\AgentLog |
คุณสามารถเปลี่ยนโฟลเดอร์สำหรับจัดเก็บบันทึกการส่ง/รับ SMTP (โปรโตคอล) ผ่าน EAC (เซิร์ฟเวอร์ -> เซิร์ฟเวอร์ -> select_a_server -> บันทึกการขนส่ง -> บันทึกโปรโตคอล)
คุณสามารถเปลี่ยนเส้นทาง บันทึกการติดตามข้อความ ผ่าน EAC
นอกจากนี้ คุณสามารถใช้ลิงก์สัญลักษณ์เพื่อเปลี่ยนเส้นทางโฟลเดอร์บันทึกการขนส่งใดๆ ไปยังไดรฟ์อื่นหรือแม้แต่โฟลเดอร์เครือข่ายที่ใช้ร่วมกันได้อย่างปลอดภัย (ตามเส้นทาง UNC) หากต้องการสร้างลิงก์สัญลักษณ์ ให้ใช้เครื่องมือ mklink ในตัว:
mklink /d "D:\HubReceiveSMTPLogs" \\filesServer1\HubReceiveSMTPLogสิ่งที่เหลืออยู่คือการเปลี่ยนเส้นทางไปยังไดเร็กทอรีบันทึกโดยใช้ cmdlet:
Set-TransportService mun-exch1 -ReceiveProtocolLogPath “D:\ReceiveSMTPLosg”
ดังนั้น คุณสามารถจัดเก็บบันทึกการขนส่ง Exchange ใดๆ ไว้ในโฟลเดอร์เครือข่ายที่ใช้ร่วมกันบนเซิร์ฟเวอร์ระยะไกล วิธีนี้เหมาะสำหรับบันทึก Exchange อื่นๆ
หมุนและลบไฟล์บันทึก IIS ใน Exchange
บันทึก IIS ประกอบด้วยข้อมูลเกี่ยวกับการเชื่อมต่อกับกล่องจดหมาย Exchange ผ่าน OWA และ ActiveSync เมื่อเวลาผ่านไป บันทึก IIS ที่ผู้ใช้สร้างขึ้นเมื่อเข้าถึง Exchange อาจมีขนาดใหญ่เกินไป หากไม่มีการควบคุม
คุณสามารถล้างบันทึก IIS เก่าได้โดยอัตโนมัติ คุณสามารถสร้างงานอัตโนมัติใน Windows Task Scheduler ที่ทำงานทุกวันและลบบันทึก IIS ที่เก่ากว่า 28 วัน:
set-location c:\inetpub\logs\LogFiles\W3SVC1\
foreach ($File in get-childitem) {
if ($File.LastWriteTime -lt (Get-Date).AddDays(-28)) {
del $File
}
}มันยังคงสร้างงานใหม่ใน Task Scheduler ซึ่งควรเรียกใช้สคริปต์การล้างข้อมูลบันทึก PS1 ของคุณ
คุณสามารถเรียกใช้สคริปต์ PowerShell ผ่าน Task Scheduler ได้ดังนี้:
สร้างงานใน Task Scheduler
สร้างการดำเนินการ: เริ่มโปรแกรม
ในฟิลด์ โปรแกรม/สคริปต์ เพิ่ม:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exeในฟิลด์เพิ่มอาร์กิวเมนต์ (ไม่บังคับ):
-command "c:\ps\clear_iis_logs.ps1"
หาก Windows ของคุณบล็อกไม่ให้เรียกใช้สคริปต์ PowerShell คุณต้องเปลี่ยนการตั้งค่านโยบายการดำเนินการของ PowerShell ลงชื่อไฟล์ PS1 ด้วยใบรับรอง หรือเรียกใช้สคริปต์ผ่านตัวกำหนดตารางเวลาพร้อมอาร์กิวเมนต์เพิ่มเติม:
powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:\ps\clear_iis_logs.ps1หากคุณต้องการเก็บบันทึก IIS เก่าสำหรับการวิเคราะห์และแก้ไขปัญหาเพิ่มเติม คุณสามารถย้ายไปยังตำแหน่งอื่น (ไดรฟ์):
เปิดตัวจัดการ IIS จากเครื่องมือการดูแลระบบ และเลือก เว็บไซต์เริ่มต้น
เปิด การบันทึก;
เปลี่ยนตำแหน่งบันทึกเริ่มต้น (ไดเร็กทอรี);
บันทึกการเปลี่ยนแปลงและรีสตาร์ท IIS ไฟล์บันทึกถัดไปจะถูกเขียนไปยังตำแหน่งใหม่
คุณยังสามารถเปลี่ยนเส้นทางไปยังบันทึก IIS โดยใช้ PowerShell:
Import-Module WebAdministration
Set-ItemProperty ‘IIS:\Sites\Default Web Site’ -name logfile.directory "M:\IISLogs"การล้างโฟลเดอร์การบันทึกใน Exchange
บันทึกของบริการ Exchange ต่างๆ จำนวนมากถูกจัดเก็บไว้ในโฟลเดอร์ การบันทึก (ตัวอย่างเช่น ใน Exchange 2013 นี่คือ C:\Program Files\Microsoft\Exchange Server\V15\Logging). เมื่อเวลาผ่านไป พวกเขาสามารถใช้พื้นที่ดิสก์จำนวนมาก สิ่งที่ควรทราบเป็นพิเศษคือบันทึกการวินิจฉัยและประสิทธิภาพใน C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics (เมื่อเปิดใช้การวินิจฉัยที่มีรายละเอียดสูง พวกเขาสามารถรับข้อมูลได้หลายสิบกิกะไบต์)
คุณสามารถใช้ PowerShell เพื่อลบไฟล์บันทึก Exchange เก่าในโฟลเดอร์เหล่านี้ สคริปต์ต่อไปนี้จะลบบันทึกทั้งหมดออกจากโฟลเดอร์เหล่านี้ที่มีอายุมากกว่า 21 วัน:
Get-ChildItem 'C:\Program Files\Microsoft\Exchange Server\V15\Logging','C:\inetpub\logs' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-21) | Remove-Itemคุณสามารถเลือกที่จะลบเฉพาะไฟล์บันทึกการวินิจฉัย:
Get-ChildItem 'C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics' -Directory | gci -Include '*.log','*.blg' -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-5) | Remove-Itemคุณสามารถเพิ่มสคริปต์ PowerShell เหล่านี้ไปยัง Task Scheduler เพื่อล้างบันทึก Exchange เก่าโดยอัตโนมัติ
ล้างบันทึก Exchange ด้วย PowerShell Script
คุณสามารถรวมคำสั่งข้างต้นทั้งหมดเพื่อล้างบันทึก Exchange เก่าเป็นสคริปต์ PowerShell เดียวที่คุณสามารถเรียกใช้ตามกำหนดเวลา:
$days = 14
$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\Bin\Search\Ceres\Diagnostics\Logs\",
"C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\"
)
Get-ChildItem $dirs -Recurse -File | Where-Object { $_.Name -like "*.log" -or $_.Name -like "*.blg" -or $_.Name -like "*.etl" } | Where-Object LastWriteTime -lt (Get-Date).AddDays(-$days) | Remove-Item -ErrorAction "SilentlyContinue"





