[Devel] Re: Q: general lxc architecture

Daniel Lezcano daniel.lezcano at free.fr
Tue Nov 10 02:35:48 PST 2009


Michael Tokarev wrote:
> Hello.  This is my first post here.
>
> I'm trying lxc, and while it (sorta) works, I've several questions,
> one of which is about general architecture of the userspace toolset.
>
> The question is -- what's the reasoning behind the usage of /var/lib/lxc
> and two sets of configuration.
>
> /var/lib/lxc is - in my opinion - a bad mix of things that should be
> either in /etc/lxc/ or in /var/run/[lxc/].  /var/lib/lxc contains both
> the persistent configuration (which should go to /etc), and runtime-only
> things (like PID of init, ifindex of interfaces and the like, and especially
> the "state" file -- all that should be cleared on reboot), for which the
> proper place is /var/run.  I may think of a way to keep it all in one place,
> but it's not how things are usually done in linux.
>
> And another question is about configuration part of containers.  Right
> now there are two sets of configuration, one is the file "config" in the
> container "home directory", and another is the same config which is split
> out into pieces in various subdirectories.  Why not keep the original
> config only, why the split is needed?
>
> Related, how to alter configuration once the container is created?  It looks
> like I have to tweak the split-out configuration _and_ the top-level
> "config" file, right?
>
> But the whole /var/lib/lxc thing looks - to me anyway - so wrong that the
> right thing to me is to mount a tmpfs over there on boot, keep whole
> configuration in /etc/lxc/$name.conf, lxc-create a container from there
> on boot (in the tmpfs mounted at /var/lib/lxc !) and run it the usual
> way.  Also quite ugly but this at least lets one to keep things in
> traditional places.
>   
Hi Michael,

(cc'ed lxc-devel@)

Your analysis is correct :)
This is something we are enhancing.  The different files in 
/var/lib/lxc/*  were removed and only the config file is stored now.

You can check the repository:
http://lxc.git.sourceforge.net/git/gitweb.cgi?p=lxc/lxc;a=shortlog


> And one more question.  Why /var/lib/lxc/$name/state file is needed?  Can
> the same be done in a slightly different way, like, for example, checking
> the presence of /dev/cgroup/$name directory (or where the cgroup mountpoint
> is)?  What I'm trying to say here is that the "state" file may not reflect
> reality while kernel knows reality for sure...
>   
Runtime information is no longer stored on the disk.

> I think I misunderstand something very important here.  I know that
> linux-vserver project used quite similar scheme (but without the top-level
> "config" file, so that whole configuration was in single place), but I don't
> understand lxc the same way as I didn't understand linux-vserver, and lxc
> looks even uglier to me... ;)
>   
Uglier than tomorrow, better than yesterday :)

Thanks
  -- Daniel

_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list