mirror of
https://github.com/systemd/systemd.git
synced 2024-11-23 18:23:32 +08:00
tmpfiles: automatically remove old machine snapshots at boot
Remove old temporary snapshots, but only at boot. Ideally we'd have "self-destroying" btrfs snapshots that go away if the last last reference to it does. To mimic a scheme like this at least remove the old snapshots on fresh boots, where we know they cannot be referenced anymore. Note that we actually remove all temporary files in /var/lib/machines/ at boot, which should be safe since the directory has defined semantics. In the root directory (where systemd-nspawn --ephemeral places snapshots) we are more strict, to avoid removing unrelated temporary files. This also splits out nspawn/container related tmpfiles bits into a new tmpfiles snippet to systemd-nspawn.conf
This commit is contained in:
parent
1b26f09eb0
commit
770b5ce4fc
@ -2183,7 +2183,8 @@ dist_tmpfiles_DATA = \
|
||||
tmpfiles.d/tmp.conf \
|
||||
tmpfiles.d/x11.conf \
|
||||
tmpfiles.d/var.conf \
|
||||
tmpfiles.d/home.conf
|
||||
tmpfiles.d/home.conf \
|
||||
tmpfiles.d/systemd-nspawn.conf
|
||||
|
||||
if HAVE_SYSV_COMPAT
|
||||
dist_tmpfiles_DATA += \
|
||||
|
@ -4522,9 +4522,9 @@ int main(int argc, char *argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
if (r > 0)
|
||||
r = tempfn_random_child(arg_directory, NULL, &np);
|
||||
r = tempfn_random_child(arg_directory, "machine.", &np);
|
||||
else
|
||||
r = tempfn_random(arg_directory, NULL, &np);
|
||||
r = tempfn_random(arg_directory, "machine.", &np);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to generate name for snapshot: %m");
|
||||
goto finish;
|
||||
|
23
tmpfiles.d/systemd-nspawn.conf
Normal file
23
tmpfiles.d/systemd-nspawn.conf
Normal file
@ -0,0 +1,23 @@
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# See tmpfiles.d(5) for details
|
||||
|
||||
v /var/lib/machines 0700 - - -
|
||||
|
||||
# Remove old temporary snapshots, but only at boot. Ideally we'd have
|
||||
# "self-destroying" btrfs snapshots that go away if the last last
|
||||
# reference to it does. To mimic a scheme like this at least remove
|
||||
# the old snapshots on fresh boots, where we know they cannot be
|
||||
# referenced anymore. Note that we actually remove all temporary files
|
||||
# in /var/lib/machines/ at boot, which should be safe since the
|
||||
# directory has defined semantics. In the root directory (where
|
||||
# systemd-nspawn --ephemeral places snapshots) we are more strict, to
|
||||
# avoid removing unrelated temporary files.
|
||||
|
||||
R! /var/lib/machines/.#*
|
||||
R! /.#machine.*
|
@ -18,6 +18,5 @@ f /var/log/btmp 0600 root utmp -
|
||||
d /var/cache 0755 - - -
|
||||
|
||||
d /var/lib 0755 - - -
|
||||
v /var/lib/machines 0700 - - -
|
||||
|
||||
d /var/spool 0755 - - -
|
||||
|
Loading…
Reference in New Issue
Block a user