3 # Copyright (C) 2000-2017 Kern Sibbald
4 # License: BSD 2-Clause; see file LICENSE-FOSS
6 # Test aligned data volumes with ZFS deduplication
7 # This test expects that you have created a ZFS pool named
8 # tank, and that you have also created tank/volumes
10 TestName="aligned-test"
14 if test x$FORCE_CLOUD = xyes ; then
15 echo "\n=== Test $TestName skipped not compatible with Cloud ==="
20 scripts/copy-test-confs
21 cp scripts/aligned-bacula-sd.conf bin/bacula-sd.conf
23 # install the aligned volume plugin
24 #make -C build/src/plugins/sd install-aligned-plugin >/dev/null
26 echo "${cwd}/build" >${cwd}/tmp/file-list
28 which zfs >/dev/null 2>&1
29 if [ $? -eq 0 ] ; then
35 # If we are running with zfs, setup a pool,
36 # otherwise just use defaults
37 if [ $zfs -eq 1 ]; then
38 cp bin/bacula-sd.conf tmp/1
39 sed "s%Archive Device = .*$%Archive Device = /tank/volumes%g" tmp/1 >bin/bacula-sd.conf
41 # Delete any previous zfs pool
42 sudo zfs destroy -fR tank/volumes
43 sudo zfs destroy -fR tank
44 sudo zfs destroy -r tank
45 sudo zpool destroy -f tank
46 sudo rm -rf /tank/volumes
50 sudo zpool create tank sdb sdc
51 sudo zfs create tank/volumes
52 #sudo zfs recordsize=64k tank # default is 128K
53 sudo zfs set atime=off tank
54 sudo zfs set compress=on tank
55 sudo zfs set dedup=on tank
57 sudo chown -R kern:kern /tank
62 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
65 @$out ${cwd}/tmp/log1.out
66 label storage=File volume=Vol1
67 label storage=File volume=Vol2
68 label storage=File volume=Vol3
74 if [ $zfs -eq 1 ] ; then
80 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
83 @$out ${cwd}/tmp/log1.out
84 setdebug level=200 storage
85 run job=$JobName level=Full yes
91 for i in 1 2 3 4 5 6 7 8 9 10; do
92 #echo "Running job $i"
94 if [ $zfs -eq 1 ] ; then
98 ls -l /tank/volumes/Vol* >${cwd}/tmp/log5.out
99 du -h /tank/volumes/Vol1.add >>${cwd}/tmp/log5.out
101 ls -l tmp/Vol* >${cwd}/tmp/log5.out
102 du -h tmp/Vol1.add >>${cwd}/tmp/log5.out
106 cat <<END_OF_DATA >${cwd}/tmp/bconcmds-form
110 @$out ${cwd}/tmp/log2.out
111 @# setdebug level=0 fd
112 restore where=${cwd}/tmp/bacula-restores storage=File jobid=@jobid@
121 # Restore and check each job
122 for i in 1 2 3 4 5 6 7 8 9 10; do
123 rm -rf ${cwd}/tmp/bacula-restores
124 echo "s%@jobid@%$i%" >${cwd}/tmp/in
125 sed -f ${cwd}/tmp/in ${cwd}/tmp/bconcmds-form >${cwd}/tmp/bconcmds
130 if [ $zfs -eq 1 ] ; then
134 ls -l /tank/volumes/Vol* >>${cwd}/tmp/log5.out
135 du -h /tank/volumes/Vol1.add >>${cwd}/tmp/log5.out
137 ls -l tmp/Vol* >>${cwd}/tmp/log5.out
138 du -h tmp/Vol1.add >>${cwd}/tmp/log5.out
142 check_for_zombie_jobs storage=File