Most often, when someone talks about a filesystem or file system, they're referring to disk filesystems such as NTFS, FAT, ext2, ext3, ext4, ISO 9660 and many others but can also refer to network file systems such as CIFS (Common Internet File System aka Samba) and NFS. A filesystem is a specially-designed database of files, their disk location, definition and attributes. Everything on a Unix or Linux filesystem is a file: Directories, processes, links, programs, and device references. All files.

But, is there a perfect filesystem?

Distributed filesystems such as Google's filesystem come pretty close. Ext4 is being praised as the best thing since French toast and VMware's VMFS is responsible for its blazing speed and high security.

But none of them are perfect.

Is there anything that creeps closer to perfect?

Yes, there is one filesystem that comes very close to perfect. It is ramfs.

It is dynamically resizable and very fast. The major downside is that there is the possibility of filling up the ramfs until there's no memory left and, as a result, the system will hang. Another downside is that the data in ramfs is not reboot persistent so any data contained in a ramfs will be lost upon reboot.

If one is clever, however, the data can be written to disk periodically to prevent its loss.

Data reads and writes to and from a ramfs mount are very fast and would be perfect for a strictly lookup (Read-only) database, since no data loss from a reboot would occur. However, if you want to use it for writes as well, the data would need an occasional ramfs to physical write or copy.

I am hopeful that some developers will continue to improve upon this extremely easy-to-use, flexible and fast filesystem.
I'd like to see the following capabilities for ramfs in future incarnations: Configurable space quotas, optional write-to-disk capability and improved memory cleaning.
It would also be kind of cool if you could configure a distributed ramfs (dramfs) among many systems for a shared resource pool.

There is no perfect Linux filesystem but with a little improvement, ramfs would easily become a 9.9 on a 10-point scale. Today's challenge is for some handy programmers to take on ramfs as their new project and make me proud and ramfs a lot better.

7 Years
Discussion Span
Last Post by vigneras

So what about tmpfs. that you CAN limit?
And btrfs is getting pretty close to awesome.
As well as Reiser4 and ZFS, they bloody rule.


You're right tmpfs is a pretty good alternative (tmpfs is based on ramfs) but it isn't dynamically resizable. I do like the idea of tmpfs using swap for unneeded pages so indeed ramfs needs improvement, hence the article.


The point with ramfs and tmpfs is that they aren't persistent. They are meant for things like initrd, shm, /dev (udev), /var/run, and /tmp; things you don't want written to secondary storage. If you want persistence, and the other features you're asking for, there are plenty of good to excellent existing filesystem choices depending on what it is you're looking for. ramfs and tmpfs are perfect for what they were meant for: small amounts of temporary ram based storage. If you're using them for other things, you're not using the right tool for the job.

One could argue that a screw driver would make a good hammer if the shaft was thicker and made of wood instead of metal, and the plastic handle was made of metal and better shaped for pounding and pulling nails... But what's the point?


I just wrote an article on linux filesystem (see:


Actually, when dealing with filesystems various things should be taken into consideration according to applications I/O access pattern. Therefore, even with btrfs or ZFS, other filesystems will have to be considered anyway (nilfs2 for heavy write access, ocfs2 for shared fs, ubifs or logfs for mmd storage devices and so on...).


Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.