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

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

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

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

  1. #!/bin/bash
  2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  3. source /etc/vz/vz.conf
  4. source ${VE_CONFFILE}
  5. FSTAB="$(dirname $0)/${VEID}.fstab"
  6. ACTION="$(basename $0 | sed -r 's/^[^\.]+\.//')"
  7. if [ -e "$FSTAB" ]
  8. then
  9. if [ $ACTION = "mount" ]
  10. then
  11. cat "$FSTAB" | sed -r "/^(#|$)/d" | \
  12. awk -v VE_ROOT="${VE_ROOT}" '{ print "-t " $3 " -o " $4 " " $1 " " VE_ROOT $2; }' | \
  13. xargs -n 1 -d'\n' -I{} sh -c 'echo mount {}; /bin/mount {};'
  14. elif [ $ACTION = "umount" ]
  15. then
  16. cat "$FSTAB" | sed -r "/^(#|$)/d" | \
  17. awk -v VE_ROOT="${VE_ROOT}" '{ print VE_ROOT $2; }' | \
  18. xargs -n 1 -d'\n' -I{} sh -c 'echo umount {}; /bin/umount {};'
  19. fi
  20. fi
  21. exit 0

Комментариев нет: