ZFS compression is so good that it cost me 2 hours
So we have this build machine (
build0) where we build FreeBSD in Jails and then we mount the
obj dirs via NFS or we sync them using
rsync to destinations so we can run
make installworld on not-so-powerful servers.
Couple of days ago we had a network issue at the data center, the switches crashed and we had to reboot them. Turns out I was running
rsync on one of our servers, so I decided to make sure that the files were copied.
Like a lazy sysadmin, I run the following commands on both the
build0 server, as well as the remote host.
root@build0:~ # du -h -d 0 /usr/local/jails/f130/usr/obj/ 13G /usr/local/jails/f130/usr/obj/ root@illuriasecurity:~ # du -h -d 0 /usr/obj/ 5.5G /usr/obj/
Hmm, maybe files were not copied properly? So I remove the
obj dir and I
Looks like the size is
So I do a little bit of piping!
root@build0:/usr/local/jails/f130/usr/obj # find . | sort > /tmp/obj_build0.txt root@illuriasecurity:/usr/obj # find . | sort > /tmp/obj.txt zvartnots:~ $ scp illuria:/tmp/obj.txt /tmp/ zvartnots:~ $ scp build0:/tmp/obj_build0.txt /tmp/ zvartnots:~ $ diff /tmp/obj.txt /tmp/obj_build0.txt
Um, no difference?
Looks like the size reported by
du was… confusing?
Okay, let’s check the manual of
-A Display the apparent size instead of the disk usage. This can be helpful when operating on compressed volumes or sparse files.
Oops, looks like ZFS compression is enabled on my machine…
Let’s try this again!
root@build0:~ # du -h -d 0 -A /usr/local/jails/f130/usr/obj/ 12G /usr/local/jails/f130/usr/obj/ root@illuriasecurity:~ # du -h -d 0 -A /usr/obj/ 12G /usr/obj/
Ok! This makes more sense :-)
Let’s also check with ZFS.
root@illuriasecurity:~ # zfs get compression zroot/usr NAME PROPERTY VALUE SOURCE zroot/usr compression lz4 inherited from zroot
I wonder what’s the
build0 server is doing?
root@build0:~ # zfs get compression zroot/usr cannot open 'zroot/usr': dataset does not exist
Hn o.O ? Oh yeah, I wonder.
root@build0:~ # mount | grep ' / ' /dev/ufs/rootfs on / (ufs, local, journaled soft-updates)
Okay, this makes much more sense now :)
That’s all folks!