Installation with btrfs subvolume and snapper

Hi,
I’ve just made a new installation of Manjaro Gnome with different subvolume, this is my fstab:

UUID=A62C-7128                            /boot/efi      vfat    umask=0077 0 2
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /              btrfs   subvol=/@,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /home          btrfs   subvol=/@home,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /root          btrfs   subvol=/@root,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /srv           btrfs   subvol=/@srv,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /var/cache     btrfs   subvol=/@cache,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /var/log       btrfs   subvol=/@log,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /var/tmp       btrfs   subvol=/@tmp,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /var/lib/AccountsService btrfs   subvol=/@var@lib@AccountsService,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /var/lib/gdm3  btrfs   subvol=/@var@lib@gdm3,defaults,discard=async,ssd 0 0
UUID=32ce7456-d8ff-44d3-b018-c6b468e19c53 /.snapshots    btrfs   subvol=/@snapshots,defaults,discard=async,ssd 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

after I’ve installed following packages:

$ sudo pacman -S snapper
$ sudo pacman -S btrfs-assistant 
$ sudo pacman -S grub-btrfs 
$ sudo pacman -S snap-pac 
$ sudo umount /.snapshots
$ sudo rm -rf /.snapshots

Create a new root config …

$ sudo snapper -c root create-config /
$ sudo btrfs subvolume delete .snapshots
$ sudo mkdir /.snapshots
$ sudo mount -a
$ sudo chmod a+rx /.snapshots   
$ sudo chown :users /.snapshots

$ sudo systemctl enable --now snapper-timeline.timer
$ sudo systemctl enable --now snapper-cleanup.timer
sudo btrfs subvolume list /                                                                                         1 ✘  4s  
ID 256 gen 1019 top level 5 path @
ID 257 gen 1019 top level 5 path @home
ID 258 gen 569 top level 5 path @root
ID 259 gen 265 top level 5 path @srv
ID 260 gen 1003 top level 5 path @cache
ID 261 gen 1019 top level 5 path @log
ID 262 gen 1019 top level 5 path @tmp
ID 263 gen 785 top level 5 path @var@lib@AccountsService
ID 264 gen 10 top level 5 path @var@lib@gdm3
ID 265 gen 580 top level 5 path @snapshots
ID 266 gen 170 top level 256 path .snapshots
ID 304 gen 580 top level 265 path @snapshots/1/snapshot

I’ve made this installation on two my notebooks and works good, have you any other suggestion?

I suggest to make snapper-configs also for /home /root and eventually /srv

It is always nice to be able to rescue some files after they where overwritten by accident. With your separate subvolumes this is independent from system-rollback :wink:

You find good Information about Btrfs in the wiki

and in

Make extern backups of Snapshots

You may have a look at

This is Work in progress (but stable already)
:footprints:

3 Likes

Thank you Andreas

My suggestion:

ID 258 gen 932689 top level 5 path @cache           # --> /var/cache
ID 259 gen 932795 top level 5 path @log             # --> /var/log
ID 5387 gen 932646 top level 5 path @home           # --> /home 
ID 7336 gen 932341 top level 5 path @docker         # --> /var/lib/docker
ID 7501 gen 932789 top level 5 path @zesko-data     # --> /home/zesko/data - including important/private things. (They links to some directories. Documents, Pictures ...)
ID 14721 gen 932796 top level 5 path @zesko         # --> /home/zesko - including many configs.
ID 18070 gen 932791 top level 5 path @zesko-cache   # --> /home/zesko/.cache
ID 18170 gen 931551 top level 5 path @zesko-cloud   # --> Synced data from my cloud
ID 19140 gen 932663 top level 5 path @tmp           # --> /var/tmp
ID 20517 gen 932841 top level 5 path @              # --> /
# My snapshot-subvolumes:
ID 18172 gen 932780 top level 5 path snapshots/@root   
ID 18173 gen 932784 top level 5 path snapshots/@home
ID 18174 gen 932783 top level 5 path snapshots/@zesko
ID 18175 gen 932784 top level 5 path snapshots/@docker
ID 18177 gen 932783 top level 5 path snapshots/@zesko-cloud
ID 18179 gen 932784 top level 5 path snapshots/@zesko-data
ID 18180 gen 932783 top level 5 path snapshots/@zesko-cache
  • Use a profile “DUP” of data in the Btrfs single partition for the reason self-healing is enabled. (Attention: Write speed is reduced by half, PCIE4 Nvme is much fast enough, but not for HDD)

  • Move unnecessary data, such as Downloads, Steam/any games, multi media and VM images to an Ext4 partition. (No btrfs balance, scrub, and snapshot are required if you don’t care about unnecessary data as they exist everywhere on the internet ).
    Create symlinks of their directories in the Btrfs partition.
    You can use swapfile on Ext4 or not.

  • Do not forget to make auto incremental backup to another disk.

1 Like