I have been using it with Linux since early 2000. But I am not sure how the file-system development has been lately e.g. with the SSD revolution.
I have been using it with Linux since early 2000. But I am not sure how the file-system development has been lately e.g. with the SSD revolution.
It used to be necessary for Oracle to use raw partitions to get the very best database performance. I haven't heard of anyone doing that for many years.
"The default implementation in most kernels is simply a file-global lock placed at the in-memory inode, making sure there can be only one writer per inode. Implementers of databases hate that because it limits the write concurrency on any single file to One. This is, for example, why Oracle recommends that you make tablespaces from multiple files, each no larger than one GB.
"XFS, in O_DIRECT mode, removes this lock and allows atomic, concurrent writes, making database people very happy."
Developers at Oracle have posted a number of blog posts on their code changes for Linux XFS.
https://blogs.oracle.com/linux/post/introduction-to-xfs-tran...
https://blogs.oracle.com/linux/post/xfs-online-filesystem-ch...
https://blogs.oracle.com/linux/post/xfs-2019-development-ret...
https://blogs.oracle.com/linux/post/xfs-whats-new-and-whats-...
There can be a strong bias against Oracle at HN (and I understand why) but credit must be given where it's due.
They explicitly do not support its use for their database.
"[Btrfs] was initially designed at Oracle Corporation in 2007 for use in Linux, and since November 2013, the file system's on-disk format has been declared stable in the Linux kernel."
https://en.m.wikipedia.org/wiki/Btrfs
They own the rights to ZFS by way of their purchase of Sun Microsystems.
Oracle is a power player in the realm of Linux filesystems, no doubt.
BTTFS is Oracle.
And neither have anything to do with a database, IMHO.
I never did get one to explain why. I suspect it was received wisdom depending on VFS models which cached disk io and an effect on the DB engine. Almost certainly overtaken by both disk controller logic, file systems cache, striping and RAID and increasing memory sizes.
There are good pages on the Web discussing optimising ZFS for postgres tuned to write disk block aligned data through the zfs L2ARC
In practice this might be true if the defaults settings of each layer happen to align sympathetically and/or you know what you’re doing and how to tune them all, but from first principles it stands to reason that the extra abstraction layer of a file system isn’t providing the database storage engine with anything useful?
Same argument for unikernels, distroless containers, LiquidVM (https://docs.oracle.com/cd/E13223_01/wls-ve/docs92-v11/confi...) etc…
But that said: the DBA in question constructed a catenated drive, not a stripe, and were slightly dismayed when we found out it was working at the speed of one disk interface and using only the front pack, not all of them in some kind of parallel or interleaved manner. Not a very smart DBA it turned out.
In a busy database there are lots of processes reading a datafile and multiple processes writing (like DBWR checkpointing dirty blocks from buffer cache, but also some others), so this caused unnecessary file level contention in the OS kernel. Note that Oracle has I/O concurrency control built in, you can't have two processes accidentally writing the same block to the storage at the same time or a reader reading a "torn block" due to an ongoing write (the serialization happens at buffer lock/pin level in Oracle code).
So you wanted to have concurrent I/O and you either had to use raw devices or Veritas VxFS back then. Later on concurrent I/O became available for some other filesystems too, like Solaris UFS having the "cio" mount option, etc.
I use both XFS and ZFS. XFS in any situation where it is a single drive (ie, my laptop), ZFS in any situation where I'm doing actual fault tolerant high performance storage stuff.
I don't see where ext family really matters in modern storage. If I decide to not use XFS anymore, there are flash-dedicated filesystems that will beat ext in performance and reliability on SSDs that better fit the future.
With a single SSD it's indeed prone to the caveat which was pointed out; even if not due to being mapped to same storage "area" but also because SSDs often fail completely.
Also makes sense to note that __when__ narrowed to a single-disk setup ZFS' can be interchanged with Btrfs; almost same set of features but lesser overhead and complexity.
(2nd copy)
If you mean f2fs, it really won't. Be careful with it.
https://www.usenix.org/system/files/atc19-jaffer.pdf
The paper is old at this point, but I found a fresh PhD thesis from the same author from 2023, and it seems to re-confirm these findings.
- full data integrity check (not only metadata like with XFS)
- transparent compression (LZ/ZSTD/...)
- ZFS Boot Environments - makes your system bulletproof against changes
- easy move ZFS Boot Environments between systems with zfs send|zfs recv commands
None of that is possible with XFS.
Check this: https://linuxhint.com/xfs-vs-ext4-brief-comparison/
It just has an unfortunate license that's not GPL-compatible and this causes problems with GPL kernels (e.g. Linux), which is a very different thing than "not being properly free".
https://en.wikipedia.org/wiki/Common_Development_and_Distrib...
However, the wiki article also notes that Ubuntu includes it by default as a binary module. That seems like a sensible thing to do from a legal perspective, since it's generally accepted that binary modules are not "linked to" the kernel in such a way as to trigger GPL provisions relating to such linkage.
https://www.realworldtech.com/forum/?threadid=189711&curpost...