> From: Dan Ritter [mailto:d...@randomstring.org]
> 
> It doesn't exist. I do not think it would be reasonable to have it exist.
> 
> btrfs RAID1 does not mean the same thing as LVM RAID1 or mdadm RAID1,
> and
> a flag on a filesystem can't tell you that it's stored on hardware RAID1.
> 
> btrfs compress via LZO has different semantics than zfs compress via LZ4,
> and will still be different when btrfs implements LZ4.
> 
> You can't btrfs send | zfs receive.

No matter what filesystem you are using, your application calls file.open() and 
file.write() and file.read() and file.close().

You can register for inotify notifications. There may or may not be selinux 
context tags, or ACL's, or posix ownership/permission bits. If you call any of 
these functions, on filesystems that don't support them, they may throw errors 
(so you know they failed) or they may silently fail. I certainly know I've seen 
both noisy and silent failures of these types.

When you call file.open(), some filesystems support file handle exclusivity, 
file locking. When you write a file, some filesystems support distributing 
notification to the other applications that were interested in that file, or 
parent directory.

The kernel provides an API to the application layer, and the kernel supports 
various features in each individual filesystem under the hood.

If you were an application developer, trying to evaluate whether or not your 
application is supported on a particular filesystem, you'd start by just 
looking at wikipedia to get a general understanding of the limitations of that 
filesystem, and if there wasn't any obvious problem, you'd look to see what 
filesystem calls you actually use in your application, and check to see if the 
kernel implements those features on the given filesystem.

If you are a filesystem service provider, trying to evaluate whether or not 
your users' applications could be supported on a *different* filesystem, but 
you have limited knowledge about the users' application, you'd start by 
consulting wikipedia to understand the differences between the filesystems, and 
barring anything obvious, you'd like to set up monitoring, to see what 
operations their applications perform on the filesystem, and then see if those 
operations are also supported on the other filesystem.

I swear, at least for the evaluation between ext4, xfs, and btrfs, I saw 
something like this. In my mind, it was directly analogous to cat /proc/cpuinfo 
to see what features your CPU supports. I have a fairly high degree of 
confidence, that at least for the above named filesystems, there was a way to 
query the kernel (or something) to list which features the filesystem is 
capable of supporting.

Man pages tell you things like how to change your UUID, and tweak the number 
and size of inodes, enable and disable case sensitivity, toggle selinux 
contexts, etc. They don't tell you which parts of the filesystem layer API are 
implemented, or to what extent. They don't tell you if file locking will be 
supported, or inotify.

In this particular case, I'm evaluating NFS vs GPFS. I decided a couple of days 
ago, when it didn't look like I was going to find a systematic way of 
evaluating filesystem differences in general, that it's best to just focus on 
the differences between the two specific filesystems I care about in this case. 
So google and man, specifically for nfs and gpfs, are the way to go this time.
_______________________________________________
Tech mailing list
Tech@lists.lopsa.org
https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to