{"id":4887,"date":"2013-04-28T21:51:46","date_gmt":"2013-04-28T19:51:46","guid":{"rendered":"https:\/\/ingmarverheij.com\/?p=4887"},"modified":"2017-07-03T17:33:58","modified_gmt":"2017-07-03T15:33:58","slug":"demystifying-the-atlantis-ilio-replication-host-part-1","status":"publish","type":"post","link":"https:\/\/ingmarverheij.com\/en\/demystifying-the-atlantis-ilio-replication-host-part-1\/","title":{"rendered":"Demystifying the Atlantis ILIO replication host &ndash; part 1"},"content":{"rendered":"<p>When Atlantis Computing added <a href=\"https:\/\/www.brianmadden.com\/blogs\/brianmadden\/archive\/2013\/02\/26\/atlantis-computing-adds-persistent-support-to-their-diskless-vdi-solution-this-is-the-ultimate-vdi-storage-solution.aspx\" target=\"_blank\" rel=\"noopener\">persistent support for their ILIO Diskless VDI<\/a> in Q1 2013 I couldn\u2019t wait to get my hands on a copy. Last week I was able to deploy an Atlantis ILIO environment with a Replication Host. <br clear=\"all\" \/><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Atlantis-ILIO-Persistent-VDI-4.0.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;\" title=\"Atlantis ILIO Persistent VDI 4.0\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Atlantis-ILIO-Persistent-VDI-4.0_thumb.png\" alt=\"Atlantis ILIO Persistent VDI 4.0\" width=\"254\" height=\"143\" border=\"0\" \/><\/a><\/p>\n<p>In the first part of this article I will explain what the replication host is, how it\u2019s used and how it works. In the second part I\u2019ll dive into the boot process and how the hosts are managed.<\/p>\n<p><!--more--><\/p>\n<h2><span style=\"font-weight: bold;\">Atlantis ILIO products<\/span><\/h2>\n<p>Atlantis Computing offers a number of products in their <a href=\"https:\/\/www.atlantiscomputing.com\/products\/overview\" target=\"_blank\" rel=\"noopener\">ILIO portfolio<\/a>. To understand what the Replication Host i s it is important to understand the products and its components.<\/p>\n<p>At the moment of writing Atlantis offers the following products:<\/p>\n<ul>\n<li>Atlantis ILIO Persistent VDI<\/li>\n<li>Atlantis ILIO Diskless VDI<\/li>\n<li>Atlantis ILIO for Citrix XenApp<\/li>\n<li>Atlantis ILIO FlexCloud<\/li>\n<li>Atlantis ILIO Center<\/li>\n<\/ul>\n<p>Each product consists of one or more components, to simplify the explanation I will loosely interpret the naming of the components.\u00a0 The components are shown in the columns, the products are in the rows.<\/p>\n<table border=\"1\" width=\"478\" cellspacing=\"0\" cellpadding=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"202\"><\/td>\n<td valign=\"top\" width=\"83\"><strong> Session Host<\/strong><\/td>\n<td valign=\"top\" width=\"106\"><strong>\u00a0 Replication Host<\/strong><\/td>\n<td valign=\"top\" width=\"85\"><strong>\u00a0\u00a0 ILIO Center<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"202\"><strong>Atlantis ILIO Persistent VDI<\/strong><\/td>\n<td valign=\"top\" width=\"83\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X<\/td>\n<td valign=\"top\" width=\"106\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X<\/td>\n<td valign=\"top\" width=\"85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"202\"><strong>Atlantis ILIO Diskless VDI<\/strong><\/td>\n<td valign=\"top\" width=\"83\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X <sup>*1<\/sup><\/td>\n<td valign=\"top\" width=\"106\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<td valign=\"top\" width=\"85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"202\"><strong>Atlantis ILIO for Citrix XenApp<\/strong><\/td>\n<td valign=\"top\" width=\"83\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X <sup>*1<\/sup><\/td>\n<td valign=\"top\" width=\"106\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<td valign=\"top\" width=\"85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"202\"><strong>Atlantis ILIO FlexCloud <\/strong><sup>*2<\/sup><\/td>\n<td valign=\"top\" width=\"83\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ?<\/td>\n<td valign=\"top\" width=\"106\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ?<\/td>\n<td valign=\"top\" width=\"85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ?<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"202\"><strong>Atlantis ILIO Center<\/strong><\/td>\n<td valign=\"top\" width=\"83\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<td valign=\"top\" width=\"106\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8211;<\/td>\n<td valign=\"top\" width=\"85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 X<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><sup>*1) <\/sup>Officially this is not called a Session Host<\/p>\n<p>*2) I have no information about FlexCloud<\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-weight: bold;\">Components<\/span><\/h2>\n<h5><span style=\"font-weight: bold;\">ILIO Center<\/span><\/h5>\n<p><strong>Atlantis ILIO Center <\/strong>is a management component for enterprises \u2013 allowing you to manage and report in your ILIO environment. Basically it is a virtual appliance that manages the Session- and Replication hosts. ILIO Center periodically verifies the health of the hosts, retrieves resource usage, configures the hosts and clusters and controls the licensing. ILIO Center is <em>not<\/em> required for the Session- or Replication Host to function enhancing the availability and scalability of the setup. <br clear=\"all\" \/><\/p>\n<h5><span style=\"font-weight: bold;\">Session Host<\/span><\/h5>\n<p>A <strong>Session Host <\/strong>is a virtual appliance and is the <strong>heart <\/strong>of Atlantis ILIO (In-Line-Image-Optimization). A Session Host exposes a mount point via NFS or iSCI, a hypervisor connects a datastore to the mount and files are stored on the datastore (Software Defined Storage or SDS). Virtual machines store their configuration (.vmx for VMware) and hard disks (.vmdk for VMware) on the datastore just like they normally do. Once data is written to the Session Host datastore the \u201cmagic happens\u201d (duplicate data blocks are inline de-duplicated (immediately), compressed and optimized to big sequential blocks).\u00a0 This results in a reduction of the required IOPS and capacity on the (shared) storage.<\/p>\n<p>Basically there are two types of Session Hosts 1) disk-based and 2) diskless. The difference between the two types are fairly simple, the location where the data is stored is either on disk (disk-based) or in memory (diskless). <br clear=\"all\" \/> <br clear=\"all\" \/><\/p>\n<h6>disk-based<\/h6>\n<p>A disk-based Session Host receives the files via the NFS mount point, de-duplicates the data (the magic) and stores it on a virtual hard disk. This is always the second hard disk or <em>\/dev\/sdb1<\/em>, usually mounted on a LUN on the SAN. The hard disk is internally mounted as the folder <em>\/exports\/ILIO_VirtualDesktops.<\/em><\/p>\n<blockquote><p>\u201cThe folder is mounted on file system file (vfstype) \u201cdedup\u201d, a proprietary file system of Atlantis Computing.\u201d<\/p><\/blockquote>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-host-disk-based.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"disk-based\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-host-disk-based_thumb.png\" alt=\"Atlantis ILIO disk-based\" width=\"620\" height=\"93\" border=\"0\" \/><\/a><\/p>\n<p>In a VDI environment the required storage capacity can be reduced by roughly 90%.<\/p>\n<p>&nbsp;<\/p>\n<h6>diskless<\/h6>\n<p>A diskless Session Host has the same layout as a disk-based Session Host but instead of a virtual hard disk the folder <em>\/exports\/ILIO_VirtualDesktops <\/em>is mounted from a RAM disk. The RAM disk is mounted\u00a0 as\u00a0 <em>\/dev\/ram0<\/em> with no compression or as <em>\/dev\/zram0<\/em> when compression is enabled.<\/p>\n<blockquote><p><em>\u201cCompression is done by the Linux module <a href=\"https:\/\/en.wikipedia.org\/wiki\/ZRam\" target=\"_blank\" rel=\"noopener\">zRam<\/a>\u201d<\/em><\/p><\/blockquote>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-hosts-Diskless.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"diskless\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-hosts-Diskless_thumb.png\" alt=\"Atlantis ILIO diskless\" width=\"620\" height=\"93\" border=\"0\" \/><\/a> <br clear=\"all\" \/> <br clear=\"all\" \/>Because RAM is volatile (the content is lost after a power-cycle) a diskless Session Host is unable to store persistent data, unlike the disk-based Session Host. Because the VM configuration (.vmx) and hard disk (.vmdk) files are stored on the Session Host datastore, not on the hypervisor host, they need to persist. Therefore a second hard disk <em>\/dev\/sdb1 <\/em>is attached (and mounted as <em>\/mnt\/images<\/em>) and a \u201cSnapClone\u201d is created of the files, initiated by an administrator via the Atlantis ILIO Center machine.<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Atlantis-SnapClone.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"Atlantis SnapClone\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Atlantis-SnapClone_thumb.png\" alt=\"Atlantis SnapClone\" width=\"620\" height=\"88\" border=\"0\" \/><\/a><\/p>\n<blockquote><p>\u201cAtlantis ILIO SnapClone is executed by the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Partclone\" target=\"_blank\" rel=\"noopener\">PartClone<\/a> tool\u201d<\/p><\/blockquote>\n<p>Because no data is stored on a SAN, the storage reduction is 100% during operation. In other words, there are NO IOPS required for the Windows desktop \/ server machines to run!<\/p>\n<p>&nbsp;<\/p>\n<h5><span style=\"font-weight: bold;\">Replication host<\/span><\/h5>\n<p>Technically a Replication Host share a lot of similarities with a disk-based Session Host. Just like the disk-based Session Host it exposes a (actually multiple) NFS mountpoint, optimizes the data blocks written (the ILIO engine) and stores it on the second hard disk \/dev\/sdb1 (actually <em>\/dev\/mapper\/vmdata_cache<\/em> for <a href=\"https:\/\/en.wikipedia.org\/wiki\/Logical_Volume_Manager_(Linux)\" target=\"_blank\" rel=\"noopener\">logical volume management<\/a>). One might say that the Replication Host is an improved disk-based Session Host.<\/p>\n<p>A Replication Host stores the persistent data of multiple diskless Session Hosts. Because it aggregates the data of multiple Session Hosts (which most likely have similar data blocks) it can de-duplicate the data even more, reducing the required storage capacity by even more,<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-Hosts-to-Replication-Host.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-width: 0px;\" title=\"Session Hosts to Replication Host\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-Hosts-to-Replication-Host_thumb.png\" alt=\"Session Hosts to Replication Host\" width=\"320\" height=\"307\" border=\"0\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-weight: bold;\">Fast Replication<\/span><\/h2>\n<p>The glue that ties the Session Hosts and the Replication Host together is what Atlantis calls \u201cFast Replication\u201d. Basically what this Fast Replication technique should do to make sure that whatever is stored on the RAM disk of the Session Host persists. Whenever a diskless Session Host reboots it should retain the data blocks written by the virtual machines.<\/p>\n<p>The way this is achieved is simple and effective (<a href=\"https:\/\/en.wikipedia.org\/wiki\/KISS_principle\" target=\"_blank\" rel=\"noopener\">KISS<\/a> <img decoding=\"async\" class=\"wlEmoticon wlEmoticon-thumbsup\" style=\"border-style: none;\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/wlEmoticon-thumbsup1.png\" alt=\"Duim omhoog\" \/>). <br clear=\"all\" \/><\/p>\n<h5><span style=\"font-weight: bold;\">persistentnode<\/span><\/h5>\n<p>Each Session Hosts mounts a folder to the Replication Host via NFS. The Replication Host exposes a dedicated NFS mount point for every Session Host with the name <em>&lt;ip&gt;:\/exports\/ILIO_VirtualDesktops\/&lt;session-host-name&gt;<\/em> where <em>&lt;session-host-name&gt; <\/em>is the name of the Session Host (duh!) This folder is mounted on the Session Host as <em>\/persistent\/persistentnode<\/em>. <br clear=\"all\" \/><\/p>\n<h5><span style=\"font-weight: bold;\">Loop device<\/span><\/h5>\n<p>A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Loop_device\" target=\"_blank\" rel=\"noopener\">loop device<\/a> is used to make a file accessible as a block device. On the Session Host a loop device <em>\/dev\/loop0<\/em> is attached to the file <em>\/persistent\/persistentnode\/zerofile<\/em>, so the file is stored on the Replication Host. <br clear=\"all\" \/><\/p>\n<h5><span style=\"font-weight: bold;\">Linux-raid<\/span><\/h5>\n<p>Finally a <a href=\"https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid\" target=\"_blank\" rel=\"noopener\">linux-raid<\/a> is used to create a <a href=\"https:\/\/www.cloudwards.net\/what-is-raid\/\" target=\"_blank\" rel=\"noopener\">RAID1<\/a> (mirror) between the RAM disk\u00a0 (<em>\/dev\/ram0<\/em> or <em>\/dev\/zram0)<\/em> and the loop device (<em>\/dev\/loop0<\/em>).<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-host-Diskless-with-replication-host.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"diskless with replication host\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Session-host-Diskless-with-replication-host_thumb.png\" alt=\"Atlantis ILIO diskless with replication host\" width=\"620\" height=\"182\" border=\"0\" \/><\/a><\/p>\n<blockquote><p>\u201cAtlantis FastReplication is basically a RAID 1 linux-raid\u201d <br clear=\"all\" \/><\/p><\/blockquote>\n<h2>Part two<\/h2>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Stay-tuned.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; float: right; padding-top: 0px; padding-left: 0px; margin: 0px 60px; display: inline; padding-right: 0px; border-width: 0px;\" title=\"Stay tuned!\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Stay-tuned_thumb.jpg\" alt=\"Same bat time... Same bat channel!\" width=\"100\" height=\"97\" align=\"right\" border=\"0\" \/><\/a>In part two I\u2019ll dive in the boot process of the Session- and Replication hosts and how the hosts are managed. Stay tuned!<\/p>\n<p><br clear=\"all\" \/> <br clear=\"all\" \/> <br clear=\"all\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>When Atlantis Computing added persistent support for their ILIO Diskless VDI in Q1 2013 I couldn\u2019t wait to get my hands on a copy. Last week I was able to deploy an Atlantis ILIO environment with a Replication Host. In the first part of this article I will explain what the replication host is, how [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[557,571],"tags":[558,492,559,561],"class_list":["post-4887","post","type-post","status-publish","format-standard","hentry","category-atlantis-ilio","category-demystified-other","tag-atlantis","tag-demystified","tag-ilio","tag-replication-host"],"_links":{"self":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/comments?post=4887"}],"version-history":[{"count":9,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4887\/revisions"}],"predecessor-version":[{"id":7013,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4887\/revisions\/7013"}],"wp:attachment":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/media?parent=4887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/categories?post=4887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/tags?post=4887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}