9

What would be the best way to implement an LTO tape-based backup system on a ZFS fileserver? I've got about 6TB that need to be backed up on a daily basis, along with an existing HP 1840 LTO4 tape drive and a bunch of tapes.

I've already got the ZFS doing automatic snapshots every day, but now want to add a layer of offline storage to this. Ideally, the resulting system would implement some sort of father/son rotation system, so I have daily diff tapes for the last two weeks along with a full backup every week.

Reading around, I've seen that some people have used a combination of zfs send / dd / tar to achieve this, but it's not clear to me exactly how this should be implemented.

Update

I've just read about zfs send -i which supposedly sends the increment between two different snapshots. While I feared this whole exercise might make me write some scripts, that should make the diff backup task a little easier. Still no idea how to handle tape changes via a script though.

growse
  • 8,020
  • 13
  • 74
  • 115

2 Answers2

5

Take a look at the ZFS Best Practices Guide, especially the section Saving ZFS Data*. I don't think tape backups are ideal for backing up snapshots. You'd be better off telling your tape backup system to backup the ZFS filesystem itself & ignore the .zfs snapshot directory. Main thing is you just want software that understands all attributes of a ZFS filesystem. I'd suggest Bacula for that.

zfs send is for cloning data from one ZFS system to another, not for sending data to tape.

https://web.archive.org/web/20170107215538/http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide#Recommendations_for_Saving_ZFS_Data

Jona Engel
  • 103
  • 4
churnd
  • 4,077
  • 5
  • 34
  • 42
  • 3
    My reasons for wanting to dump the snapshots to tape is that the snapshot doesn't change as you're writing it. I don't really understand how you can do a multi-hour backup job of a live filesystem without that filesystem changing while you're in the middle of writing it? – growse Jun 21 '11 at 21:37
  • If you do daily diffs to tape, the difference is pretty much negligible. Any changes made to the filesystem after the backup job passed that section will be backed up the next day & you can still have (hourly?) snapshots to protect against accidental changes/deletions. ZFS snapshots are cheap, so don't be stingy using them. You really don't want to try to send the snapshots to tape, for reasons identified in the ZFS Best Practices Guide. – churnd Jun 22 '11 at 03:52
  • solarisinternals is dead, you can take a look at similar (but less detailed) stuff on oracle website: https://docs.oracle.com/cd/E23823_01/html/819-5461/zfspools-4.html#gentextid-11712 – Preuk Dec 05 '17 at 13:31
  • The detailed solaris page is still viewable in on the wayback machine https://web.archive.org/web/20170107215538/http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide#Recommendations_for_Saving_ZFS_Data – Jona Engel Sep 15 '22 at 18:05
2

Your best bet may be to send the contents of a ZFS snapshot to tape (e.g. via tar), rather than the snapshot itself. It seems fairly common to take advantage of LVM snapshots to facilitate writing live file systems to tape, and I see no reason why you should not take advantage of ZFS snapshots instead, in much the same way. As you note, using a snapshot essentially eliminates the risk of the files changing during the backup process.

One advantage of ZFS snapshots over LVM snapshots is that you can keep ZFS snapshots afterwards without likely suffering much of a performance penalty. (By contrast, it is popular to delete LVM snapshots after backing up their contents to tape.)