dragonfly- UFS + HAMMER + mirroring setup designed instead of RAID - Is this OK?

Siju George sgeorge.ml at gmail.com
Thu Jun 25 08:05:42 PDT 2009


Hi,

Since the Installer allows only one of either hammer or UFS and since
RAID parity writing can be too long for 2 500 GB disks on mirror
after an unclean shutdown I followed these steps to create a backup
server using mirroring instead of RAID1. this purely my idea after a
lot of trial and errors and since I am new to dragonflybsd It would be
great to hear the opinion of other seasoned users. thanks.

First I installed dragonfly base system on the 1st 500GB hard disk
using UFS partitions and then booted into it and edited the disklabel
to add a partition h: . Now the disklabel looks like


# /dev/ad0s1:
type: unknown
disk: amnesiac
label: fictitious
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 128
sectors/cylinder: 8064
cylinders: 130031
sectors/unit: 1048574961
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

16 partitions:
#          size     offset    fstype
  a:    2097152          0    4.2BSD    #    1024.000MB
  b:    2097152    2097152      swap    #    1024.000MB
  c: 1048574961          0    unused    #  511999.493MB
  d:    2097152    4194304    4.2BSD    #    1024.000MB
  e:    2097152    6291456    4.2BSD    #    1024.000MB
  f:   10485760    8388608    4.2BSD    #    5120.000MB
  g:    2097152   18874368    4.2BSD    #    1024.000MB
  h: 1027603441   20971520    unused    #  501759.493MB
$

then I installed the base system on another disk and again edited the
disklabel to add partition h:

# /dev/ad1s1:    ------------------> It shows ad1s1 because it is
attached to the system and I booted from the first disk
type: unknown
disk: amnesiac
label: fictitious
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 128
sectors/cylinder: 8064
cylinders: 130031
sectors/unit: 1048574961
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

16 partitions:
#          size     offset    fstype
  a:    2097152          0    4.2BSD    #    1024.000MB
  b:    2097152    2097152      swap    #    1024.000MB
  c: 1048574961          0    unused    #  511999.493MB
  d:    2097152    4194304    4.2BSD    #    1024.000MB
  e:    2097152    6291456    4.2BSD    #    1024.000MB
  f:   10485760    8388608    4.2BSD    #    5120.000MB
  g:    2097152   18874368    4.2BSD    #    1024.000MB
  h: 1027603441   20971520    unused    #  501759.493MB

Then I created hammer filesystem on h: partitions of both the disks using

#newfs_hammer -L Backup1 /dev/ad0s1h
#newfs_hammer -L Backup2 /dev/ad1s1h

and mounted them using the command

#mount -a

after creating the directories "/Backup1" and "/Backup2"and adding the
following entries in /etc/fstab

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1d             /home           ufs     rw              2       2
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1g             /var            ufs     rw              2       2
/dev/ad0s1h             /Backup1        hammer  rw              2       2
/dev/ad1s1h             /Backup2        hammer  rw              2       2
/dev/ad0s1b             none            swap    sw              0       0
proc                    /proc           procfs  rw              0       0

df -h shows

#df -h

Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   1.0G   144M   783M    16%    /
/dev/ad0s1d   1.0G    20K   927M     0%    /home
/dev/ad0s1e   1.0G    14K   927M     0%    /tmp
/dev/ad0s1f   4.9G   346M   4.2G     7%    /usr
/dev/ad0s1g   1.0G   3.1M   924M     0%    /var
Backup1       488G   8.0M   488G     0%    /Backup1
Backup2       488G   8.0M   488G     0%    /Backup2
procfs        4.0K   4.0K     0B   100%    /proc

then I ran the command

#hammer cleanup

Which created the snapshots directories

/Backup1/snapshots
/Backup2/snapshots

with the "config file and a snapshot in each.

I edited the config files in both snapshots directories to

snapshots 0d 1m
prune     1d 5m
reblock   1d 5m
recopy    30d 10m

inorder to disable snapshoting and to cleanup the snapshots when
"hammer cleanup" runs next

then I ran

#hammer cleanup

which deleted the snapshot taked earlies from both snapshot directories.

Then I created a Master PFS in the first hard disk using

#hammer pfs-master /Backup1/Data
#hammer pfs-status /Backup1/Data
/Backup1/Data   PFS #1 {
    sync-beg-tid=0x0000000000000001
    sync-end-tid=0x0000000100018290
    shared-uuid=7f37a084-6188-11de-958a-535400123456
    unique-uuid=7f37a583-6188-11de-958a-535400123456
    label=""
    operating as a MASTER
    snapshots dir for master defaults to <fs>/snapshots
}

Then I created a Slave PFS for the above Master PFS in the second hard
disk with the same shared-uuid as the master PFS using.

#hammer pfs-slave /Backup2/Data shared-uuid=7f37a084-6188-11de-958a-535400123456
#hammer pfs-status /Backup2/Data
/Backup2/Data   PFS #1 {
    sync-beg-tid=0x0000000000000001
    sync-end-tid=0x0000000100018200
    shared-uuid=7f37a084-6188-11de-958a-535400123456
    unique-uuid=1ed27498-618c-11de-958a-535400123456
    slave
    label=""
    operating as a SLAVE
    snapshots directory not set for slave
}

Then I created a few files in /Backup1/Data using

#touch 1 2
#ls /Backup1/Data
1        2

then I did mirror copy from master to slave using.

#hammer mirror-copy /Backup1/Data /Backup2/Data

it copied all the files from Master to Slave

#ls /Backup2/Data
1        2

I shut down the computer and booted only with the second disk.

and mounted the hammer partion in ti using the command

#mount -a

after creating the directory "/Backup2"and adding the following
entries in /etc/fstab

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1d             /home           ufs     rw              2       2
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1g             /var            ufs     rw              2       2
/dev/ad0s1h             /Backup2        hammer  rw              2       2
/dev/ad0s1b             none            swap    sw              0       0
proc                    /proc           procfs  rw              0       0

#df -h
Filesystem    Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a   1.0G   144M   783M    16%    /
/dev/ad0s1d   1.0G    20K   927M     0%    /home
/dev/ad0s1e   1.0G    14K   927M     0%    /tmp
/dev/ad0s1f   4.9G   346M   4.2G     7%    /usr
/dev/ad0s1g   1.0G   3.1M   924M     0%    /var
Backup2       488G   8.0M   488G     0%    /Backup2
procfs        4.0K   4.0K     0B   100%    /proc

I could access all the data in /Backup2/Data

#ls /Backup2/Data
1      2

Now I plan to run dragonfly with both disks and edit the crontab for
root in the first disk to let the command

hammer mirror-copy /Backup1/Data /Backup2/Data

on an hourly basis so that I will have the Data ( one hour back ) on
the second hard disk if the first hard disk goes down.

If the first hard disk goes down then I can remove it and boot from
the second hard disk and run

#hammer pfs-upgrade /Backup2/Data

to make the pfs writable and continue operation.

I can add a second disk later with a slave pfs in it.

I will be using backuppc as the backup software if I can get it
compiled successfully on dragonflybsd ( since it is not in pkgsrc ) of
I will be using boxbackup available as binary package.

The only trouble is when I update using git or install a new software.
I will have to do it in the first disk and there after mount the UFS
partitions in the second disk under /mnt and chroot to /mnt and do the
updates and installation again so that they are available on the
second disks as well.

I hope this is the best you can get with dragonfly now to avoid long
fsck and raid parity writes.

Please let me know if somebody thinks this is a blunder :-)

And many thanks to Dillon who taught me the basics of hammer :-))))))

thanks

Siju





More information about the Users mailing list