Вопрос по Vmware
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Вопрос по Vmware
Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?
Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа? По идее, если есть баг в каком-нибудь драйвере виртуальной видеокарты, например, то с помощью него можно завалить всю систему. Или я не прав?
Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа? По идее, если есть баг в каком-нибудь драйвере виртуальной видеокарты, например, то с помощью него можно завалить всю систему. Или я не прав?
-
- Уже с Приветом
- Posts: 1861
- Joined: 13 Dec 2001 10:01
- Location: из Днепропетровска
Re: Вопрос по Vmware
PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?
Наверняка можно, используя какую-нибудь ошибку в коде VMWare.
Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа?
Путём виртуализации.
По идее, если есть баг в каком-нибудь драйвере виртуальной видеокарты, например, то с помощью него можно завалить всю систему. Или я не прав?
Баг в драйвере виртуальной видеокарты завалит виртуальную машину, так как этот драйвер исполняется внутри VM.
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Re: Вопрос по Vmware
SlavickP wrote:Каким образом основная ОС (хозяин) осуществляет изоляцию гостевых ОС от железа?
Путём виртуализации.
Непонятно, как такие штуки как аппаратные прерывания или запись/чтение из портов и пр. можно виртуализировать. Возьмем например прерывание таймера, моя гостевая ОС хочет его перепрограммировать чтобы он "тикал" положим 100 раз в секунду. Для этого мне надо записать новые параметры таймера в порты контроллера, сделав что-то типа OUT XX, YY. Вопрос - в какой момент хозяйская ОС ловит это дело? Транслирует инструкцию за инструкцией? Подменяет к-л образом адреса портов на свои? После этого, каким образом это аппаратное прерывание инициируется в гостевой ОС?
Баг в драйвере виртуальной видеокарты завалит виртуальную машину, так как этот драйвер исполняется внутри VM.
Я имел ввиду баг в слое виртулизации.
-
- Уже с Приветом
- Posts: 571
- Joined: 13 Dec 2000 10:01
- Location: Minsk ... Charlotte, NC
Re: Вопрос по Vmware
PavelM wrote:
Непонятно, как такие штуки ......
http://www.vmware.com/support/esx2/doc/ ... ation.html
А вообще рекомендую почитать классику - IBM VM/ESA (google должен помочь)
IBM сделала VM давным давно - заслуга VMWARE лиш в том, что они перенесли эту идею на интеловское железо. ПРинципы и подходы по виртуализации остаются в общем теми же самыми с поправкой на некоторые вещи встроенные аппаратно в платформу IBM zSeries.
tacmd
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Концепция концепцией, но айбиэмовская реализация строится на некоторых аппаратных средствах защиты. Насколько, с этой точки зрения, нынешняя интеловская платформа аппаратно "слабее" мейнфреймов? Хочется отделить мух от котлет. Просто с одной стороны сильные рекламые заявления о непробиваемости vmware, с другой строны:
http://groups.google.ca/groups?hl=ru&in ... u+100+host
http://groups.google.ca/groups?hl=ru&in ... u+100+host
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 May 2001 09:01
- Location: Silicon Valley
Re: Вопрос по Vmware
SlavickP wrote:PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?
Наверняка можно, используя какую-нибудь ошибку в коде VMWare.
1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.
PavelM, I'll pay you $100 if you can write a program that executes inside a VM
and resets or hangs the host.
2. VMware Workstation and GSX don't provide CPU/network/disk bandwith reservations so one VM can affect perfomance of another running VM on the same host. Still I doubt that one VM can get more than 3x of another VM CPU, network, or disk bandwidth usage.
ESX provides such reservations and has much better resource management capabilities, so performace isolation between VMs is almost perfect.
3. Only CPUs are virtualized, all other HW devices are emulated, so bugs in nonCPU emulation can crash only VMware Workstation/GSX process and the VM. Other VMs run in separate processes, so they are unaffected.
dB13 from VMware, the standard disclamer
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 May 2001 09:01
- Location: Silicon Valley
PavelM wrote:Концепция концепцией, но айбиэмовская реализация строится на некоторых аппаратных средствах защиты. Насколько, с этой точки зрения, нынешняя интеловская платформа аппаратно "слабее" мейнфреймов? Хочется отделить мух от котлет. Просто с одной стороны сильные рекламые заявления о непробиваемости vmware, с другой строны:
http://groups.google.ca/groups?hl=ru&in ... u+100+host
x86 is really hard to effectively virtualize. To get 100% protection is easy (x86 has 100% protection against user mode programs on modern OSes), to do it with
perfomance near native -- is really hard. VMware can do it.
100% host cpu utilization? That means that the VM(s) is(are) doing something 100% of time. It doesn't break the host. If it bothers you or aps on the host then
use modern (W2k, XP, Linux, BSD) OSes in VMs or run special idler programs in the old OSes (Win95, DOS)
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Re: Вопрос по Vmware
dB13 wrote:SlavickP wrote:PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?
Наверняка можно, используя какую-нибудь ошибку в коде VMWare.
1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.
Never say never. Looks pretty serious, eh ...
http://groups.google.ca/groups?hl=ru&lr ... .com#link5
"Unfortunately there is a bug in current versions of our products that
causes the guest clock to run too fast with certain guest OSes. In
particular, Win2K Server gains about 121 seconds per day. I recently
fixed this bug, and the fix will be in the next release of all products
(GSX 2.5, Workstation 4.0, and ESX 1.5.2 -- maybe already in ESX 1.5.1;
I've forgotten). There's no way to patch Workstation 3.x in the field
to fix it."
Tim Mann (mann@vmware.com)
-
- Уже с Приветом
- Posts: 15310
- Joined: 30 Apr 2003 16:43
Re: Вопрос по Vmware
zhitkoff wrote:PavelM wrote:
Непонятно, как такие штуки ......
http://www.vmware.com/support/esx2/doc/ ... ation.html
А вообще рекомендую почитать классику - IBM VM/ESA (google должен помочь)
IBM сделала VM давным давно - заслуга VMWARE лиш в том, что они перенесли эту идею на интеловское железо. ПРинципы и подходы по виртуализации остаются в общем теми же самыми с поправкой на некоторые вещи встроенные аппаратно в платформу IBM zSeries.
Из приведенной ссылки читаем: "CPU Virtualization
Each virtual machine appears to run on its own CPU, or set of CPUs, fully isolated from other virtual machines, with its own registers, translation lookaside buffer, and other control structures. Most instructions are directly executed on the physical CPU, allowing compute-intensive workloads to run at near-native speed. Privileged instructions are performed safely by the patented and patent-pending technology in the virtualization layer. "
Кто нибудь понял как происходит моделирование привелигерованных команд? Я нет.
А теперь предлагаю описание того как это делается в IBM VM/ Cвоими словами:
Гостевые ОС получают управление от управляющей программы VM с реальным состоянием проблемной задачи и виртуальным состоянием супервизор. Прикладные задачи в гостевой системе запускаются с виртуальным и реальным состоянием состоянием "Задача".
Следовательно всякий раз как гостевая система пытается выполнить что либо привелигерованное (установить таймер, начать операцию ввода.вывода, изменить слово состояния програмы PSW и т.д.) то происходит аппаратное прерывание и управление переходит к управляющей программе (СP). СР, делает проверку виртуального состояния программы вызвавшей прерывания и если это состояние "Супервизор" то СР будет безопасно для других и сомой себя "моделировать" выполнение запрошенной привелигированной команды. Если же прерывание произошло в виртуальном состоянии "Задача" (т.е. запрещенном для выполнения привилегированных команд в рамках гостевой системы), то тогда СР будет передавать управление программе обработки прерываний в гостевой системе. Последняя будет аварийно завершать неправильную программу.
В начальных адресах реальной памяти мэйнфрэйма (0 страница) имеют фиксированные адреса, в которых во время инициализации система записывает адреса (так называемые "новые" адреса) входа программ обработки различных видов прерываний. Причем для каждого вида прерываний имеется пара адресных полей - "новое" и "старое". Эти адреса никем не могут быть изменены, кроме самой системы. Когда происходит аппаратное прерывание (например по привелигированной команде) CPU сохраняет адрес команды вызвавшей прерывание в поле "старого" адреса и продолжает процесс использую "новый" адрес, который всегда есть адрес системной программы обработки соответствующего прерывания.
Что бы ни одна виртуальная машина не могла монополизировать CPU перед передачей управления CP устанавливает так называемый "временной компаратор" на определенное значение времени. Если ВМ не отдала управление до истечения установленного в компараторе времени, то происходит прерывание и управление получает системная программа обработки прерываний от таймера. Ясно, что ВМ не в состоянии сама менять значение компаратора.
Ну как вам это объяснение понятно? Есть не ясности с защищеностью в случае IBM VM? Какими бы ни были ошибки в гостевой системе, чего бы гостевая система ни задумала сделать вредного для других процессов - ничего не получится. Вы можете написать свою систему, совершенно произвольную. Эта ваша система сможет доставать исключительно ресурсы выделеные ей. Ни СР ни другие ВМ не смогут быть затронуты вашей системой. И это зависит от уровня ваших знаний о СР и о принципах работы мэйнфрэйм. Вы может идеально все это знать, но это вам не поможет.
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 May 2001 09:01
- Location: Silicon Valley
Re: Вопрос по Vmware
PavelM wrote:dB13 wrote:SlavickP wrote:PavelM wrote:Вопрос по vmware (ESX, GSX) на интеловской платформе - можно ли каким либо образом изнутри виртуальной машины повлиять на другие VM или завалить весь сервер?
Наверняка можно, используя какую-нибудь ошибку в коде VMWare.
1. It possible to reset/hang the host server from inside a VM only if VMware ESX/GSX/WS have serious bugs. There no such bugs in VMware.
Never say never. Looks pretty serious, eh ...
http://groups.google.ca/groups?hl=ru&lr ... .com#link5
"Unfortunately there is a bug in current versions of our products that
causes the guest clock to run too fast with certain guest OSes. In
particular, Win2K Server gains about 121 seconds per day. I recently
fixed this bug, and the fix will be in the next release of all products
(GSX 2.5, Workstation 4.0, and ESX 1.5.2 -- maybe already in ESX 1.5.1;
I've forgotten). There's no way to patch Workstation 3.x in the field
to fix it."
Tim Mann (mann@vmware.com)
1. I don't say that VMware doesn't have any bugs, just there are no bugs that allow host reset/hang from inside a VM.
2. It is old (2003-01-03 ) post about old versions of VMware, and is not about reset/hang.
-
- Уже с Приветом
- Posts: 15310
- Joined: 30 Apr 2003 16:43
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Некоторые ответы по виртуализации я нашел в нижеследующих документах
http://www.extremetech.com/article2/0,3 ... 611,00.asp
http://www.redhat.com/archives/bochs-de ... 00071.html
http://www.extremetech.com/article2/0,3 ... 611,00.asp
http://www.redhat.com/archives/bochs-de ... 00071.html
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 May 2001 09:01
- Location: Silicon Valley
PavelM wrote:Некоторые ответы по виртуализации я нашел в нижеследующих документах
http://www.extremetech.com/article2/0,3 ... 611,00.asp
http://www.redhat.com/archives/bochs-de ... 00071.html
I recommend the following article and its references written by VMware top developers, awarded Best Paper at USENIX Annual Technical Conference 2001:
http://www.usenix.org/publications/library/proceedings/usenix01/sugerman.html
-
- Уже с Приветом
- Posts: 13316
- Joined: 13 Jun 1999 09:01
- Location: Yekaterinburg -> Montreal
Резимируя вышеизложенное, все согласны с тем, что интеловский процессор (IA32) не имеет аппаратных средств 100% виртуализации.
В тоже время vmware заявляет что обладает секретной патентованной технологией позволяющей обойти эти ограничения.
Для этого есть как бы 2 пути:
1. 100% эмулятор по принципу - читать инструкцию из файла, проверить, если непривилегированная - исполнить, если обратное - переслать монитору виртуальной машины. Медленно.
2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.
Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.
В тоже время vmware заявляет что обладает секретной патентованной технологией позволяющей обойти эти ограничения.
Для этого есть как бы 2 пути:
1. 100% эмулятор по принципу - читать инструкцию из файла, проверить, если непривилегированная - исполнить, если обратное - переслать монитору виртуальной машины. Медленно.
2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.
Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.
-
- Уже с Приветом
- Posts: 1494
- Joined: 08 May 2001 09:01
- Location: Silicon Valley
PavelM wrote:Резимируя вышеизложенное, все согласны с тем, что интеловский процессор (IA32) не имеет аппаратных средств 100% виртуализации.
В тоже время vmware заявляет что обладает секретной патентованной технологией позволяющей обойти эти ограничения.
Для этого есть как бы 2 пути:
1. 100% эмулятор по принципу - читать инструкцию из файла, проверить, если непривилегированная - исполнить, если обратное - переслать монитору виртуальной машины. Медленно.
2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.
Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.
BTW, granted patents can't be secret in USA, they are not "trade secrets". VMware has both.
About above methods #1 and #2. VMware uses something like #2 but with significant differences. I can't go into details here.
>ошибка в коде который занимается обработкой исключений
The size of our exeption/interrupt handling code size isn't big, we don't have bugs there
>передает данные железу (ring 0), в т.ч. в хозяйской ОС
We don't have control of the host OS. Sure, the host OS/drivers can have bugs
and can reset the host. VMware here is not different form any other host app.
VMware has 3-4 own host drivers but they are simple and unlikely to have bugs.
-
- Уже с Приветом
- Posts: 3459
- Joined: 29 Oct 2002 20:08
- Location: US
PavelM wrote:2. Запустить "настоящий" процесс в кольце 3, сделать свой обработчик исключений, как только процесс пытается что-то типа IN, OUT, PUSHF и т.п. срабатывает защита, управление получает наш обработчик исключений и уже решает что с этим делать - игнорировать или переслать в для исполнения в кольцо 0.
Т.е. в данном случае гостевая ОС целиком сидит в кольце 3 - хотя ее ядро с драйверами думает что оно в кольце 0, которое на самом деле эмулируется софтом vmware.
Гипотетическая ситуация, когда одна гостевая ОС может навредить остальным - ошибка в коде который занимается обработкой исключений или передает данные железу (ring 0), в т.ч. в хозяйской ОС. Положим, есть ошибка при записи бутсектора в драйвере флоппи-диска в Win2000 являющейся хозяином, гостевая VM пытаясь записать бутсектор уронит весь сервер.
Думаю, все именно так - интерпретация не нужна. Вопрос - ну и чем это отличается от описанного zVald на мэйнфрейме?