Skip navigation
2011

Deshifrator's Blog

April 2011 Previous month Next month

Имеется в наличии виртуальная машина под VirtualBox'ом с операционной системой FreeBSD 8.2 на борту. Данная ВМ использовалась исключительно для моих "злобных" экспериментов. И вот, в один прекрасный день, созрела у меня идея попробовать собрать из этой тестовой ВМ iSCSI target (сервер) для нужд ESXi. Какой-либо производительности от данной связки я, естественно, не ждал. Между ними и сеть всего лишь 100 мегабит. Но для получения опыта и знаний в области настройки iSCSI такая схема вполне подойдет.


Немного теории

Небольшие выдержки из wikipedia.org на тему iSCSI (чтобы самому не забыть, да и по страничкам лишний раз не прыгать):

iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами.

iSCSI — клиент-серверная архитектура. Сервер, принимающий запросы, называется iSCSI target, клиент — iSCSI initiator. Сервер может быть реализован как программно, так и аппаратно. Программная реализация принимает запросы по сети, обрабатывает их, читает (записывает) нужные данные на носитель, отдаёт информацию (результат) обратно по сети.

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

  • iqn-адрес (англ. iSCSI Qualified Name, квалифицированное iSCSI-имя)
  • eui (IEEE EUI-64 format)
  • naa (T11 Network Address Authority)


Для iqn используется следующий формат адреса имени:

iqn.jpg

  1. iqn - указание на тип
  2. Дата регистрации доменного имени в формате год-месяц (ГГГГ-ММ)
  3. Доменное имя в реверсивной форме (org.wikimedia для wikimedia.org)
  4. Заданное (в пределах домена) имя ресурса в произвольной форме. Отделяется от первых трёх частей двоеточием.

Для обнаружения списка доступных устройств на iSCSI цели (сервере) используется технология обнаружения (discovery, auto-discovery). Это сервис, слушающий на порту tcp (обычно, 3260) запросы клиентов и отдающий им список доступных целей. Такой сервис называют порталом (англ. portal).

В конце статьи приводится ряд очень полезных ссылок на различные ресурсы по данной тематике.


Настраиваем iSCSI Target на FreeBSD

В качестве программного iSCSI таргета для FreeBSD я использую istgt. Istgt - это iSCSI таргет, изначально написанный для FreeBSD (а не портированный из NetBSD как iscsi-target), который также используется в FreeNAS. Именно его рекомендуют использовать, поэтому приступаем к его установке (перед этим не забываем обновить коллекцию портов):

# portsnap fetch extract
# portsnap fetch update
# make -C /usr/ports/net/istgt install clean

После установки в каталоге /usr/local/etc появится каталог istgt, в котором находятся конфигурационные файлы: 

# cd /usr/local/etc/istgt/
# ls -l 
-rw-------  1 root  wheel   922 Apr 25 16:50 auth.conf.sample
-rw-r--r--  1 root  wheel  4509 Apr 25 16:50 istgt.conf.sample
-rw-r--r--  1 root  wheel  8207 Apr 25 16:50 istgt.large.conf.sample
-rw-------  1 root  wheel   733 Apr 25 16:50 istgtcontrol.conf.sample

В каталоге istgt лежат всего лишь примеры конфигурационных файлов, которые нам следует внимательно просмотреть, понять и, на основе данных конфигурационных файлов, создать свои. Как видно выше, istgt создает четыре конфигурационных файла, но для настройки iSCSI таргета нам понадобятся только два файла: auth.conf.sample и istgt.conf.sample. После изучения данных файлов я составил свои конфиги. Чуть ниже приведена последовательность команд, которую необходимо выполнить для создания файла auth.conf нужного нам содержания:

# touch auth.conf
# chmod 600 auth.conf 
# cat > auth.conf <<EOF
[AuthGroup1]
  Comment "Auth Group1"
  Auth "vmlab-freebsd-iscsi-user"  "your-password"
EOF

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

Далее создаем конфигурационный файл istgt.conf нужного нам содержания:

# touch istgt.conf
# chmod 644 istgt.conf 
# cat > istgt.conf <<EOF
[Global]
  Comment "Global section"
  NodeBase "iqn.2011-04.local.vmlab.freebsd.iscsi"
  PidFile /var/run/istgt.pid
  AuthFile /usr/local/etc/istgt/auth.conf
  LogFacility "local7"

[UnitControl]

[PortalGroup1]
  Comment "SINGLE PORT TEST"
  Portal DA1 192.168.33.17:3260

[InitiatorGroup1]
  Comment "Initiator Group1"
  InitiatorName "ALL"
  Netmask 192.168.33.0/24

[LogicalUnit1]
  Comment "FreeBSD iSCSI Hard Disk"
  TargetName disk1
  TargetAlias "Data Disk1"
  Mapping PortalGroup1 InitiatorGroup1
  AuthMethod CHAP
  AuthGroup AuthGroup1
  UnitType Disk
  QueueDepth 32
  LUN0 Storage /usr/local/disk1 10GB
[LogicalUnit2]
  Comment "FreeBSD iSCSI Hard Disk"
  TargetName disk2
  TargetAlias "Data Disk2"
  Mapping PortalGroup1 InitiatorGroup1
  AuthMethod CHAP
  AuthGroup AuthGroup1
  UnitType Disk
  QueueDepth 32
  LUN0 Storage /usr/local/disk2 15GB
EOF

Файл istgt.conf сам по себе более объемный и, на первый взгляд, может показаться сложным. Но это только на первый взгляд. Ниже приведено описание некоторых секций конфигурационного файла istgt.conf:


  • [Global] - здесь находятся глобальные настройки, такие как местоположение pid файла, местоположение файла с учетными данными (AuthFile), настройки журналирования (LogFacility).


  • [PortalGroup] - настройка портала. Задаем IP адрес и порт, на котором будем принимать клиентов. Что такое портал, написано чуть выше (там, где приводятся выдержки из wikipedia). PortalGroup используется совместно с LogicalUnit.


  • [InitiatorGroup] - механизм, позволяющий маскировать/презентовать определенный таргет тому или иному iSCSI инициатору. InitiatorGroup используется совместно с LogicalUnit.


  • [LogicalUnit] - здесь настраиваются различные таргеты (каждый таргет может содержать несколько LUN). Конфигурация, когда в одном LogicalUnit указан LUN0 и LUN1, у меня не заработала (istgt стартует нормально, но ESXi почему-то видит только один LUN0, а LUN1 игнорирует).


Итак, с конфигурационными файлами разобрались. Теперь пора перейти к настройке журналирования. В файле istgt.conf мы задали параметру LogFacility значение local7. Чтобы syslog сервер смог распознать сообщения, направленные ему с данным logfacility, необходимо подредактировать файл /etc/syslog.conf, добавив в него строку:

local7.* /var/log/istgt.log

Далее перезапускаем syslog daemon:

# /etc/rc.d/syslogd restart

Настраиваем ротацию лога istgt (если забыть настроить ротацию, то, вполне возможно, что данный лог заполнит весь раздел, на котором находится, и, наверняка, операционной системе это не понравится )) :

# echo '/var/log/istgt.log 644 5 100 * JC' >> /etc/newsyslog.conf
# /etc/rc.d/newsyslog restart
# ls -l /var/log/istgt.log
-rw-r--r--  1 root  wheel  62 Apr 25 16:56 /var/log/istgt.log

Настал тот долгожданный момент, когда мы можем приступить к нехитрой процедуре запуска нашего iSCSI таргета:

# echo 'istgt_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/istgt start

Во время запуска istgt выдал на stdout следующее:

Starting istgt.
istgt version 0.4 (20110223)
traditional mode
LU1 HDD UNIT
LU1: LUN0 file=/usr/local/disk1, size=10737418240
LU1: LUN0 20971520 blocks, 512 bytes/block
LU1: LUN0 10.0GB storage for iqn.2011-04.local.vmlab.freebsd.iscsi:disk1
LU1: LUN0 command queuing enabled, depth 32
LU2 HDD UNIT
LU2: LUN0 file=/usr/local/disk2, size=16106127360
LU2: LUN0 31457280 blocks, 512 bytes/block
LU2: LUN0 15.0GB storage for iqn.2011-04.local.vmlab.freebsd.iscsi:disk2
LU2: LUN0 command queuing enabled, depth 32

Запуск прошел нормально (без ошибок) и в каталоге /usr/local появились файлы дисков:

# ls -l /usr/local/disk*
-rw-r--r--  1 root  wheel  10737418240 Apr 25 16:57 /usr/local/disk1
-rw-r--r--  1 root  wheel  16106127360 Apr 25 16:57 /usr/local/disk2

Напоследок осталось проверить, слушает ли istgt порт 3260 на интерфейсе с ip адресом 192.168.33.17:

# sockstat | grep -i istgt
root     istgt      42742 3  dgram  -> /var/run/logpriv
root     istgt      42742 6  tcp4   192.168.33.17:3260    *:*

Как видно выше, istgt готов к приему соединений от iSCSI инициаторов. На этом установку и настройку iSCSI таргета istgt можно считать завершенной. Далее можно переходить к настройке iSCSI в ESXi.


Настраиваем iSCSI инициатор в ESXi

На данную тему написано много статей и заметок (некоторые из них приведены в конце статьи). Поэтому подробно описывать каждое действие я не буду. Вместо этого будут краткие комментарии.

 

Итак, первым делом нужно включить на хосте ESXi iSCSI initiator. За неимением хардварного, я использую программный iSCSI инициатор. Для его включения на хосте ESXi переходим на вкладку Configuration -> Storage Adapters -> vmhba33 (iSCSI Software Adapter) -> Properties -> General -> Configure. Появится окно с настройками iSCSI инициатора:

iscsi-initiator-1.jpg

После включения iSCSI инициатора на вкладке General появится соответствующая информация о нем:

iscsi-initiator-2.jpg

Далее переходим на вкладку Dynamic Discovery. Нажимаем Add и, в окне "Add Send Target Server", вводим IP адрес таргет сервера:

iscsi-initiator-3.jpg

Затем в окне "Add Send Target Server" нажимаем на кнопку CHAP и вводим аутентификационные данные для доступа к таргет серверу:

iscsi-initiator-4.jpg

После чего iSCSI сервер появится на вкладке Dynamic Discovery:

iscsi-initiator-5.jpg

После завершения всех действий нас попросят сделать Rescan адаптера, на что нужно ответить положительно:

iscsi-initiator-6.jpg

Когда завершится процедура рескана адаптера, в списке устройств появятся наши iscsi диски:

iscsi-initiator-7.jpg

На этом с настройкой iSCSI завершено. Осталось только создать новый datastore на каждом iSCSI диске (как это сделать, описано во многих статьях, часть из которых приведена чуть ниже).



P.S.

Я уже писал про установку VMware Tools, но только во FreeBSD. Теперь напишу про установку в Debian Squeeze.


Перед началом установки VMware Tools выбираем нужную ВМ с установленной в ней Debian Squeeze, по ВМ кликаем правой кнопкой мыши -> Guest -> Install/Upgrade VMware Tools. Далее переходим на вкладку Console (если есть возможность удаленного доступа по ssh или telnet к данной ВМ, то лучше воспользоваться им) и приступаем к последовательному выполнению следующих действий в окне Root Terminal'a:


Просматриваем CD-диск с VMware Tools:

# ls -l /media/cdrom0 | awk '{print $9}'
manifest.txt
VMwareTools-8.3.7-341836.tar.gz

Копируем дистрибутив VMware Tools в папку на жестком диске:

# mkdir -p /usr/local/vmtools
# cp /media/cdrom0/VMwareTools-8.3.7-341836.tar.gz /usr/local/vmtools 

Отмонтируем CD-диск:

# umount `mount | grep -i cdrom | awk '{print $1}'`

Разархивируем дистрибутив:

# cd /usr/local/vmtools
# tar -xzf VMwareTools-8.3.7-341836.tar.gz
# ls -l | awk '{print $9}'
VMwareTools-8.3.7-341836.tar.gz
vmware-tools-distrib

Запускаем perl скрипт установки VMware Tools:

# cd vmware-tools-distrib
# ./vmware-install.pl

Скрипт во время выполнения задаст некоторое количество вопросов, на которые я отвечал нажимая Enter (при этом ничего не меняя). И вот, когда появилась строка Initializing..., я думал, что установка вот-вот закончится, но скрипт выдал мне следующее (приведена лишь оконцовка):

debian-vmtools-gcc.jpg

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

  • make
  • GCC
  • kernel headers

Устанавливаем:

# apt-get install make
# apt-get install gcc
# apt-get install linux-headers-$(uname -r)

Если во время установки приложений вас попросят вставить диск с Debian, но при этом вы хотите, чтобы пакеты скачивались не с дистрибутивного диска, а из интернета, то вам необходимо отредактировать файл /etc/apt/sources.list, закомментировав в нем строку вида:

deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official i386 CD Binary-1 20110205-17:27]/ squeeze main

По окончанию установки всех необходимых пакетов, пробуем заново запустить на выполнение скрипт vmware-install:

# ./vmware-install.pl

На этот раз скрипт завершил свою работу нормально (на все многочисленные вопросы я отвечал, нажимая Enter). Для применения всех изменений рекомендуется перезагрузить ОС:

# shutdown -r now

На этом установка VMware Tools завершена.


Окно настроек VMware Tools

Для того, чтобы открыть окно настроек VMware Tools, необходимо, находясь в графическом режиме, запустить Root Terminal и, в окне терминала, выполнить команду:

# vmware-toolbox

В результате выполнения данной команды появится окно с настройками (примерно такое же, как и в Windows системах, только настроек поменьше):

debian-vmwaretools-properties.jpg


VMware Paravirtual SCSI Controller

По умолчанию на виртуальной машине с Debian стоит SCSI контроллер LSI Logic Parallel. Решил я его сменить (после установки VMware Tools) на PVSCSI, хотя в окне выбора типа контроллера не рекомендуется ставить PVSCSI, но я все же поставил:

pvscsi-debian.jpg

Debian Squeeze с PVSCSI контроллером загрузилась нормально. В логе (/var/log/messages) появились вот такие записи:

debian-kernel-messages.jpg

Протестировать производительность дисковой подсистемы ВМ до и после смены типа контролера мне не представилось возможным. Но, возможно, в будущем я еще вернусь к этому вопросу. А, может быть, кто-то сам протестируется и отпишется в комментариях.



P.S.

  • После установки VMware Tools, для Debian Squeeze появляется возможность использовать сетевой адаптер VMXNET 3
  • Мой пост про установку VMware Tools на FreeBSD 8
  • Мой пост о VMware Tools
  • ВМ с Debian и с PVSCSI контроллером пока работают стабильно. Нареканий нет
  • Что такое адаптер Vmware Paravirtual SCSI на vmgu.ru
  • VMware vSphere Online Library
  • Сайт проекта Debian

Официально стала доступна новая сертификация VMware Certified Associate 4 – Desktop сокращенно VCA4-DT.


Сертификация VCA4-DT является первым шагом на пути получения знаний в области виртуализации рабочих станций (desktop virtualization), и предназначена для Администраторов (Desktop System Administrators), которые хотят продемонстрировать свои умения в сфере управления, мониторинга и устранения проблем в десктоп реализациях (desktop deployments) и компонентах VMware View. Для получения более полной информации о данной сертификации перейдите на mylearn.vmware.com/portals/certification


P.S.

Блогеру Valentin Pourchet удалось установить ESXi 4.1 в ВМ под Oracle VirtualBox:

esxi-virtualbox.png

Вот ссылочка на оригинальную статью, в которой пошагово показан весь процесс.

Перед началом установки VMware Tools выбираем нужную ВМ с установленной в ней FreeBSD, по ВМ кликаем правой кнопкой мыши -> Guest -> Install/Upgrade VMware Tools. Далее переходим на вкладку Console (если есть возможность удаленного доступа по ssh или telnet к данной ВМ, то лучше воспользоваться им) и приступаем к последовательному выполнению следующих действий:


Монтируем установочный CD-диск в папку /mnt:

# mount -t cd9660 -o -e /dev/acd0 /mnt
После монтирования в папке /mnt будет лежать дистрибутив с VMware Tools:
# ls -l /mnt | awk '{print $9}'
vmware-freebsd-tools.tar.gz
Скопируем дистрибутив в папку на жестком диске:
# mkdir /usr/local/vmtools
# cp /mnt/vmware-freebsd-tools.tar.gz /usr/local/vmtools
Установочный CD-диск нам больше не нужен, поэтому отмонтируем его от папки mnt:
# umount /mnt
Разархивируем установочный дистрибутив:
# cd /usr/local/vmtools
# tar xzf vmware-freebsd-tools.tar.gz
Запускаем perl скрипт установки VMware Tools:
# cd vmware-tools-distrib
# ./vmware-install.pl
./vmware-install.pl: Command not found.

Как видно выше, скрипт запускаться не захотел, выдав ошибку. Это и понятно - установленного Perl'а в системе-то нет. Поэтому следующим шагом будет установка Perl 5 из портов (но перед этим не забываем обновить коллекцию портов):

# portsnap fetch extract
# portsnap fetch update
# make -C /usr/ports/lang/perl5.12 install clean
По окончанию установки Perl пробуем заново запустить скрипт vmware-install:
./vmware-install.pl

Скрипт запустился.

Во время выполнения скрипт задаст некоторое количество вопросов:

vmware-tools-install-question.jpg

На все вопросы я отвечал, нажимая Enter, при этом ничего не меняя. Как видно из рисунка выше, VMware Tools успешно установился, о чем свидетельствует запись вида: ... VMware Tools 8.3.7 build 341836 for FreeBSD completed successfully. Но, перед запуском VMware Tools, необходимо было выполнить еще один скрипт: vmware-config-tools.pl, который, нормально не отработав, выдал мне очередную ошибку. Из ошибки видно, что для нормального запуска скрипту не хватило пакета compat6x-i386.

Что ж, ставим пакет compat6x-i386:

# cd /usr/ports/distfiles
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.2-release/misc/compat6x-i386-6.4.604000.200810_3.tbz
# pkg_add compat6x-i386-6.4.604000.200810_3.tbz

Пакет установился, выдав информационное сообщение, в котором говорится, чтобы мы не забыли добавить опцию COMPAT_FREEBSD6 (присутствует по умолчанию) в ядро:

compact6.jpg

Теперь, когда пакет compat6x-i386 установлен, снова запускаем скрипт vmware-tools:

# cd /usr/local/vmtools/vmware-tools-distrib
# ./vmware-install.pl

Скрипт предложит переустановить VMware Tools и задаст те же самые вопросы, что и в первый раз. На все вопросы я отвечал точно так же, как и при первом запуске скрипта. На этот раз скрипт отработал у меня нормально, без ошибок. И теперь в окне vSphere Client'а статус напротив VMware Tools установлен OK:

vmtools-status-ok.jpg

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

tools.jpg

На этом об установке VMware Tools на FreeBSD всё.


FreeBSD и VMXNET 2 (Enhanced)

Установленный в гостевой операционной системе пакет VMware Tools предоставляет возможность задействования сетевых адаптеров vmxnet 2,3 для ВМ. В частности, для виртуальной машины с guest OS FreeBSD, появляется возможность задействовать Network Adapter: vmxnet 2 (Enhanced). Более подробно о типах сетевых адаптеров, доступных в vSphere 4 можно посмотреть здесь.


Итак, чтобы задействовать vmxnet адаптер во FreeBSD, нужно сделать следующее:


  • Через vSphere Client добавить сетевой адаптер vmxnet 2 (Enhanced) непосредственно к ВМ.
  • Во FreeBSD отредактировать конфигурационный файл /etc/rc.conf, добавив или заменив строку конфигурирования интерфейса на:
ifconfig_vxn0="inet 192.168.33.15 netmask 255.255.255.0"
  • Перезагрузить гостевую ОС для применения изменений. После перезагрузки FreeBSD в системе должен появиться сетевой адаптер vxn0, как показано ниже:
# ifconfig
vxn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0c:29:6e:3e:eb
        inet 192.168.33.15 netmask 0xffffff00 broadcast 192.168.33.255
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>

 

-------------

Вот прям здесь я и закончу своё повествование на данную тематику в этом посте ))



P.S.

Возникла ситуация, когда на одном из подразделений понадобилось заменить сервер на новый, более мощный. Купили, настроили и поставили. А старый сервер, коим был PowerEdge 1850, достался мне под эксперименты. Сначала я его полдня чистил, потом собирал, потом снова чистил, снова собирал. В общем, в конце дня, вполне довольный собой (сервак-то БЛЕСТИТ), установил на него ESXi 4.1 (небольшое, но важное уточнение: на сервере был собран RAID 1 из двух имеющихся дисков). Через пару дней на этом сервере крутилось 3 тестовых ВМ, и, казалось бы, бери да и экспериментируй, но не тут-то было.

 

Как-то в обед раздается звонок, и начальство сообщает мне о том, что на этом железе нужно срочно поднять VPN сервер. Моему разочарованию не было предела, но, увы, против решения начальства не попрешь. Через день на данном сервере стояла FreeBSD с настроенным OpenVPN. Проходит день, два, три - сервер так и стоит не при деле. На четвертый день я решил поинтересоваться у начальства относительно планов на данный сервер. Оказалось, что планы резко изменились, и сервер снова в моем распоряжении.

 

Вдохновленный, я решил заново установить ESXi, но перед установкой я переконфигурировал RAID 1 и сделал из него RAID 0. RAID пересобирался около часа, и, как только процесс был завершен, я приступил к установке ESXi. По окончанию непродолжительной установки и настройки я, с помощью vSphere Client, напрямую соединился с хостом и просмотрел datastore. По идее, datastore должен был быть пустым, но в моём случае я увидел там ранее созданные виртуальные машины. Честно говоря, я был приятно удивлен. ВМ были целыми и невредимыми, и я без особого труда смог их запустить.

 

Пытаемся разобраться

Так почему же FreeBSD не затерла vmfs раздел? Да просто не успела ))) Это всего лишь моё предположение, основанное на логическом рассуждении - по умолчанию ESXi размечает диск следующим образом (см. скриншот):
df.jpg
раздел с виртуальными машинами (на скриншоте третий сверху) смещен от начала диска на 5.3 Gb. А так как FreeBSD
в установленном и настроенном варианте занимала 2Gb дискового пространства, то она просто не смогла (не успела) затереть раздел с ВМ. Займи FreeBSD чуть больше места - раздел с ВМ был бы затерт, и виртуальные машины пришлось бы создавать и настраивать заново.


P.S.

  • До этого случая я пробовал переустанавливать ESXi 4.1 на хосте, на котором также крутились различные виртуальные машины. Раздел с ВМ остается целым. По крайней мере, у меня (в моих экспериментах) ВМ остались целыми и невредимыми.
  • Размер разделов, показанных на скриншоте, в вашем конкретном случае может отличаться (наверняка раздел с ВМ у вас будет гораздо больше).
Deshifrator Hot Shot

About VMware Tools

Posted by Deshifrator Apr 18, 2011

VMware_Tools.jpg

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


Гостевая операционная система может работать и без VMWare Tools, но тогда вы теряете важный функционал и удобство. Если VMware Tools не установлен в вашей виртуальной машине, то вы не сможете использовать опции Shutdown или Restart из панели инструментов. Вы сможете использовать только опцию Power. В этом случае, чтобы корректно выключить виртуальную машину, вам нужно будет выключить гостевую ОС через консоль ВМ.


Инсталляционный пакет VMware Tools для гостевых операционных систем  Microsoft Windows, Linux, FreeBSD, Solaris и NetWare встроен в гипервизор ESX(i) в виде отдельного ISO образа. При установке VMware Tools, VMware vCenter Server временно соединит первый виртуальный CD-ROM виртуальной машины с ISO образом, который содержит в себе инсталляционный пакет VMware Tools для гостевой операционной системы. ISO образ отображается в ОС как обычный CD-ROM диск. Таким образом, для установки VMware Tools вам не нужно использовать физический CD-ROM диск и не нужно скачивать или записывать ISO образ.


Ниже перечислены некоторые возможности, которые становятся доступными для ВМ после установки VMware Tools:

 

  • Более новые и оптимизированные драйвера для guest OS
  • Улучшенное быстродействие видеоадаптера и мыши
  • Расширенное управление памятью
  • Синхронизация времени


P.S.

# ls -l /vmimages/tools-isoimages/*.iso | awk '{print $9}'
/vmimages/tools-isoimages/freebsd.iso
/vmimages/tools-isoimages/linux.iso
/vmimages/tools-isoimages/netware.iso
/vmimages/tools-isoimages/solaris.iso
/vmimages/tools-isoimages/winPre2k.iso
/vmimages/tools-isoimages/windows.iso

Допустим, у вас есть хост ESX(i), который нормально работал полгода, а вот на седьмой месяц стал вести себя странно с точки зрения производительности. Самостоятельно выяснить причину такого поведения вам не удается, и тогда вы решаете обратится в службу технической поддержки VMware. А они, в свою очередь, наверняка попросят вас выслать им performance snapshots. Ниже показано, как сделать этот snapshot.


Создаем snapshot

Первым делом создадим каталог, в который затем и сохраним snapshot:

# cd /var/tmp
# mkdir pf-snap; cd pf-snap

Затем запускаем скрипт vm-support, который и создаст необходимый нам snapshot:

# vm-support -s -d 300 -i 10 -w /var/tmp/pf-snap
# ls -l | awk '{print $9}'
esx-2011-04-16--14.05.4036982.tgz

vm-support будет собирать данные каждые 10 секунд в течении 300 секунд. Архив esx-2011-04-16--14.05.4036982.tgz и есть performance snapshots. Его-то и нужно направить в VMware Support.

VMware просит не прикреплять к письму snapshot, размер которого превышает 20 мегабайт. Snapshot > 20Mb необходимо выложить на ftp сервер, адрес которого нужно уточнить у VMware Support.


esxtop - режим воспроизведения

Если вам потребовалось спустя некоторое время просмотреть сделанный ранее снапшот, то необходимо выполнить ряд действий.

Распаковываем ранее созданный snapshot:

# tar -xzf esx-2011-04-16--14.05.4036982.tgz
# ls -ld vm* | awk '{print $9}'
vm-support-localhost.-2011-04-16--14.05.4036982

Смотрим размер:

# du -sh vm-support-localhost.-2011-04-16--14.05.4036982
596.2M  vm-support-localhost.-2011-04-16--14.05.4036982

Ну, и наконец, просматриваем snapshot:

# esxtop -R vm-support-localhost.-2011-04-16--14.05.4036982/

 

P.S.

  • В распакованном (да и в сжатом) состоянии, snapshot занимает достаточно много места. Поэтому позаботьтесь об его удалении после того, как он перестанет быть нужным.
  • vm-support -h покажет все доступные ключи.
  • Страничка в KB (Article: 1967)

Напомню, что возможность пробрасывать внутрь Виртуальной Машины USB устройства появилась в ESX(i) версии 4.1. Как раз в это время  мы решили перевести в виртуальную среду сервера Раруса (точнее связку серверов: сервер баз данных, сервер терминалов и сервер приложений 1С). И, естественно, встал вопрос - а как же пробросить ключ защиты Раруса внутрь ВМ? И будет ли он там работать? Заранее скажу - работать будет, причем стабильно.

Настройка

Выбираем ВМ, в которую необходимо пробросить ключ защиты Раруса. Переходим в меню настроек ВМ (Edit Settings) и на вкладке Hardware наблюдаем примерно следующую картину:

rarus-hardware-list-1.jpg

Как видно на рисунке выше, ни USB контроллера, ни USB устройств, в списке оборудования ВМ нет. Поэтому первым делом добавим USB контроллер:

add-usb-controller.jpg

После того, как контроллер добавлен, мы можем наблюдать его в спике оборудования:

rarus-hardware-list-2.jpg

Теперь можно приступить непосредственно к добавлению USB устройства (ключа защиты):

add-usb-device.jpg

В списке подсоединенных к хосту USB устройств выбираем ключ защиты (в данном примере ключ защиты у меня уже проброшен на сервер T1):

rarus-protection-key.jpg

Вот и всё. Теперь это USB устройство должно присутствовать в Hardware list.

Чтобы убедиться, что устройство пробросилось нормально, нужно зайти на сервере (в данном случае T1) в Диспетчер Устройств и найти там ключ. Если Вы наблюдаете примерно следующую картину:

device-manager.jpg

то значит ключик пробросился и проблем быть не должно.


P.S.

После создания нового пользователя на хосте ESXi с помощью vSphere Client, shell у данного пользователя прописывается как /sbin/nologin:

 

# cat /etc/passwd | grep -i user101

user101:x:509:5:Linux User,,,:/home/user101:/sbin/nologin

 

и при этом домашний каталог /home/user101 не создается. Вследствии чего под пользователем user101 нельзя получить удаленный доступ по ssh. Для решения данной проблемки нужно выполнить ряд команд:

 

меняем shell

# usermod -s /bin/ash user101

 

создаем домашний каталог пользователя

# mkdir -p /home/user101

 

назначаем владельца для home directory

# chown user101 /home/user101

# ls -ld /home/user101/

drwxr-xr-x    1 user101 root                512 Apr 12 23:34 /home/user101/

 

После проделанных действий можно попробовать залогиниться на хосте ESXi под данным пользователем.

 

P.S

Будьте осторожны. Если с помощью vSphere Client у пользователя поменять, например, пароль, то shell поменяется на /sbin/nologin (и не важно, что до этого стоял /bin/ash).

Данная проблема также описана в KB ( Article: 1029178 ).

Для того, чтобы добавить локального пользователя в ESXi, можно воспользоваться vSphere Client. А если нужно это сделать через ssh (или в скрипте)?

В общем, рецепт:

 

#  useradd --help

BusyBox v1.9.1-VMware-visor-klnext-2965 (2010-04-19 12:53:48 PDT) multi-call binary

Usage: useradd [OPTIONS] user_name

Adds a user to the system

Options:

        -d DIR          Assign home directory DIR

        -c COMMENT      Assign comment field COMMENT

        -s SHELL        Assign login shell SHELL

        -g              Add the user to existing group GROUP

        -u              Use the given uid

        -P              Ask for a password

        -n              Do not create a group, add to group users

        -M              Do not create the home directory

 

# useradd -d / -c "Test User" -s /bin/ash -n -g root -P -M testuser

 

При выполнение данной команды, по идее, должен добавиться пользователь testuser, который должен входить в группу root. Но при просмотре файла /etc/passwd:

 

# cat /etc/passwd | grep -i testuser

testuser:x:507:100:Test User:/:/bin/ash

 

выясняется, что группа у пользователя testuser почему-то (100), а должна быть 0 (root). Честно говоря, я так и не понял, почему команда useradd помещает пользователя в группу users, игнорируя явным образом заданную группу. Чтобы все-таки добавить пользователя testuser в группу root из CLI, я решил посмотреть, каким образом VSphere Client создает пользователей. Для этого из GUI создаем пользователя и смотрим лог-файл /var/log/messages. Из этого лог-файла видно, что для создания пользователя вызывается ряд команд, среди которых есть /usr/sbin/usermod, /usr/bin/groups и useradd. Команда groups, запущенная без аргументов, выведет текущую группу пользователя (некая альтернатива id), а запущенная как groups user_name, выведет группу пользователя user_name. С командой useradd все понятно, а вот команда usermod показалась мне интересной. И неспроста. После непродолжительного гугления было получено два ключа для данной команды, которые были призваны помочь поместить пользователя testuser в группу root:

 

# /usr/sbin/usermod -g root testuser

# /usr/sbin/usermod -G root testuser

 

После выполнения данных команд пользователь testuser наконец-то оказался в группе root:

 

# cat /etc/passwd | grep -i testuser

testuser:x:507:0:Test User:/:/bin/ash


# cat /etc/group | grep -i root

root:x:0:root,testuser