<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Louis Vincens</title>
    <description>The latest articles on DEV Community by Louis Vincens (@lvincens).</description>
    <link>https://dev.to/lvincens</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1502170%2F12807414-f4da-490a-9542-f182c280300f.jpeg</url>
      <title>DEV Community: Louis Vincens</title>
      <link>https://dev.to/lvincens</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lvincens"/>
    <language>en</language>
    <item>
      <title>Locked in: the inextricable dependency on VMWare</title>
      <dc:creator>Louis Vincens</dc:creator>
      <pubDate>Mon, 09 Sep 2024 21:30:12 +0000</pubDate>
      <link>https://dev.to/lvincens/locked-in-the-inextricable-dependency-on-vmware-dib</link>
      <guid>https://dev.to/lvincens/locked-in-the-inextricable-dependency-on-vmware-dib</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The recent acquisition of VMware by Broadcom and the subsequent announcement of their new subscription model have raised significant concerns in the IT industry regarding dependency on software vendors.&lt;/p&gt;

&lt;p&gt;While most customers are dealing with an exorbitant cost increase, some are exploring alternatives, often based on open-source software, to mitigate the impact on their operations. Despite the advocacy from open-source specialists for their preferred solutions, VMware has, over the past decades, established an unmatched ecosystem comprising hardware vendors, software integrators and resellers.&lt;/p&gt;

&lt;p&gt;Replicating such a comprehensive portfolio, either from scratch or using open-source software, demands substantial investment and carries a high risk of failure.&lt;/p&gt;

&lt;p&gt;For learning purposes, I challenged myself to recreate some of VMware's key products using open-source software. This article is part of a series of articles that aim to contribute to the community by sharing the results of my exploration.&lt;/p&gt;

&lt;p&gt;Disclaimer: These explorations were conducted in a lab environment. Using this in a production environment would require a thoroughly developed open-source strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hypervisors
&lt;/h2&gt;

&lt;p&gt;ESXi is VMWare hypervisor. The role of the hypervisor or VMM (virtual machine manager) is to create and manage virtual machines (VM). By abstracting the underlying hardware and allocating physical resources to virtual machines, it enables multiple operating systems to run concurrently on the same physical host.&lt;/p&gt;

&lt;p&gt;Hypervisors serve various purposes, ranging from general uses like web hosting and business applications to specialized uses such as safety-critical and security-critical systems. Their implementation varies based on their intended purpose.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkgu3ctqqijijbvfld21.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkgu3ctqqijijbvfld21.jpg" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bare metal hypervisors
&lt;/h3&gt;

&lt;p&gt;Bare metal hypervisors, also known as Type 1 hypervisors, are built directly on top of dedicated operating systems (OS) designed specifically for virtualization. These operating systems usually feature a microkernel architecture and expose a minimal set of features to the VMs through a low-level API consisting in privileged functions called Hypercalls. Additionally, it provides the applications and tools that constitute the hypervisor control plane with higher level APIs to control and monitor the hypervisor.&lt;/p&gt;

&lt;p&gt;This approach offers several advantages, such as improved security and reliability by reducing the amount of code executed with high CPU privileges. It also facilitates the formal verification of the hypervisor software for critical use cases. For instance, such verification may be necessary to achieve the highest levels of safety certification in airborne systems (DO-178). One drawback may be limited hardware compatibility.&lt;/p&gt;

&lt;p&gt;ESXi is a type 1 hypervisor that uses a custom OS called &lt;a href="https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/ESXi_architecture.pdf" rel="noopener noreferrer"&gt;VMkernel&lt;/a&gt;. Other examples include &lt;a href="https://xenproject.org/" rel="noopener noreferrer"&gt;Xen&lt;/a&gt;, PikeOS, QNX, L4Re and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hosted hypervisors
&lt;/h3&gt;

&lt;p&gt;In hosted hypervisors also known as Type 2 hypervisors, the hypervisor runs as a user-space application within the host operating system. When a VM running on a Type 2 hypervisor needs to perform an operation, the hypervisor typically issues system calls (syscalls) to the host operating system, which in turn manages access to hardware resources and executes the requested operations on behalf of the VM. &lt;/p&gt;

&lt;p&gt;Their portability and ease of use make them ideal for local virtualization environments. However, they must share hardware resources with other applications which can impact performance, stability and security. Examples include Oracle VirtualBox and VMware Workstation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hybrid hypervisors
&lt;/h3&gt;

&lt;p&gt;There are also hybrid implementations like KVM and Bhyve, integrated into the Linux and FreeBSD kernels, respectively. The syscalls from the guest VMs, are translated into hypercalls by the kernel module for interaction with the hardware virtualization layer. They blur the lines between type 1 and type 2 hypervisors, and are often referred to as type 1.5 hypervisors. By combining the advantages of type 1 and type 2 hypervisors, it enables great flexibility and a familiar environment by supporting a broad range of hardware and tools. The separation of concerns is however less strict, increasing the potential blast radius in case of failure or compromise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software stack
&lt;/h2&gt;

&lt;p&gt;To build an equivalent to VMware ESXi, it would make sense to leverage a similar approach. ESXi and Xen are both bare metal hypervisors that run directly on the hardware and leverage direct calls for communication between the VMs and hypervisor layer. It provides secure and efficient means of communication between the VMs and the hypervisor, ensuring robust virtualization capabilities while maintaining isolation and security boundaries between different VMs. However, there are some subtle differences in their implementation. As an example, in Xen, the control plane runs on top of the hypervisor as a privileged virtual machine (VM), known as Dom0. In contrast, ESXi services run as processes within the VMkernel operating system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9r2gkne6t3ckdibu26fw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9r2gkne6t3ckdibu26fw.jpg" alt="Image description" width="591" height="808"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xenproject.org/" rel="noopener noreferrer"&gt;Xen&lt;/a&gt; is a general purpose type 1 open source hypervisor published under the terms of the GPLv2 license and sponsored by the Linux Foundation. It is a mature piece of software issued from research at the university of Cambridge and has been widely used by many companies including famous public cloud providers such as Amazon to support their AWS infrastructure. Its longevity has fostered a large ecosystem of hardware vendors and integrators. Additionally, it is well-documented and benefits from strong community support and tools.&lt;br&gt;
Xen require at least a privileged virtual machine or domain, often referred to as dom0. Dom0 provides the APIs and tools that constitute the hypervisor control plane. It is responsible for managing domUs (VMs), devices, security, networking, and storage.&lt;br&gt;
&lt;a href="https://www.freebsd.org/" rel="noopener noreferrer"&gt;FreeBSD&lt;/a&gt; is an excellent fit for this purpose. It’s a Unix/POSIX operating system issued from the University of Berkeley and distributed under the terms of the permissive BSD license. Known for its stability and security, FreeBSD has been used for decades in education, research, civil and military applications. It has first-class support for Xen as both dom0 and domU.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://libvirt.org/" rel="noopener noreferrer"&gt;libvirt&lt;/a&gt; is a C library developped by RedHat under the terms of the GNU LGPL license, that provides a generic API that abstracts the bits and bytes of the underlying hypervisor, networking and storage technologies. Using libvirt generic API permits to benefit from a large ecosystem of open source software and tools. As an example, it is possible to use the &lt;a href="https://virt-manager.org/" rel="noopener noreferrer"&gt;virt-manager&lt;/a&gt; client to create and manage virtual machines.&lt;br&gt;
It supports a &lt;a href="https://libvirt.org/drivers.html" rel="noopener noreferrer"&gt;wide range of hypervisors&lt;/a&gt; including Xen via the &lt;a href="https://libvirt.org/drvxen.html" rel="noopener noreferrer"&gt;libxl&lt;/a&gt; driver, KVM, BHyve, Hyper-V and storage backends, including ZFS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.freebsd.org/en/books/handbook/zfs/" rel="noopener noreferrer"&gt;ZFS&lt;/a&gt; is a fully featured file system and volume manager first developped by Sun Microsystems under the terms of the CDDL license. Now property of Oracle, ongoing open source ZFS development has moved to the OpenZFS Project. It provides efficient software RAID, snapshots, compression, de-duplication, encryption and other advanced features. ZVols are very practical for VM primary storage. Known for its reliability, it is integrated in FreeBSD and many storage appliances.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4soka6ah6v0effx9vqi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4soka6ah6v0effx9vqi.jpg" alt="Image description" width="306" height="408"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Server side
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Xen
&lt;/h3&gt;

&lt;p&gt;In order to install FreeBSD as a Xen host, follow the steps described in the &lt;a href="https://docs.freebsd.org/en/books/handbook/virtualization/#virtualization-host-xen" rel="noopener noreferrer"&gt;FreeBSD handbook&lt;/a&gt;.&lt;br&gt;
Below is a summary of the key steps.&lt;/p&gt;

&lt;p&gt;First install xen packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# pkg update
# pkg install -y xen-kernel xen-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, adjust some system parameters required for xen dom0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# echo "vm.max_wired=-1" &amp;gt;&amp;gt; /etc/sysctl.conf
# sed -i '' -e 's/memorylocked=64K/memorylocked=unlimited/' /etc/login.conf
# cap_mkdb /etc/login.conf
# echo 'xc0     "/usr/libexec/getty Pc"         xterm   onifconsole  secure' &amp;gt;&amp;gt; /etc/ttys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure the kernel to load the &lt;code&gt;tap&lt;/code&gt; module, enable Xen by specifying the path to the Xen kernel, and provide the command line required to boot FreeBSD as the dom0:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sysrc -f /boot/loader.conf if_tap_load="YES"
# sysrc -f /boot/loader.conf xen_kernel="/boot/xen"
# sysrc -f /boot/loader.conf xen_cmdline="dom0_mem=8192M dom0_max_vcpus=4 dom0=pvh console=com1,vga com1=115200,8n1 guest_loglvl=all loglvl=all"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable the &lt;code&gt;xencommons&lt;/code&gt; service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sysrc xencommons_enable=yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure the network bridge and add a network interface to the bridge (replace &lt;code&gt;em0&lt;/code&gt; with the name of your network interface):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sysrc cloned_interfaces="bridge0"
# sysrc ifconfig_bridge0="addm em0 SYNCDHCP"
# sysrc ifconfig_em0="up"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reboot the system&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  libvirt
&lt;/h3&gt;

&lt;p&gt;Although it is possible to install a pre-compiled libvirt binary with FreeBSD package manager, it is not built with Xen support. To overcome this limitation, it is however possible to compile a custom version using the ports system.&lt;/p&gt;

&lt;p&gt;First update your ports tree from FreeBSD git repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# pkg install -y git
# git clone https://git.freebsd.org/ports.git /usr/ports
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure that your ports tree version is consistent with your package manager configured in &lt;code&gt;/etc/pkg/FreeBSD.conf&lt;/code&gt;. By default &lt;code&gt;pkg&lt;/code&gt; is configured to use the quarterly repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Back in your ports tree, browse all available branches:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cd /usr/ports
# git branch -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And checkout the latest quarterly branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# git checkout 2024Q2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order to compile and install &lt;code&gt;libvirt&lt;/code&gt; port, first install dependencies using the package manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cd /usr/ports/devel/libvirt/
# make install-missing-packages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit &lt;code&gt;/etc/make.conf&lt;/code&gt; to enable xen support:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OPTIONS_SET+=XEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compile and install &lt;code&gt;libvirt&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# export BATCH="yes"
# make clean install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set xen as the default libvirt hypervisor backend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF | tee /usr/local/etc/libvirt/libvirt.conf
uri_default = "xen:///system"
EOF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure libvirtd to allow the &lt;code&gt;libvirt&lt;/code&gt; group members to read and write to the libvirt socket:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cat &amp;lt;&amp;lt;EOF | tee /usr/local/etc/libvirt/libvirtd.conf
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0770"
unix_sock_rw_perms = "0770"
EOF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure the &lt;code&gt;libvirt&lt;/code&gt; group exists and add the required users as group members:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# pw groupadd libvirt
# pw groupmod libvirt -m username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More libxl parameters can be configured in &lt;code&gt;/usr/local/etc/libvirt/libxl.conf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Finally enable &lt;code&gt;libvirtd&lt;/code&gt; service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sysrc libvirtd_enable="YES"
# service libvirtd start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Client side
&lt;/h2&gt;

&lt;p&gt;One of the advanges of using libvirt which abstracts the underlying hypervisor, storage, and network backends by exposing a generic API is to benefit from a large ecosystem of software and tools, including command line, graphical clients including, web clients, and provisioning tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graphical interface
&lt;/h3&gt;

&lt;p&gt;Using libvirt as a generic API permits to use the &lt;a href="https://virt-manager.org/" rel="noopener noreferrer"&gt;virt-manager&lt;/a&gt; graphical client to manage the VMs.&lt;/p&gt;

&lt;p&gt;Following are a few screenshots of a FreeBSD guest installation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lhuqv8fkc3s4vwztwb9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lhuqv8fkc3s4vwztwb9.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs37wa96e5apnxq8zqpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgs37wa96e5apnxq8zqpt.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm36cyg1zh6qk448uumgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm36cyg1zh6qk448uumgr.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Command line
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.libvirt.org/manpages/virsh.html" rel="noopener noreferrer"&gt;Virsh&lt;/a&gt; is the command line client that is packaged with libvirt. It provides an intuitive command line interface (CLI) that permits to manage the life cycle of virtual machines and their associated network and storage resources.&lt;/p&gt;

&lt;p&gt;It is for example possible to use virsh to check that our installation has been successful and that dom0 is up and running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@lab-01:~ # virsh list
 Id   Name       State
--------------------------
 0    Domain-0   running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This experimentation demonstrates that it is possible to reproduce ESXi key features by relying on a mature ecosystem of Open Source technologies such as Xen and FreeBSD.&lt;br&gt;
In the next article, I would like to explore alternatives to VMWare VCenter, including clustering, high availability and monitoring.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
