This is the pay-for program I use for defragging:
Updates include:
* New feature — Support for per-user quotas set with File Server Resource Manager
* Bug fixes and enhancements to the defragmentation driver
* Fixed bug where system tray icon could show that PerfectDisk was idle while defragmenting
* Fixed potential vulnerability of calling CreateProcess() or ShellExecute funcrions without using quoted paths
* Fixed defragmentation of Virtual Machine host files not working with all options unchecked.
Source: Perfectdisk Blog
Update from within the program.
Why I use Perfectdisk