Hi,

Currently systemd is using cgroups kernel interface for process containment. 
Cgroups is a very easy solution on linux to handle the double fork used by 
daemons, and it can help respawning services in case of self-crash. However 
cgroups seems to be the major stopper for systemd to be cross platform. 

I'm thinking about an alternative approach for process containment, utilizing 
the widely accepted FUSE interface in all major unix systems. Below is a brief 
description:
a). A fuse daemon will providing a special file system, let's say /run/initfs
b). For every daemon which needs to be contained, we can start a helper process 
first, and open a file in the special file system. For instance, to start 
apache daemon, we start the helper and create/open a file "/run/initfs/apache". 
Make sure close-on-exit is NOT set on this file descriptor.
c). Fork-exec to start the daemon. Now we can identify all process with 
reference to "/run/initfs/apache" as a part of the apache daemon.

Aside from being cross platform, the FUSE interface also gives very powerful 
api for many advanced functionalities. This initfs file server is basically an 
user space extension of the kernel, just like some normal server in the 
microkernels. You could even have multiple instance of such initfs server 
running on the same box(using separate vfs/pid namespace to hide them from each 
other), thus making init on linux containers much easier.

Any thoughts?
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to