ค้นหาเว็บไซต์

วิธีล้างข้อมูล ตัดทอน หรือย้ายไฟล์บันทึกใน 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:

  1. ทำการสำรองข้อมูลฐานข้อมูลกล่องจดหมาย Exchange ของคุณเป็นประจำ หลังจากสำรองข้อมูลอย่างถูกต้อง บันทึกธุรกรรมที่ไม่จำเป็นในการกู้คืนฐานข้อมูลอีกต่อไปจะถูกลบออกโดยอัตโนมัติ ใช้โซลูชันการสำรองข้อมูล Exchange ที่ทันสมัย (Exchange รองรับเฉพาะการสำรองข้อมูลตาม Volume Shadow Copy, VSC) คุณสามารถใช้บทบาท Windows Server Backup ในตัวได้

  2. เปิดใช้งาน การบันทึกแบบวงกลม สำหรับบันทึกธุรกรรมของคุณ เมื่อเปิดใช้งานการบันทึกแบบวงกลม บันทึกธุรกรรมจะถูกกำจัดทันทีหลังจากที่ธุรกรรมถูกนำไปใช้กับฐานข้อมูล คุณสามารถเปิดใช้งานการบันทึกแบบวงกลมผ่าน EAC (เปิดใช้งานการบันทึกแบบวงกลมในคุณสมบัติฐานข้อมูลกล่องจดหมาย) หรือใช้ PowerShell:

    Set-MailboxDatabase mbxDBname1 -CircularLoggingEnabled $true

    (หากต้องการใช้การเปลี่ยนแปลง คุณต้องยกเลิกการต่อเชื่อมและต่อเชื่อมฐานข้อมูลกล่องจดหมาย)

  3. ย้ายฐานข้อมูล 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 ได้ดังนี้:

  1. สร้างงานใน Task Scheduler

  2. สร้างการดำเนินการ: เริ่มโปรแกรม

  3. ในฟิลด์ โปรแกรม/สคริปต์ เพิ่ม:

     C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  4. ในฟิลด์เพิ่มอาร์กิวเมนต์ (ไม่บังคับ):

    -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 เก่าสำหรับการวิเคราะห์และแก้ไขปัญหาเพิ่มเติม คุณสามารถย้ายไปยังตำแหน่งอื่น (ไดรฟ์):

  1. เปิดตัวจัดการ IIS จากเครื่องมือการดูแลระบบ และเลือก เว็บไซต์เริ่มต้น

  2. เปิด การบันทึก;

  3. เปลี่ยนตำแหน่งบันทึกเริ่มต้น (ไดเร็กทอรี);

  4. บันทึกการเปลี่ยนแปลงและรีสตาร์ท 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"

บทความที่เกี่ยวข้อง