>>>>> "da" == David Abrahams <d...@boostpro.com> writes:
>>>>> "ic" == Ian Collins <i...@ianshome.com> writes:

    da> disadvantage of the recommended approaches shows up when you
    da> start taking advantage of ZFS to clone filesystems without
    da> replicating storage.  Using "zfs send" will avoid representing
    da> the data twice

Two or three people wanted S3 support, but IMVHO maybe S3 is too
expensive and is better applied to getting another decade out of
aging, reliable operating systems, and ZFS architecture should work
towards replacing S3 not toward pandering to it.

Many new ZFS users are convinced to try ZFS because they want to back
up non-ZFS filesystems onto zpool's because it's better than tape, so
that's not a crazy idea.

It's plausible to want one backup server with a big slow pool,
deliberately running a Solaris release newer than anything else in
your lab.  Then have tens of Solaris's of various tooth-length 'zfs
send'ing from many pools toward one pool on the backup server.  The
obvious way to move a filesystem rather than a pool from older Solaris
to newer, is 'zfs send | zfs recv'.

The obvious problem: this doesn't always work.

The less obvious problem: how do you restore?  It's one thing to say,
``I want it to always work to zfs send from an older system to a
newer,'' which we are NOT saying yet.  To make restore work, we need
to promise more: ``the format of the 'zfs send' stream depends only on
the version number of the ZFS filesystem being sent, not on the zpool
version and not on the build of the sending OS.''  That's a more
aggressive compatibility guarantee than anyone's suggested so far,
never mind what we have.  

At least it's more regression-testable than the weaker compatibility
promises: you can 'zfs send' a hundred stored test streams from
various old builds toward the system under test, then 'zfs send' them
back to simulate a restore, and modulo some possible headers you could
strip off, they should be bit-for-bit identical when they come out as
when they go in.  zpool becomes a non-fragile way of storing fragile
'zfs send' streams.

And to make this comparable in trustworthyness to pre-ZFS backup
systems, we need a THIRD thing---a way to TEST the restore without
disrupting the old-Solaris system in production, a restore-test we are
convinced will expose the problems we know 'zfs recv' sometimes has
including lazy-panic problems---and I think the send|recv architecture
has painted us into a corner in terms of getting that since gobs of
kernel code are involved in receiving streams so that there's no way
to fully test a recv other than to make some room for it, recv it,
then 'zfs destroy'.

so... yeah.  I guess the lack of 'zfs send' stream compatibility does
make into shit my answer ``just use another zpool for backup.  Tape's
going out of fashion anyway.''  And when you add compatibility
problems to the scenario, storing backups in zpool stream rather than
'zfs send' format no longer resolves the problem I raised before with
the lack of recv-test.  I guess the only thing we really have for
backup is rsync --in-place --no-whole-file.

    ic> I wouldn't have any serious concerns about backing up
    ic> snapshots provided the stream version was on the tape label
    ic> and I had a backup of the Solaris release (or a virtual
    ic> machine) that produced them.

I would have serious concerns doing that because of the numerous other
problems I always talk about that you haven't mentioned.

But, I don't wish for 'zfs send' to become a backup generator.  I like
it as is.  Here are more important problems:

 * are zfs send and zfs recv fast enough now, post-b105?

 * endian-independence (fixed b105?)

 * toxic streams that panic the receiving system (AFAIK unfixed)

though, if I had to add one more wish to that list, the next one would
probably be more stream format compatibility across Solaris releases.

Understand the limitations of your VM approach.  Here is the way you
get access to your data through it:

 * attach a huge amount of storage to the VM and create a zpool on it
   inside the VM

 * pass the streams through the VM and onto the pool, hoping none are
   corrupt or toxic since they're now stored and you no longer have
   the chance to re-send them.  but nevermind that problem for now.

 * export the pool, shut down the VM

   [this is the only spot where backward-compatibility is guaranteed,
    and where it seems trustworthy so far]

 * import the pool on a newer Solaris

 * upgrade the pool and the filesystems in it

so, you have to assign disks to the VM, zpool export, zpool import.
If what you're trying to restore is tiny, you can make a file vdev.
And if it's Everything, then you can destroy the production pool,
recreate it inside the vm, u.s.w.  No problem.  But what if you're
trying to restore something that uses 12 disks worth of space on your
48-disk production pool?  You have free space for it on the production
pool, but (1) you do not have 12 unassigned disks sitting around nor
anywhere to mount all 12 at once, and (2) you do not have twice enough
free space for it on the production pool so that you could use iSCSI
or a file vdev on NFS, yo uonly have one times enough space for it.

wtf are you supposed to do?  With traditional backup methods your
situation is workable because you can restore straight onto the free
space in the production pool, but with ZFS you must convert your
backup into disk images with the VM first, then restore it a second
time to its actual destination.  And with the ponderously large pool
sizes ZFS encourages, providing these ``disk images'' to the restore
VM could mean doubling your hardware investment.

This breaks the filesystems-within-pools aggregation feature of ZFS.
Filesystems are supposedly the correct unit of backup, not
pools---this is pitched as one reason filesystems exist in the first
place.  But in this example, compatibility issues effectively make
pools the unit of backup because it is only a pool that you can
reliably pass from an older Solaris to a newer one, not a filesystem.

You're right to say ``a VM'' though.  A backup of the solaris DVD used
to do the 'zfs send' is not worth much when hardware is becoming
unobtainable on a 6mo cycle---you won't be able to run it anywhere.

Attachment: pgpC7V7kKJ26T.pgp
Description: PGP signature

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

Reply via email to