Виртуальная машина. Виртуальные среды и «1С Рекомендации по настройке виртуальных машин для 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С сервер в виртуальную машину для продакшина я не понимаю.

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

Я использовал VMWare Fusion для Mac, однако с тем же успехом способ работает и в Workstation для Win.

1) Для работы необходима заново установленная система, как внести изменения в уже существующую - не нашёл.

Готовите виртуальный диск, указываете систему, как это обычно делаете, и в настройках к устанавливаемой машине, у меня этот пункт назван Isolation, выключаете любой обмен данными с хостовой ОС.

isolation.tools.getPtrLocation.disable = «TRUE»
isolation.tools.setPtrLocation.disable = «TRUE»
isolation.tools.setVersion.disable = «TRUE»
isolation.tools.getVersion.disable = «TRUE»
monitor_control.disable_directexec = «TRUE»
monitor_control.disable_chksimd = «TRUE»
monitor_control.disable_ntreloc = «TRUE»
monitor_control.disable_selfmod = «TRUE»
monitor_control.disable_reloc = «TRUE»
monitor_control.disable_btinout = «TRUE»
monitor_control.disable_btmemspace = «TRUE»
monitor_control.disable_btpriv = «TRUE»
monitor_control.disable_btseg = «TRUE»

Эти опции предотвращают детектирование программами виртуального окружения через такие сложные проверки, как отслеживание адресного пространства памяти, счётчиков.

Важно! Если на этапе настройки установки будет опция вроде «Express install», «Быстрая установка» - выключайте их. Также не стоит устанавливать VMWare Tools в установленную систему, т.к. некоторое ПО в проверку включает и наличие этого пакета.

3) Сохраняем файл, указываем для загрузки ISO с установщиком системы, устанавливаем ОС как обычно.

4) Несмотря на то, что подавляющее большинство программ, не любящих виртуальной среды, не заходят дальше проверок, которые мы отсекли на 2 шаге, некоторые особо упорные всё же идут дальше и пытаются искать, к примеру, всё, что похоже на название контроллеров виртуальных дисков.

Чтобы победить и их в Windows, идём в редактор реестра в ветку HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum. Как видите, там есть вполне явная отсылка к тому, что диск - виртуальный.

Нам нужно изменить его, убрав из параметра VMware, Virtual, Ven, итп, и сохранить её так.

Также имеет смысл заменить в реестре поиском по VMware/Virtual на какой-нибудь Intel или IBM всё, что меняется, а не только дисковые переменные.

После пробуйте запускать ваш упрямый объект экспериментов - в процентах 70 случаев описанные шаги помогут пройти проверки на виртуальное окружение.

Важно! Значение в HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum перезаписывается после каждой перезагрузки, так что его нужно менять после каждого нового запуска системы.

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

1) Проверками диапазона MAC адресов (просто подменяется в настройках виртуального сетевого адаптера до запускa виртуальной машины)
2) Через WinAPI опросом конфигурации ОС и прочей системной информации (FirmwareTable)
3) Низкоуровневыми трюками.
Проверить, насколько вы обезопасили себя от обнаружения, а также ознакомиться с другими популярными у разработчиков средствами обнаружения песочниц и виртуалок можно средством Pafish .

Несмотря на то, что остались места, где можно себя выдать, предложенный метод заставляет обхитрить большинство ПО, которое не желает работать в виртуальной среде, в данном случае, в VMWare.

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

Спасибо всем, кто осилил статью и помог в дополнении её толковыми комментариями!

Представляю свой экспериментальный проект 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С-Битрикс: Веб-окружение» - Linux

«1С-Битрикс»: Веб-окружение» - Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах CentOS 6 (i386, x86_64) и CentOS 7 (x86_64).

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

Amazon Elastic Compute Cloud (Amazon EC2)

Amazon EC2 - это веб-сервис, предоставляющий масштабируемые вычислительные мощности и созданный для быстрого и простого разворачивания веб-приложений на площадках (в облаках) Amazon. Специалистами «1С-Битрикс» подготовлены предконфигурированные образы BitrixVM (AMI-образы) для быстрого запуска приложений «1С-Битрикс» в Amazon EC2, которые включают:
  • CentOS 7.5
  • NGINX + Apache2
  • MySQL5 with InnoDB support
  • Mail server agent
  • A UNIX-like Control Menu with common tasks
  • IP address via DHCP, or configured by Amazon Elastic IP
  • HTTPS support
Список ami по регионам:

Порядок установки

Порядок установки:


Скачать и установите VMWare Player - бесплатный продукт, работающий под любой ОС Windows или Linux.

Скачать и распаковать настроенную виртуальную машину BitrixVM.

Запустить VMWare Player и в нем открыть файл BitrixVirtualAppliance.vmx из каталога, куда вы распаковали ее виртуальный образ.
Если вы знакомы с VMWare, то возможно у вас есть серверные продукты этой компании, в которых вы без проблем запустите нашу виртуальную машину.

Ответить на вопросы диалогов VMWare и перегрузить виртуальный сервер.

Откройте полученный IP-адрес в браузере.
Запустить мастер установки и настройки продуктов «1С-Битрикс», выполнить все шаги и приступить к работе!
BitrixSetup

Скрипт BitrixSetup

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

С помощью еще одного встроенного скрипта для восстановления резервных копий - restore.php - можно быстро переносить сайты между машинами, причем, без создания промежуточных файлов. Как это все происходит? Вы делаете резервную копию сайта средствами нашего продукта (Настройки-Инструменты-Резервное копирование), и в скрипте переноса (прямо в виртуальной машине) указываете имя файла и сайт. Система сама скопирует файл, распакует его и восстановит на Виртуальном сервере.

Нормальная работа 1С в большей степени зависит от достаточного количества оперативной памяти. Проверить, хватает ли выделенной памяти для ВМ можно в панели управления облаком. Для этого нужно войти в параметры ВМ

И перейти во вкладку «Состояние виртуальной машины»

2. Установка файла подкачки фиксированного размера в 4Гб и размещение его на диске типа Супер.

Внимание ! Для ОС Windows Server 2012 перенести файл подкачки на доп.диск нет возможности из-за специфики работы виртуальных машин.

Далее переносим файл подкачки на этот раздел. Нажмите « Win»+ R и выполните команду «sysdm. cpl ». В открывшемся окне перейти во вкладку «Дополнительно» и нажать «Параметры»

В новом окне во вкладке «Дополнительно» нажмите «Изменить»

В окне «Виртуальная память» выбираем подготовленный раздел, отмечаем «Указать размер» и задаем в поле размер файла подкачки. После нужно обязательно нажать кнопку «Задать»

Для завершения этой операции потребуется перезагрузка ОС.

3. Настройка размещения профилей пользователей на диске типа Супер

При работе с 1С терминальных пользователей, для увеличения скорости работы необходимо настроить размещение профайлов пользователей на Супер-диск. Для этого нужно изменить параметр в реестре и перезагрузить ОС.

Нужно будет изменить параметры в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList:

ProfilesDirectory - путь к расположению профайлов пользователей (изменение этого параметра достаточно);

Default и Public - менять по своему желанию.

Внимание! Рекомендуем изменять этот параметр до того, как новый пользователь первый раз авторизовался. В противном случае параметры размещения профайла пользователя нужно будет менять вручную (через реестр в той же ветке, нужно найти вложенную папку с настройками пользователя).

4. Очистка кэшей 1С.

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

Однако, очень часто платформа 1С не правильно отрабатывает кэширование конфигурации и в результате мы получаем неадекватное поведение конфигурации.

Для решения проблем и «глюков» 1С очень часто помогает очистка кэша платформы 1C 8.3. Делается это следующим образом:

  1. Первый способ чистки кэша 1С

Найти каталог, где хранятся временные файлы 1С, их можно увидеть в меню настройки в списке ИБ:

Мы получили адрес вроде

C:\Documents and Settings\username\Application Data\1C\1Cv82\tmplts\1c

Папки с кешом расположены по адресу

C:\Documents and Settings\username\Application Data\1C\1Cv82\

Зайдя туда, мы находим множество (количество папок равно количеству конфигураций) интересных папок:

Все выделенные каталоги являются кэшом БД 1С, их можно смело удалять. Перед удалением обязательно необходимо выйти из ИБ.

b. Второй способ очистки временных файлов 1С

Второй способ более простой, однако он не совсем правильный. Для очистки достаточно удалить эту конфигурацию и создать новую с тем же путем к ИБ. В следствии этого старая папка с кешем «отвяжется» от этой ИБ и создастся новый каталог. Можно делать и так, кеш очищается, однако временные файлы так и остаются на жестком диске.

c. Третий способ

Рекомендую использовать если глюки из-за наличия временных файлов постоянные. Однако, данный способ снижает производительность системы. Подходит только для тонкого клиента. Необходимо при в дополнительных параметрах запуска (в списке баз кнопка Изменить, последняя закладка) прописать команду /ClearCache . Пример использования:

Перед проведением любых операций желательно сделать резервную копию базы данных и загрузку из неё!

5. Резервное копирование и восстановление базы данных.

Выгрузка базы данных в файл.

Войдите в программу в режиме конфигуратор. Для этого в стартовом окне программы выберите нужную базу данных и нажмите «Конфигуратор»:

Вы попадёте в режим разработке и администрирования базы данных. Далее выберите в меню пункт «Администрирование — Выгрузить информационную базу…»:

Программа предложить выбрать путь куда выгрузить файл базы данных и его название. После выбора программа сообщить об успешном завершении операции:

Восстановление базы данных из файла.
Для восстановления базы данных из файла требуется зайти также в режим конфигуратора, но выбрать уже пункт «Администрирование — Загрузить информационную базу…»:

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

Если всё пройдет успешно — 1С предложит перезапустить конфигуратор:

6. Утилита chdbfl.exe для 1С 8.2 и 8.3

chdbfl.exe — утилита для тестирования и исправления файловой информационной базы 1С 8.3 (8.2). Программа производит проверку физической целостности БД, это упрощенный аналог тестирования и исправления в конфигураторе. для тех ситуаций, когда система не запускается даже в режиме конфигуратор. Рассмотрим где расположена утилита chdbfl.exe и как ей пользоваться.

Утилиту не нужно нигде скачивать, он находится в папке с установленной программой. Если вы решите скачать chdblf.exe из интернета есть вероятность получить вовсе не программу для исправления ИБ, а нанести вред вашему компьютеру и информации компании.
Расположена утилита в папке «bin» установленной технологической платформы. Например — C:\Program Files (x86)\1cv8\8.3.*.***\bin\chdbfl.exe , где 8.3.*.*** — это номер релиза вашей платформы.
Пользоваться программой очень просто. После запуска отобразится вот такое окно:

Где в форме необходимо указать путь к файлу базы данных и указать нужно ли сразу исправлять обнаруженные ошибки (если флаг не установлен — утилита только продиагностирует ИБ). Путь к файлу базы данных можно узнать из списка доступных конфигураций:

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

7. Тестирование и исправление информационной базы 1С

Режим тестирования и исправления вызывается в конфигураторе системы 1С 8.3, выбором меню Администрирование — Тестирование и исправление.

Проверки и режимы

В этом окне указывается список необходимых проверок и режимов, которые будут произведены в результате работы утилиты. Рассмотрим каждый из них подробнее:
Реиндексация таблиц информационной базы — если установлен этот флаг, будет произведена реиндексация таблиц. Реиндексация — полное перестроение индексов для заданных таблиц. Реиндексация существенно повышает производительность системы в целом. Данная процедура никогда не будет лишней и увеличивает производительность системы.
Проверка логической целостности информационной базы — система умеет проверять логическую и структурную целостность базы данных, находить ошибки в организации данных (например, страниц в файле).
Проверка ссылочной целостности информационной базы — подпункт логической проверки, проверяет информацию в базе данных на наличие «битых» ссылок. «Битые» ссылки появляются в базе из-за некорректной обработки информации разработчиком, чаще всего при непосредственном удалении данных или не правильно настроенном обмене данных. При нахождении ошибок можно выбрать 3 варианта действий: Создавать объекты — система создает элементы-заглушки, которые можно потом заполнить необходимой информацией, Очищать ссылки — «битые» ссылки будут очищенны, Не изменять — система только покажет вам ошибки.
Пересчет итогов — в платформе 1С, в регистрах накопления и регистрах бухгалтерии есть понятие итогов. Итоги — таблица подсчитанных результатов, данные из которой получить быстрее, чем анализировать весь регистр сведений. Как правило, пересчет итогов увеличивает производительность системы.
Сжатие таблиц информационной базы — если установлен этот база данных будет сжата и уменьшится в объеме. Связанно это с тем, что при удалении данных из базы данных, 1С не удаляет физически эти объекты, а лишь «помечает» их на удаление. Т.е. пользователь не видит их, а они есть:). Вот именно сжатие базы данных и удаляет такие записи окончательно. Так же такого же эффекта можно достичь выгрузкой и загрузкой файла базы данных (*.dt).
Реструктуризация таблиц информационной базы — процесс, с помощью которого система осуществляет пересоздание таблиц баз данных, обычно эта процедура вызывается при внесения изменений в структуру метаданных конфигурации. Реструктуризация всей БД — процесс долгий, будьте внимательны.
Если по каким то причинам тестирование и исправление не помогает или у вас нет доступа в конфигуратор — воспольузуйтесь утилитой chdbfl.exe.

Article ID: 86 , Created: June 30, 2016 at 1:05 PM , Modified: May 30, 2018 at 5:27 PM