[dev] JFS filesystem

From: Daniel Cegiełka <daniel.cegielka_AT_gmail.com>
Date: Fri, 19 Apr 2019 09:20:41 +0200

Hi,

I know that most people on this list use ext4 - Michael's oasis,
sta.li etc. We simply take ext4 and do not consider other options. I
don't want to start discussing which file system is the best and the
fastest, because it depends on the destination. I'm interested in
which file system sucks the least (in my opinion).

I reject at the start: reiserfs and reiser4 - The first is intended
mainly for many small files (scalability). The second uses plugins,
which makes static linking difficult.

* ext4
This is a very rational choice. Unfortunately, ext4 is three
filesystems packed into one (ext4 can also support ext2 and ext3). If
someone has looked in the source code e2fsprogs will know what I mean.

* XFS
A great file system if we are NASA and we are interested in HPC. XFS
is designed for large and fast servers, meaning it is
resource-consuming.

* ZFS
Resource-consuming. Designed for large servers.

* btrfs
Rather a good choice for server rooms (Facebook).

* bcachefs
A good competition for btrfs/ZFS.

* JFS [1]
Forgotten file system. JFS is what ext4 should be. This is a very well
thought and well-designed file system. It is very light and has a tiny
resource consumption. The first journaling file system plus unicode
support. Here is a small comparison of the kernel modules (size):

# ls -lh `find kernel/fs/ -name jfs.ko -o -name ext4.ko -o -name
xfs.ko -o -name btrfs.ko`
-rw-r--r-- 1 root root 2.1M Mar 4 12:49 kernel/fs/btrfs/btrfs.ko
-rw-r--r-- 1 root root 1.2M Mar 4 12:49 kernel/fs/ext4/ext4.ko
-rw-r--r-- 1 root root 342.6K Mar 4 12:49 kernel/fs/jfs/jfs.ko
-rw-r--r-- 1 root root 2.3M Mar 4 12:49 kernel/fs/xfs/xfs.ko

Of course, JFS has disadvantages:
* no support for fallocate - the implementation of this in the Linux
kernel should not be difficult
* DAX [2] support has not been implemented (yet)
* JFS is only able to use 4k blocks (but DAX works only with 4k)
* no support in extlinux (lilo, grub/grub2 works fine)

Would anyone be interested to start supporting JFS? I'm thinking about
rewriting jfsutils.

Best regards,
Daniel

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/jfs.txt?h=v5.1-rc5
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/dax.txt?h=v5.1-rc5
Received on Fri Apr 19 2019 - 09:20:41 CEST

This archive was generated by hypermail 2.3.0 : Sat Apr 20 2019 - 00:36:08 CEST