| Anton Rang 2005-10-10, 5:49 pm |
| "Cooler" <keithcp@gmail.com> writes:
> I have a customer who is adamant that there is some software or
> hardware or combination of both that allows the secondary volume of a
> mirror to instantaneously see the data that was created on the primary.
> In all of my experience with both Windows and UNIX environments I have
> not come across anything that does this.
The SAM-QFS file system on Solaris can do this.
> Can anyone dispute this, if so can you tell me how the software is able
> to pick up the changes to the volume and push it up to the filesystem
> level dynamically?
When a file is accessed, its inode is verified against the copy on
disk (if a certain time period has elapsed). If the copy on disk has
changed, the inode in memory is updated and any cached pages are
flushed. Directories are handled similarly.
This isn't really an entirely general-purpose solution, since it's
possible to see an "inconsistent" state of a file in the general case
(e.g. a partially completed write). It works well in controlled
environments, though. A typical use is for a web farm, where updates
are pushed by a single machine to a bank of servers. By performing
the updates "atomically" using rename, the servers always see a
consistent image for any file.
> Also, can anyone give me a good explanation of why this isn't possible
> if this turns out to be the case? I believe it has to do with the
> filesystem needing to reread in its inode table but can't say for sure.
It's certainly possible but the file system has to be designed for it.
In general this means partially disabling their cache (or at least
adding validation). Since this hurts normal performance, file systems
don't usually do it. :-) For SAM-QFS, it's a mount option ("reader"
or "writer"); readers are forced to validate their caches after a
timeout period, writers are forced to flush any changes to disk more
quickly than usual.
-- Anton
|