On 22/04/16 00:06, Ruben Rubio Rey wrote:
1) I created a ext3 filesystem (btw I noticed that nethack is using ext2)
2) modified nginx.conf
#access_log /dev/null;
access_log /var/log/nginx/access_log;
3) rebuilt data.iso
4) Run rumprun qemu adding a new block
rumprun qemu -i -M 128 -I if,vioif,'-net tap,script=no,ifname=tap0' \
-W if,inet,static,10.0.120.101/24 \
-b images/data.iso,/data \
-b log.ext3,/var/log/nginx \
-- ./nginx.bin -c /data/conf/nginx.conf
nginx works, the "access_log" file is created but no information is stored
there.
The remaining issue is how to get the application to sync its data to a
clean state. Some applications support an "in-band" method for signalling
a sync, e.g. rumprun-nethack will save the game when the user presses "S".
For applications which don't support that, normally a signal is used. With
rump kernels and therefore Rumprun taking heed of the "signals are evil"
tautology, the signal approach won't work out-of-the-box. Some code
remains to be conjured up to address the general case.
I am afraid that I might be facing this problem, but I am not sure about
it. Any help is appreciated!
Probably. All I can say is that it won't work until someone makes it
work. Sorry.
Note, though, that if you store data on a "local" file system, there's
no way to reliably read it while the unikernel is running. Well, you
could add an NFS server to the unikernel and NFS export the volume, but
in that situation you might just as well export the data using the httpd
you're already running.