Best Practice: Disable Disk Fragmentation Scheduled Task

By default Windows Server creates a scheduled task for defrag. Connected drives from a Pure Storage FlashArray do not need this defragmentation operation performed as it wastes unnecessary cycles on the host and on the FlashArray.

defrag_schedule

To quickly disable this task run the following Windows PowerShell script. This will check the State of the task and disable as necessary.

If ((Get-ScheduledTask -TaskName 'ScheduledDefrag').State -eq 'Ready') 
{
    Disable-ScheduledTask -TaskName 'ScheduledDefrag' -TaskPath '\Microsoft\Windows\Defrag'
}
Get-ScheduledTask -TaskName 'ScheduledDefrag'

I recommend just disabling vs deleting the task.

Download script https://github.com/barkz/PurePowerShellGuy.

Thanks,
Barkz

3 comments
  1. Just set this up as a script in our RMM environment to run against endpoints with block-level backup products, so, thank you!

  2. Poking an old post here…
    I also run a Hyper-V cluster from a Pure flash array. I am seeing some evidence that this scheduled task in the Server 2012 r2 context is not actually defrag the way we traditionally understand it. Rather it’s slab optimization intended to help reclaim large sections of unused space for thin provisioned disks. I can imagine the underlying Pure device still makes this operation meaningless, but I really can’t find any definitive guidance that accounts for all the info.

Leave a Reply to Barkz Cancel Reply

Required fields are marked *. Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.