Snapper not Snapping

Hi all.

I’m having an issue with my computer at work. It has openSuse 15.6 (new installation, no upgrade) and it is not taking any snapshots of the system.

I just notice it because an upgrade gone awry and when I tried to rollback there war nothing to roll it back to: I had to undo the packages by hand (successfully).

However, that is something that I don’t want, and I would like to solve this issue. Here follows a few commands outputs I’ve already tried to find out what is going on:

~> sudo snapper list-configs
[sudo] root password: 
Configuration | Subvolume
-------------+----------
root         | /        
~> cat /etc/snapper/configs/root

# subvolume to snapshot
SUBVOLUME="/"

# filesystem type
FSTYPE="btrfs"


# btrfs qgroup for space aware cleanup algorithms
QGROUP="1/0"


# fraction of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"

# fraction of the filesystems space that should be free
FREE_LIMIT="0.2"


# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""

# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"


# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"


# run daily number cleanup
NUMBER_CLEANUP="yes"

# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="2-10"
NUMBER_LIMIT_IMPORTANT="4-10"


# create hourly snapshots
TIMELINE_CREATE="no"

# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"

# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"


# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"

# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="1800"
~> systemctl list-unit-files btrfs*
UNIT FILE                        STATE   PRESET 
btrfsmaintenance-refresh.path    enabled enabled
btrfs-balance.service            static  -      
btrfs-defrag.service             static  -      
btrfs-scrub.service              static  -      
btrfs-trim.service               static  -      
btrfsmaintenance-refresh.service static  -      
btrfs-balance.timer              enabled enabled
btrfs-defrag.timer               enabled enabled
btrfs-scrub.timer                enabled enabled
btrfs-trim.timer                 enabled enabled

10 unit files listed.
~> cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.6"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.6"
PRETTY_NAME="openSUSE Leap 15.6"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.6"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"
~> cat /etc/fstab
/dev/nvme0n1p2                             /                       btrfs  subvol=/@                     0  0
/dev/nvme0n1p2                             /                       btrfs  defaults                      0  0
/dev/nvme0n1p2                             /var                    btrfs  subvol=/@/var                 0  0
/dev/nvme0n1p2                             /usr/local              btrfs  subvol=/@/usr/local           0  0
/dev/nvme0n1p2                             /root                   btrfs  subvol=/@/root                0  0
/dev/nvme0n1p2                             /opt                    btrfs  subvol=/@/opt                 0  0
/dev/nvme0n1p2                             /boot/grub2/x86_64-efi  btrfs  subvol=/@/boot/grub2/x86_64-efi  0  0
/dev/nvme0n1p2                             /boot/grub2/i386-pc     btrfs  subvol=/@/boot/grub2/i386-pc  0  0
#/dev/sda2       swap                    swap   defaults                      0  0
/dev/nvme0n1p1                             /boot/efi               vfat   utf8                          0  0
#/dev/sda4       /work                   xfs    defaults                      0  0
#/dev/sda3       /tmp                    xfs    defaults                      0  0
/dev/nvme0n1p4                             /home                   xfs    defaults                      0  0
UUID=e4f47801-13cc-48ef-a92c-5e0c6eb290ea  /work                   xfs    defaults                      0  0
~> ls -la /
total 0
drwxr-xr-x   1 root root  164 jan 14 14:44 .
drwxr-xr-x   1 root root  164 jan 14 14:44 ..
drwxr-xr-x   1 root root 1756 jan 15 12:30 bin
drwxr-xr-x   1 root root  668 jan  2 17:17 boot
drwxr-xr-x  22 root root 4340 mar 24 13:25 dev
drwxr-xr-x   1 root root 5630 mar 24 13:25 etc
drwxr-xr-x  16 root root  302 mar 14 13:54 home
drwxr-xr-x   1 root root  616 jan 15 12:29 lib
drwxr-xr-x   1 root root 2326 jan 15 11:36 lib64
drwxr-xr-x   1 root root    0 mar 15  2022 mnt
drwxr-xr-x   1 root root   22 mar 19 00:51 opt
dr-xr-xr-x 428 root root    0 mar 24 13:24 proc
drwx------   1 root root  354 mar 21 21:16 root
drwxr-xr-x  45 root root 1200 abr 10 11:14 run
drwxr-xr-x   1 root root 3802 jan 15 12:29 sbin
drwxr-xr-x   1 root root    0 mar 15  2022 selinux
drwxr-xr-x   1 root root    0 jan  2 13:02 .snapshots
drwxr-xr-x   1 root root   22 jan 15 12:31 srv
dr-xr-xr-x  13 root root    0 mar 24 13:24 sys
drwxrwxrwt   1 root root 2588 mai 13 08:30 tmp
drwxr-xr-x   1 root root  124 jan  2 13:03 usr
drwxr-xr-x   1 root root  144 jan 15 12:31 var
drwxr-xr-x  15 root root  282 mar 13 14:02 work
~> zypper se snapper
S  | Name                       | Summary                                       | Type
---+----------------------------+-----------------------------------------------+-------------
i  | grub2-snapper-plugin       | Grub2's snapper plugin                        | pacote
   | libsnapper-devel           | Header files and documentation for libsnapper | pacote
i  | libsnapper5                | Library for filesystem snapshot management    | pacote
   | pam_snapper                | PAM module for calling snapper                | pacote
   | python3-dnf-plugin-snapper | Snapper Plugin for DNF                        | pacote
i+ | snapper                    | Tool for filesystem snapshot management       | pacote
   | snapper                    | Tool for filesystem snapshot management       | pacote fonte
   | snapper-testsuite          | Integration tests for snapper                 | pacote
i  | snapper-zypp-plugin        | A zypp commit plugin for calling snapper      | pacote
i  | yast2-snapper              | YaST - file system snapshots review           | pacote

Does anybody has any idea on what might be going on? Any extra info needed to help find out what might be going on? Any suggestions?

Thanks a lot in advance! :smiley:

@johannesrs Hi, snapper is not btrfs? You omitted snapper service files?

systemctl list-unit-files snapper*

UNIT FILE                STATE    PRESET  
snapper-boot.service     static   -       
snapper-cleanup.service  static   -       
snapper-timeline.service static   -       
snapperd.service         static   -       
snapper-boot.timer       disabled disabled
snapper-cleanup.timer    enabled  enabled 
snapper-timeline.timer   enabled  enabled 

7 unit files listed.

What about snapper list?

Show

btrfs subvolume list /
btrfs subvolume get-default /

You installed this system with disabled snapshots support.

Hi @malcolmlewis and @arvidjaar.

Thank you both for the prompt answer, and sorry for my delay: Sickness in family.

I don’t quite know how I could have made such mistake in the installation.

Malcolm, the snapper list output follows:

~> sudo snapper list
[sudo] senha para root: 
 # | Tipo   | Pre # | Data | Usuário | Limpeza | Descrição | Dados de usuário
---+--------+-------+------+---------+---------+-----------+-----------------
0  | single |       |      | root    |         | current   |

Avvidjaar, the outputs you requested are below:

~> sudo btrfs subvolume list /
ID 256 gen 31 top level 5 path @
ID 257 gen 201659 top level 256 path @/var
ID 258 gen 201659 top level 256 path @/usr/local
ID 259 gen 18680 top level 256 path @/tmp
ID 260 gen 38 top level 256 path @/srv
ID 261 gen 198107 top level 256 path @/root
ID 262 gen 201659 top level 256 path @/opt
ID 263 gen 189210 top level 256 path @/boot/grub2/x86_64-efi
ID 264 gen 27 top level 256 path @/boot/grub2/i386-pc
ID 265 gen 18698 top level 256 path @/.snapshots
ID 266 gen 201659 top level 265 path @/.snapshots/1/snapshot
ID 267 gen 50 top level 265 path @/.snapshots/2/snapshot
ID 280 gen 159 top level 265 path @/.snapshots/15/snapshot
ID 281 gen 161 top level 265 path @/.snapshots/16/snapshot
ID 284 gen 167 top level 265 path @/.snapshots/19/snapshot
ID 285 gen 168 top level 265 path @/.snapshots/20/snapshot
ID 286 gen 171 top level 265 path @/.snapshots/21/snapshot
ID 287 gen 174 top level 265 path @/.snapshots/22/snapshot
ID 288 gen 188 top level 265 path @/.snapshots/23/snapshot
ID 289 gen 190 top level 265 path @/.snapshots/24/snapshot
ID 290 gen 18574 top level 265 path @/.snapshots/25/snapshot
ID 291 gen 18576 top level 265 path @/.snapshots/26/snapshot
ID 292 gen 18580 top level 265 path @/.snapshots/27/snapshot
ID 293 gen 18583 top level 265 path @/.snapshots/28/snapshot
ID 294 gen 18586 top level 265 path @/.snapshots/29/snapshot
ID 295 gen 18590 top level 265 path @/.snapshots/30/snapshot
ID 296 gen 18603 top level 265 path @/.snapshots/31/snapshot
ID 297 gen 18618 top level 265 path @/.snapshots/32/snapshot
ID 298 gen 18623 top level 265 path @/.snapshots/33/snapshot
ID 299 gen 18668 top level 265 path @/.snapshots/34/snapshot
ID 300 gen 18674 top level 265 path @/.snapshots/35/snapshot
ID 301 gen 18687 top level 265 path @/.snapshots/36/snapshot
ID 302 gen 18688 top level 265 path @/.snapshots/37/snapshot
ID 303 gen 18689 top level 265 path @/.snapshots/38/snapshot
ID 304 gen 18690 top level 265 path @/.snapshots/39/snapshot
ID 305 gen 18697 top level 265 path @/.snapshots/40/snapshot
~> sudo btrfs subvolume get-default /
ID 266 gen 201660 top level 265 path @/.snapshots/1/snapshot

Does it help on finding the root issue? How can I fix this mistake and make Snapper work properly again?

Thanks a lot in advance! :slight_smile:

It looks like the installation was with snapshots support and you even have several snapshots which confirms it. But then you (or something) broke it by adding the second line for the / to the /etc/fstab:

This is wrong. And you deleted the /.snapshots mount entry.

If you now remove the duplicated line from /etc/fstab and reboot you will be thrown back to the state immediately after installation losing all changes to the root filesystem. If it is not acceptable, you need to roll back to the regular snapshot to return to the normal configuration.

Add /.snapshots mount point to the /etc/fstab. Something like

/dev/nvme0n1p2                             /.snapshots                    btrfs  subvol=/@/.snapshots                 0  0

Then mount it and check that snapper works. Then

  1. Delete the wrong duplicated line in the /etc/fstab
  2. Rebuild initrd (to be sure the wrong /etc/fstab is removed there as well)
  3. Create a new snapshot.
  4. Rollback to this snapshot.
  5. Verify that the default subvolume is set to the new read-write snapshot.
  6. Reboot

Important is to fix /etc/fstab before creating new snapshots.

Hmm … dracut may still generate the wrong subvol= option. I guess, more safe is to reboot after having created new snapshot and do rollback from the grub menu. This way it will override subvol= option in initrd.

Hi @arvidjaar

Thanks a lot for the suggestion. I’ll try as suggested tomorrow afternoon at work.

However: could I ask for an updated list of instructions (specially 2-5)?

Also, how will I be certain that snapperis working? Its Yast2 “app” will show me the previous several snapshots again?

And this is my first nvme (always used only hdd), so not sure even if there is any special code for it to be mounted…

Thanks a lot for all time and patience! :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.