Ubuntu – How to use Btrfs with compression on external USB hard drive

btrfsexternal-hdd

I would like to make use of Btrfs' transparent compression on an external drive.

  1. Which tool is best for formatting the drive? Disk Utility or GParted?
  2. How do I activate the compression? During formatting or when I mount the drive? I guess at mount time. I'm using usbmount to automatically mount newly attached devices, because nobody is logged in on the desktop. Would I have to set general default options somewhere in a system configuration file to get Btrfs mounted with compression, or would I specify this via FS_MOUNTOPTIONS in /etc/usbmount/usbmount.conf and how?

Thanks!

Best Answer

Format and enable LZO

I would avoid using any GUI to format;-)

mkfs.btrfs device is good enough, depending on how you would like to make use of Btrfs features:

  1. use the external USB HDD as 1 single partition/block device
  2. create 2 partitions (2 block devices) and form a raid1 or raid0 for data (-d), metadata is replicated on all devices by default, unless you manually specify to change

You can make use of the compression by adding the option when mounting, for example:

sudo mount -o compress=lzo /dev/sdd /mnt/btrfs

The good thing about Btrfs is that LZO compression can also be enabled on a subvol basis, very flexible;-) For example

/* Create a subvolume named subvol1 */

# btrfs subvolume create /mnt/btrfs/subvol1

/* Mount the subvolume and enable compression */

# mount -o compress=lzo,subvol=subvol1 /dev/sdd /mnt/subvol1

NOTE: You can add compression to existing Btrfs file systems at any time, just add the option when mounting and do a defragment to apply compression to existing data.

BTW: 2 best Btrfs docs out there:

http://www.funtoo.org/wiki/BTRFS_Fun

http://docs.oracle.com/cd/E37670_01/E37355/html/ol_btrfs.html

Make use of LZO compression:

http://www.oracle.com/technetwork/articles/servers-storage-admin/advanced-btrfs-1734952.html

USB Auto Mount

I am not too sure about this, will let other blokes answer it;-)

I'd prefer to write a simple shell script to do the mount because I won't attach the USB HDD to the computer all the time.