[linux-lvm] Cannot get rid of root filesystem LVM snapshot
nix at esperi.org.uk
Wed Sep 13 19:02:14 UTC 2006
On Sun, 10 Sep 2006, Alasdair G. Kergon stipulated:
> On Sun, Sep 10, 2006 at 06:35:00PM +0100, Nix wrote:
>> I must admit I can't see what's so special about the root filesystem.
(Well, *that* was a stupid thing for me to say.)
> The tools you are running may be stored on it and access files on it.
> Some operations the tools do temporarily suspend I/O to the LVs involved.
> If a tool suspends I/O to the root then does anything that causes an access
> to it the system can lock up.
Ah. Isn't a possible solution to this to mlock() tools that may do that
into memory, so that they're not going to need to be paged in while
access is suspended?
> Caches/flushing/scheduling can make this
> indeterminate. Even the filesystem type matters (e.g. timing of journal
> transactions e.g. lazy inode time updates).
Ick! A delicate area? :(
>> The tools work for me: even doing things like pvmoving root filesystems in
>> active use works fine. I'd vaguely guess that only snapshot support is
> pvmove also may fail.
The only times I've ever had pvmove fail was when moving active swap
partitions: a related problem? They'd start moving, then disk I/O would
cease: lvs shows the swap LV in SUSPENDED state. (This was back in
2.6.14 and 2.6.15 days: it may be fixed by now.)
The attention to disaster recovery/move resumption in pvmove was a
godsend: reboot, `pvmove' and it ran to completion happily.
> Workaround is to copy required components into ramdisk and run from
> there. I have never done a complete audit, but:
> lvm binary (& libraries) should not be on root filesystem [use lvm.static
> in ramdisk]
Yeah. My most recent root pvmove I did using the copy of lvm on my
initramfs (statically linked against uClibc). I guess that would avoid
all the problems (only, of course, the system wasn't exactly very far
up when I did that).
> /dev must not be part of root filesystem being changed [ramdisk copy]
That's pretty much the standard by now.
> log/activation = 0 in lvm.conf (the default)
Hm, the message above that says that low-memory situations can deadlock,
not that all can.
> Depending on the particular command and configuration there may be more
> restrictions. (E.g. some commands may still require config files and lock
> files not to be in the root filesystem.) dmeventd is also unsafe as
> currently implemented - one reason it is not enabled by default upstream.
It's also totally undocumented :( but then I'm not even sure what clvmd
is for (something to do with GFS or SANs? Why else would you want to
distribute a VG over multiple machines?) so I'm not really fit to comment
(or to document it).
> Upstream support entails a full review and changes to deal with as many
> problems as possible (regardless of the user's configuration and
> compile-time options) and then detecting the remaining problems and issuing
> warning messages or refusing to proceed as appropriate.
Oh yes, paranoia is good in this area.
But it would be nice to document the root-is-not-really-supported stuff
somewhere (with a caveat perhaps that it might work if operations on /'s
LV, PVs and VG are done with great care).
`In typical emacs fashion, it is both absurdly ornate and
still not really what one wanted.' --- jdev
More information about the linux-lvm