From: Ricardo Wurmus <rekado@elephly.net>
To: guix-devel@gnu.org
Subject: “guix gc”, auto gcroots, cluster deployments
Date: Mon, 10 May 2021 11:59:44 +0200 [thread overview]
Message-ID: <87im3qq57z.fsf@elephly.net> (raw)
Hi Guix,
On my cluster installation I ran “guix gc --list-dead” out of
curiosity. When finding roots, the daemon also removes what it
considers stale links. On my cluster installation not all links
always resolve, because the target files reside on remote file
systems. These remote locations are not readable by the root user
on the server where guix-daemon runs (ignoring local root
privileges is pretty common for NFS servers), so they cannot
possibly be resolved.
So the daemon ends up deleting all these links from
/var/guix/gcroots/auto/.
This may not be too bad on its own, but it also means that the
next time around “guix gc” would consider the eventual target
profiles to be garbage.
There are two problems here:
1) I don’t think “guix gc --list-dead” (or “--list-live”, or more
generally “findRoots” in nix/libstore/gc.cc) should delete
anything. It should just list and not clean up.
2) For cluster installations with remote file systems perhaps
there’s something else we can do to record gcroots. We now have
this excursion into unreadable space because we use a symlink, but
the start ($localstatedir/gcroots/auto) and endpoints
(/gnu/store/…) are both accessible by the daemon. Since these
intermediate locations are tied to user accounts, could we not
store them in a per-user directory?
This problem does not exist for user profiles, because the link in
unreadable home directories is not all that important; it merely
points to $localstatedir, which is always readable by the daemon.
Perhaps we could do the same for temporary roots and let *users*
decide when to let go of them by giving them a command to erase
the important links in $localstatedir.
So instead of having a link from
/gnu/var/guix/gcroots/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri to
/home/me/projects/mrg1_chipseq/.guix-profile-1-link pointing to
/gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile, we would
record
/var/guix/profiles/per-user/me/auto/8ypp8dmwnydgbsgjcms2wyb32mng0wri
pointing to /gnu/store/ap0vrfxjdj57iqdapg8q83l4f7aylqzm-profile,
and then point /home/me/projects/mrg1_chipseq/.guix-profile-1-link
at that. Yes, removing
/home/me/projects/mrg1_chipseq/.guix-profile-1-link would no
longer free up the profile for garbage collection, but removing
$(readlink /home/me/projects/mrg1_chipseq/.guix-profile-1-link)
would.
This change would pretty much solve the problem for cluster
deployments, which otherwise leads to “guix gc” avoidance.
What do you think?
--
Ricardo
next reply other threads:[~2021-05-10 10:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-10 9:59 Ricardo Wurmus [this message]
2021-05-10 10:59 ` “guix gc”, auto gcroots, cluster deployments Roel Janssen
2021-05-10 11:59 ` Ricardo Wurmus
2021-05-10 15:45 ` Roel Janssen
2021-05-10 16:23 ` Ricardo Wurmus
2021-05-11 20:42 ` Ludovic Courtès
2021-05-10 13:40 ` Sébastien Lerique
2021-05-10 13:59 ` Guix on NFS Ricardo Wurmus
2021-05-11 20:50 ` “guix gc”, auto gcroots, cluster deployments Ludovic Courtès
2021-05-14 10:21 ` Ricardo Wurmus
2021-06-08 12:55 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87im3qq57z.fsf@elephly.net \
--to=rekado@elephly.net \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).