> From: zfs-discuss-boun...@opensolaris.org [mailto:zfs-discuss-
> boun...@opensolaris.org] On Behalf Of Bruins
> 
> I have a filer running Opensolaris (snv_111b) and I am presenting a
> iSCSI share from a RAIDZ pool.  I want to run ZFS on the share at the
> client.  Is it necessary to create a mirror or use ditto blocks at the
> client to ensure ZFS can recover if it detects a failure at the client?

You might consider using NFS at the client instead of iscsi with another
layer of ZFS.  Performance is generally about the same, but pool management
is generally easier.  But if you're sure...

As long as you have failmode=continue (which is default) then if the server
disappears for some reason, the client will basically just pause IO to the
pool until the pool reappears, and then continue as if nothing went wrong.

You are asking a very intelligent question though.  At first blush, it would
appear to be possible for the client to detect a checksum error, and then
due to lack of redundancy, be unable to correct it.  Fortunately that's not
possible (see below) but if it were, you would have to scrub at the server
and then scrub or clear at the client.

But that's precisely why it's an impossible situation.  In order for the
client to see a checksum error, it must have read some corrupt data from the
pool storage, but the server will never allow that to happen.  So the short
answer is No.  You don't need to add the redundancy at the client, unless
you want the client to continue working (without pause) in the event the
server is unavailable.

The only possible way for the client to see data corruption which the server
didn't see would be if there was a temporary transport error.  Such an error
would be transient, and disappear simply by re-reading, scrubbing, or
clearing the pool clientside.

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

Reply via email to