On Thu, Aug 28, 2008 at 01:05:54PM -0700, Eric Schrock wrote:
> As others have mentioned, things get more difficult with writes.  If I
> issue a write to both halves of a mirror, should I return when the first
> one completes, or when both complete?  One possibility is to expose this
> as a tunable, but any such "best effort RAS" is a little dicey because
> you have very little visibility into the state of the pool in this
> scenario - "is my data protected?" becomes a very difficult question to
> answer.

Depending on the amount of redundancy left one might want the writes to
continue.  E.g., a 3-way mirror with one vdev timing out or going extra
slow, or Richard's lopsided mirror example.

The value of "best effort RAS" might make a useful property for mirrors
and RAIDZ-2.  If because of some slow vdev you've got less redundancy
for recent writes, but still have enough (for some value of "enough"),
and still have full redundancy for older writes, well, that's not so
bad.

Something like:

% # require at least successful writes to two mirrors and wait no more
% # than 15 seconds for the 3rd.
% zpool create mypool mirror ... mirror ... mirror ...
% zpool set minimum_redundancy=1 mypool
% zpool set vdev_write_wait=15s mypool

and for known-to-be-lopsided mirrors:

% # require at least successful writes to two mirrors and don't wait for
% # the slow vdevs
% zpool create mypool mirror ... mirror ... mirror -slow ...
% zpool set minimum_redundancy=1 mypool
% zpool set vdev_write_wait=0s mypool

?

Nico
-- 
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to