Jul 252013
 

After the zfs send, I had system/foo/bar, but I really just wanted system/bar. How do I fix that? mv(1) was my first guess. I was wrong.

What I wanted was zfs(8) rename.

Let me explain.

After doing my:

zfs send storage/compressed/bacula@2013.07.22:06:33 | mbuffer | ssh -t dan@10.5.0.20 'zfs receive system/usr/local/bacula/FromKraken'

I quite, correctly, wound up with system/usr/local/bacula/FromKraken, not the system/usr/local/bacula which I wanted.

Here’s how I fixed that, but first, I took snapshots, in case I messed up:

# zfs snapshot system/usr/local/bacula@BeforeMovingKrakenUpOneLevel
# zfs snapshot system/usr/local/bacula/FromKraken@BeforeMovingKrakenUpOneLevel

Here is what I started with:

# zfs list | grep bacula
NAME                                 USED  AVAIL  REFER  MOUNTPOINT
system/usr/local/bacula             7.58T  12.6T   347K  /usr/local/bacula
system/usr/local/bacula/FromKraken  7.58T  12.6T  7.51T  /usr/local/bacula/FromKraken

Then I did this:

# zfs rename system/usr/local/bacula system/usr/local/OldBacula
# zfs rename system/usr/local/OldBacula/FromKraken system/usr/local/bacula

Now I have this:

# zfs list | grep -i bacula
system/usr/local/OldBacula   347K  12.6T   347K  /usr/local/OldBacula
system/usr/local/bacula     7.58T  12.6T  7.51T  /usr/local/bacula

And this:

# zfs list -t snapshot | grep -i bacula
system/usr/local/OldBacula@BeforeMovingKrakenUpOneLevel      0      -   347K  -
system/usr/local/bacula@2013.07.22:10:03                     0      -  7.50T  -
system/usr/local/bacula@AfterInitialSend                     0      -  7.50T  -
system/usr/local/bacula@2013.07.25:08:20                     0      -  7.51T  -
system/usr/local/bacula@BeforeMovingKrakenUpOneLevel         0      -  7.51T  -

I will look at merging those snapshots later.

For what it’s worth, this is not the actual layout. I will be using the system/usr/local/bacula filesystem within a jail. That’s where bacula-sd will run. Why? I like to keep major services within a jail. It makes it easier to move the service from one system to another, at least, in theory it does; I’ve not had to use this strategy yet. But I’m sure I will need to one day.