> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > hil > > Benedict Verheyen wrote: >> i had problems with vservers not starting (or so i thought) after a >> system >> reboot on my Debian Sarge. >> Some particulars of my system: >> - debootstrap install of vservers >> - most vservers have at least 1 shared directories with host (apt cache) >> - hashified >> - lastest util-vserver >> - kernel 2.6.16 >> - debian sarge >> - 7 vservers >> >> What happened when i rebooted is that i saw these lines: >> ------------------------------------------------------ >> Fixing visibility of /proc entries for vservers...done >> Starting vservers of type default... >> ------------------------------------------------------ >> >> And then it seemed as if my system hung but i could actually do a 3 >> fingered salute. So hanging is not the right wording, rather "not >> responding". > > i actually had the same problem... you go onto describe how you (almost) > figured > out the problem in this email, it seems that you didn't quite make the > final > connection: it's not really a problem with the vservers themselves taking > a long > time, it's a problem in the order in which they are starting, with the > non-dns > vservers starting first and therefore hanging whilst they wait for network > connections to time out. > >> I had what appeared to be some dead links in my /etc/rc2.d: >> vprocunhide rebootmgr vservers-default vservers-legacy >> They don't seem to be used anymore so i removed them. Now only a link to >> /etc/init.d/util-vserver is in there >> >> Anyway, i edited /etc/default/util-vserver and set the following: >> mark= >> auto=false > > i did this as well. it temporarily solves the problem to find the answer, > as you > say. > >> This prevented the vservers to load on boot (which i actually want and >> need but disabled to see what's going on). >> I then rebooted and started a vserver manually and instead of the >> startup >> lines zipping by it took ages for it to print some lines so now i knew >> "Starting vservers of type default..." was actually not hanging my >> computer but rather just going very very slow. > > which lines? i suspect they are the ones about various network connections > for > your vserver (trying to resolve hostname, for example). > >> I started all my vservers and after about 10 minutes (i had started an >> uml >> to get DNS going) i decided to shut down the uml that provided dns and >> start the vserver instead that also provides dns. >> Well, to my surprise, that one started quickly again. >> Entering the vservers was also quick again. Very strange. > > no - you now have your dns working, hence it doesn't need to wait for > network > timeouts. > >> Now it all works again but as you can imagine, i wouldn't want to reboot >> :) >> >> 1. What could be causing the slow startup? >> >> 2. What links are necessary in /etc/rc2.d? >> vprocunhide, rebootmgr, vservers-default & vservers-legacy point nowhere >> only util-vserver seems to be valid > > i've got the similar system set up as you (debian sarge 2.6.16 etc). there > was > something like: > > /etc/init.d/vserver-default > > and created > > /etc/init.d/vserver-dnsserver > /etc/init.d/vserver-mailserver > > etc, so that i could start the vservers in a specific order by linking > them into > /etc/rc?.d/* as appropriate. > >> 3. I have my DNS inside a vserver, so the DNS vserver should be started >> as early as possible. >> How do i do that if the links above aren't valid? >> Can i move the util-vserver link and then use the mark file to >> accomplish >> that? > > you still use the mark file to specifiy which start-up script starts which > vserver: > > [EMAIL PROTECTED]:~$ cat /etc/vservers/vsdns/apps/init/mark > dnsserver > [EMAIL PROTECTED]:~$ cat /etc/vservers/vsmail/apps/init/mark > mailserver > [EMAIL PROTECTED]:~$ cat /etc/vservers/vshttp/apps/init/mark > default > > so i can get them to start in what ever order i like, depending upon the > order > in /etc/rc?.d/ . > >> 4. Is there a way to start some vservers early and other less critical >> vservers at the end of the boot sequence? > > as above. > >> Some more information: >> >>> testme.sh >> Linux-VServer Test [V0.15] Copyright (C) 2003-2006 H.Poetzl >> chcontext is working. >> chbind is working. >> Linux 2.6.16-vs2.0.2-rc15.10apr2006 #1 Tue Apr 11 13:02:54 CEST 2006 >> i686 >> Ea 0.30.210 273/glibc (DSa) <compat,v11,fscompat,v13,net,oldproc,olduts> >> VCI: 0002:0001 273 03000036 (TbLgnP) >> --- >> [000]# succeeded. >> [001]# succeeded. >> [011]# succeeded. >> [031]# succeeded. >> [101]# succeeded. >> [102]# succeeded. >> [201]# succeeded. >> [202]# succeeded. >> >>> vserver-info - SYSINFO >> ============================================================================== >> Versions: >> Kernel: 2.6.16-vs2.0.2-rc15.10apr2006 >> VS-API: 0x00020001 >> util-vserver: 0.30.210; Apr 19 2006, 16:06:42 >> >> Features: >> CC: gcc, gcc (GCC) 3.3.5 (Debian 1:3.3.5-13) >> CXX: g++, g++ (GCC) 3.3.5 (Debian 1:3.3.5-13) >> CPPFLAGS: '' >> CFLAGS: '-Wall -g -O2 -std=c99 -Wall -pedantic -W' >> CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W >> -fmessage-length=0' >> build/host: i386-pc-linux-gnu/i386-pc-linux-gnu >> Use dietlibc: yes >> Build C++ programs: yes >> Build C99 programs: yes >> Available APIs: compat,v11,fscompat,v13,net,oldproc,olduts >> ext2fs Source: e2fsprogs >> syscall(2) invocation: alternative >> vserver(2) syscall#: 273/glibc >> >> Paths: >> prefix: /usr >> sysconf-Directory: /etc >> cfg-Directory: /etc/vservers >> initrd-Directory: $(sysconfdir)/init.d >> pkgstate-Directory: /var/run/vservers >> vserver-Rootdir: /var/lib/vservers >> ============================================================================== >> >> Thanks, >> Benedict > > hope it helps. > > - -- > > love and solidarity, > > --gdm > > http://docs.indymedia.org/view/Main/GarconDuMonde > > i have a NEW key: > gpg --keyserver pgp.mit.edu --recv-keys 594B97C2 > Key fingerprint = 7B70 F22D F275 D111 3A04 F9EE 0E25 4944 594B 97C2 >
Hi, thanks for the info. I think your suggestions will actually solve the problem i'm having. Thing is that i'm not sure on how to do it correctly on Debian. I have a util-vserver script in /etc/init.d which is linked to from rc2.d: S23util-vserver -> ../init.d/util-vserver In /etc/default/util-vserver i reread this comment: # The vserver initscript runs late in the boot-up sequence, which may # be inappropriate for services that need to run earlier, such as # nameservers or VPN tunnels. If a copy of the initscript is made to # run at an earlier position, you can then set $MARK to be those vservers # that you want to run then. #MARK=default This is confusing to me. The comment says to copy the initscript for those servers that need to be started earlier but the script looks at /etc/default/util-vserver to find info on what servers to start first. So how do i do that? I could copy the script, copy /etc/default/util-vserver and adjust the MARK & AUTO parameters there but i don't think that's the proper way to deal with this problem or is it? Looking at the /etc/init.d/util-vserver script (added as extra info below), i could make a copy and then put this code in comment DEBIANCONFIG=/etc/default/util-vserver if [ -f $DEBIANCONFIG ] then . $DEBIANCONFIG fi Then add MARK & AUTO in there. For instance, MARK=dnsserver & AUTO=true Next make a link to this script from /etc/rc2.d at an early stage. Is this how it should be done? Thanks, Benedict ============================================================================= #!/bin/sh DEBIANCONFIG=/etc/default/util-vserver if [ -f $DEBIANCONFIG ] then . $DEBIANCONFIG fi : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} test -e "$UTIL_VSERVER_VARS" || { echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' is expected); aborting..." >&2 exit 1 } . "$UTIL_VSERVER_VARS" PIDFILE=/var/run/rebootmgr.pid LOCKFILE=$MARK vprocunhide_lockfile=/var/run/vprocunhide export MARK NUMPARALLEL LOCKFILE # Test to see if there are legacy configs around if [ -f /etc/vservers/*.conf ] then legacy=yes fi # Print the vserver name in priority/alpha order # This function is only used for legacy configs sortserver(){ ( cd $__CONFDIR for serv in *.conf do test -f "$serv" || continue PRIORITY=100 . $serv test "$ONBOOT" || continue printf "%03d %s\n" $PRIORITY `basename $serv .conf` done ) | sort $* | (while read a b; do echo $b; done) } # Start vservers # This function is only used for legacy configs startservers(){ cd $__CONFDIR for name in `sortserver` do ONBOOT= . $name.conf if [ "$ONBOOT" = "yes" ] ; then echo "Starting Vservers..." $_VSERVER_LEGACY $name start else echo "virtual server $name not configured for on boot start" fi done } start() { # First set vserver related attributes for /proc, this # makes some necessary /proc entries visible in vservers if [ -e /proc/self/vinfo ] then # Check for vc_set_iattr feature, if its not detected, then we are probably running a # 2.4 kernel where all of /proc is unhidden by default $_VSERVER_INFO - FEATURE iattr if [ $? -eq 0 ] then echo -n $"Fixing visibility of /proc entries for Vservers..." $_VPROCUNHIDE if [ $? -ne 0 ] then echo "Error in setting Vserver related attributes for /proc" else touch "$vprocunhide_lockfile" echo "done." fi fi # Remove barrier on / if it exists if [ -e /proc/self/vinfo ] then showattr -d / | awk '{print $1'} | grep -q B if [ $? -eq 0 ] then setattr --~barrier / fi fi # Then set the chroot barrier for vserver in `ls /etc/vservers` do vdiractual=`readlink -f /etc/vservers/$vserver/vdir` if [ -d "$vdiractual" ] then setattr --barrier $vdiractual/.. fi done vrootactual=`readlink -f /etc/vservers/.defaults/vdirbase` setattr --barrier $vrootactual # Then start up vservers with $MARK if $AUTO is set to start things if [ "$AUTO" = "true" ] then exec /usr/lib/util-vserver/vserver-wrapper start; else echo "Auto starting of Vservers is not enabled in $DEBIANCONFIG" echo "Please start your vservers manually with 'vserver <vserver-name> start'" fi else echo -n $"Vserver capability not detected in kernel." fi echo } stop() { if [ -e /proc/self/vinfo ] then if [ "$AUTO" = "true" ] then exec /usr/lib/util-vserver/vserver-wrapper stop; else echo "Auto stopping of Vservers is not enabled in $DEBIANCONFIG" echo "Please stop your vservers manually with 'vserver <vserver-name> stop'" fi rm -f "$vprocunhide_lockfile" else echo -n $"Vserver capability not detected in kernel." fi } forcestop() { echo "Stopping all running vservers..." for vserver in `vserver-stat | grep -v "CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME" |grep -v ^0 | awk '{print $8}'` do echo -n "Stopping $vserver: " vserver $vserver stop >& /dev/null echo "done." done # This is broken: /usr/lib/util-vserver/start-vservers --stop --running } restart() { stop start } case "$1" in start) # First run the legacy starts, if there are any if [ "$legacy" = "yes" ]; then if [ "$BACKGROUND" = "yes" ] ; then startservers >/dev/tty8 </dev/tty8 2>/dev/tty8 & else startservers fi touch /var/lock/subsys/vservers-legacy fi # Then start the modern vservers, if there are any start ;; stop) # First stop the legacy vservers if [ "$legacy" = "yes" ]; then echo "Stopping Vservers" cd $__CONFDIR for name in `sortserver -r` do $_VSERVER_LEGACY $name stop done rm -f /var/lock/subsys/vservers-legacy fi # Then stop the modern vservers stop ;; forcestop) stop forcestop ;; restart) $1 ;; reload) ;; status) if [ "$legacy" = "yes" ]; then cd $__CONFDIR for serv in *.conf do ONBOOT=no name=`basename $serv .conf` . $serv echo -n ONBOOT=$ONBOOT " " $_VSERVER_LEGACY $name running done fi vserver-info - RUNNING if [ $? -eq 0 ] then vserver-stat else echo "vserver enabled kernel not detected" fi if [ -f $lockfile ] then echo $"/proc entries were fixed for vservers" else echo $"/proc entries are not fixed for vservers" fi ;; *) echo "Usage: $0 {start|stop|forcestop|reload|restart|status}" exit 2 ;; esac ============================================================================= _______________________________________________ Vserver mailing list Vserver@list.linux-vserver.org http://list.linux-vserver.org/mailman/listinfo/vserver