I have two 500 GB hard disks both with the Hammer file system. I want to create a master PFS in one hard disk and a slave PFS in the other disk. I want to mirror the data continuously from the master PFS to the slave PFS. This will help me avoid long 'fsck' and RAID parity rewrite times after an unclean shut down, and also will give me a setup somewhat like RAID 1.
The Hammer file systems on Disk 1 and Disk 2 are mounted in '/etc/fstab' according to the following.
/dev/ad4s1h /Backup1 hammer rw 2 2 /dev/ad6s1h /Backup2 hammer rw 2 2
Go to the Hammer file system on Disk 1. We will be creaing a master PFS called 'test' and will be mounting it using a null mount. If you don't have a directory called 'pfs' under the Hammer file system you should create it.
# pwd /Backup1 # mkdir pfs
If you already have the pfs directory under the Hammer file system you can skip the above step and continue.
# hammer pfs-master /Backup1/pfs/test Creating PFS #3 succeeded! /Backup1/pfs/test sync-beg-tid=0x0000000000000001 sync-end-tid=0x000000013f644ce0 shared-uuid=9043570e-b3d9-11de-9bef-011617202aa6 unique-uuid=9043574c-b3d9-11de-9bef-011617202aa6 label="" prune-min=00:00:00 operating as a MASTER snapshots dir for master defaults to <fs>/snapshots
Now the master PFS 'test' is created. Make a note of its 'shared-uuid' because we will need to use that to create the slave PFS for mirroring. You can mount the PFS under the Hammer file system on Disk 1 by doing the following.
# mkdir /Backup1/test
Now Edit '/etc/fstab' to contain the following line.
/Backup1/pfs/test /Backup1/test null rw 0 0
Now mount the PFS by doing.
# mount -a # mount |grep test /Backup1/pfs/@@-1:00003 on /Backup1/test (null, local)
Note that we must use the 'shared-uuid' of the master PFS to enable mirroring.
# hammer pfs-slave /Backup2/pfs/test shared-uuid=9043570e-b3d9-11de-9bef-011617202aa6 Creating PFS #3 succeeded! /Backup2/pfs/test sync-beg-tid=0x0000000000000001 sync-end-tid=0x0000000000000001 shared-uuid=9043570e-b3d9-11de-9bef-011617202aa6 unique-uuid=97d77f53-b3da-11de-9bef-011617202aa6 slave label="" prune-min=00:00:00 operating as a SLAVE snapshots directory not set for slave
The slave PFS is not mounted but a symlink can be created in the root Hammer file system to point to it.
# ln -s /Backup2/pfs/test /Backup2/test # ls -l /Backup2/test lrwxr-xr-x 1 root wheel 17 Oct 8 12:07 /Backup2/test -> /Backup2/pfs/test
(This step is optional, the PFS can be read through the original magic symlink /Backup2/pfs/test.)
The slave PFS will be accessible only after the first 'mirror-copy' operation.
# touch /Backup1/test/test-file # ls /Backup1/test/ test-file # sync
We do the "sync" so that the file creation operation in flushed from the kernel memory. Mirroring works only on operations flushed from the kernel memory. The slave PFS will be accessible only after the first mirroring operation.
# hammer mirror-copy /Backup1/test /Backup2/pfs/test histogram range 000000013f6425fd - 000000013f644d60 Mirror-read: Mirror from 0000000000000002 to 000000013f644d60 Mirror-read /Backup1/test succeeded # ls /Backup2/test/ test-file
The hammer mirror-stream will automatically restart if the connection is lost so you only need to start it up once at boot.You can do this with an @reboot entry in the crontab.
@reboot root hammer mirror-stream /Backup1/test /Backup2/test