3

I am soon teaching a hands-on class for which I need to spin around 20 VMs for each student. It's sort of a lab. I have about 15 students in my class. You can guess how fast this can go out of control. Running over 230+ VMs requires a lot of resources for which my university refuses to pay for. What I would like to achieve, if possible is to have one single machine as a base OS which in one way replicates itself 15 times. I want each student to share the same system, but also have a an isolated environment with a dedicated IP address:

  • Base OS Windows or Linux
  • Student one connects to it on 192.168.1.2
  • Student two connects to it on 192.168.1.3
  • Each student share the same host however has some layers of isolation so that they don't interact with each other.

All machines will run as VM and some will be Linux and some will be Windows. I know some of you might say Docker but is not really quite what I'm looking for. Any ideas?

Andy
  • 49
  • 4
  • 1
    Is there a reason that Docker (or perhaps containerization in general) doesn't suit your needs? It would seem to fit the bill based on your description, and it would be *much* leaner than VMs. – Spooler Nov 06 '18 at 21:11
  • 1
    Have you even got computers for the students to sit in front of? Or are they expected to bring their own? – Michael Hampton Nov 06 '18 at 21:14
  • My main concern is, if one user does a mistake and closes or crashes any running application all users will be impacted. Or am I thinking wrongly here? I am not that familiar with docker to be honest, have been more on vm side (esxi or hyperv) – Andy Nov 06 '18 at 21:15
  • You can think of docker as a sort of process manager with stronger isolation guarantees than running processes through the host OS's init system. Docker also sets up an environment for that process. LXC is similar, but more geared to isolating larger independent environments (like entire operating systems rather than one app+libraries). Neither of these require virtualization in any way, and use a shared kernel (that resides on the host). Each container can have its own address. One container crashing shouldn't affect the others. – Spooler Nov 06 '18 at 21:20
  • If you multiple VMs, you'll need a capable hypervisor. Thats it. There is no way around this, except no needing native VMs. – bjoster Jan 09 '19 at 15:46

2 Answers2

5

I'd say go with OpenVZ, available only on Linux (tested by me on Centos 6.X host), this piece of software is used worldwide when it comes to VPS'es (Virtual Private Servers). You can spin an instance of guest operating systems from this link here. All the guest OS'es will be isolated from each other but share resources on the host system. If you are looking for Windows based guests, then KVM can do that but I am not sure how efficiently (I am more of a Linux person).

sla3k
  • 206
  • 1
  • 1
1

There are a couple of ideas that you might find useful. One (I currently use) is Azure for students, you can take a look at it here, students with the respective university email addresses can use such service. Another could be and Windows remote desktop services with individual profiles for each student where you can create as many users as you need (with the appropriate CALs) but in this case you'd have to buy the additional licenses since by default only 2 users are allowed at a time. There might be another options but these are the ones I can tell you about. Hope it helps a bit.

Humberto Castellon
  • 849
  • 1
  • 7
  • 17