As a part of regular Windows maintenance, I defragment my hard drive. But why does the hard drive fragment on NTFS and FAT* systems? Apparantly ext* does not, why is this? Should I also be defragmenting my USB drives?

  • Don't de-fragment solid state devices. Not even on Microsoft's Windows. It is bad for the solid state device and is not needed. – ctrl-alt-delor Mar 31 '17 at 17:33

Fragmentation is not the issue it was 30 years ago. Back then you had hard drives that were scarcely faster than floppies, and processor memory sizes that were minuscule. Now you have very fast drives and large processor memories, and sometimes substantial buffering on the hard drive or in the controller. Plus sector sizes have gotten larger (or files are allocated in larger blocks) so that more data is inherently contiguous.

Operating systems have gotten smarter as well. Whereas DOS 1.x would have fetched each sector from disk as it was referenced, a modern OS is able to see that you have a file open for sequential access and can reasonably predict that you'll be fetching additional sectors once you've consumed those you have now. Thus it can "pre-fetch" the next several (dozen) sectors.

And any more it's often better to not have a file contiguous. On a (large) system where the file system is spread across multiple drives a file can actually be accessed faster if it is "spread" as well, since multiple disks can be seeking the file simultaneously.

I defragment every 2-3 years, whether my box needs it or not.

[I'll add that the important thing is not so much whether the data on the disk gets defragmented as whether the free space does. FAT was terrible at this -- unless you defragged things kept getting worse and worse until there were no two contiguous blocks of free space. Most other schemes can coalesce free space and allocate pieces in a somewhat "smart" fashion so the fragmentation reaches a certain threshold and then stabilizes, rather than getting worse and worse.]

  • 2
    I have not defragmented a system since 2005. There, I said it. – BlueRaja - Danny Pflughoeft Jun 4 '11 at 3:25
  • 2
    @BlueRaja, If you do a lot of disk operations on a rotational storage, defragmenting helps. Recently I found that running a build of my application (2GB of source code and assets) is about 20% faster after defragmentation, and the box was ~1 month old. – liori Jun 4 '11 at 9:43
  • 2
    An informative and useful post, but not an answer to the original question. I'm surprised to see this accepted. – EMP Jun 10 '11 at 1:22
  • I have not defragmented my system ever. It is now about 10 years old. I just did a scan for the first time, fragmentation levels are very low ( 2.3% non-contiguous). I am using ext4 file-system. Also I have never run a virus scan; Never a problem. – ctrl-alt-delor Mar 31 '17 at 17:40

ALL file systems fragment. ext and other Linux file systems fragment less due to the way they're designed - to quote Wikipedia regarding the Linux Network Administrators' Guide:

Modern Linux filesystem(s) keep fragmentation at a minimum by keeping all blocks in a file close together, even if they can't be stored in consecutive sectors. Some filesystems, like ext3, effectively allocate the free block that is nearest to other blocks in a file. Therefore it is not necessary to worry about fragmentation in a Linux system.

I'd note though that ext4 has online defragmentation so eventually fragmentation IS an issue, even with Linux file systems.

Windows file systems have their clusters placed wherever there's space to put them, and defrag runs around and replaces them. With Linux, files are preferentially placed where there's enough space.

I'd note though, Windows 7 has scheduled defragmentation runs, so it isn't really necessary to run defrag manually.

  • I do note that scheduled defragmentation was not enabled by default on any of my computers. – Simon Sheehan Jun 4 '11 at 1:04
  • 5
    ext* does not defragment as it goes along. trac.transmissionbt.com/ticket/849 and h-online.com/open/features/…. ext* minimises fragmentation by storing contiguous data at random locations on the disk. Random offsets spread the contiguous files out around the disk and reduce the need for fragmenting a file. – ta.speot.is Jun 4 '11 at 1:04
  • Any word on how Reiser/XFS avoid fragmentation? I've always wondered about them, but they seem largely undocumented in relation to ext. – new123456 Jun 4 '11 at 1:06
  • 1
    edited to correct my answer while those comments were made. Ext4 DOES online defragment from what i can tell. ext 2/3 dosen't. – Journeyman Geek Jun 4 '11 at 1:07
  • 3
    By default in Windows 7, defragmentation is scheduled for Wednesday at 1AM. If your computer is never on at this time, defragmentation may never occur. I would personally recommend that you allow the weekly scheduled defragmentation to run (or otherwise defragment weekly), because it does not take very long and it will 100% ensure that fragmentation never becomes a problem. – jcrawfordor Jun 4 '11 at 3:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.