Rad bych efektivne dynamicky sdilel zdroje hardware, kdy kazda instance potrebuje cca 5GB diskoveho prostoru (ale neperzistentniho), 2GB RAM a nejakou neprilis velkou cast CPU vykonu, ale nepotrebuje tyto zdroje nutne staticky rezervovane.
Sdílet diskový prostor by šlo jednoduše tím, že by všechny virtuálky používaly jeden disk přes NSF, Sambu nebo nějaký cloud. Řešení je více. Co se týká RAM, tak tady máš pro inspiraci
ballooning nebo
memory hot plug/unplug. Tady je
Detailnější popis příkazů pro memory hot plug/unplug pro libvirt. Chceme se drzet co nejniz k hardware a nelze pouzivat nastroje typu qemu ... Uvazujeme o XEN para-virtualizaci
Qemu má také paravirtualizované ovladače (virtio).
Idealni by bylo, aby system uvnitr nemel zadnou moznost detekovat, ze je virtualizovan nebo tuto moznost alespon minimalizovat.
Obávám se, že s para-virtuálizací možnost detekce zvýšíš.
navic vmware je asi pomerne dobre detekovatelny z hostovaneho systemu (napr. se to dalo/da poznat z graficke karty apod.)
proto uvazujeme smerem k necemu, co ma bliz k hardware
I u XENu o kterém uvažuješ určitě půjde z grafické karty poznat, že OS běží uvnitř virtuálky. Aby to nešlo poznat z grafické karty, tak bys musel fyzickou grafickou kartu předat (
pci-passthrough) nebo sdílet (Intel GVT-g, SR-IOV), NVIDIA (Nvidia VGPU, SR-IOV) a AMD (AMD SR-IOV),
více info. Pro 50-150 VM dost nerálné = drahé. Pokud budeš používat cokoliv jíného (tzn. virtuální GPU), tak půjde zjistit, že OS běží uvnitř VM. Jedině, že bys přesně věděl z jakých informací se daná aplikace dozvěděla, že běží uvnitř VM a ty informace bys jí potom podstrčil falešné (kdyby si třeba zjišťovala informace z
dmidecode, tak tam (např. u Qemu) není problém dmi informace podstrčit.
jeste se jen zeptam, jestli je tu nekdo, kdo ma silny nazor nebo praktickou zkusenost pro porovnani ruznych virtualizacnich reseni s ohledem na to, jak moc (ne)ma hostovany system moznost poznat, ze je virtualizovan (napr. osahavanim virtualizovaneho/proxovaneho hardware, inspekci prostredi co do toolu pro sdileni periferii a obecne pro zlepseni user experience pri praci ve VM, ktere jsou asi typickym zpusobem jak detekovat sebevirtualizaci)
Např. aplikace které dodává výrobce základní desky si zjišťují na jaké desce běží. Kdysi jsem se snažil takovou aplikaci spustit ve VM tím, že jsem jí podstrkoval různé falešné informace o základní desce, ale bez úspěchu. Nebylo to nic důležitého, takže jsem tomu nevěnoval čas. Je to v podstatě vytváření cracku - nejdříve musíš zjistit podle čeho si daná aplikace ověřuje licenci (nebo to že běží uvnitř VM) a na základě toho uděláš crack, který jí podstrčí ony konkrétní falešné informace.