~drscream

Migrate ZFS pool to a different server

I hope you run your server with ZFS already :-)

For some reason you may need to migrate your ZFS pool with all snapshots to a different server. This could be a backup reason or simple a migration scenario.

In the example the pool named zones. So first you create a recursive snapshot of your pool:

zfs snapshot -r zones@migrate_20160204

You could simple verify that the snapshots exists via:

zfs list -t snapshot

I use SSH to migrate the data between two servers. It depends on your network, so you could also switch to netcat or something similar.

zfs send -R zones@migrate_20160204 | ssh user@host "zfs receive -Fd zones"

You may like to add options like -v to show some more detailed output of the transferred data.

It could be your data is modified during the migration. For that reason you could easily create a new snapshot after the send and receive command finished.

zfs create -r snapshot zones@migrate_20160205

Incremental zfs send is possible with the -i option. So zfs send only the difference between two snapshots to the remote server.

zfs send -R -i zones@migrate_20160204 zones@migrate_20160205 | \
	ssh user@host "zfs receive -F zones"

  1. steve says:

    Mon 13/08/18, 8:09 am

    tiny typo zfs send -R -i zones@migrate_20160204 zones@migrate_20160204 | ssh user@host zfs receive -F zones the two snapshots you list are identical, I think you meant the final one to be the snapshot you list in the step immediately above, ...20160205 |

    /

Send your comment by mail.