I had a problem today while using the common Unix command ‘du’. As a refresher, ‘du’ stands for disk usage and is a handy tool for understanding how much disk space is being occupied.
I think ‘du’ is probably doing the right thing. The problem might be that I’m getting strange (read: 1/2 the expected number) when running the tool against directories on vmhgfs, the VMware filesystem.
Science Project
On an Ubuntu Linux VMware session, my home directory is on the main file system, which is ext4. The directory /mnt/hgfs is reported by ‘mount’ to be of type vmhgfs and is shared with the host machine.
Create a directory in the home directory and generate a 10 MiB file:
mkdir /home/melanson/dir dd if=/dev/urandom of=/home/melanson/dir/random-file bs=1048576 count=10
Create a directory on the shared drive and copy the same file:
mkdir /mnt/hgfs/vmshare/dir cp /home/melanson/dir/random-file /mnt/hgfs/vmshare/dir
Run ‘du’ on each directory using the -k and -h options:
du -k /home/melanson/dir /mnt/hgfs/vmshare/dir 10244 /home/melanson/dir 5120 /mnt/hgfs/vmshare/dir du -h /home/melanson/dir /mnt/hgfs/vmshare/dir 11M /home/melanson/directory 5.0M /mnt/hgfs/vmshare/directory
I noticed this discrepancy when I was trying to pack a set of files (akin to ‘tar’-ing) living in a directory in the shared location. I was going mad trying to understand why the original directory was only 2 MB as reported by ‘du’ but the final packed file was 4 MB.
To be fair, the man page for ‘du’ succinctly states that the tool’s purpose is merely to “estimate file space usage”.