in

WSS-ID Community

Indonesian IT-Pro Community discussing almost anything about Windows Server System.

Faisal Susanto

October 2008 - Posts

  • Exchange Performance Tuning

    Dalam artikel ini saya akan berbicara mengenai performance tuning untuk Exchange server, terutama Mailbox Server. Hal ini karena dari keseluruhan role di Exchange server, Mailbox server adalah jantung dari sebuah Exchange Organization.

    Sebelumnya, kita telaah sedikit mengenai konfigurasi harddisk yang optimal untuk Exchange mailbox server, kita mengenal 4 konfigurasi raid, yaitu:

    • Raid 0 : Disk Stripping
    • Raid 1 : Disk Mirroring
    • Raid 1+0 : Disk stripping + mirror
    • Raid 5 : Disk Stripping with parity

    Tabel berikut menunjukkan keuntungan/kerugian penggunaan konfigurasi raid

    Jenis Raid

    Keuntungan

    Kerugian

    Raid 0

    Paling cepat, kegiatan tulis memerlukan 1x pass

    Tidak ada fault tolerance

    Raid 1

    1. Cepat, kegiatan tulis memerlukan 2xpass
    2. Fault tolerance

    Kapasitas hard disk yang tersedia hanya 50% (minimum 2 harddisk)

    Raid 1+0

    1. Cepat, kegiatan tulis memerlukan 2xpass
    2. Fault tolerance

    Kapasitas harddisk yang tersedia paling kecil (boros)

    Raid 5

    1. Kapasitas harddisk tersedia paling banyak
    2. Fault tolerance

    Paling lambat, kecepatan tulis memerlukan 4x pass

     

    Secara umum, Jenis raid yang digunakan untuk mailbox server haruslah Raid 1 atau Raid 1+0. Kita sebaiknya tidak menggunakan Raid 0 karena tidak ada fault tolerance, sedangkan Raid 5, walaupun dapat menyediakan space terbesar, umumnya tidak memberikan performance yang baik.

    Nah setelah membicarakan Raid, sekarang mari kita membicarakan Exchange. Seperti kita ketahui, Exchange database terdiri dari dua komponen utama yaitu:

    1. Exchange database yang terdiri dari:
      1. Exchange Jet database (edb file)
      2. Exchange streaming database (stm file), di Exchange 2007 file ini ditiadakan
    2. Transaction log file

    Sekarang mari kita telaah karakteristik dari file-file diatas:

    Jenis File

    Karakteristik kerja I/O

    Exchange database

    • Kegiatan read/write random
    • Ukuran page 4/8KB

    Transaction log

    • Keseluruhan kegiatan sequential baik read (saat recovery) maupung write (saat normal)
    • Ukuran file bervariasi

    Nah jika dilihat dari karakteristiknya saja, jelas bahwa sangatlah tidak dianjurkan untuk menempatkan Exchange database dan Transaction log dalam satu physical disk yang sama. Perlu diperhatikan bahwa walaupun telah dipisahkan dalam partisi yang berbeda, , tetapi jika partisi2 tersebut masih di harddisk yang sama tidaklah menolong, ,misalkan kita memiliki harddisk yang sangat besar (1TB misalnya) dan kita partisi menjadi beberapa partisi, ga ngefek om J

    Selain Exchange database, ada beberapa operasi lain yang secara keseluruhan bermuara pada performance dari mailbox server kita, antara lain:

    • SMTP Queue: Saat email sedang antri, email ini akan disimpan sementara di folder SMTP queue, yang berarti semakin banyak user, maka kenaikan disk I/O semakin besar.
    • Content Indexing: Saat database discan untuk melakukan reindex, kegiatan ini akan menyebabkan kenaikan Disk I/O
    • Disk Paging: Jika exchange kekurangan memory, maka windows akan menggunakan sebagian harddisk untuk menaruh data. Kegiatan ini dikenal sebagai paging. Semakin banyak paging, maka Disk I/O semakin besar.

    Nah, berarti ada 5 buah item yang harus dipikirkan penempatannya di server, yaitu: Exchange Database, Transaction log, folder SMTP queue, folder content indexing, dan disk paging. Bagaimana kita memperoleh performance yang terbaik? Berikut adalah best practice untuk lokasi masing-masing item:

    Jenis file

    Lokasi

    Database file

    Seluruh database file (edb dan stm) sebaiknya diletakkan dalam sebuah volume yang sama. Gunakan disk yang memiliki random acces speed yang tinggi.

    Transaction log file

    Karena sifat penulisan transaction log adalah sequential, maka sebaiknya transaction log diletakkan di hard disk khusus (dedicated). Hal ini untuk mencapai kecepatan yang optimal

    Content Indexing

    Sebaiknya tentu diletakkan terpisah, tetapi sifat content indexing adalah random access sehingga jika diperlukan dapat ditempatkan di harddisk yang sama dengan database file

    SMTP queue

    SMTP queue sebagai folder transit email kurang lebih akan sama sibuknya dengan transaction log, karena itu tentu untuk performa optimal sebaiknya ditempatkan di physical disk tersendiri (Dedicated).

    Page File

    Page file sebaiknya ditempatkan di harddisk dengan fault tolerance (minimum Raid 1). Umumnya page file ditempatkan di physical disk yang sama dengan system partition, tetapi pada volume yang terpisah

    Jadi, apakah cukup sampai disini?. Ternyata tidak. Exchange masih menyediakan satu jurus lagi dimana kita bisa meningkatkan performa hingga 20%. Utility ini dinamakan Diskpart. Dalam artikel selanjutnya kita akan membahas mengenai diskpart ini dan bagaimana menggunakannya.`

    Share this post: | | | |
  • Lebih Dalam tentang Exchange database part 2 - Exchange Maintenance part 2

    Dalam artikel saya sebelumnya, saya telah membahas mengenai Exchange Online maintenance yang terdiri dari 10 task. Biar tidak ngegantung, di artikel ini kita akan mentelaah lebih dalam mengenai ke 10 task tersebut.

    Exchange database secara fisik terdiri dari file .edb. Di exchange 2003 database juga terdiri dari file .stm. Secara logis, database exchange terdiri dari public store dan mailbox store. Kegiatan Online Maintenance sebetulnya hanya mengurusi kedua store tersebut. Adapun kegiatan tersebut adalah:

    1. Check Message Table 
    2. Dumpster clean up
    3. Tombstone maintenance
    4. Purge indices
    5. Cleanup deleted mailbox
    6. Public folder expiry
    7. Update server versions
    8. Cleanup secure folders
    9. Age folder tombstone
    10. Folder conflict aging

    Sekarang mari kita bahas lebih lanjut masing-masing kegiatan

    Check Message Table

    Kegiatan ini akan menscan table message untuk sebuah database dan melihat apakah ada message (email) yang memiliki reference count 0, berarti email tersebut tidak digunakan lagi. Email tersebut akan dihapus. Kegiatan ini dilakukan 1x dalam 24 jam.

    Dumpster Clean up

    Setiap sebuah email didelete dari client (Outlook misalnya), di database email tersebut akan diset flag (ptagMsgDeleted). Email tersebut akan tetap berada di database sampai proses Dumpster clean up menghapusnya.

    Tombstone maintenance

    Kegiatan yang agak menyeramkan ini (tombstone == batu nisan) pada dasarnya akan menghapus entry yang berada di ptagMidsetTombstones. ptagMidsetTombstones adalah pointer yang menunjuk pada email yang didelete dari suatu folder. Saat terjadi replikasi, entry ptagMidsetTombsone akan dimerge dengan entry di ptagMsgDeleted.

    Purge Indices

    ESE atau JET yang digunakan oleh Exchange memiliki kemampuan untuk membuat index secara dinamis saat ada request untuk informasi (misalnya user bisa sort email berdasarkan date atau sender). Jika tidak dimanage, index-index tersebut bisa "meledak" menjadi ribuan banyaknya.

    ESE mengatasi hal ini dengan menset expired time (default 8 hari)untuk masing-masing index. Saat maintenance, index yang telah melewati masa expirednya akan dihapus dari database.

    Cleanup Deleted Mailbox

    Setiap mailbox yang telah dihapus oleh exchange akan tetap berada di dalam database, jika diperlukan administrator dapat mengkoneknya kembali. Mailbox yang telah dihapus akan didelete dari database setelah berusia 30 hari.

    Public Folder Expiry

    Kegiatan ini akan mencheck satu-persatu emai/entry yang ada di public folder dan akan menghapus entry yang telah melewati masa expirednya.

    Update Server Versions

    Disini server akan mengupdate (increment) version dari public folder yang ada di database.

    Cleanup Secure Folders

    Ini hanya ada di Exchange 5.5 kegiatan ini akan menghapus folder yang berada di secure site yang tidak dapat dikontak lagi oleh server

    Age Folder Tombstone

    Disini server akan menghapus public folder yang telah didelete yang melewati masa retention (default 180 hari).

    Folder Conflict Aging

    Conflict yang ada di public folder akan dihapus pada kegiatan ini.

     

    Demikian artikel singkat mengenai kegiatan-kegiatan yang ada di Online Maintenance, semoga berguna bagi rekan-rekan semua

    Share this post: | | | |
  • Lebih Dalam tentang Exchange database part 2 - Exchange Maintenance

    Tulisan ini adalah bagian kedua  dari seri artikel saya mengenai Exchange Database. Seri pertama dapat dibaca disini.

    Microsoft Exchange Mailbox server, baik itu versi Exchange 2003 maupun Exchange 2007 memiliki sebuah routine yang dikenal sebagai Information Store Maintenance, atau disingkat IS Maintenance. IS Maintenance adalah sekumpulan tugas yang dikerjakan secara otomatis oleh server untuk memastikan konsistensi dari database, dimana hal ini dilakukan by default antara pukul 12:00 - 5:00 pagi setiap hari.

    Perlu diingat, pekerjaan maintenance ini dilakukan pada keadaan online atau dimana mailbox store dalam posisi Mounted (makanya dikenal sebagai Online Maintenance). Jika kita ingin melihat progress dari proses online maintenance ini, maka kita harus menset logging dari Exchange Mailbox menjadi Minimum. Setelah itu maka saat online maintenance event id 1208, 1209 dan 1210  akan muncul di event log seperti dibawah ini:

    Event Type: Informational

    Event Source: MSExchangeIS Public / Private

    Event ID: 1208

    User: N/A

    Description:

    Starting the IS Maintenance tasks.

    %n%nFor more information, click http://www.microsoft.com/contentredirect.asp

    Hal yang paling penting yang dilakukan saat online maintenance adalah Online Defrag. Seperti kita ketahui, proses defrag adalah proses dimana file-file yang tersebar (fragmented) akan diatur kembali agar berurut, nah pada proses Online Defrag di exchange, proses ini akan mengatur ulang record-record yang ada di database sehingga terurut, dimana hal ini akan berakibat pada mempercepat proses I/O di database. Hal lain yang dicapai adalah dalam proses ini pages yang ada di database akan direlease sehingga dapat digunakan. Untuk lebih jelasnya, mungkin ilustrasi dibawah ini dapat membantu:

    image

    Misalkan seluruh kotak diatas menggambarkan file database (edb)berukuran 50GB. Warna biru adalah pages yang teratur, warna merah adalah pages yang fragmented. Pada keadaan diatas, jika ada email yang baru masuk, maka file .edb akan berkembang sesuai dengan besaran email yang masuk tersebut. Misalnya email dengan attachment 5MB, maka file edb akan bertambah 5MB. Tentunya dapat dibayangkan bahwa file edb ini akan berkembang tak terkendali jika dibiarkan.

    Nah karena ada proses online maintenance dimana salah satu prosesnya adalah online defrag, setelah proses ini selesai, pages-pages yang tak terpakai akan direlease sehingga dapat digunakan kembali oleh database. Karena itu setelah proses selesai, keadaan dari file edb kurang-lebih akan seperti dibawah ini:

    image

    Free space yang ada akan digunakan oleh Exchange untuk item-item baru (misalnya email). Perlu diperhatikan bahwa ukuran file tidak akan berkurang (tetap 50GB) tetapi jika anda memastikan proses Online Defrag sukses, paling tidak growthnya dapat dikontrol, tentunya dengan asumsi bahwa memang anda cukup agresif dalam memanage mailbox user yang ada.

    Perlu diingat bahwa free space di file edb hanya akan muncul jika ada item (email) yang dipindahkan dari mailbox store tersebut. Kata kunci disini adalah "dipindahkan". Keadaan ini dapat dicapai misalnya jika:

    1. User benar-benar menghapus email
    2. User memindahkan email tersebut ke tempat lain, misalnya ke file PST. Ingat bahwa memindahkan ke folder lain tidak akan membantu karena folder tersebut tetap berada di mailbox store yang sama.
    3. Mailbox user dipindahkan, misalnya ke mailbox store lain ataupun server lainnya.

     

    Memastikan proses Online Defrag sukses

    Ada dua hal yang dapat mengganggu proses Online Defrag ini yaitu:

    1. Maintenance Window terlewatkan
    2. Ada proses backup file database

    Seperti telah dijelaskan diatas, proses Online Defrag hanyalah satu dari 10 proses yang ada dalam Online Maintenance. Jika server kita terlalu sibuk (bahkan pada waktu subuh), bisa jadi proses ini tidak dijalankan.

    Mengenai proses backup, perlu dijelaskan disini bahwa proses backup tidak akan menggangu proses Online Maintenance, dalam arti backup dan Online Maintenance dapat berjalan secara pararel. Tetapi khusus untuk backup database Full, proses backup database akan melock file .edb saat sedang dibackup, karena itu, bisa jadi jika file .edb anda cukup besar, proses backup juga berlangsung lama sehingga maintenance window terlewatkan. Proses backup database secara differential hanya akan mengcopy log file sehingga tidak menggangu proses maintenance.

     

    Kesimpulan

    Proses Online Maintenance adalah proses penting di Microsoft Exchange yang menjaga integritas dari database mailbox. Karena itu penting untuk memantau proses ini berjalan secara sukses.

    Share this post: | | | |
  • Powershell Script untuk monitor Exchange 2003

    Powershell sangat membantu kita IT-Pro untuk memonitor kesehatan server yang berada di jaringan kita. Dalam artikel ini saya akan menunjukan bagaimana menggunakan powershell untuk memonitor status dari Exchange server 2003.

    Tujuan script ini adalah untuk mengautomasikan tugas2 rutin exchange administrator, antara lain: 

    1. Memeriksa jumlah freespace di setiap disk
    2. Menghitung jumlah mailbox yang tersebar di masing-masing database
    3. Memeriksa ukuran dari file database exchange (edb dan stm).
    4. Selain itu, script ini akan menyimpan hasilnya dalam sebuah file dan mengirimkannya melalui email.

    Berikut adalah tampilan hasil jika tidak dikirimkan melalui email

    clip_image002

    Ok, berikut adalah script yang saya buat.

    remove-item -path c:\powershellscript\exreport.txt

    $computers = "server1”,”server2","server3","server4"

    foreach ($computer in $computers)

    {

    echo $computer >> c:\powershellscript\exreport.txt

    Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | group-object -property StorageGroupName,StoreName |ft -autosize >> c:\powershellscript\exreport.txt

    Get-WMIObject Win32_LogicalDisk -filter “DriveType=3" -computer $computer | Select SystemName,DeviceID,VolumeName,@{Name=”size(GB)”;Expression={”{0:N1}” -f($_.size/1gb)}},@{Name=”freespace(GB)”;Expression={”{0:N1}” -f($_.freespace/1gb)}} |ft -autosize >> c:\powershellscript\exreport.txt

    get-wmiobject -query "select * from cim_datafile where extension ='edb' or extension ='stm'" -computername $computer|ft -property name,@{label="Size (GB)";expression={[math]::truncate($_.filesize/1GB)}} -autosize >> c:\powershellscript\exreport.txt

    }

    #subroutine untuk mengirimkan email

    $msg = new-object Net.Mail.MailMessage

    $smtpServer = “mail”

    $smtp = new-object Net.Mail.SmtpClient($smtpServer)

    $att = new-object Net.Mail.Attachment("c:\powershellscript\exreport.txt")

    $msg.Attachments.Add($att)

    $msg.From = “automatic-report@gulver.com”

    $msg.To.Add(”faisal_susanto@gulver.com")

    $msg.Subject = “Exchange Mailbox Server Report"

    $msg.Body = “This is the data of exchange mailboxes”

    $smtp.Send($msg)

    exit

     

    Sekarang mari kita telaah script diatas.

    remove-item -path c:\powershellscript\exreport.txt

    Command diatas akan menghapus file exreport.txt, hal ini perlu dilakukan karena script ini dijalankan dengan metode append ke file report sehingga jika tidak dihapus file report akan berisi data2 lama dan diappend terus setiap kali script dijalankan.

    $computers = "server1”,”server2","server3","server4"

    Baris ini mengisi variable $computers dengan array yang berisi nama server.

    foreach ($computer in $computers)

    {

    Baris diatas melakukan pengulangan (looping) untuk setiap member dari array $computers, pengulangan dilakukan mulai dari tanda { sampai tanda } yang ada di akhir looping.

    echo $computer >> c:\powershellscript\exreport.txt

    baris ini sebetulnya hanya memunculkan variable $computer, selanjutnya hasil perintah ini diredirect ke file c:\powershellscript\exreport.txt, dimana disini berguna sebagai pembatas antara hasil report dari server pertama dengan server kedua dan selanjutnya.

    Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | group-object -property StorageGroupName,StoreName |ft -autosize >> c:\powershellscript\exreport.txt

    Baris ini menggunakan command get-wmiobject untuk mengambil nilai dari namespace dan class yang disebutkan (yaitu microsoftExchangeV2 dan class Exchange_mailbox). Kita membatasi query dengan variable –computer dan diisi dengan $computer.

    Setelah mendapat hasilnya, selanjutnya kita melakukan summary dari jumlah mailbox yang ada di masing-masing storagegroup dengan perintah | group-object -property StorageGroupName,StoreName

    Selanjutnya kita memformat output dari perintah diatas dan juga meredirectnya ke file report dengan perintah |ft -autosize >> c:\powershellscript\exreport.txt. Perintah ft adalah singkatan dari format-table, sedangkan parameter –autosize adalah agar lebar kolum disesuaikan dengan isi variablenya.

    get-wmiobject -query "select * from cim_datafile where extension ='edb' or extension ='stm'" -computername $computer|ft -property name,@{label="Size (GB)";expression={[math]::truncate($_.filesize/1GB)}} -autosize >> c:\powershellscript\exreport.txt

    Langkah selanjutnya kita menggunakan get-wmiobject juga tetapi namespace yang berbeda yaitu cim_datafile. Jika dijalankan tanpa batasan, maka command ini akan mengembalikan seluruh file yang ada di computer tujuan, karena itu kita membatasi dengan menggunakan kalimat where extension =edb or extension =stm, dimana extension tersebut adalah exchange database.

    Selanjutnya kita memformat output dengan melakukan piping ke command format-table seperti dibawah ini

    |ft -property name,@{label="Size (GB)";expression={[math]::truncate($_.filesize/1GB)}} -autosize>> c:\powershellscript\exreport.txt

    Disini kita batasi tampilan dengan memilih property yang relevan yaitu name. Selain itu kita menggunakan calculated field yaitu kita menampilkan variable filesize ke dalam ukuran 1 GB.

    Selanjutnya kita tutup looping dengan tanda }.

    Setelah kita selesai membuat laporan, langkah selanjutnya adalah mengirimkannya melalui email. Berikut adalah script yang digunakan

    $msg = new-object Net.Mail.MailMessage

    $smtpServer = “mail”

    $smtp = new-object Net.Mail.SmtpClient($smtpServer)

    $att = new-object Net.Mail.Attachment("c:\powershellscript\exreport.txt")

    $msg.Attachments.Add($att)

    $msg.From = “automatic-report@gulver.com”

    $msg.To.Add(”faisal_susanto@gulver.com")

    $msg.Subject = “Exchange Mailbox Server Report"

    $msg.Body = “This is the uncompiled data of exchange mailboxes”

    $smtp.Send($msg)

    exit

    Subroutine diatas sangat mudah dibaca, dimana kita mendefinisikan variable $msg sebagai sebuah object dari Net.Mail.MailMessage (ini sebetulnya adalah class dari .Net, tapi kalau saya pakai istilah ini, saya benar2 tersedot ke dark side nanti).

    $smtpServer = “mail”

    $smtp = new-object Net.Mail.SmtpClient($smtpServer)

    Selanjutnya kita mendefinisikan variable $smtpserver dimana disini kita isikan alamat email server kita. (pastikan bahwa email server yang digunakan tidak diblok).

    Baris kedua kita juga mendefinisikan variable $smtp sebagai object dari class Net.Mail.smtpclient

    Untuk baris-baris selanjutnya saya kira cukup jelas, jadi tidak perlu saya uraikan lebih lanjut.

    Kita save script diatas sebagai file dengan extension .ps1 misalnya script1.ps1, setelah kita buat sebuah file berextension .bat (batch file) dan memasukkan command dibawah ini:

    powershell.exe c:\powershellscript\script1.ps1 -noprofile –noninteractive

    langkah terakhir yang perlu dilakukan adalah membuat sebuah scheduled task di server/workstation dimana powershell diinstal dan memanggil file .bat yang kita buat tadi

    Setelah melakukan langkah diatas, maka kita tinggal menunggu laporan yang akan dikirimkan oleh script yang kita buat.

     

    Kesimpulan

    Dari artikel ini kita dapat menarik kesimpulan antara lain bahwa ternyata dengan powershell kita dapat melakukan monitoring tidak hanya ke exchange server 2007 tetapi juga ke exchange server 2003.

    Share this post: | | | |
    Posted Oct 16 2008, 06:10 PM by fsusanto with no comments
    Filed under:
Copyright © WSS-ID, 2006. All rights reserved.
Powered by Community Server (Commercial Edition), by Telligent Systems