I am wondering if there is a supported (or recommended) list of filesystems that Oracle 10g supports.
Specifically I wish to know if storing Oracle data on an XFS partition is a bad idea.
I ask because some people say it's slow at deleting, and possibly that Oracle doesn't support it, though I can find nothing interesting in their documentation.
Note that I do not wish to use XFS, a client I am working with is already using it. They are having some funky issues and I was wondering if this could be related.
Metalink document 414673.1 "Oracle does not run certifications on local filesystems (i.e. except for OCFS2, NFS etc.) except ext2/ext3 as it is the common default filesystem for all Linux distributions. So if a problem happens specific to XFS, the Linux vendor should be engaged."
I'd generally go with the default unless you've got a particular reason to do otherwise.
XFS deletion performance can be improved by enabling lazy-counters. This can be done with a moderate recent kernel (supporting lazy-counters) and very recent xfs-utils. The xfs_admin command is the one to enable lazy-counter. You may also want to enable unwritten extents and log-version 2 (which can utilize bigger logs) and change the mount options to use more/bigger log buffers. This will usually boost xfs performance a lot. Some of these changes need an xfs_repair run afterwards. It cannot be changed while the filesystem is online.
We use these setting with great success. ext3 is usually slower except you turn off ordered data journalling. For us xfs has the advantage of supporting multiple parallel write threads due to its use of allocation groups which can be modified in parallel by multiple kernel threads. Combined with a RAID-5 (or others which can do independent writes in parallel to different disks) and xfs setup to use the correct stripe size this is a nice performance improvement. This should usually also yield a very performant database setup.
Here's the xfs_admin command line which would do that:
And the mount options:
sunit and swidth are about the stripe width and size - it's a bit complicated to describe these at this point. The values are usually sectors (512-byte units). sunit is the stripe size, swidth is sunit * count-of-stripes. relatime should be default in latest kernels anyway.