If
you’re a Linux user, you’ve probably heard that you don’t need to
defragment your Linux file systems. You’ll also notice that Linux
distributions don’t come with disk-defragmenting utilities. But why is
that?
To understand why Linux file systems don’t need
defragmenting in normal use – and Windows ones do – you’ll need to
understand why fragmentation occurs and how Linux and Windows file
systems work differently from each other.
What Fragmentation Is?
Many
Windows users, even inexperienced ones, believe that on regular
De-fragmentation of their file systems will speed up their computer.
What many people don’t know is why this is!
In short, a hard
disk drive has a number of sectors on it, each of which can contain a
small piece of data. Files, particularly large ones, must be stored
across a number of different sectors. Let’s say you save a number of
different files to your file system. Each of these files will be stored
in a contiguous cluster of sectors. Later, you update one of the files
you originally saved, increasing the file’s size. The file system will
attempt to store the new parts of the file right next to the original
parts. Unfortunately, if there’s not enough uninterrupted room, the
file must be split into multiple pieces – this all happens
transparently to you. When your hard disk reads the file, its heads
must skip around between different physical locations on the hard drive
to read each chunk of sectors — this slows things down.
De-fragmentation
is an intensive process that moves the bits of files around to reduce
fragmentation, ensuring each file is contiguous on the drive.
Of
course, this is different for solid state drives, which don’t have
moving parts and shouldn’t be defragmented – defragmenting an SSD will
actually reduce its life. And, on the latest versions of Windows, you
don’t really need to worry about defragmenting your file systems –
Windows does this automatically for you.
How Windows File Systems Work?
Microsoft’s old FAT file system – last seen by default on Windows 98
and ME, although it’s still in use on USB flash drives today – doesn’t
attempt to arrange files intelligently. When you save a file to a FAT
file system, it saves it as close to the start of the disk as possible.
When you save a second file, it saves it right after the first file –
and so on. When the original files grow in size, they will always
become fragmented. There’s no nearby room for them to grow into.
Microsoft’s newer NTFS file system, which made its way onto consumer
PCs with Windows XP and 2000, tries to be a bit smarter. It allocates
more “buffer” free space around files on the drive, although, as any
Windows user can tell you, NTFS file systems still become fragmented
over time.
Because of the way these file systems work, they need
to be defragmented to stay at peak performance. Microsoft has
alleviated this problem by running the defragmentation process in the
background on the latest versions of Windows.
How Linux File Systems Work?
Linux’s ext2, ext3, and ext4 file systems – ext4 being the file system
used by Ubuntu and most other current Linux distributions – allocates
files in a more intelligent way. Instead of placing multiple files near
each other on the hard disk, Linux file systems scatter different
files all over the disk, leaving a large amount of free space between
them. When a file is edited and needs to grow, there’s usually plenty
of free space for the file to grow into. If fragmentation does occur,
the file system will attempt to move the files around to reduce
fragmentation in normal use, without the need for a defragmentation
utility.

Because of the way this approach works, you will start to see
fragmentation if your file system fills up. If it’s 95% (or even 80%)
full, you’ll start to see some fragmentation. However, the file system
is designed to avoid fragmentation in normal use.
If you do
have problems with fragmentation on Linux, you probably need a larger
hard disk. If you actually need to defragment a file system, the
simplest way is probably the most reliable: Copy all the files off the
partition, erase the files from the partition, then copy the files back
onto the partition. The file system will intelligently allocate the
files as you copy them back onto the disk.