Did a new (clean) install of Tumbleweed on one of my systems a couple of days ago.
I’ve just noticed that snapper is not working.
When I boot there is no option in grub to boot from a snapshot . . .
So took a look in yast/snapper it is completely empty of snapshots.
When I try to create a snapshot I get the error . . .
Failed to create new snapshot:
.snapshots is not a btrfs subvolume; caused by 3 sender=:1.62 -> dest=:1.63 serial=28 reply_serial=21 path=; interface=; member= error_name=error.io_error
this is my /etc/fstab
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 / btrfs defaults 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /var btrfs subvol=/@/var 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /usr/local btrfs subvol=/@/usr/local 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /tmp btrfs subvol=/@/tmp 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /srv btrfs subvol=/@/srv 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /root btrfs subvol=/@/root 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /opt btrfs subvol=/@/opt 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /home btrfs subvol=/@/home 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /boot/grub2/x86_64-efi btrfs subvol=/@/boot/grub2/x86_64-efi 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /boot/grub2/i386-pc btrfs subvol=/@/boot/grub2/i386-pc 0 0
UUID=8ea5af04-ab10-4476-9148-ff20e95e88fe swap swap defaults 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /.snapshots btrfs subvol=/@/.snapshots 0 0
does anyone know what’s going on here?
Please show
cat /etc/fstab
sudo snapper --list-configs
cat /etc/fstab
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 / btrfs defaults 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /var btrfs subvol=/@/var 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /usr/local btrfs subvol=/@/usr/local 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /tmp btrfs subvol=/@/tmp 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /srv btrfs subvol=/@/srv 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /root btrfs subvol=/@/root 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /opt btrfs subvol=/@/opt 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /home btrfs subvol=/@/home 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /boot/grub2/x86_64-efi btrfs subvol=/@/boot/grub2/x86_64-efi 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /boot/grub2/i386-pc btrfs subvol=/@/boot/grub2/i386-pc 0 0
UUID=8ea5af04-ab10-4476-9148-ff20e95e88fe swap swap defaults 0 0
UUID=476f6a52-2faf-4aa4-913f-c1c35ecf85f2 /.snapshots btrfs subvol=/@/.snapshots 0 0
sudo snapper --list-configs
[sudo] password for root:
Unknown global option '--list-configs'.
Try 'snapper --help' for more information.
tried this instead . . .
sudo snapper list-configs
[sudo] password for root:
Config | Subvolume
-------+----------
root | /
if it is of any help . . . this is my /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"
Eh, did you do anything ( ‘zypper dup’, 'zypper install … ’ ) to generate a snapshot? What does
cat /etc/osrelease
give?
Latest released TW snapshot is 20200407, do you already have that?
EDIT: is /.snapshots empty as well ?
cat /etc/os-release
NAME="openSUSE Tumbleweed"
# VERSION="20200407"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20200407"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:tumbleweed:20200407"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
LOGO="distributor-logo"
so . . . it seems to be somehow connected to a change I made in bios (but I have no idea how).
I had been receiving a message on boot related to vmx being disabled.
You can see in this thread
https://forums.opensuse.org/showthread.php/539823-vmx-disabled-by-bios
So what I have noticed now, and can repeat every single time.
If I go back into bios and turn off virtualisation
then boot
my snapshots are back.
If I then reboot again the snapshots are gone.
Go back into bios and turn virtualisation on again
boot
snapshots are back
reboot and they are gone again.
The only way I can get them back is to toggle the virtualisation setting in bios and even then it will only stick for one boot.
This has me baffled.
As it is a new clean install I might just start again without messing with the bios
There’s a bug where some file systems are being unmounted inappropriately. And this can happen to “btrfs” subvolumes.
This is probably what is happening in your system. Maybe look for threads on this unmounting.
Maybe try this thread:
https://forums.opensuse.org/showthread.php/539125-TW-after-update-to-20200211-My-user-hard-drive-partitions-do-not-get-mounted-at-boot-any-longer
yes indeed, this is exactly my problem.
I’ve done a new install of tumbleweed but issue is still present.
I’m completely lost in that thread as to exactly what the fix is . . . .???
This seems like the easiest . . .
# systemctl disable --now btrfsmaintenance-refresh.service
but what are the ramifications?
and this seems to be the recommended
Short answer: Use all the default units; apply the fix: https://github.com/kdave/btrfsmaintenance/issues/78
but I’m gonna need more of a step by step on how to achieve that.
farcusnz:
yes indeed, this is exactly my problem.
I’ve done a new install of tumbleweed but issue is still present.
I’m completely lost in that thread as to exactly what the fix is . . . .???
This seems like the easiest . . .
# systemctl disable --now btrfsmaintenance-refresh.service
but what are the ramifications?
and this seems to be the recommended
but I’m gonna need more of a step by step on how to achieve that.
Try this: https://forums.opensuse.org/showthread.php/539503-boot-efi-is-not-mounted?p=2930487#post2930487
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 20:09:25 NZST. --
Apr 10 20:07:42 localhost systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Apr 10 20:07:42 localhost systemd[1]: Starting Update cron periods from /etc/sysconfig/btrfsmaintena>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-scrub.sh for u>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-defrag.sh for >
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-balance.sh for>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-trim.sh for un>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-scrub for month>
Apr 10 20:07:46 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
Apr 10 20:07:46 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-defrag for none
Apr 10 20:07:47 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-balance for wee>
Apr 10 20:07:48 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 20:07:48 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-trim for none
Apr 10 20:07:49 localhost systemd[1]: btrfsmaintenance-refresh.service: Succeeded.
Apr 10 20:07:49 localhost systemd[1]: Started Update cron periods from /etc/sysconfig/btrfsmaintenan>
lines 1-15/15 (END)
systemctl cat btrfsmaintenance-refresh.path
# /usr/lib/systemd/system/btrfsmaintenance-refresh.path
[Unit]
Description=Watch /etc/sysconfig/btrfsmaintenance
[Path]
PathChanged=/etc/sysconfig/btrfsmaintenance
[Install]
WantedBy=multi-user.target
/etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf
bash: /etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf: No such file or directory
systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path enabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service enabled
btrfs-balance.timer enabled
btrfs-defrag.timer disabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
farcusnz:
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 20:09:25 NZST. --
Apr 10 20:07:42 localhost systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Apr 10 20:07:42 localhost systemd[1]: Starting Update cron periods from /etc/sysconfig/btrfsmaintena>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-scrub.sh for u>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-defrag.sh for >
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-balance.sh for>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh script btrfs-trim.sh for un>
Apr 10 20:07:42 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-scrub for month>
Apr 10 20:07:46 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
Apr 10 20:07:46 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-defrag for none
Apr 10 20:07:47 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-balance for wee>
Apr 10 20:07:48 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 20:07:48 localhost btrfsmaintenance-refresh-cron.sh[551]: Refresh timer btrfs-trim for none
Apr 10 20:07:49 localhost systemd[1]: btrfsmaintenance-refresh.service: Succeeded.
Apr 10 20:07:49 localhost systemd[1]: Started Update cron periods from /etc/sysconfig/btrfsmaintenan>
lines 1-15/15 (END)
systemctl cat btrfsmaintenance-refresh.path
# /usr/lib/systemd/system/btrfsmaintenance-refresh.path
[Unit]
Description=Watch /etc/sysconfig/btrfsmaintenance
[Path]
PathChanged=/etc/sysconfig/btrfsmaintenance
[Install]
WantedBy=multi-user.target
/etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf
bash: /etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf: No such file or directory
You need to create this file on you machine:
erlangen:~ # cat /etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf
[Unit]
After=local-fs.target
erlangen:~ #
Disable btrfsmaintenance-refresh.service and reboot. Check the logs:
erlangen:~ # systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path enabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service disabled
btrfs-balance.timer enabled
btrfs-defrag.timer enabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
erlangen:~ # erlangen:~ # journalctl -b -u btrfs*
-- Logs begin at Sun 2020-03-29 16:41:11 CEST, end at Fri 2020-04-10 10:27:13 CEST. --
Apr 09 07:43:50 erlangen systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Apr 09 07:43:59 erlangen systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 09 07:43:59 erlangen systemd[1]: Started Defragment file data and/or directory metadata.
Apr 09 07:43:59 erlangen systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
Apr 10 06:00:04 erlangen systemd[1]: Started Defragment file data on a mounted filesystem.
Apr 10 06:00:06 erlangen systemd[1]: btrfs-defrag.service: Succeeded.
erlangen:~ #
how do I do that?
Copying your code I get
linux:/home/farcus # cat /etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf
cat: /etc/systemd/system/btrfsmaintenance-refresh.path.d/override.conf: No such file or directory
ok . . . so I just created the folder/file using dolphin in superuser mode
stopped btrfsmaintenance-refresh.service using
systemctl disable --now btrfsmaintenance-refresh.service
rebooted
logs now . . .
systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path disabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service disabled
btrfs-balance.timer enabled
btrfs-defrag.timer disabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 21:11:26 NZST. --
Apr 10 21:09:51 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 21:09:51 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
is this looking correct?
farcusnz:
ok . . . so I just created the folder/file using dolphin in superuser mode
stopped btrfsmaintenance-refresh.service using
systemctl disable --now btrfsmaintenance-refresh.service
rebooted
logs now . . .
systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path disabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service disabled
btrfs-balance.timer enabled
btrfs-defrag.timer disabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 21:11:26 NZST. --
Apr 10 21:09:51 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 21:09:51 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
is this looking correct?
You may want to enable btrfsmaintenance-refresh.path and btrfs-scrub.timer. Reboot and check the logs to verify everything works as intended.
ok . . . I think things are looking correct now
systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path enabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service disabled
btrfs-balance.timer enabled
btrfs-defrag.timer enabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 21:34:20 NZST. --
Apr 10 21:32:38 localhost systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Apr 10 21:32:43 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 21:32:43 localhost systemd[1]: Started Defragment file data and/or directory metadata.
Apr 10 21:32:43 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
so snapper remains fully automated with this fix?
I don’t need to do anything manually?
Presumably, once the bug is fixed I can just delete the override.conf and re-enable btrfsmaintenance-refresh.service?
farcusnz:
ok . . . I think things are looking correct now
systemctl list-unit-files btrfs*
UNIT FILE STATE
btrfsmaintenance-refresh.path enabled
btrfs-balance.service static
btrfs-defrag.service static
btrfs-scrub.service static
btrfs-trim.service static
btrfsmaintenance-refresh.service disabled
btrfs-balance.timer enabled
btrfs-defrag.timer enabled
btrfs-scrub.timer enabled
btrfs-trim.timer disabled
10 unit files listed.
journalctl -b -u btrfs*
-- Logs begin at Fri 2020-04-10 18:01:11 NZST, end at Fri 2020-04-10 21:34:20 NZST. --
Apr 10 21:32:38 localhost systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
Apr 10 21:32:43 localhost systemd[1]: Started Balance block groups on a btrfs filesystem.
Apr 10 21:32:43 localhost systemd[1]: Started Defragment file data and/or directory metadata.
Apr 10 21:32:43 localhost systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
so snapper remains fully automated with this fix?
I don’t need to do anything manually?
Presumably, once the bug is fixed I can just delete the override.conf and re-enable btrfsmaintenance-refresh.service?
Btrfs maintenance now works as described: https://github.com/kdave/btrfsmaintenance/blob/master/README.md
Depending on your file system you may want to adjust parameters as needed using Yast > Sysconfig Editor.
When fixed in package btrfsmaintenance you need to do nothing. You may delete override.conf. Don’t reenable btrfsmaintenance-refresh.service.