Обходим детектирование виртуальной машины программами в VMWare. О интересных вещах из мира IT, инструкции и рецензии Сервер 1с на виртуальной машине производительность

После прочтения статьи остаётся только один вопрос "Зачем?". Пройдёмся по объяснениям автора.

в рамках виртуальной машины можно работать с устаревшими программными решениями и операционными системами;
Как раз мой случай. Можно использовать имеющиеся в наличие лицензии на Win2003 сервер, который просто не встает на многие современные контроллеры жестких дисков.


Лицензия на Win2003 не подразумевает установку на виртуальную машину, только на физическое железо. На прямой вопрос специалистам Майкрософт по лицензированию "Правомерно ли установить Win2003 на виртуальную машину и использовать?" получаем вопрос "Нет. Только на физическое железо. Всё остальное является незаконно." Так зачем же использовать старую ОС вместо новой на виртуальной машине если ты всё равно становишься пиратом?

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


Не до конца понимаю этот довод. Если атака произведена на хост систему то все виртуальные машины скомпрометированы, если атака произведена на виртуальную машину, то становиться скомпрометирована только она, а хост остаётся чистым. И в том и другом случае мы теряем защиту гостевой системы которая является для нас основной. Где и от чего мы защитились?

несколько виртуальных машин, развернутых на физических ресурсах одного компьютера, изолированы друг от друга, таким образом, сбой одной из виртуальных машин не повлияет на доступность и работоспособность сервисов и приложений других;
Тоже полезная вещь для 1С. Разнести сервер приложений 1С и сервер SQLпо разным виртуальным машинам и выделив каждой по 4ГБ оперативки (предел для 32 разрядной Win32) позволит хоть немного бороться с бичом 32 разрядных систем –фрагментацией оперативной памяти при выполнение больших запросов.


Не используёте 32 битные операционные системы.

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


Миф, сказка, заблуждение и прочее. Перейти с 32 битной ОС на 64 битную в виртуальной среде по сложности равно такому же переходу на железе. Ни какой разницы. Всё удаляется и устанавливается по новой.

поскольку каждая виртуальная машина представляет собой программный контейнер, то она может быть перенесена или скопирована, как и любой иной файл;


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

возможность сохранения состояния виртуальной машины позволяет быстро вернуться к точке до внесения изменений в систему;


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

в рамках одной гостевой операционной системы может быть развернуто несколько виртуальных машин, объединенных в сеть и взаимодействующих между собой;


Попробуйте запустить на одном компьютере хотя бы 3-4 гостевых ОС и вы поймёте весь ужас на вас обрушившейся, т.к. для нормальной работы 4 гостевых ОС вам необходимо железо в 4 раза круче чем для работы одной.

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


Очень специфическая возможность. Не знаю где в сервере 1С она нужна, а вот прокинуть реальные устройства от хост компьютера до гостевой ОС бывает очень проблематично.

Из недостатков – вполне предсказуемое некоторое снижение скорости работы. Но намного менее существенное, чем при использовании бесплатных SQLсерверов.
Железо для сервера:
Процессор intel-corei3-4130 (4 ядра)
Материнская плата GA-Z87M-HD3 (с поддержкой RAID)
2 жестких диска по 1GB (sata).
8 ГБ ОЗУ.


Такое железо без проблем потянет только 1 гостевую систему и очень простенький документооборот. Не надо создавать виртуальной машины.

Виртуальные машины были разработаны для:
1. экономия процессорных и прочих ресурсов компьютеров в условии простоя одного из сервисов
2. увеличение отказоустойчивости систем (живая миграция виртуальных машин) в СХД и кластере
3. простота и легкость экспериментов ИТ специалистов
Зачем устанавливать одни 1С сервер в виртуальную машину для продакшина я не понимаю.

Изначально виртуализация была только на программном уровне и плюсы виртуализации нивелировались существенным замедлением работы в виртуальной среде. Частично вопрос получилось решить аппаратно — вендоры разработали инструкции процессоры Intel VT-d , AMD-V и т.п. для ускорения работы. Однако память и процессор это не единственные компоненты, есть также видеокарта, жесткие диски и т.п. и от реализации доступа к ним напрямую зависит скорость операций. Т.е. в зависимости от производителя виртуальной машины, драйверов от производителя оборудования, от умения конечного ПО распознавать виртуализацию по-прежнему скорость работы зависит значительно.
Разные приложения по разному замедляются в виртуалке.
Помимо издержек оборудования на обслуживание ПО виртуализации еще один фактор замедления — это организация течения времени. Скорость течения в физическом железе и виратуалке не одинаковы. Плюс виртуальную машину можно ставить «на паузу». Сложность реализации таймеров, переключателей синхронизаторов, перехват физических аппаратных ресурсов в виртуальной системы не позволяют решить задачу один в один как на физическом железе, много зависит от конкретного вендора.

Мы провели тест на исследование потоковой скорости, чтобы оценить на сколько виртуализация может повлиять на скорость работы однопоточных задач в 1С, включая интерфейсные операции.

Из полученных результатов самый главный вывод не цифры, а то что по прежнему требуется опыт чтобы нащупать на практике, а не теоретически оптимальный вариант эксплуатации 1С под вашу конкретную нагрузку.
Влияние слоя виртуализации особенно заметно на очень быстрых операция информационной базы 1С и это логично. Чем меньше время операции, тем больше оно сопоставимо с временем задержки на обслуживание слоя виртуализации.
Другими словами если мы выполняем одну длительную операцию тысячу секунд, то лаг в одну десятую на обслуживание виртуализации будет каплей в море и не заметен. А вот если мы выполняем десять тысяч операций с временем каждой операции одна десятая секунды, то задержки на обслуживание будут заметны так как будут соизмеримы с длительностью операции.

ЧТО ДЕЛАТЬ

Есть два способа решения проблемы.
1й способ. Если настройками виртуализации вам не удается достичь желаемой производительности — используйте физическое оборудование.
2й способ. Минимизировать лаги виртуализации подобрав настройки, соответствующие характеру нагрузки. При этом надо понимать, в что виртуализация это не 100% аналоги физического оборудования и компенсировать скорость надо более мощным физическим оборудованием.
Некоторые вендоры обеспечивают повышение скорости за счет встроенных в слой виртуализации механизмов кэширования. Однако кэш может быть «пробит» и тогда будет резкое падение производительности. Т.е. надо помнить не только про плюсы технологий, но и про минусы.

1. «Снимки» надо выключать — они замедляют. При чем влияние далеко не очевидно. Подробно смотрите http://vkeygen.blogspot.ru/2011/10/snapshot.html

Microsoft Hyper-V

— при использовании серверов Hyper-V с узлами NUMA

VMware ESXi & vSphere

Коллективное использование виртуалок для балансировки нагрузки
Проблема заключается в работе компонента vCenter под названием DRS (Distributed Resource Scheduler), задача которого заключается в балансировке нагрузки виртуальных машин на физические серверы. При появлении больших нагрузок по процессорным мощностям или по загрузке ОЗУ, DRS мигрирует виртуальную машину на другой физический хост, наименее загруженный в данный момент; в кульминации данного процесса возникают кратковременные проблемы с доступом к ресурсам этой VM.

СЕТЬ

Для виртуальных серверов ESXi 6.0 с 1с сервером не используйте сетевые интерфейсы типа WMXNET3, использовать только типа e1000e

ОПЕРАТИВНАЯ ПАМЯТЬ

— —Отключить дедупликацию памяти для EXSi — Transparent Page Sharing на хосте VMware ESXi

Если же вы хотите отключить этот механизм уже прямо сейчас, то нужно сделать следующее:

В старых версиях


После патча и обновлений ESXi механизм TPS можно будет включить следующим образом (Advanced Settings в секции Software):

  • Параметр Mem.ShareForceSalting (включение TPS на уровне всего хоста ESXi). Если значение стоит 0 — то значит TPS по-прежнему работает на хосте, если 1 — механизм отключен.
  • Параметр sched.mem.pshare.salt (ставится на уровне ВМ) позволяет включать/отключать TPS для отдельных виртуальных машин (например, старые Windows или линуксы — для них можно было бы включить). Когда параметр ShareForceSalting установлен в значение 1, то для нуждающихся в TPS машин в их Advanced Configuration нужно установить одинаковые значения «соли». Без этого TPS не работает — соответственно, он отключен.

ПРОЦЕССОР

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

— vSphere прекрасно знает про и старается размещать виртуальные ядра машин на тех физических процессорах, в чьей памяти сейчас находится оперативная память виртуальной машины. Но тут возникают подводные камни. Производители серверов любят включать в BIOS по умолчанию эмуляцию NUMA. То есть сервер представляется операционной системе как НЕ NUMA устройство, и vSphere не может использовать свою оптимизацию для управления данной технологией. В документации по vSphere рекомендуется отключать (Disable) данную опцию в BIOS, это позволяет vSphere самостоятельно разбираться с вопросом.

ДРАЙВЕРА

— Установите гостевые дополнения VMware Tools

Первое, что необходимо сделать, после установки операционной системы гостя внутри виртуальной машины, это установить программный пакет – гостевые дополнения VMware Tools для VMware. Эти пакеты содержат специальные драйвера, которые обеспечивают более быструю работу гостевой операционной системы на аппаратных средствах виртуальных машин.

Выберите пункт Install VMware Tools в меню виртуальной машины. Следуйте инструкциям на вашем экране для завершения установки. Если вы используете гостевую ОС Windows, то вы увидете, что данный процес не отличается от установки других приложений.

Проверка VMware Tools.

  • Выберите хост в vClient;
  • Перейдите на вкладку Virtual Machines ;
  • Добавьте столбец «VMware Tools Status»;
  • Оцените статус. OK->значит все хорошо, ничего делать не надо. Not Running/Out of date - устраняем.

Если VMware Tools не запущены, необходимо разбираться с гостевой операционной системой. Причина может скрываться в обновлении ядра Linux либо отключенной (кем-то) службе VMware Tools в Windows.

Если VMware Tools устарели, необходимо их обновить из контекстного меню vClient. Как правило, это случается после установки обновлений на хосты ESX/ESXi. После этого зачастую требуется обновить и VMware Tools.

ДИСКИ

— При использовании внешних хранилищ

  • Independent Persistent Mode vmdk-диска - наиболее производительный, поскольку изменения вносятся сразу на диск, не журналируясь. Но такой диск не подвержен снапшотам, его нельзя откатить.
  • При использовании iSCSI рекомендуется настроить jumbo frames (MTA=9000) на всех интерфейсах и сетевом оборудовании.
  • MultiPathing - для большинства случаев RoundRobin - ОК. Fixed может дать большую производительность, но это после вдумчивого планирования и ручной настройки каждого хоста до каждого LUN. MRU можно поставить при active-passive конфигурации, если какие-то пути время от времени пропадают - чтобы не перескакивало туда-обратно.

Как выглядит на практике отказ от виртуализации. Далеко не всегда виртуализация сильно замедляет , все таки характер нагрузки, объем данных имеют тоже значение.

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

По сути, это недостающая в 1С возможность полноценного Reflection, которая присутствует на других платформах, например на.NET и позволяющая там делать по истине умопомрачительные вещи.

Для тех, кто не знаком с Reflection: Wikipedia

Описание работы

VM1C работает без использования каких-либо внешних компонент, используя только штатные возможности 1C, не зависит от платформы и конфигурации. Может добавляться в конфигурацию как в виде обработки, так и в виде общего модуля.

В состав VM1C входят:

Рассмотрим каждый компонент отдельно

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

Например следующий код

Для н=1 По 100 Цикл н = н+1; КонецЦикла; Возврат н;

будет преобразован в набор инструкций

push 1 stloc 0 push 100 stloc 1 br ~IL_1 ~IL_2: ldloc 0 push 1 add stloc 0 ldloc 0 push 1 add stloc 0 ~IL_1: ldloc 0 ldloc 1 ble ~IL_2 ~IL_0: nop ldloc 0 ret

Это сделано, для того, что бы

  1. ускорить дальнейшую обработку кода в реальном времени. Так как сам процесс компиляции занимает относительно много времени
  2. обеспечить возможность создавать и выполнять процедуры и функции в режиме 1С Предприятия

Vm1C_IL_Compiler = Обработки._VM1C_IL_Compiler.Создать(); текстМодуля = ЗагрузитьКодИзФайла("Модули\РаботаСТоварами"); модуль = vm1C_IL_Compiler.КомпилироватьМодуль(текстМодуля);

После того как у нас есть промежуточный код (далее IL-код), мы можем выполнять его в виртуальной машине.

Виртуальная машина VM1C позволяет, на лету, посредством JIT компилятора, скомпилировать модуль из IL-кода обратно в код понятный 1С. Скомпилированный код оптимизируется, сохраняется в кэш, для дальнейшего повторного использования и может быть выполнен.

Vm1C_VM = Обработки._VM1C_VM.Создать(); vm1C_VM.ДобавитьМодуль("РаботаСТоварами", модуль); параметры = Новый Массив(); параметры.Добавить("00000453"); Результат = vm1C_VM.ВызватьМетод("РаботаСТоварами", "ПолучитьЦену", параметры);

MethodInfo = vm1C_VM.GetCurrentMethodInfo(); параметры = methodInfo["Параметры"]; ...

получить код функции

БайтКод = methodInfo["БайтКод"];

изменить его, добавить параметры и заново вызвать уже в измененном виде и т.д.

Заключение

Проект сейчас на стадии сырой альфа версии, поэтому выкладываю только его описание и демо-ролик.


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

Если, кого-то заинтересовала данная разработка, прошу обязательно сообщить!

Демонстрация работы

С уважением,

разработчик m.bolsun

(c) 2013-2014 VM1C

Update : публикация долго была в черновиках, т.к. кроме академического интереса, сразу не нашлось практического применения данному проекту. Но недавно мне удалось использовать его возможности на практике и было решено вернуть публикацию. Уже скоро технологии из этого проекта будут использоваться в новой версии Code Inspector.

Благодаря новому полноценному компилятору, Инспектор получит статический анализ и соответсвенно ряд новых возможностей:

Проверка того, что условие всегда Истинно или Ложно и что функция возвращает одно и тоже значение. Проверка не только последних неиспользованных значений переменных, но и промежуточных присвоений, с учетом циклов и ветвлений. Анализ кода в соответствии с инструкциями препроцессора (НаСервере, НаКлиенте и т.д.). Ну и многое другое.

1C-Битрикс: Виртуальная машина» разработана непосредственно под нужды проектов на «1С-Битрикс». Неоспоримым преимуществом этого программного продукта является его изначальная конфигурация, которая является образцом идеальных настроек виртуального сервера под Битрикс. «1С-Битрикс: виртуальная машина» проверена и настроена для работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями.

Для чего нужна «Виртуальная машина»?

Использование «1С-Битрикс: Виртуальная машина» позволит Вашим проектам показывать неизменно высокие показатели производительности. Помимо простоты и удобства работы, она позволяет существенно сократить время на администрирование сайта, созданного на базе продуктов «1С-Bitrix» и настройку сервера, а также на оборудовании. С помощью «1С-Битрикс: Виртуальная машина» можно создать как новый проект, так и перенести уже существующий.

Полный доступ на уровне администратора дает возможность с помощью виртуальной машины для 1С-Битрикс установить любое ПО и вносить изменения в настройки виртуального сервера BitrixVM.

Какая версия устанавливается?

Вы получаете самую новую версию программы. На сегодняшний день последней версией этого программного продукта является «1С-Битрикс: виртуальная машина 7.0» c последней версией PHP, которая дает ощутимый прирост производительности.

Как заказать виртуальную машины?

Для всех наших клиентов виртуальная машина 1С-Битрикс предоставляется бесплатно при заказе любого VPS сервера для CMS Bitrix и готова к работе сразу после разворачивания, которое занимает считанные минуты.

Как оплачивать VPS?

Для оплаты VPS выберите нужный тариф в таблице и нажмите кнопку «Заказать». Далее следуйте инструкциям в биллинг панели, указав необходимые действия с доменом, ваши данные и выберите подходящий способ оплаты. Вот и все! Ваш сервер будет активирован сразу после оплаты.

Поделитесь с друзьями или сохраните для себя:

Загрузка...