So we have this build machine (build0
) where we build FreeBSD in Jails and then we mount the src
and 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 rsync
again.
Looks like the size is 5.5G
AGAIN!
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 du(1)
:
-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!