VMware

VMware Server - бесплатная и мощная платформа виртуализации для малого бизнеса.

Поддержка VMware Server закончилась 30 июня 2011 года. Пользователям рекомендуется перейти на другие продукты VMware.

Бесплатный продукт VMware Server является довольно мощной платформой виртуализации, которая может быть запущена на серверах под управлением хостовых операционных систем Windows и Linux. Основное предназначение VMware Server – поддержка малых и средних виртуальных инфраструктур небольших предприятий. В связи с небольшой сложностью его освоения и установки, VMware Server может быть развернут в кратчайшие сроки, как на серверах организаций, так и на компьютерах домашних пользователей.

Ранее этот продукт распространялся по коммерческой лицензии и носил название VMware GSX Server 3, однако, с ростом возможностей и продаж мощной платформы виртуализации VMware ESX Server, компания VMware не увидела перспектив в продажах платформы VMware Server, сделав в конечном итоге продукт бесплатным. Стоит отметить, что в отношении этого продукта VMware рассчитывает в основном на доходы от продаж Virtual Center for VMware Server, эффективного средства для управления виртуальной инфраструктурой на основе VMware Server, который обладает широкими возможностями по взаимодействию с виртуальными машинами и консолидации виртуальных серверов.

Вот основные варианты использования продукта VMware Server:

  • поддержка нескольких виртуальных серверов на одном физическом в продакшене компании
  • поддержка нескольких виртуальных серверов в целях тестирования «в связке» в виртуальной сети хоста при разработке и поддержке программного обеспечения
  • запуск готовых к использованию виртуальных машин (Virtual Appliances), выполняющих определенную серверную функцию
  • обеспечение высокой доступности виртуальных серверов (виртуальные машины могут легко переноситься между физическими серверами)
  • создание удобных к восстановлению резервных копий виртуальных серверов за счет получения мгновенных снимков текущего состояния системы («снапшотов»).

VMware Server обладает широкими возможностями по работе с виртуальными машинами, включающими в себя:

  • Поддержку любой стандартной архитектуры x86. У VMware Server нет особых требований к компонентам физического сервера – в отличие от VMware ESX Server, который накладывает весьма конкретные ограничения на оборудование сервера. Многоядерные процессоры также поддерживаются.
  • Поддержку двунаправленного виртуального SMP (symmetric multi-processing). Если позволяет архитектура физического сервера, виртуальные машины, создаваемые в VMware Server, могут содержать два виртуальных процессора, что положительно сказывается на производительности гостевых систем.
  • Поддержку большого числа хостовых и гостевых операционных систем, полный список которых всегда доступен на сайте VMware. Число хостовых операционных систем, на которых может быть установлен VMware Server, конечно же, меньше, чем число поддерживаемых гостевых систем. Между тем, в качестве гостевой может быть установлена практически любая известная операционная система. Даже если ее нет в списке поддерживаемых, это не значит, что ее нельзя установить.
  • Поддержку 64-битных хостовых и гостевых операционных систем. В качестве хостовых 64-х битных систем могут использоваться 64-х битные ОС семейства Windows Server 2003, а также 64-х битные версии Linux-систем: Red Hat, SUSE, Mandriva и Хостинг VPS/VDS на Ubuntu. Список поддерживаемых гостевых ОС дополнен также еще и 64-х битными версиями Windows Vista, Sun Solaris и FreeBSD.
  • Поддержку IntelVT (Intel Virtualization Technology)

VMDK

VMDK (Virtual Machine Disk) это формат файла разработанный VMware для использования в качестве образа диска в своих виртуальных машинах. VMDK схож по структуре и содержанию с жестким диском, является открытым и документированным.

Инсталляция

VMware Server на Fedora

Для виртуализации будет использоваться бесплатный vmware Server.

  • VMware Server. Регистрируемся и скачиваем версию: VMware-server-2.0.2-203138.x86_64.tar.gz.
  • На почту приходит письмо с просьбой подтвердить регистрацию. После подтверждения на сайте станут доступны два лицензионных ключа для Windows и FAQ Linux.
  • Предварительные работы:
    • создадим каталог для виртуальных машин /home/vmware
    • в файле для красоты отображения /etc/services заменим описание 902 порта TCP и UDP. Должно выглядеть так
      vmware-authd    902/tcp
      vmware-authd    902/udp
    • Нужно установить зависимости для VMware Server
      yum install kernel-devel-`uname -r` gcc gcc-c++
    • Оригинальный инсталлятор VMware не поддерживает ядро 2.6.35. В сети существует скрипт дающий возможность использовать это ядро VMware Server on 2.6.31 kernels. Скачиваем скрипт
      # wget --no-check-certificate http://codebin.cotescu.com/vmware/vmware-server-2.0.x-kernel-2.6.3x-install.sh
      # ls -l
      -rw-r--r--  1 root     root          8696 Янв 27 15:16 raducotescu-vmware-server-linux-2.6.3x-kernel-release-1.5-1-g71f8b66.tar.gz
      -rw-r--r--. 1 root     root     474415801 Янв 24 15:30 VMware-server-2.0.2-203138.x86_64.tar.gz

      Устанавливаем обновление, предварительно распаковав.

      # tar xvfz raducotescu-vmware-server-linux-2.6.3x-kernel-release-1.5-1-g71f8b66.tar.gz
      # cp VMware-server-2.0.2-203138.x86_64.tar.gz raducotescu-vmware-server-linux-2.6.3x-kernel-71f8b66/
      # cd raducotescu-vmware-server-linux-2.6.3x-kernel-71f8b66

      Запускаем с правами root vmware-server-2.0.x-kernel-2.6.3x-install.sh. Он будет искать в текущей директории дистрибутив VMware Server, который мы туда предварительно скопировали.

      # ./vmware-server-2.0.x-kernel-2.6.3x-install.sh
      ...
      Please specify a port for remote connections to use [902] 
      Please specify a port for standard http connections to use [8222] 
      Please specify a port for secure http (https) connections to use [8333] 
      
      The current administrative user for VMware Server  is ''.  Would you like to 
      specify a different administrator? [no] yes
      
      Please specify the user whom you wish to be the VMware Server administrator
       root
      
      Using root as the VMware Server administrator.
      
      In which directory do you want to keep your virtual machine files? 
      [/var/lib/vmware/Virtual Machines] /home/vmware
      
      Please enter your 20-character serial number.
      
      Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel:

В случае успешного завершения установки VMware скрипт выведет:

The configuration of VMware Server 2.0.2 build-203138 for Linux for this 
running kernel completed successfully.

On Fedora you must follow these steps in order to make VMware Server to work properly:
	1. edit /etc/services and replace the entry located on TCP/902 port with vmware-authd
	2. disable SELinux by editing the /etc/selinux/config file
	3. reboot your system
Housekeeping...
Thank you for using the script!
Patch provided by: 
	Ramon de Carvalho Valle
	http://risesecurity.org
Script author: 
	Radu Cotescu
	http://radu.cotescu.com

VMware Server 2 управляется через WEB-интерфейс. Доступ к WEB-интерфейсу через HTTPS(https:<IP ADDRESS>:8333) или HTTP (http:<IP ADDRESS>:8222).

Установка закончилось успешно, но перестал работать Web -интерефйс. В целом на 2011.01.31 связка Fedora 14 и VMware-server-2.0.2-203138.x86_64 не стабильна.
  • В процессе установки могла возникнуть ошибка:
      The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match
      your running kernel (version 2.6.35.10-74.fc14.x86_64).  Even if the module 
      were to compile successfully, it would not load into the running kernel.

Лечим ее созданием константы с версией в исходниках ядра. Добавляем #define UTS_RELEASE «версия ядра» в конец файла.

# nano /usr/src/kernels/2.6.35.10-74.fc14.x86_64/include/linux/version.h
#define UTS_RELEASE "2.6.35.10-74.fc14.x86_64"

или перепишем эту константу из файла utsrelease.h

# cat /usr/src/kernels/2.6.35.10-74.fc14.x86_64/include/generated/utsrelease.h >> /usr/src/kernels/2.6.35.10-74.fc14.x86_64/include/linux/version.h
или
# cat /usr/src/kernels/$(uname -r)/include/generated/utsrelease.h >> /usr/src/kernels/$(uname -r)/include/linux/version.h

VMware Server на CentOS

# cat /etc/issue
CentOS release 5.5 (Final)
# uname -a
Linux vm.net 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

Для виртуализации будет использоваться бесплатный VMware Server.

  • VMware Server. Регистрируемся и скачиваем версию: VMware-server-2.0.2-203138.x86_64.tar.gz.
  • На почту приходит письмо с просьбой подтвердить регистрацию. После подтверждения на сайте станут доступны два лицензионных ключа для Windows и FAQ Linux.
  • Предварительные работы:
    • создадим каталог для виртуальных машин /home/vmware
    • в файле для красоты отображения /etc/services заменим описание 902 порта TCP и UDP. Должно выглядеть так
      vmware-authd    902/tcp
      vmware-authd    902/udp
    • Нужно установить зависимости для VMware Server
      # yum install kernel-devel-`uname -r` gcc gcc-c++
      # yum install xinetd
  • Распаковываем и устанавливаем
    # tar xvfz VMware-server-2.0.2-203138.x86_64.tar.gz
    # cd vmware-server-distrib
    # ./vmware-install.pl
    ...
    Please specify a port for remote connections to use [902] 
    
    Please specify a port for standard http connections to use [8222] 
    
    Please specify a port for secure http (https) connections to use [8333] 
    
    The current administrative user for VMware Server  is ''.  Would you like to 
    specify a different administrator? [no] yes
    
    Please specify the user whom you wish to be the VMware Server administrator
     root
    
    Using root as the VMware Server administrator.
    
    In which directory do you want to keep your virtual machine files? 
    [/var/lib/vmware/Virtual Machines] /home/vmware
    
    Please enter your 20-character serial number.
    
    Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel:
    ...

VMware Server 2 управляется через WEB-интерфейс. Доступ к WEB-интерфейсу через HTTPS(https:<IP ADDRESS>:8333) или HTTP (http:<IP ADDRESS>:8222).

VMware Server и USB

К USB нужно подключить выход от ATC и источника бесперебойного питания.

Инструкция ниже не позволила увидеть эти устройства в гостевой Win XP

Для того чтобы VMware Server 2.0.2 разрешил гостевым системам подключать usb устройства, нужно:

  • # nano /etc/fstab
    ...
    usbfs                   /proc/bus/usb           usbfs                   0 0
  • # chmod -R 777 /proc/bus/usb*

Snapshot снимок состояния VM

VMware Server 2 умеет делать только один snapshot. Старый snapshot перезаписывается.

Источник официальный server_faq.pdf: How many snapshots can I take with Server 2 hosts?

Server 2 hosts support a single snapshot per virtual machine. In order to take a new snapshot, the previous snapshot needs to be overwritten.

Снапшот (Snapshot) - это снимок состояния виртуальной машины (содержимое памяти, настройки ВМ, содержимое дисков) в определенный момент времени. Возврат к снапшоту (revert to snapshot) восстанавливает текущее состояние виртуальной машины до сохраненного.

Снапшоты можно делать много раз, один за другим, причем можно создать достаточно развесистое дерево состояний, до 32 уровней вложенности. В линейном процессе снапшотов каждый снапшот имеет родительский и дочерний, за исключением последнего снапшота, не имеющего дочернего по понятным причинам. В дереве снапшотов сразу несколько дочерних имеют родительским один и тот же снапшот.

Выбирать точку для создания снапшота следует с осторожностью, и крайне желательно в момент, когда никакие процессы не ведут сетевой активности. Просто потому что если вы создадите снапшот в момент копирования файла по сети, то при откате до этого снапшота восстановится состояние виртуальной машины в момент копирования - и соотв. какие-то процессы могут упасть.

Идеальный вариант для снапшотов - выключенная ВМ.

В силу существования снапшотов существуют различные режимы для работы виртуальных дисков. А именно существуют независимые диски (independent), на которые снапшоты никак не влияют. Независимые диски могут работать в persistent (все изменения немедленно записываются на диск, и не откатываются даже при возврате к snapshot) и nonpersistent (все изменения откатываются автоматически при выключении машины или возврате к снапшоту). Обращаю ваше внимание, что nonpersistent диск будет возвращен к тому состоянию, в котором находился, когда мы поставили соотв. галочку в свойствах диска, а не к состоянию на момент снапшота.

Работа с ВМ через интерфейс командной строки: vmrun

Утилита vmrun позволяет автоматизировать управление виртуальными машинами. Кроме управления питанием виртуальных машин, с помощью этой утилиты можно взаимодействовать с файловой системой гостевой ОС, а также организовывать обмен файлами посредством общих папок, либо копируя их напрямую. Синтаксис использования vmrun.exe следующий:

vmrun <команда> [<параметры>]

Утилита vmrun может использоваться не только для локального, но и для удаленного управления виртуальными машинами. Для этого в качестве дополнительных параметров необходимо указать следующие флаги аутентификации:

-h <имя удаленного компьютера>
-P <порт удаленного компьютера>
-u <имя пользователя в хостовой ОС>
-p <пароль в хостовой ОС>
-gu <имя пользователя в гостевой ОС>
-gp <пароль в гостевой ОС>
  • Список параметров утилиты vmrun:
Команда Параметры Описание
start <путь к файлу *.vmx> Запуск виртуальной машины или VM Team
stop <путь к файлу *.vmx> [hard soft] Остановка виртуальной машины или VM Team (программная или аппаратная)
reset <путь к файлу *.vmx> [hard soft] Перезагрузка виртуальной машины или VM Team(программная или аппаратная)
suspend <путь к файлу *.vmx> [hard soft] Сохранение состояния виртуальной машины или VM Team (постановка на «паузу», программная или аппаратная)
listSnapshots <путь к файлу *.vmx> Вывод списка снапшотов виртуальной машины
snapshot <путь к файлу *.vmx> <имя снапшота> Создание снапшота виртуальной машины с заданным именем
deleteSnapshot <путь к файлу *.vmx> <имя снапшота> Удаление снапшота с заданным именем
revertToSnapshot <путь к файлу *.vmx> <имя снапшота> Откат виртуальной машины к заданному снапшоту

Команды для операций в гостевой ОС:

runProgramInGuest <путь к файлу *.vmx> <программа> [параметры]
fileExistsInGuest <путь к файлу *.vmx> <путь к файлу в гостевой системе> Проверка наличия заданного файла в гостевой системе
setSharedFolderState <путь к файлу *.vmx> <имя общей папки> <новый путь в хостовой системе> Изменение пути к общей папке в хостовой системе
addSharedFolder <путь к файлу *.vmx> <имя общей папки> <новый путь в хостовой системе> Добавление общей папки для виртуальной машины и хостовой системы
removeSharedFolder <путь к файлу *.vmx> <имя общей папки> Удаление общей папки
listProcessesInGuest <путь к файлу *.vmx> Получение списка процессов в гостевой ОС
killProcessInGuest <путь к файлу *.vmx> <PID процесса> Завершение процесса в гостевой ОС с заданным идентификатором
runScriptInGuest <путь к файлу *.vmx> <путь к интерпретатору сценариев> <текст сценария> Запуск сценария в гостевой ОС
deleteFileInGuest <путь к файлу *.vmx> <путь к файлу в гостевой ОС> Удаление файла в гостевой ОС
createDirectoryInGuest <путь к файлу *.vmx> <путь к папке в гостевой ОС> Создание папки в гостевой ОС
deleteDirectoryInGuest <путь к файлу *.vmx> <путь к папке в гостевой ОС> Удаление папки в гостевой ОС
listDirectoryInGuest <путь к файлу *.vmx> <путь к папке в гостевой ОС> Получение списка содержимого заданной папки в гостевой ОС
copyFileFromHostToGuestOS <путь к файлу *.vmx> <путь к файлу в хостовой ОС> <путь к файлу в гостевой ОС> Копирование файла из хостовой в гостевую систему
copyFileFromGuestToHostOS <путь к файлу *.vmx> <путь к файлу в гостевой ОС> <путь к файлу в хостовой ОС> Копирование файла из гостевой в хостовую систему
renameFileInGuest <путь к файлу *.vmx> <старое имя файла> <новое имя файла> Переименование файла в гостевой ОС

Общие команды

list Получение списка всех запущенных виртуальных машин
upgradevm <путь к файлу *.vmx> Улучшение виртуальной машины (продвижение поколения аппаратного обеспечения)
installtools <путь к файлу *.vmx> Установка VMware Tools в гостевой ОС

Примеры использования.

  • Получить список всех запущенных виртуальных машин:
    # vmrun -T server -h https://localhost:8333/sdk -u root -p password list
    Total running VMs: 2
    [standard] Debian6_MyWWW/Debian6_MyWWW.vmx
    [standard] Ubuntu1004LTS_GIT/Ubuntu1004LTS_GIT.vmx
#!/bin/bash 
# This script will start/stop/status VMware machine
#
# Written by Ez-Aton
# http://www.tournament.org.il/run
#
# Modified for VMware server 2.0 by doka@wepoca.net
# http://www.wepoca.net
#
#
# Hardcoded. Change to match your own settings!
# the VMware storage name
VMSTORAGE="[standard]"
 
# the VM guest to be started/stopped
VMGUEST="YOUR_GUEST_VM/YOUR_GUEST_VM.vmx"
 
# the URL of the VMware host
HOST="https://URL_OF_VMWARE_HOST:8333/sdk"
 
# admin user on VMware host
HOST_USER="YOUR_ADMIN"
HOST_PWD="ADMIN_PWD"
 
# the VMware script 
VMRUN="/usr/bin/vmrun"
TIMEOUT=60
 
function status () { 
 
# This function will return success if the VM is up
$VMRUN -T server -h $HOST -u $HOST_USER -p $HOST_PWD list | grep "$VMGUEST" &>/dev/null
 
if [[ "$?" -eq "0" ]]
 
then
 
echo "VM $VMGUEST is up"
 
return 0
 
else
 
echo "VM $VMGUEST is down"
 
return 1
 
fi
 
}
 
function start () {
 
# This function will start the VM
 
$VMRUN -T server -h $HOST -u $HOST_USER -p $HOST_PWD start "$VMSTORAGE $VMGUEST"
 
if [[ "$?" -eq "0" ]]
 
then
 
echo "VM $VMGUEST is starting"
 
return 0
 
else
 
echo "$VMGUEST VM failed"
 
return 1
 
fi
 
}
 
function stop () {
 
# This function will stop the VM
 
$VMRUN -T server -h $HOST -u $HOST_USER -p $HOST_PWD suspend "$VMSTORAGE $VMGUEST"
 
for i in `seq 1 $TIMEOUT` do 
 
if status then 
 
echo
 
else
 
echo "VM $VMGUEST Stopped"
 
return 0
 
fi
 
sleep 1 done
 
# $VMRUN stop "$VMGUEST" soft
 
$VMRUN -T server -h $HOST -u $HOST_USER -p $HOST_PWD stop "$VMSTORAGE $VMGUEST" soft
 
}
 
case "$1" in
 
start) start
 
;;
 
stop) stop
 
;;
 
status) status
 
;; esac
 
RET=$?
 
exit $RET 

Script VM stop, snapshot, start.

# nano /scripts/vmware/snapshot.sh
#!/bin/bash 
#
# This script snapshots VMware machine
#
VMSTORAGE="[standard]"
# the URL of the VMware host
HOST="https://localhost:8333/sdk"
# admin user on VMware host
HOST_USER="root"
HOST_PWD="your password"
# the VMware script 
VMRUN="/usr/bin/vmrun"

#----------- VM VisiCAR Windows XP Pro SP3 + VMware tools
# Stop. If install VMware tools
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD stop "[standard] WinXpSP3_visicar/WinXpSP3_visicar.vmx" soft
# Delete snapshot
#$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD deleteSnapshot "[standard] WinXpSP3_visicar/WinXpSP3_visicar.vmx"
# Create snapshot
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD snapshot "[standard] WinXpSP3_visicar/WinXpSP3_visicar.vmx"
# Start
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD start "[standard] WinXpSP3_visicar/WinXpSP3_visicar.vmx"

#----------- VM FreeBSD 6.2 NOT install VMware tools
# Stop. If NOT install VMware tools
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD stop "[standard] FreeBSD_visicar/FreeBSD_visicar.vmx"
# Create snapshot
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD snapshot "[standard] FreeBSD_visicar/FreeBSD_visicar.vmx"
# Start
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD start "[standard] FreeBSD_visicar/FreeBSD_visicar.vmx"

#----------- VM Ubuntu Ubuntu 10.04.2 LTS GIT
# Stop. If NOT install VMware tools
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD stop "[standard] Ubuntu1004LTS_GIT/Ubuntu1004LTS_GIT.vmx"
# Create snapshot
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD snapshot "[standard] Ubuntu1004LTS_GIT/Ubuntu1004LTS_GIT.vmx"
# Start
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD start "[standard] Ubuntu1004LTS_GIT/Ubuntu1004LTS_GIT.vmx"

#----------- VM Ubuntu Ubuntu 10.04.2 LTS Monitor
# Stop. If NOT install VMware tools
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD stop "[standard] Ubuntu1004TLS_monitor/Ubuntu1004TLS_monitor.vmx"
# Create snapshot
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD snapshot "[standard] Ubuntu1004TLS_monitor/Ubuntu1004TLS_monitor.vmx"
# Start
$VMRUN -T Server -h $HOST -u $HOST_USER -p $HOST_PWD start "[standard] Ubuntu1004TLS_monitor/Ubuntu1004TLS_monitor.vmx"

Подключение VM через vmware-vmrc

Для подключения к виртуальным машинам можно использовать vmware-vmrc. Синтаксис команды vmware-vmrc

Linux:

vmware-vmrc -h [<hostname>] [-u <username> -p <password>] [-M <vmid> | <datastore path>]

Windows:

vmware-vmrc.exe -h <hostname> [-u <username> -p <password>] -M <vmid> | <datastore path>

где <ip> ip адрес машины с VMware Server 2 и <vmid> идентификационный номер виртуальной машины. Значение vmid можно увидеть в файл vmInventory.xml на сервер VMware, в теге <objID>XXX</objID>.

VmWare: ошибка Failed to lock the file

Для устранения это ошибки нужно в директории виртуальной машины удалить все директории с расширением .lck.

PQ VPS сервера в 28+ странах.