{"id":4898,"date":"2013-04-29T14:46:14","date_gmt":"2013-04-29T12:46:14","guid":{"rendered":"https:\/\/ingmarverheij.com\/?p=4898"},"modified":"2013-06-15T13:47:14","modified_gmt":"2013-06-15T11:47:14","slug":"demystifying-the-atlantis-ilio-replication-host-part-2","status":"publish","type":"post","link":"https:\/\/ingmarverheij.com\/en\/demystifying-the-atlantis-ilio-replication-host-part-2\/","title":{"rendered":"Demystifying the Atlantis ILIO replication host &ndash; part 2"},"content":{"rendered":"<p>In the <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">first part<\/a> of this article I\u2019ve explained what Atlantis ILIO products and components there are, explained what type of Session Hosts there are and how the Replication Host works. In this part I will dive a bit deeper in the boot process and the how the hosts are managed.<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Atlantis-ILIO-Center.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Atlantis ILIO Center\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO Center\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Atlantis-ILIO-Center_thumb.png\" width=\"270\" height=\"226\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<h2><font style=\"font-weight: bold\">Boot process<\/font><\/h2>\n<p>So what happens is a Session- or Replication Host starts-up? What has happened to make the datastore available for the virtual machines?<\/p>\n<p>The boot process of the hosts consists of booting up the operating system (Ubuntu 8.10) , boot to Multi-user mode (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Runlevel\" target=\"_blank\">runlevel 2<\/a>) and finally run the <em>\/etc\/rc.local<\/em> script. Each Atlantis ILIO host has a specific boot process, yet they share a great similarity.     <br clear=\"all\" \/>    <br clear=\"all\" \/><\/p>\n<h5><font style=\"font-weight: bold\"><\/font><\/h5>\n<h5><font style=\"font-weight: bold\"><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Start-up-process-Diskless-VDI.png\">Actions<\/a><\/font><\/h5>\n<p>During the execution of the start-up script <em>\/etc\/rc.local <\/em>a number of actions are executed. In table below all actions are listed and explained.<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"600\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"150\"><strong>Action<\/strong><\/td>\n<td valign=\"top\" width=\"450\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Network Optimization<\/td>\n<td valign=\"top\" width=\"450\">For each network interface [eth<em>x<\/em>] the TCP\/IP stack is optimized for IP storage \/ maximum throughput by enabling <a href=\"https:\/\/en.wikipedia.org\/wiki\/Large_segment_offload\" target=\"_blank\">TCP Segment Offload<\/a> (TSO), increasing the ring receive (RX) buffer to 4096, increasing the ring send (tx) buffer to 4096 and setting the transmit queue length (txqueuelen) to 300000.           <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Set RAID minimum network speed<\/td>\n<td valign=\"top\" width=\"450\">Configures the minimum RAID speed equal to the maximum speed of the network (2Gbit).          <\/p>\n<p><em>This command is only issued on the \u201cAtlantis ILIO Persistent VDI \u2013 Session Host\u201d&#160; (functiontype DLN) because that\u2019s the only machine using <a href=\"https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid\" target=\"_blank\">linux-raid<\/a> (called \u201cAtlantis FastReplication\u201d) as explained in <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part 1<\/a> of this article.             <br \/><\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Reconstruct ILIO cache<\/td>\n<td valign=\"top\" width=\"450\">The memory cache of ILIO (used for inline de-duplication and assembling small random blocks to large sequential blocks) is reconstructed to ensure a consistent state.&#160; <\/p>\n<p>It ensures that the VMs (in the instance of a disk-based Session host or a Replication Host) are read in from the permanent environment, recreated and re-populated.           <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Synchronize file systems<\/td>\n<td valign=\"top\" width=\"450\">This is essentially a checkpoint. The ILIO host is doing a &quot;we\u2019re all good &#8211; \u201cstart here\u201d. Effectively creating a synchronization point, this is the point in time you rollback to when non-persistent machines are rebooted.&#160; <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Start ILIO Center Agent<\/td>\n<td valign=\"top\" width=\"450\">The ibert daemon is started (also known as the ILIO Center Agent) to enable ILIO Center to manage and monitor the host.          <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Mount nfsd volume<\/td>\n<td valign=\"top\" width=\"450\">Mounts the the <a href=\"https:\/\/linux.die.net\/man\/7\/nfsd\" target=\"_blank\">nfsd filesystem<\/a> to <em>\/proc\/fs\/nfsd<\/em> which is required to provide access to the Linux NFS server. The file system consists of a single directory which contains a number of files. These files are actually gateways into the NFS server.           <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Start NFS server<\/td>\n<td valign=\"top\" width=\"450\">Starts the NFS server daemon on the host to enable remote access to the <em>\/exports\/ILIO_VirtualDesktops<\/em> mount point and all other mount points stored in the <em>\/etc\/exports<\/em> file.           <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Configure disk<\/td>\n<td valign=\"top\" width=\"450\">For each disk [\/dev\/hdx] parameters are set to optimizes the caching, buffering, etc. to ensure a proper writing. <strong>*more info needed*<\/strong>           <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"150\">Restore SnapClone<\/td>\n<td valign=\"top\" width=\"450\">Restores a snapshot from folder <em>\/mnt\/images<\/em> (linked to <em>\/dev\/sdb1)<\/em> to <em>\/dev\/(z)ram0<\/em> (RAM disk) using the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Partclone\" target=\"_blank\">PartClone<\/a> tool.          <\/p>\n<p>The snapshot is restored to ensure that all files that where stored on the host, like the configuration (.vmx) and virtual hard disk (.vmdk) are available. Once the files are available the hypervisor host can boot the virtual machine. If no snapshot is restored, and the host is restarted, an empty datastore is presented to the hypervisor host.           <\/p>\n<p><em>This command is only issued on the \u201cAtlantis ILIO Diskless VDI \u2013 Session Host\u201d. Normally all files are stored on the RAM disk, which is volatile. Unlike the \u201cAtlantis ILIO Persistent VDI \u2013 Session Host\u201d a constant replication with a SAN is not wanted for two reasons 1) files should only persist when issued by the administrator 2) the goal of the diskless solution is to prevent ALL IOPS to the SAN            <br \/><\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><em>A special thanks to <a href=\"https:\/\/uk.linkedin.com\/in\/andymwood\" target=\"_blank\">Andrew Wood<\/a> (Solutions Engineer @ Atlantis Computing) for providing additional information.<\/em><\/p>\n<p>  <br clear=\"all\" \/>  <\/p>\n<p><em><\/em><\/p>\n<h5><font style=\"font-weight: bold\">Similarities and differences<\/font><\/h5>\n<p>As explained in <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part 1<\/a> of this article there are different Atlantis ILIO hosts. To keep things simple we\u2019re focusing on the \u201cAtlantis ILIO Diskless VDI\u201d and the \u201cAtlantis ILIO Persistent VDI\u201d product.<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Start-up-process.png\"><img loading=\"lazy\" decoding=\"async\" title=\"\/etc\/rc.local\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO start-up process\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Start-up-process_thumb.png\" width=\"620\" height=\"297\" \/><\/a>    <br clear=\"all\" \/><\/p>\n<h6><font style=\"font-weight: bold\"><font style=\"font-weight: normal\"><\/font><\/font><\/h6>\n<h6><font style=\"font-weight: bold\"><font style=\"font-weight: normal\">Persistent \u2013 Replication Host <\/font>versus <font style=\"font-weight: normal\">Diskless \u2013 Session Host<\/font><\/font><\/h6>\n<p>The start-up process of the \u201cAtlantis ILIO <strong>Persistent <\/strong>VDI \u2013 Replication Host\u201d is equal to the&#160; \u201dAtlantis ILIO <strong>Diskless <\/strong>VDI \u2013 Session Host\u201d , with the exception of the SnapClone restore. As already concluded in the <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">first part<\/a> the Replication Host is basically an improved Session Host, just like a session host it receives files and via a NFS mount-point and stores it on the SAN. <\/p>\n<h6>&#160;<\/h6>\n<h6>Atlantis SnapClone<\/h6>\n<p>Because the \u201cAtlantis ILIO Diskless VDI \u2013 Session Host\u201d only stores files in a volatile RAM disk, all changes are lost after a power-cycle. To retain the virtual machines configuration (.vmx) and hard disk (.vmdk) file an \u201cAtlantis SnapClone\u201d is created by the administrator once the virtual machines are created, the snapshot is restored from disk [<em>\/dev\/sdb1<\/em>] to memory [<em>\/dev\/(z)ram0<\/em>].<\/p>\n<p>&#160;<\/p>\n<h6>Persistent &#8211; Replication Host <strong>versus <\/strong>Persistent &#8211; Session Host<\/h6>\n<p>The Session- and Replication Host of the \u201cAtlantis ILIO Persistent VDI\u201d product again share a lot of similarities but have two differences.<\/p>\n<ol>\n<li>On the Session Host a minimum speed is for RAID is configured. This command is only issued on the Session Host&#160; because that machine uses a <a href=\"https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid\" target=\"_blank\">linux-raid<\/a> (called \u201cAtlantis FastReplication\u201d), as explained in <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part 1<\/a> of this article. <\/li>\n<li>On the Session Host the NFS Server is started <strong>after<\/strong> the disks are configured, where on the other hosts it is started earlier in the process. It would make more sense to me that the NFS server is started last on <strong>all <\/strong>hosts, but somehow Atlantis Computing choose differently. <\/li>\n<\/ol>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<p><strong><\/strong><\/p>\n<h2><font style=\"font-weight: bold\">Host management <\/font><\/h2>\n<p>With the introduction of Atlantis ILIO Diskless VDI centralized management of the Sessions Hosts became mandatory, primarily to create\/restore SnapClones. <a href=\"https:\/\/www.atlantiscomputing.com\/products\/ILIOCenter\" target=\"_blank\">Atlantis ILIO Center<\/a> fulfilled this role and introduced health monitoring and reporting. Nonetheless the&#160; Session Hosts could operate independently, they where isolated entities. <\/p>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Session Cluster<\/font><\/h5>\n<p>With the introduction of the Replication Host the Sessions Host are no longer isolated entities, they have a mapping with each other. A Session Cluster maps a Replication Host to a number of Session Hosts. One Atlantis ILIO Center can manage multiple Session Clusters (if needed).<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Session Cluster\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO Session Cluster\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster_thumb.png\" width=\"320\" height=\"338\" \/><\/a><\/p>\n<p>A Session Cluster increases complexity, all components needs to be aware of the mapping between the hosts:<\/p>\n<ul>\n<li>Each \u201cAtlantis ILIO Persistent VDI\u201d Session Host needs to know to what Replication Host it should connect; <\/li>\n<li>Each Replication Host should know which Session Hosts to serve a dedicated NFS mount-point;<\/li>\n<li>The Atlantis ILIO Center needs to know about the relation so it can manage cluster. <\/li>\n<\/ul>\n<p>The more complex the setup gets the higher the risk is of a faulty configuration or inconsistent state of one of the hosts. Knowing how the relations of a Session Cluster are managed help prevent this situations and help you troubleshoot them.<\/p>\n<h6>&#160;<\/h6>\n<h6>Atlantis ILIO Center<\/h6>\n<p>Session Clusters are created and managed via Atlantis ILIO Center. ILIO Center uses a database to store the configuration, health state and resource usage of all hosts.<\/p>\n<p>To configure a Session Cluster three databases are used:<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"600\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"112\"><strong>Table<\/strong><\/td>\n<td valign=\"top\" width=\"488\"><strong>Comment<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"112\">cluster<\/td>\n<td valign=\"top\" width=\"488\">Contains a record for each Session Cluster showing the internal clustername and the ID of the replication host (persistent_entity_id).<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"112\">entities<\/td>\n<td valign=\"top\" width=\"488\">Contains a record for each Atlantis ILIO session- and replication hosts (as explained <a href=\"https:\/\/ingmarverheij.com\/hacking-into-the-atlantis-ilio-database\/\" target=\"_blank\">here<\/a>)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"112\">entitiesMapping<\/td>\n<td valign=\"top\" width=\"488\">Contains the mapping between the persistent entity (aka the replication host) and the diskless entity (aka the session host)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The ILIO center database is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_database\" target=\"_blank\">relational database<\/a> where each table contains unique data, a row is identified with an identifier (or ID) and no data entry is redundant (in other words: a value \u2013 like a hostname &#8211; is stored in one location).<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-UML.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Session Cluster UML\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO Session Cluster UML\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-UML_thumb.png\" width=\"370\" height=\"387\" \/><\/a><\/p>\n<p>In the diagram above you can see a visual representation of the related tables and columns (not all columns are shown).&#160; A <strong>Session Cluster <\/strong>is established as follows in the database:<\/p>\n<ul>\n<li>for each Session- or Replication host an entry is created in the <strong>[entities]<\/strong> table, uniquely identified with its identifier <em>(id)<\/em>; <\/li>\n<li>for each Session Cluster an entry is created in the <strong>[Cluster]<\/strong> table. The name of the cluster <em>(clusterName)<\/em> is an internal name \u201cCluster16\u201d, the cluster is mapped to the entry in the <strong>[entities]<\/strong> table Replication Host (<em>persistent_entity_id)<\/em>; <\/li>\n<li>for each Session Host an entry is created in the <strong>[entitiesMapping]<\/strong> table (<em>diskless_entity_id)<\/em> to map it to the Replication Host <em>(persistent_entity_id).<\/em> <\/li>\n<\/ul>\n<p>An example of a Session Cluster stored in a database:<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-example.png\"><img loading=\"lazy\" decoding=\"async\" title=\"example \" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis Session Cluster database\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-example_thumb.png\" width=\"520\" height=\"137\" \/><\/a><\/p>\n<p>In Session Cluster management page in Atlantis ILIO center page:<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-Manage.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Atlantis ILIO Center\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin: 0px auto; display: block; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO Session Cluster \" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/Session-Cluster-Manage_thumb.png\" width=\"370\" height=\"236\" \/><\/a><\/p>\n<p>PS: The database can be accessed for monitoring purposes, though this is not officially supported. In <a href=\"https:\/\/ingmarverheij.com\/hacking-into-the-atlantis-ilio-database\/\" target=\"_blank\">this article<\/a> it is explained how to gain access to the database.<\/p>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Session Host<\/font><\/h5>\n<p>On start-up a Session Host needs to know to which Replication Host (or persistent node) it is mapped to in order to initiate a <em>FastReplication <\/em>(synchronization of data on SAN with RAMdisk). <\/p>\n<p><em>Session Hosts are not depending on an active connection with ILIO center. Not having a dependency on the ILIO center has huge benefits, it can operate regardless of having an ILIO center available which is great for scalability. The downside is that the mapping with the Replication Host (including address information) is not retrieved from the ILIO center database but stored on each Session Cluster separately.<\/em><\/p>\n<p>As explained in <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part one<\/a> an \u201cAtlantis ILIO Persistent VDI \u2013 Session Hosts\u201d mounts the folder <em>\/persistent\/persistentnode<\/em> via NFS to <em>&lt;ip&gt;:\/exports\/ILIO_VirtualDesktops\/&lt;session-host-name&gt;<\/em> . The location of the mapped Replication Host is stored in a simple (but effective) way: as a entry in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hosts_(file)\" target=\"_blank\">hosts file<\/a> with the name \u201cpersistentnode\u201d. <\/p>\n<p><em><strong>\/etc\/hosts<\/strong><\/em><\/p>\n<pre lang=\"bash\">127.0.0.1 localhost ilio-sh-001\r\n10.0.0.201 persistentnode<\/pre>\n<p>&#160;<\/p>\n<p>When a Session Host is added to a Session Cluster a process \u201csetupDisklessNode\u201d is executed with the following actions:<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"600\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"266\"><strong>Action<\/strong><\/td>\n<td valign=\"top\" width=\"334\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">setFunctionType<\/td>\n<td valign=\"top\" width=\"334\">The host is configured as an \u201cAtlantis ILIO Persistent VDI \u2013 Session Host\u201d or <em>DLN<\/em>. This is set in the file <em>\/etc\/ilio\/iliofunctiontype<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">setEntryForPersistentNodeInDisklessHostsFile <\/td>\n<td valign=\"top\" width=\"334\">An entry is added \/ replaced for the <em>persistentnode<\/em> in the <em>\/etc\/hosts<\/em> file with the IP address of the Replication Host (or persistentnode)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">mountNfsExportFromPnOnDln <\/td>\n<td valign=\"top\" width=\"334\">The NFS-mount <em>&lt;ip&gt;:\/exports\/ILIO_VirtualDesktops\/&lt;session-host-name&gt; <\/em> is mapped to <em>\/persistent\/persistentnode<\/em> <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">createDeviceOnDln <\/td>\n<td valign=\"top\" width=\"334\">Loopback device <em>loop0<\/em> is mapped to <em>\/persistent\/persistentnode\/zerofile<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">createAndExportCygnusVolumeOnDln <\/td>\n<td valign=\"top\" width=\"334\">The de-duplication device <em>\/dev\/md0 <\/em>is created, formatted and mounted via NFS \/ iSCSI (stored in <em>\/etc\/exports<\/em>) with the name <em>\/exports\/ILIO_VirtualDesktops<\/p>\n<p><\/em>The device \/dev\/md0 is a RAID 1 (mirror) between the RAM disk and the persistent store on the Replication host (see <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part one<\/a>)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"266\">setRclocalFileForPersistentDisklessOnDln<\/td>\n<td valign=\"top\" width=\"334\">The start-up script <em>\/etc\/rc.local<\/em> is changed from an \u201cAtlantis Diskless VDI &#8211; Session Host\u201d to an \u201cAtlantis ILIO Persistent VDI \u2013 Session Host\u201d <\/p>\n<p>Basically the <em>rc.local<\/em> file is copied from <em>\/opt\/ibert\/agent\/<\/em> to <em>\/etc<\/em>. The following files are available:<\/p>\n<p><em>rc.local-DEFAULT<br \/>\n          <br \/>rc.local-DLN_FOR_PERSISTENT_DISKLESS<\/p>\n<p>rc.local-REGULAR_DISKLESS<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For information on your Session Host see the <em>\/var\/log\/ibertagent.log<\/em>file<\/p>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Replication Host<\/font><\/h5>\n<p>An \u201cAtlantis ILIO Persistent VDI \u2013 Replication Hosts\u201d exposes an NFS mount-point for each Session Hosts separately (with the name of the session host). <em>A single mount-point is provided for each Session Host to offer the best performance (each mount point has a limit of 16 outstanding I\/O\u2019s) and enable granular control of permissions.<\/em><\/p>\n<p>When a Session Host is added to the the Session Cluster the Replication Host create a folder in <em>\/exports\/ILIO_VirtualDesktop<\/em> with the hostname of the Session Host (for example ilio-sh-001). That folder added as an NFS-mount in the <em>\/etc\/exports<\/em> file.<\/p>\n<p><strong>\/etc\/exports\/<\/strong><\/p>\n<pre lang=\"bash\">&quot;\/exports\/ILIO_VirtualDesktops&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)\r\n&quot;\/exports\/ILIO_VirtualDesktops\/ilio-sh-001&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)\r\n&quot;\/exports\/ILIO_VirtualDesktops\/ilio-sh-002&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)\r\n&quot;\/exports\/ILIO_VirtualDesktops\/ilio-sh-003&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)\r\n&quot;\/exports\/ILIO_VirtualDesktops\/ilio-sh-004&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)\r\n&quot;\/exports\/ILIO_VirtualDesktops\/ilio-sh-005&quot; *(rw,no_root_squash,no_subtree_check,async,insecure,nohide)<\/pre>\n<p>&#160;<\/p>\n<p>&#160;<\/p>\n<h2><font style=\"font-weight: bold\">Part three?<\/font><\/h2>\n<p>Do you have any questions that didn\u2019t got answered in <a href=\"https:\/\/ingmarverheij.com\/demystifying-the-atlantis-ilio-replication-host-part-1\/\" target=\"_blank\">part one<\/a> or part two (this article)?&#160; Let me know what and maybe I\u2019ll write another part <img decoding=\"async\" class=\"wlEmoticon wlEmoticon-smile\" style=\"border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none\" alt=\"Glimlach\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/05\/wlEmoticon-smile.png\" \/><\/p>\n<p>  <br clear=\"all\" \/><\/p>\n<p>  <br clear=\"all\" \/><\/p>\n<p>  <br clear=\"all\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first part of this article I\u2019ve explained what Atlantis ILIO products and components there are, explained what type of Session Hosts there are and how the Replication Host works. In this part I will dive a bit deeper in the boot process and the how the hosts are managed.<\/p>","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-4898","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\/4898","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=4898"}],"version-history":[{"count":8,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4898\/revisions"}],"predecessor-version":[{"id":5140,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4898\/revisions\/5140"}],"wp:attachment":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/media?parent=4898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/categories?post=4898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/tags?post=4898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}