Best filesystem choice for the EeePC

…and other systems with cheap and slow SSDs like the Dell Inspiron Mini 9 or Acer Aspire One.

Important note: this is not written for ultrafast SSDs like the Intel SSDs found in high end laptops and servers; it’s targeting the type of SSDs usually found in netbooks. And of course it also doesn’t apply to hard disk based netbooks.

The problem? These very cheap SSDs tend to have terrible write performance. And filesystem designers apparently never considered the impact of devices that have fabulous access times, decent read speed but that come to a screeching halt when sending them too many writes at a time.

Most Linux distributions by default install ext3. Whether or not a journaling filesystem is a good idea for an SSD appears to be still up to debate; but unless the SSD does decent wear-leveling I would stay away from simple journals like what ext3 provides which keep overwriting the same part of the ‘disk’ over and over again.

Also, by default Linux tracks modifications to the access time of every inode. So every read from disk also creates a write updating the atime in the inode. To make things work better on a cheap SSD it’s best to turn this off using the mount option noatime.

The third problem you keep running into is the frequent fsync issue that I’ve described earlier. Here your best bet is a very current Linux distribution that has the latest versions of some of the applications that use fsync more heavily. This is certainly an area where Moblin is trying to be careful.

The fourth problem is the apparently common assumption that a Linux system has to have a swap partition. As it turns out, swap partitions are actually rather counter productive in a system as discussed here. As your system gets more heavily loaded (more things are running and competing for the limited write bandwidth to the SSD) you are now adding the Linux kernel as another creator of write accesses to the SSD – as it is trying to swap out pages to free memory. It’s much better to rely on Linux paging algorithm to keep fewer read only pages in memory – these are read back from “disk” when they are needed again, but as they never get modified they don’t need to be written out to the SSD. Yes, this means that you may run out of memory sooner – but if you do, that may be a sign that you are trying to do things that the little netbook wasn’t designed for (don’t run VirtualBox on it – be careful how many office and email applications you have open at the same time – and yes, limit the number of tabs in Firefox and restart it every once in a while.. Firefox is a real memory hog).

So what do I recommend? Long term it’s BTRFS. I am using this for some tests on one of my EeePCs and the difference is stunning. But BTRFS is far from being stable enough for real life and isn’t (and won’t be for some time) used in any Linux distributions.

In the meantime I’d go with ext2 with noatime and no swap partition. If your system (like most EeePCs) has two separate SSDs with different write speed, make sure that directories that are frequently written to (or fsync’ed) are located on that drive. I have explained how to do this in my posting on solving the Firefox and Evolution fsync issue.

Oh, I’ve played with JFS, XFS and yes, even vfat as possible alternatives. Neither of them provides any noticeable advantage over ext2 – and since they are less frequently used I am concerned about potentially running into bugs and problems that haven’t been discovered by other users, yet.

8 Comments so far

  1. gbarros on May 5th, 2009

    why ext2 and no ext3?

    what sort of instability did you experienced 1st hand with brtfs?

  2. Dirk on May 5th, 2009

    gbarros – if you had provided a working email address, I would have responded in email…

    Anyway, here’s the answer:

    > why ext2 and no ext3?

    Up until 2.6.30 there’s a nasty issue with fsync and the journal, causing the system to basically freeze for several seconds – that will be fixed in 2.6.30, though.

    > what sort of instability did you experienced 1st hand with brtfs?

    Kernel panic when you run out of space ;-)

  3. RonaldT on July 22nd, 2009

    Very helpful, thanks! I was getting quite annoyed by the 15 second hangs while browsing, and doing a “swapoff -a” seems to make a huge difference yet. Next boot stuff will be mounted noatime, let’s see what that does. It’s still ext3, I think I’ll wait till 2.6.30…

  4. Neil Mayhew on August 21st, 2009

    If the SSD didn’t do its own wear-levelling, you could use a filesystem specifically designed for flash memory, such as JFFS2 as used on the OLPC XO for its internal NAND storage. It seems to me that it’s better for the filesystem itself to do the wear levelling than to have firmware on the SSD try to do it transparently, as the filesystem knows so much more about what it intends to do with the storage.

    Do you know if there’s any way to turn off the wear levelling on an SSD? Or on external flash media such as an SD card?

    We’re seeing a lot of failures on SD cards that have ext3 on them, and although we haven’t identified the reasons yet it seems like a bad interaction between journalling and wear-levelling could be to blame. Switching to ext2 and using noatime, as you suggest, will obviously help, but it would be nice to take things a stage further.

  5. Marlon van der Linde on September 16th, 2009

    Well, as this is a gray area, I decided to abide by what was written here. I am installing Kuki 2.8 now on my 110, with no swap, noatime and ext2. I hope it works or I will come back here and poop on your lawns :)

  6. Joey on March 29th, 2010

    What would be the best filesystem for a Windows XP user?
    FAT16/FAT32/NTFS?

  7. smiler3k on April 2nd, 2010

    Fat32 is best for xp

  8. Jacob on September 11th, 2010

    Could you explain what you mean by noatime. I’ve been having trouble with a netbook. Whenever I do the software update (Ubuntu 10.04 NBR) and restart I get hardrive errors. And sorry for the questions I’m still a linux noob.

Leave a reply