NVRAM for journals on Linux?

Could you explain why there's an obvious advantage using SSDs for journals? All FS implement journals as some kind of ring buffer where the access is sequential anyway. Just disable barriers on BBWCs and it's as good as it gets.

EXT3 and EXT4 filesystem used to mount with a journal in 'ordered' mode. In newer Kernels the default is 'write-back' mode. In the'ordered' mode journal updates were committed to disk before any data was written. In 'write-back' mode journal updates are written to the disk according to the normal IO scheduler policies and data writes to disk are not blocked on journal updates. You basically don't see that there's a journal involved at all from the performance POV.

What you want is to disable barriers (and probably mask the FUA and SCSI_CACHE_SYNCHRONIZE SCSI CDBs) on anything that can protect your writes by battery otherwise your performance will suffer. You get the semantics of barriers (or anything that flushes to disks and waits for acknowledgment) on your journal and data by using a BBWC.

A NVRAM without the proper support from the OS (VFS) isn't going to help you with anything that BBWC (which is some kind of NVRAM anyway) cant solve. In Linux 2.4 there was support for certain NVRAM devices for accelerating NFSv2/3 that is running synchronously but BBWCs have made them obsolete.

The proper thing to do with flash devices is to not think of them as a block device and use them as what they are - NAND flash. But this would need a redesign of how we think a file system should talk to the underlying storage in a more generic way. There's also no proper API in place in the Kernel to make use of NAND flash at the moment.


Only answer so far is that from Nils - but as per my comments, there is the iRAM and hyperdrive devices. So I'll close this off