Русфонд

пятница, 29 ноября 2013 г.

PowerCLI: изменение размера оперативной памяти и количества CPU у виртуальной машины

Скрипт Change-VM_Memory_CPU_Count.ps1 позволяет изменять размер RAM и количество vCPU у виртуальной машины. При запуске скрипта необходимо указывать параметры:
-vCenter - имя vСenter-сервера;
-vmName - имя виртуальной машины;
-MemoryMB - размер памяти в MB, на который хотим изменить текущее значение;
-MemoryOption - значение Add или Remove, т. е. увеличиваем или уменьшаем память;
-CPUCount - количество vCPU, на которое хотим изменить текущее значение;
-CPUOption - значение Add или Remove, т. е. увеличиваем или уменьшаем количество vCPU.

Скрипт выполняет следующие шаги:
1. подключение к серверу vCenter;
2. выключение виртуальной машины;
3. изменение RAM и vCPU в соответствии с указанными параметрами;
4. включение виртуальной машины;
5. отключение от сервера  vCenter.

Пример использования.
vCenter-сервер vc01.local, виртуальная машина VM01, уменьшается память на 1GB, количество vCPU не меняется:

.\Change-VM_Memory_CPU_Count.ps1 -vCenter vc01.local -vmName VM01 -MemoryMB 1024 -MemoryOption Remove -CPUCount 0 -CPUOption Add

Можно запустить скрипт из bat-файла, если хотим выполнить его по расписанию:

powershell -PSConsoleFile "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" -Command "C:\Scripts\Change-VM_Memory_CPU_Count.ps1 -vCenter vc01.local -vmName VM01 -MemoryMB 1024 -MemoryOption Remove -CPUCount 0 -CPUOption Add"

Источник.

среда, 13 ноября 2013 г.

Смена нумерации vmnic

Нам потребовалось сменить номера vmnic в соответствии с нумерацией физических портов на сервере. У сервера четыре встроенных порта Ethernet и дополнительная четырехпортовая Ethernet-карта.  У нас было так, что встроенные порты на сервере обозначены от 1 до 4 слева направо, им соответствовали vmnic0 - vmnic3, тут все нормально. А для дополнительной карты нумерация vmnic шла наоборот, справа налево. Хотим исправить нумерацию только для дополнительной карты.
Насколько я понимаю, метод не поддерживается официально...
Для смены нумерации vmnic на хосте ESXi правим конфигурационный файл /etc/vmware/esx.conf в консоле или через ssh:
1. Определяем соответствие физических портов и vmnic, например, последовательно вынимая и вставляя назад кабель в нужных портах.
2. Делаем резервную копию файла
cp /etc/vmware/esx.conf /etc/vmware/esx.conf.old
3. Открываем файл в редакторе
vi /etc/vmware/esx.conf
4. Ищем строки, содержащие "vmnic",
набираем /vmnic<Enter>
5. В сртоках 
/device/000:006:00.0/vmkname = "vmnic7"
/device/000:006:00.1/vmkname = "vmnic6"
/device/000:007:00.0/vmkname = "vmnic5"
/device/000:007:00.1/vmkname = "vmnic4"
меняем номера vmnic (переводим курсор на соответствующий символ, жмем r, набираем правильную цифру).
Получаем
/device/000:006:00.0/vmkname = "vmnic4"
/device/000:006:00.1/vmkname = "vmnic5"
/device/000:007:00.0/vmkname = "vmnic6"
/device/000:007:00.1/vmkname = "vmnic7"
6. Снова ищем строки, содержащие "vmnic". Находим строки с соответствием vmnic и MAC-адресами
/net/pnic/child[0004]/mac = "00:1b:21:26:2a:e8"
/net/pnic/child[0004]/name = "vmnic4"
/net/pnic/child[0004]/virtualMac = "00:50:56:56:2a:e8"
/net/pnic/child[0005]/mac = "00:1b:21:26:2a:e9"
/net/pnic/child[0005]/name = "vmnic5"
/net/pnic/child[0005]/virtualMac = "00:50:56:56:2a:e9"
/net/pnic/child[0006]/mac = "00:1b:21:26:2a:ec"
/net/pnic/child[0006]/name = "vmnic6"
/net/pnic/child[0006]/virtualMac = "00:50:56:56:2a:ec"
/net/pnic/child[0007]/mac = "00:1b:21:26:2a:ed"
/net/pnic/child[0007]/name = "vmnic7"
/net/pnic/child[0007]/virtualMac = "00:50:56:56:2a:ed"
Удаляем все строки, относящиеся к ранее исправленным номерам (жмем dd на каждой строке). Т. е. в этом блоке удаляем все строки строки и с "mac", и с "vmnic", и с "virtualMac".
Эти строки появятся снова после перезагрузки, но уже с правильными номерами.
7. Сохраняем изменения (жмем <Shit>zz или <ESC>:wq<ENTER>)
8. Перезагружаем хост.
После перезагрузки получили нумерацию на всех восьми портах слева направо.