UMGUM.COM 

KVM + Bash-Supervisor + Precheck ( Функция предварительной проверки возможности и необходимости запуска виртуальной машины. )

21 июля 2011  (обновлено 28 октября 2018)

Эта публикация скрыта. Она доступна только по прямой ссылке.

Здесь размещено описание одного из функциональных блоков инструкции с примером управления виртуальными машинами "Qemu-KVM" через простейшие BASH-скрипты. Отдельно неприменимо.

Пример опций конфигурационного файла виртуальной машины:

# vi /usr/local/etc/kvm/cnf.d/mashine0.cnf

....
# Параметр, определяющий возможность запуска {yes|no}
run=yes

# Параметр, определяющий режим запуска {auto|manual}
run.mode=auto
....

Фрагмент кода с функциями контроля подсистемы виртуализации:

# vi /etc/kvm/fnc.d/2.precheck.fnc

#!/bin/bash
# This file contains the code snippet for the shell Bash v.4 (Bourne again shell)
# Файл содержит фрагмент кода для командного интерпретатора Bash v.4 (Bourne again shell)

# Функция предварительной проверки
function start-precheck() {

  # Если скрипт исполняется не от имени суперпользователя, заменяем имя пользователя по умолчанию "kvm" на имя пользователя, которым запускается скрипт
  [ "`id --user`" != "0" ] && USER=`whoami`

  # Получаем флаг разрешения запускать машину
  RUN=`grep --ignore-case "^run=" "${CNF}" | awk -F = '{print $2}'`

  # Решаем, можно ли запускать машину (останавливать её можно в любом случае)
  [ "${RUN}" == "no" ] && return 1

  # Получаем флаг режима запуска машины
  RMODE=`grep --ignore-case "^run.mode=" "${CNF}" | awk -F = '{print $2}'`

  # Решаем, можно ли запускать машину в заданном режиме (останавливать её можно в любом случае)
  [ "${RMODE}" == "manual" -a "${TARGET}" == "" ] && return 1

  # Проверяем, не запущена ли уже целевая виртуальная машина
  STATE=`ps wax | grep --invert-match grep | grep --ignore-case --count --extended-regexp "kvm[ ]+\-name[ ]+${NAME}[ ]+"`
  if [ ${STATE} -ne 0 ]; then

    # Прекращаем работу функции запуска виртуальной машины
    echo "${DATE}: The virtual machine ${NAME} is already running." | tee -a "${LOGT}"
    return 1

  fi

return 0
}


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )