Well we didn't have to wait for OpenSolaris 129, they built 128a.
The following example is coping Xvnc 25 times in to a dedup and non-dedup enabled ZFS datasets.
Code:
apaton@vb-osol:~$ uname -a
SunOS vb-osol 5.11 snv_128a i86pc i386 i86pc Solaris
apaton@vb-osol:~$ pfexec mkfile -n 3g /disk1
apaton@vb-osol:~$ pfexec zpool create tank /disk1
apaton@vb-osol:~$ pfexec zfs create tank/track
apaton@vb-osol:~$ pfexec zfs set dedup=on tank/track
apaton@vb-osol:~$ pfexec zfs create tank/girl
apaton@vb-osol:~$ pfexec chmod 777 /tank/track /tank/girl
apaton@vb-osol:~$ cd /tank/track
apaton@vb-osol:/tank/track$ for i in 1 2 3 4 5 ; do mkdir $i; for p in 1 2 3 4 5 ; do cp /usr/bin/Xvnc $i/Xvnc.$p; done; done
apaton@vb-osol:/tank/track$ cd /tank/girl
apaton@vb-osol:/tank/girl$ for i in 1 2 3 4 5 ; do mkdir $i; for p in 1 2 3 4 5 ; do cp /usr/bin/Xvnc $i/Xvnc.$p; done; done
apaton@vb-osol:/tank/girl$ df -h | egrep "(^File|^tank)"
Filesystem Size Used Avail Use% Mounted on
tank 2.9G 24K 2.9G 1% /tank
tank/girl 3.0G 85M 2.9G 3% /tank/girl
tank/track 3.0G 85M 2.9G 3% /tank/track
apaton@vb-osol:/tank/girl$ zfs list -r tank
NAME USED AVAIL REFER MOUNTPOINT
tank 169M 2.85G 24K /tank
tank/girl 84.5M 2.85G 84.5M /tank/girl
tank/track 84.5M 2.85G 84.5M /tank/track
apaton@vb-osol:/tank/girl$ zpool list tank
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 2.98G 88.2M 2.90G 2% 25.00x ONLINE -
I copied Xvnc 155 times then noticed not only is dedup working perfectly but my filesystem /tank/track grew!! Are we using 16% of the 3G ZFS pool?
This might be misleading in you use df in your filesystems monitoring scripts.
Code:
apaton@vb-osol:/tank/track$ find . -name Xvnc\* | wc -l
155
apaton@vb-osol:/tank/track$ zpool list tank
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 2.98G 88.7M 2.90G 2% 155.00x ONLINE -
apaton@vb-osol:/tank/track$ df -h | egrep "(^File|^tank)"
Filesystem Size Used Avail Use% Mounted on
tank 2.9G 24K 2.9G 1% /tank
tank/girl 3.0G 85M 2.9G 3% /tank/girl
tank/track 3.4G 524M 2.9G 16% /tank/track
apaton@vb-osol:/tank/track$ zfs list -r tank
NAME USED AVAIL REFER MOUNTPOINT
tank 608M 2.84G 24K /tank
tank/girl 84.5M 2.84G 84.5M /tank/girl
tank/track 524M 2.84G 524M /tank/track