+++ /dev/null
-#!/bin/bash
-#
-# vcached: VServer cache allocator
-#
-# Description: A script that preallocates vservers and stores them in
-# a cache. Preallocated vservers from the cache may be then used to
-# instantiate real vservers. Requires that /var/run/vcached.pid does
-# not exist on startup. Should run periodically as a cron job.
-#
-# Based on work by:
-#
-# Brent Chun - bnc@intel-research.net
-# Tristan Koo - tristan.koo@intel-research.net
-# William Wung - wungism@uclink.berkeley.edu
-#
-# Mark Huang <mlhuang@cs.princeton.edu>
-# Copyright (c) 2004-2005 The Trustees of Princeton University
-#
-# $Id$
-#
-
-PATH=/sbin:/usr/sbin:$PATH
-
-# number of images to keep cached
-slots=32
-
-# PID file
-pidfile=/var/run/vcached.pid
-
-# log file
-logfile=/var/log/vcached.log
-
-# debug
-debug=0
-
-usage()
-{
- echo "usage: vcached [OPTION...]"
- echo " -s [slots] number of images to keep cached"
- echo " -p [pidfile] PID file"
- echo " -l [logfile] log file"
- echo " -d debug"
- exit 1
-}
-
-# parse options
-while getopts 's:p:l:dh' OPT ; do
- case "$OPT" in
- s) slots=$OPTARG ;;
- p) pidfile=$OPTARG ;;
- l) logfile=$OPTARG ;;
- d) debug=1 ;;
- h|*) usage ;;
- esac
-done
-
-# append output to log file
-exec 1>>$logfile
-exec 2>>$logfile
-
-# check if we are already running
-if [ -f $pidfile ] && kill -0 `cat $pidfile` >/dev/null 2>&1 ; then
- echo "vcached(`cat $pidfile`) already running"
- exit 1
-fi
-echo $$ > $pidfile
-
-# clean up lock file before exiting
-trap "rm -f $pidfile" EXIT
-
-: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
-test -e "$UTIL_VSERVER_VARS" || {
- echo "Can not find util-vserver installation; aborting..."
- exit 1
-}
-. "$UTIL_VSERVER_VARS"
-
-# make sure barrier bit is set on /vservers to prevent chroot() escapes
-setattr --barrier $__DEFAULT_VSERVERDIR
-
-# take out the trash
-#rm -rf "$__DEFAULT_VSERVERDIR/.vtmp"
-
-mkdir -p "$__DEFAULT_VSERVERDIR/.vcache"
-mkdir -p "$__DEFAULT_VSERVERDIR/.vtmp"
-
-[ $debug -ne 0 ] && echo "$(date) Checking the cache"
-for i in $(seq 0 $(($slots - 1))) ; do
- if [ ! -d "$__DEFAULT_VSERVERDIR/.vcache/v$i" ] ; then
- echo "$(date) Caching v$i"
- # build image in .vtmp
- TMP=$(mktemp -d "$__DEFAULT_VSERVERDIR/.vtmp/v$i.XXXXXX")
- "$_VCLONE" "$__DEFAULT_VSERVERDIR/.vref/default/" "$TMP"/
- RETVAL=$?
- # move it to .vcache when complete
- if [ $RETVAL -eq 0 ] ; then
- mv "$TMP" "$__DEFAULT_VSERVERDIR/.vcache/v$i"
- echo "$(date) v$i ready"
- else
- echo "$(date) Error $RETVAL building v$i"
- rm -rf "$TMP"
- fi
- fi
-done
-
-exit 0