четверг, 24 февраля 2011 г.

OpenVZ: Упрощение автомонтирования разделов

Чтобы не писать для каждой гостевой машины по два скрипта, для монтирования и демонтирования разделов или директорий, создал один универсальный для всех. Сохраняем представленный ниже скрипт в директории «/etc/vz/scripts» под именем «mount» и назначаем ему права на выполнение. Далее, в директории «/etc/vz/conf» создаем симлинки скрипта под именем «VEID.mount» и «VEID.umount», где VEID – идентификатор гостевого хоста. В этой директории создаем еще один файл под именем «VEID.fstab», где прописываем монтируемые разделы в формате «fstab». Обратите внимание, что точки монтирования должны указываться с корневого раздела «/» гостевого хоста.

Собственно сам скрипт:

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

source /etc/vz/vz.conf
source ${VE_CONFFILE}

FSTAB="$(dirname $0)/${VEID}.fstab"
ACTION="$(basename $0 | sed -r 's/^[^\.]+\.//')"

if [ -e "$FSTAB" ]
then
        if [ $ACTION = "mount" ]
        then
                cat "$FSTAB" | sed -r "/^(#|$)/d" | \
                        awk -v VE_ROOT="${VE_ROOT}" '{ print "-t " $3 " -o " $4 " " $1 " " VE_ROOT $2; }' | \
                        xargs -n 1 -d'\n' -I{} sh -c 'echo mount {}; /bin/mount {};'
        elif [ $ACTION = "umount" ]
        then
                cat "$FSTAB" | sed -r "/^(#|$)/d" | \
                        awk -v VE_ROOT="${VE_ROOT}" '{ print VE_ROOT $2; }' | \
                        xargs -n 1 -d'\n' -I{} sh -c  'echo umount {}; /bin/umount {};'
        fi
fi

exit 0