Playing with btrfs.

 I  set  up  an  Arch  Linux  VM  that  boots  from  a btrfs subvolume.
 Unfortunately, I could not get syslinux to boot directly from btrfs. I
 needed  a  separate  /boot partition, formatted as ext4. It looks like
 this:

     vda    254:0    0   10G  0 disk
     |-vda1 254:1    0  250M  0 part /boot
     `-vda2 254:2    0  9.8G  0 part /

 "/" is a btrfs subvolume called "root":

     # btrfs subvolume list -p /
     ID 257 gen 29 parent 5 top level 5 path root
     ID 259 gen 24 parent 257 top level 257 path var/lib/machines

 I needed to add "rootflags=subvol=root" to my kernel parameters.

 That subvolume "var/lib/machines" is automatically created by  systemd
 [1].

 Now, for a start, I was primarily interested in snapshots and snapshot
 recovery. Creating a read-only snapshot of the entire file system  was
 pretty easy:

     # btrfs subvolume snapshot -r / /rootbackup

 Next, I set up a second Arch Linux VM with btrfs. I connected both VMs
 using a bridge, so they can talk via SSH. I  then  sent  the  snapshot
 over SSH to the second VM:

     # btrfs send /rootbackup | ssh 10.1.2.3 btrfs receive /backup

 This created a new subvolume on my second VM:

     # btrfs subvolume list -p /
     ...
     ID 262 gen 73 parent 257 top level 257 path backup/rootbackup

 So  far, so good. To simulate a complete data loss, I simply created a
 third VM from scratch. It's empty, so I booted  from  the  Arch  Linux
 installation  ISO. I created a new partition table on the empty drive,
 a new ext4 file  system  for  /boot  and  a  new  btrfs  file  system.
 Restoring the backup of my root subvolume was pretty easy:

     # ssh 10.1.2.3 btrfs send /backup/rootbackup | btrfs receive /mnt
     # mv /mnt/rootbackup /mnt/root
     # btrfs property set -ts /mnt/root ro false

 It  took  me  a moment, though, to find that last command. Without it,
 you get a read-only subvolume which is not very handy.

 Since /boot is a separate partition which has not been  backed  up,  I
 needed  to recreate it (after I mounted the "root" subvolume at /mnt).
 I also had to reinstall the bootloader to my MBR/VBR.

     # arch-chroot /mnt
     # pacman -S syslinux linux
     # syslinux-install_update -i -a -m
     # (edit /boot/syslinux/syslinux.cfg)

 And that's it. Lo and behold, the system boots. Very nice.

 Having a separate /boot is not so comfortable. But it's  ok.  I  could
 live with that.

 It'll  still take some time until I'm confident enough to use btrfs on
 real systems. But so far, I like it.

 ____________________

 1. https://cgit.freedesktop.org/systemd/systemd/commit/?id=113b3fc1a8061f4a24dd0db74e9a3cd0083b2251