7

As far as I understand, the snapshots made by btrfs subvolume snapshot are writable by default and are visible at a certain path under the mountpoint of your btrfs volume.

How to setup the system so that there is a gurantee during the normal operation of the system that nothing is written to the snapshot? But without making it invisible to the users (i.e., it should remain accessible for reading by any users with respect to their permissions).

(For now, I've just chmod og-rwx /.snapshots where my snapshots are mapped to. But that doesn't fulfill the second of my wishes, and also the guarantee is not strong enough: a process with root's rights could spoil something there.)

Does one need to do some tricks with mount to achieve this goal?

imz -- Ivan Zakharyaschev
  • 15,113
  • 15
  • 61
  • 123

3 Answers3

6
  • Create a read-only subvolume (as root):
    btrfs subvolume snapshot -r /path/to/mounted/subvolume /path/to/snapshot
    
  • Change an already existing subvolume/snapshot to read-only:
    btrfs property set /path/to/snapshot ro true
    
  • Check current status for an existing subvolume:
    btrfs property get /path/to/snapshot ro
    

(Note that this did not work on older versions of Ubuntu.)

AdminBee
  • 21,637
  • 21
  • 47
  • 71
2

Are you using Ubuntu?

Ubuntu ships with an old version of btrfs-tools (aka "btrfs-progs"), and thus the userland tools do not support read-only snapshots.

See this bug (and it's parent bug):

https://bugs.launchpad.net/ubuntu/+source/btrfs-tools/+bug/924621

Stefan Lasiewski
  • 19,264
  • 24
  • 70
  • 85
1

According to Btrfs wiki, read-only snapshots are available since Linux 2.6.38. So make sure you have a recent kernel. Apart from that, you should be just able to do it using ro mount option (mount -o [other-options],ro ...).

haggai_e
  • 175
  • 6
rozcietrzewiacz
  • 38,754
  • 9
  • 94
  • 102