[acrn-dev] [acrn-users] Multiple Pre-Launched User VM question


Geoffroy Van Cutsem
 

Hi Lonnie,

 

I’ll rely on the engineering team (@Chen, Jason CJ?) to help answer the question about being to run multiple pre-launched VMs.

 

The pre-launched VMs all use their own dedicate resources, there is no sharing possible across pre-launched VMs (inc. the Service VM). There is a communication channel you can establish between those based on shared memory (see our ivshmem documentation - https://projectacrn.github.io/latest/tutorials/enable_ivshmem.html).

 

Thanks,

Geoffroy

 

From: acrn-dev@... <acrn-dev@...> On Behalf Of Lonnie Cumberland
Sent: Thursday, June 3, 2021 2:43 PM
To: acrn-users@...
Cc: acrn-dev@...
Subject: Re: [acrn-dev] [acrn-users] Multiple Pre-Launched User VM question

 

Hi All,

 

Hope that everyone is doing well.

 

As I do not see a response to the question of "Multiple Pre-Launched" VM's, although I could have missed it, I am still wondering if perhaps 3 or 4 could be run. 

 

For my particular use case, I was investigating the possibility of having, for example, a NAS storage Pre-Launch VM that would basically handle all of the disk and external storage for the whole system such that UserVM and the ServiceVM could map in virtual drives and directories from the Pre-Launch NAS VM. I was also looking into the possibility of having a VPN Pre-Launch VM (Perhaps SoftEther) such that it would provide virtual network adapters to the whole system too.

 

The idea was to run these independent services as Pre-Launch VM's as it did not really make a lot of sense to have them all included in the ServiceVM because that would just keep creating a larger and larger ServiceVM that would have a number of different servers installed.

 

Of course, all of this might not be attainable with the current ACRN design, because I am not clear as to if the Pre-Launch VM's act similar to a Separation Kernel to partition off resources and their resources may not be either shareable to the ServiceVM.

 

Mostly just playing with ideas here and wanted to get some feedback on what ACRN is currently capable of doing and what it is not since the documentation does not particularly address some of these ideas in that it seems to be tightly coupled to some very specific use cases but has the potential for a much wider scope of use.

 

Best Regards,

Lonnie

 

 

On Tue, Jun 1, 2021 at 9:59 AM Geoffroy Van Cutsem <geoffroy.vancutsem@...> wrote:

> (/me making a mental note to go check the Dockerfile in my repo to make sure they’re up-to-date 😉)

 

I have just updated the Ubuntu 20.04 Dockerfile to reflect the latest build tools and dependencies for ACRN v2.4 (and beyond).

 

Thanks,

Geoffroy

 

From: VanCutsem, Geoffroy
Sent: Monday, May 31, 2021 5:54 PM
To: acrn-users@...; acrn-dev@...
Subject: RE: [acrn-users] Multiple Pre-Launched User VM question

 

Hi Lonnie!

 

That sounds like a lot of great progress! (/me making a mental note to go check the Dockerfile in my repo to make sure they’re up-to-date 😉)

 

Running ACRN on QEMU is possible on an Ubuntu 20.04 host, I have never tried on Windows… but if you do, please share your findings! The tutorial on the documentation website is currently out of date, as a matter of fact, I just figured out this morning (with the help of the engineering team) how to upgrade this outdated tutorial to be based on ACRN v2.4. Take a look at this Pull Request for the latest (until it gets merged and published on the website): https://github.com/projectacrn/acrn-hypervisor/pull/5937. Please note that it is not possible to run the latest version of ACRN (i.e. the upcoming v2.5 release) yet, it is currently blocked by: https://github.com/projectacrn/acrn-hypervisor/issues/6102

 

I do not know if it’s possible to have multiple pre-launched VMs at the same time. There are already 2 UUIDs reserved for those so it seems like it’s possible. You may even be able to re-use the UUID from the SAFETY_VM_UUID1 (although you may not use it for that purpose). I’ll need to research that question a bit more though unless someone watching this list knows the answer. If you need more than 3, and assuming it works up until 3, you will have at least to add more UUIDs in the codebase.

 

Note that I am not aware of anyone that has brought up ACRN on QEMU with pre-launched User VMs. Not necessarily that it cannot be done but you would be breaking new ground there… and again, any return on your testing/experience in that field would be most appreciated!

Thanks,

Geoffroy

 

From: acrn-users@... <acrn-users@...> On Behalf Of Lonnie Cumberland
Sent: Sunday, May 30, 2021 3:49 PM
To: acrn-users@...; acrn-dev@...
Subject: [acrn-users] Multiple Pre-Launched User VM question

 

Hi All,

 

This weekend, I was able to set up my base build system on the Intel NUC7i7 that I had purchased.  

 

It came with Windows 10 and instead of wiping the OS and installing Ubuntu 20.04 natively, I decided to try to use the LVS2 system that comes with Windows 10 which allows me to install and run Ubuntu 20.04 directly and use it concurrently from Windows 10. 

 

Additionally, I installed Docker in Windows which also gave me Docker in my Ubuntu 20.04 and was able to get the ACRN Docker files from:

 

 

and then was able to very easily set up a build environment for ACRN after which I successfully built the hypervisor.

 

Now I want to also see if I can run ACRN under Qemu either on native Windows 10 or under my new Ubuntu 20.04 so I am working on trying to figure out how to build a simple setup with some User VM's to test.


Also, I have been reading over the ACRN documentation where it discusses the various usage scenarios:

 

 

 

 

 I was wondering if ACRN can be configured and set up to have multiple "Pre-Launched" User VM's instead of just one?

 

If currently not possible, then what areas of the source code might I be able to view to see where this is done as I might want to see about forking the code to do some testing and modifications to see what is, or is not, achievable?

 

Thanks and have a good weekend,

Lonnie


Lonnie Cumberland <lonnie@...>
 

Thanks Geoffroy,

It was mainly just an idea, but in principle the goal is to have isolated servers (one for the SoftEther VPN switch, one for the NAS, etc.) where each one provides services to the ServiceVM which in-turn provides services to the UserVM's, or they could provide services directly to the UserVM's since each one would be the main channel to the outside world for the types of services they provide. 

In the past, we have briefly discussed the idea of having multiple ServiceVM's like one for each type of major service like drives, network, etc. but one of the developers (sorry but I forget which one exactly) mentioned that this would be problematic so I started thinking about alternatives within the current ACRN design.

It seems that the Pre-Loaded MV's are much like a Separation Kernel that physically partitions off physical resources although you mentioned now a shared memory option that may be helpful in this regard.

Thanks again my friend,
Lonnie


T

On Thu, Jun 3, 2021 at 10:01 AM Geoffroy Van Cutsem <geoffroy.vancutsem@...> wrote:

Hi Lonnie,

 

I’ll rely on the engineering team (@Chen, Jason CJ?) to help answer the question about being to run multiple pre-launched VMs.

 

The pre-launched VMs all use their own dedicate resources, there is no sharing possible across pre-launched VMs (inc. the Service VM). There is a communication channel you can establish between those based on shared memory (see our ivshmem documentation - https://projectacrn.github.io/latest/tutorials/enable_ivshmem.html).

 

Thanks,

Geoffroy

 

From: acrn-dev@... <acrn-dev@...> On Behalf Of Lonnie Cumberland
Sent: Thursday, June 3, 2021 2:43 PM
To: acrn-users@...
Cc: acrn-dev@...
Subject: Re: [acrn-dev] [acrn-users] Multiple Pre-Launched User VM question

 

Hi All,

 

Hope that everyone is doing well.

 

As I do not see a response to the question of "Multiple Pre-Launched" VM's, although I could have missed it, I am still wondering if perhaps 3 or 4 could be run. 

 

For my particular use case, I was investigating the possibility of having, for example, a NAS storage Pre-Launch VM that would basically handle all of the disk and external storage for the whole system such that UserVM and the ServiceVM could map in virtual drives and directories from the Pre-Launch NAS VM. I was also looking into the possibility of having a VPN Pre-Launch VM (Perhaps SoftEther) such that it would provide virtual network adapters to the whole system too.

 

The idea was to run these independent services as Pre-Launch VM's as it did not really make a lot of sense to have them all included in the ServiceVM because that would just keep creating a larger and larger ServiceVM that would have a number of different servers installed.

 

Of course, all of this might not be attainable with the current ACRN design, because I am not clear as to if the Pre-Launch VM's act similar to a Separation Kernel to partition off resources and their resources may not be either shareable to the ServiceVM.

 

Mostly just playing with ideas here and wanted to get some feedback on what ACRN is currently capable of doing and what it is not since the documentation does not particularly address some of these ideas in that it seems to be tightly coupled to some very specific use cases but has the potential for a much wider scope of use.

 

Best Regards,

Lonnie

 

 

On Tue, Jun 1, 2021 at 9:59 AM Geoffroy Van Cutsem <geoffroy.vancutsem@...> wrote:

> (/me making a mental note to go check the Dockerfile in my repo to make sure they’re up-to-date 😉)

 

I have just updated the Ubuntu 20.04 Dockerfile to reflect the latest build tools and dependencies for ACRN v2.4 (and beyond).

 

Thanks,

Geoffroy

 

From: VanCutsem, Geoffroy
Sent: Monday, May 31, 2021 5:54 PM
To: acrn-users@...; acrn-dev@...
Subject: RE: [acrn-users] Multiple Pre-Launched User VM question

 

Hi Lonnie!

 

That sounds like a lot of great progress! (/me making a mental note to go check the Dockerfile in my repo to make sure they’re up-to-date 😉)

 

Running ACRN on QEMU is possible on an Ubuntu 20.04 host, I have never tried on Windows… but if you do, please share your findings! The tutorial on the documentation website is currently out of date, as a matter of fact, I just figured out this morning (with the help of the engineering team) how to upgrade this outdated tutorial to be based on ACRN v2.4. Take a look at this Pull Request for the latest (until it gets merged and published on the website): https://github.com/projectacrn/acrn-hypervisor/pull/5937. Please note that it is not possible to run the latest version of ACRN (i.e. the upcoming v2.5 release) yet, it is currently blocked by: https://github.com/projectacrn/acrn-hypervisor/issues/6102

 

I do not know if it’s possible to have multiple pre-launched VMs at the same time. There are already 2 UUIDs reserved for those so it seems like it’s possible. You may even be able to re-use the UUID from the SAFETY_VM_UUID1 (although you may not use it for that purpose). I’ll need to research that question a bit more though unless someone watching this list knows the answer. If you need more than 3, and assuming it works up until 3, you will have at least to add more UUIDs in the codebase.

 

Note that I am not aware of anyone that has brought up ACRN on QEMU with pre-launched User VMs. Not necessarily that it cannot be done but you would be breaking new ground there… and again, any return on your testing/experience in that field would be most appreciated!

Thanks,

Geoffroy

 

From: acrn-users@... <acrn-users@...> On Behalf Of Lonnie Cumberland
Sent: Sunday, May 30, 2021 3:49 PM
To: acrn-users@...; acrn-dev@...
Subject: [acrn-users] Multiple Pre-Launched User VM question

 

Hi All,

 

This weekend, I was able to set up my base build system on the Intel NUC7i7 that I had purchased.  

 

It came with Windows 10 and instead of wiping the OS and installing Ubuntu 20.04 natively, I decided to try to use the LVS2 system that comes with Windows 10 which allows me to install and run Ubuntu 20.04 directly and use it concurrently from Windows 10. 

 

Additionally, I installed Docker in Windows which also gave me Docker in my Ubuntu 20.04 and was able to get the ACRN Docker files from:

 

 

and then was able to very easily set up a build environment for ACRN after which I successfully built the hypervisor.

 

Now I want to also see if I can run ACRN under Qemu either on native Windows 10 or under my new Ubuntu 20.04 so I am working on trying to figure out how to build a simple setup with some User VM's to test.


Also, I have been reading over the ACRN documentation where it discusses the various usage scenarios:

 

 

 

 

 I was wondering if ACRN can be configured and set up to have multiple "Pre-Launched" User VM's instead of just one?

 

If currently not possible, then what areas of the source code might I be able to view to see where this is done as I might want to see about forking the code to do some testing and modifications to see what is, or is not, achievable?

 

Thanks and have a good weekend,

Lonnie