{"id":4861,"date":"2013-04-27T09:05:05","date_gmt":"2013-04-27T07:05:05","guid":{"rendered":"https:\/\/ingmarverheij.com\/?p=4861"},"modified":"2013-05-15T08:01:35","modified_gmt":"2013-05-15T06:01:35","slug":"hacking-into-the-atlantis-ilio-database","status":"publish","type":"post","link":"https:\/\/ingmarverheij.com\/en\/hacking-into-the-atlantis-ilio-database\/","title":{"rendered":"Hacking into the Atlantis ILIO database"},"content":{"rendered":"<p>The content of a products database can tell you a lot about the inner working of that product. The Atlantis ILIO database stores the configuration and resource usage of the different components.<\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Badass.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Watch out, we got a badass over here\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Badass_thumb.jpg\" width=\"115\" height=\"92\" \/><\/a>Since I\u2019m building an environment including Atlantis ILIO I thought it would be good to learn about the internals of it. Having to troubleshoot some configuration issues motivated me to see (and maybe change) the configuration. So I\u2019m not a badass <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hacker_(programmer_subculture)\" target=\"_blank\">hacking<\/a> the database for malicious reasons.<\/p>\n<p><!--more--><\/p>\n<h2><font style=\"font-weight: bold\">Atlantis ILIO center<\/font><\/h2>\n<p>Only the Atlantis ILIO center machine has a database, session- and replication hosts don\u2019t. Atlantis ILIO center is the management machine that manages the Atlantis ILIO session- and replication hosts that do the actual \u201cIn-Line-Image-Optimization\u201d work.&#160; <br clear=\"all\" \/>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">MySQL<\/font><\/h5>\n<p>The machine runs a MySQL server (version <a href=\"https:\/\/dev.mysql.com\/doc\/relnotes\/mysql\/5.1\/en\/news-5-1-63.html\" target=\"_blank\">5.1.63<\/a>) with one database (or schema), called <strong>ibert<\/strong>. The ibert database has three users 1)<\/p>\n<li>root <\/li>\n<li>ibert <\/li>\n<li>debian-sys-maint\n<p>The (out-of-the-box or) <strong>default <\/strong>credentials of an Atlantis ILIO center machine is root\/admin (username\/password). The password of the root account (used for remote access via the management webpage) can easily be changed. There is no direct relation between the <em>root <\/em>user to gain access to the machine, and the <em>root <\/em>user of the <em>ibert<\/em> database. However the password of the <em>root <\/em>user in the <em>ibert <\/em>database is <strong>admin<\/strong>.<\/p>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Access the database locally<\/font><\/h5>\n<p>Once you are connected to a console session (or via SSH) of the Atlantis ILIO center machine, gaining access to the <em>ibert<\/em> database is easy.<\/p>\n<pre lang=\"bash\">root@ilio: ~# mysql -u root -p ibert\nEnter password: admin\nReading table information for completion of table and column names\nYou can turn off this feature to get a quicker startup with -A\n\nWelcome to the MySQL monitor.  Commands end with ; or \\g.\nYour MySQL connection id is 644\nServer version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)\n\nCopyright (c) 2000, 2011, Oracle and\/or its affiliates. All rights reserved.\n\nOracle is a registered trademark of Oracle Corporation and\/or its\naffiliates. Other names may be trademarks of their respective\nowners.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nmysql&gt;<\/pre>\n<p>&#160;<\/p>\n<p>Knowing that getting access to the database is <em>that<\/em> ease might got you to think \u201cWow! So everyone can access my ILIO database just like that?!\u201d. Well, that\u2019s not entirely true. The mysql daemon is configured to <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/server-options.html#option_mysqld_bind-address\" target=\"_blank\">bind<\/a> only the 127.0.0.1 (or localhost) network, external networks are unable to (see or) connect to the mysql daemon.<\/p>\n<p>Also, access to the <em>ibert <\/em>database is restricted to the user <em>root<\/em> logging in from the host <em>localhost<\/em>.<\/p>\n<p>&#160;<\/p>\n<pre lang=\"bash\">mysql&gt; show grants;\n+----------------------------------------------------------------------------------------------------------------------------------------+\n| Grants for root@localhost                                                                                                              |\n+----------------------------------------------------------------------------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |\n+----------------------------------------------------------------------------------------------------------------------------------------+\n1 row in set (0.00 sec)<\/pre>\n<p><font style=\"font-weight: bold\"><\/font>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Access the database remotely<\/font><\/h5>\n<p>If we want to connect to the Atlantis ILIO database from a remote machine (probably with a GUI like <a href=\"https:\/\/www.mysql.com\/products\/workbench\/\" target=\"_blank\">MySQL Workbench<\/a>) we need to re-configure.<\/p>\n<h6><font style=\"font-weight: bold\"><\/font><\/h6>\n<h6><font style=\"font-weight: bold\">my.cnf<\/font><\/h6>\n<p>First of all we need to enable the mysql daemon to bind to an external network. In the <strong>\/etc\/mysql\/my.cnf<\/strong> file we need to change the <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/server-options.html#option_mysqld_bind-address\" target=\"_blank\">bind-address<\/a> from<\/p>\n<pre>bind-address\t= 127.0.0.1<\/pre>\n<p>to<\/p>\n<pre>#bind-address\t= 127.0.0.1<\/pre>\n<p><strong>Tip:<\/strong> <a href=\"https:\/\/linux.die.net\/man\/1\/nano\" target=\"_blank\">nano<\/a> is an easy editor that is installed by default (easier than <a href=\"https:\/\/linux.die.net\/man\/1\/vi\" target=\"_blank\">vi<\/a>)<\/p>\n<p>To propagate the changes the daemon needs to be restarted<\/p>\n<pre lang=\"bash\">\/etc\/init.d\/mysql restart<\/pre>\n<p>&#160;<\/p>\n<h6><font style=\"font-weight: bold\">Privileges<\/font><\/h6>\n<p>Now you can connect to the mysql server you need the privileges to access the <em>ibert<\/em> database from a remote host.<\/p>\n<p>Although it would be possible to grant this privilege to the <em>root<\/em> account this implies a choice with two answers 1) use the default password <em>admin<\/em> and accept the consequences (insecure) or 2) change the password of the <em>root <\/em>user which results in breaking the system. Therefore its probably better to create a dedicated user for remote access with a more complex password.<\/p>\n<p>This is done with the following command where we add a user <em>iliouser<\/em> with the password <em>iliopassword<\/em>.<\/p>\n<pre lang=\"sql\">CREATE USER 'iliouser'@'%' IDENTIFIED BY 'iliopassword';\nGRANT ALL PRIVILEGES ON ibert. * TO 'iliouser'@'%';<\/pre>\n<p>followed by another command to propagate the changes<\/p>\n<pre lang=\"sql\">FLUSH PRIVILEGES;<\/pre>\n<p>&#160;<\/p>\n<h6><font style=\"font-weight: bold\">ibert<\/font><\/h6>\n<p>And now you\u2019re able to connect to the Atlantis ILIO center database from a remote machine <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\/04\/wlEmoticon-smile.png\" \/><\/p>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/ibert-database.png\"><img loading=\"lazy\" decoding=\"async\" title=\"ibert\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"Atlantis ILIO database\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/ibert-database_thumb.png\" width=\"354\" height=\"138\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<h2><font style=\"font-weight: bold\">Where can I use it for?<\/font><\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" title=\"\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/11371809-treasure-chest-with-gold-coins.jpg\" width=\"110\" height=\"88\" \/>So what kind of valuable information can we find in the database?<\/p>\n<p>Basically everything you can see on the Atlantis ILIO Center admin page is stored in the database. This includes the configuration but also health status, alerts and resource usage. Having access to the database enables you to retrieve this information and (if reaaaaallly necessary) to change the content.<br \/>\n    <\/p>\n<p>    <br clear=\"all\" \/><\/p>\n<h5><font style=\"font-weight: bold\"><\/font><\/h5>\n<h5><font style=\"font-weight: bold\">Entities<\/font><\/h5>\n<p>A good thing to start with is knowing what entities are. Each Atlantis ILIO session- or replication host is stored as a record in the <strong>[entities] <\/strong>table with a unique identifier (column <strong>id<\/strong>). The entity is used throughout the entire database to correlate the information with the machines.<\/p>\n<p>The <strong>[entities] <\/strong>database contains the following columns<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"599\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"122\"><strong>Name<\/strong><\/td>\n<td valign=\"top\" width=\"87\"><strong>Type<\/strong><\/td>\n<td valign=\"top\" width=\"386\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\"><strong><u>id<\/u><\/strong><\/td>\n<td valign=\"top\" width=\"87\">int(10)<\/td>\n<td valign=\"top\" width=\"386\">The unique identifier of each entity (primary key)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">name<\/td>\n<td valign=\"top\" width=\"87\">varchar(128)<\/td>\n<td valign=\"top\" width=\"386\">The display name of the entity (the session- or replication host)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">euuid<\/td>\n<td valign=\"top\" width=\"87\">varchar(64)<\/td>\n<td valign=\"top\" width=\"386\">The GUID of the entity (not sure where it\u2019s used)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">hv_id<\/td>\n<td valign=\"top\" width=\"87\">int(10)<\/td>\n<td valign=\"top\" width=\"386\">The ID of the object in the <strong>[hypervisor_objects] <\/strong>table<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">ip_address<\/td>\n<td valign=\"top\" width=\"87\">varchar(24)<\/td>\n<td valign=\"top\" width=\"386\">The IPv4 address of the entity (xxx.xxx.xxx.xxx)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">admin_user_name<\/td>\n<td valign=\"top\" width=\"87\">varchar(64)<\/td>\n<td valign=\"top\" width=\"386\">The name of the admin account <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">ilio<\/td>\n<td valign=\"top\" width=\"87\">tinyiny(1)<\/td>\n<td valign=\"top\" width=\"386\">Is this an ILIO machine? 0 = No, 1 = Yes<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">health<\/td>\n<td valign=\"top\" width=\"87\">smallint(5)<\/td>\n<td valign=\"top\" width=\"386\">00000 = Disconnected, 00001 = Healthy (more info needed)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">last_ping_time<\/td>\n<td valign=\"top\" width=\"87\">datetime<\/td>\n<td valign=\"top\" width=\"386\">Time of last communication<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">maintenance<\/td>\n<td valign=\"top\" width=\"87\">tinyint(1)<\/td>\n<td valign=\"top\" width=\"386\">Is the machine in maintenance mode? 0 = No, 1 = Yes<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">ilio_version<\/td>\n<td valign=\"top\" width=\"87\">varchar(24)<\/td>\n<td valign=\"top\" width=\"386\">The version of Ilio on the machine (as stored in <em>\/etc\/ilio\/release-version<\/em>). <\/p>\n<p><strong><\/p>\n<p>Examples <\/strong><\/p>\n<p><em>\u201cIlio-4.0.0.1<em>\u201d<\/em> <\/em>for an Atlantis ILIO 4 replication host<\/p>\n<p><em>\u201d<\/em><em>Ilio-Diskless-4.0.0.1<em>\u201d<\/em>&#160;<\/em>for an Atlantis ILIO 4 session host<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">os_version<\/td>\n<td valign=\"top\" width=\"87\">varchar(64)<\/td>\n<td valign=\"top\" width=\"386\">The OS version of the machine. <em>Ubuntu_8.10<\/em> is used on Atlantis ILIO 4.<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">num_cpu<\/td>\n<td valign=\"top\" width=\"87\">int(10)<\/td>\n<td valign=\"top\" width=\"386\">The total amount of processor cores <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">memory<\/td>\n<td valign=\"top\" width=\"87\">bigint(20)<\/td>\n<td valign=\"top\" width=\"386\">The amount of memory in <em>bytes<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">swap_size<\/td>\n<td valign=\"top\" width=\"87\">bigint(20)<\/td>\n<td valign=\"top\" width=\"386\">The size of the swap file in <em>bytes<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">agent_version<\/td>\n<td valign=\"top\" width=\"87\">varchar(10)<\/td>\n<td valign=\"top\" width=\"386\">The version of the Atlantis ILIO center agent running on the machine (4.0.1.9)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">num_disks<\/td>\n<td valign=\"top\" width=\"87\">int(10)<\/td>\n<td valign=\"top\" width=\"386\">The amount of disks attached to the machine<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">num_network_cards<\/td>\n<td valign=\"top\" width=\"87\">int(11)<\/td>\n<td valign=\"top\" width=\"386\">The amount of network cards attached to the machine<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">configured<\/td>\n<td valign=\"top\" width=\"87\">tinyint(1)<\/td>\n<td valign=\"top\" width=\"386\"><em>[NULL] <\/em><em>Currently not used? <\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">deployed<\/td>\n<td valign=\"top\" width=\"87\">tinyint(1)<\/td>\n<td valign=\"top\" width=\"386\"><em>Unsure what this value does (2)<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">ssh_public_key<\/td>\n<td valign=\"top\" width=\"87\">blob<\/td>\n<td valign=\"top\" width=\"386\"><em>[NULL] <\/em><em>Currently not used? <\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">ssh_private_key<\/td>\n<td valign=\"top\" width=\"87\">blob<\/td>\n<td valign=\"top\" width=\"386\"><em>[NULL] <\/em><em>Currently not used? <\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">uptime<\/td>\n<td valign=\"top\" width=\"87\">varchar(255)<\/td>\n<td valign=\"top\" width=\"386\">A text representation of the period the system is (or has been) up. <\/p>\n<p><strong>Examples <\/p>\n<p><\/strong>41 minutes<\/p>\n<p>1 day 10 minutes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">last_alert_timestamp<\/td>\n<td valign=\"top\" width=\"87\">datetime<\/td>\n<td valign=\"top\" width=\"386\">The time and date when the last alert was raised<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">health_timestamp<\/td>\n<td valign=\"top\" width=\"87\">datetime<\/td>\n<td valign=\"top\" width=\"386\">The time and date when the health state was changed<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">deployment_type<\/td>\n<td valign=\"top\" width=\"87\">varchar(50)<\/td>\n<td valign=\"top\" width=\"386\">The type of deployment used on this machine <\/p>\n<p><strong>Examples <\/p>\n<p><\/strong>diskless<\/p>\n<p>disk-based<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">export_type<\/td>\n<td valign=\"top\" width=\"87\">varchar(50)<\/td>\n<td valign=\"top\" width=\"386\">The type of export used to expose the ILIO datastore <\/p>\n<p><strong>Examples <\/p>\n<p><\/strong>nfs<\/p>\n<p>iscsi<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">function_type<\/td>\n<td valign=\"top\" width=\"87\">varchar(50)<\/td>\n<td valign=\"top\" width=\"386\">A more extensive of the deployment type <\/p>\n<p><strong>Examples <\/p>\n<p><\/strong><em>\u201dDLN\u201d <\/em>for a session host<em> (<\/em><u>d<\/u>isk<u>l<\/u>ess <u>n<\/u>ode)<\/p>\n<p><em>\u201dPN\u201d <\/em>for a replication host (<u>p<\/u>ersistent <u>n<\/u>ode)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"124\">configuration_file<\/td>\n<td valign=\"top\" width=\"87\">blob<\/td>\n<td valign=\"top\" width=\"386\"><em>[NULL] <\/em><em>Currently not used? <\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Monitoring<\/font><\/h5>\n<p>Atlantis ILIO Center has a built-in notification feature (configured via Setup &gt; Alerts). A warning notification (<em>CPU &gt;90%<\/em> or <em>disk \/ memory \/ load &gt; 80%<\/em> ) and an error alert (<em>CPU &gt; 95%<\/em> or <em>memory \/ disk \/ load &gt;90%<\/em>) can be delivered to email and\/or SNMP traps. A good basic feature<\/p>\n<p>If you want more extensive information (on a per entity basis) to enhance the monitoring, or analyze trend. this can be retrieved from the database.&#160; The following tables can be interesting:<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"601\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"108\"><strong>Table<\/strong><\/td>\n<td valign=\"top\" width=\"421\"><strong>Content<\/strong><\/td>\n<td valign=\"top\" width=\"70\"><strong>Used for<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">alerts<\/td>\n<td valign=\"top\" width=\"421\">Contains all alerts raised <em>per entity<\/em> including the timestamp (date\/time) and the message<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">cpu_usage<\/td>\n<td valign=\"top\" width=\"421\">Contains the processor usage (in percent) for <em>each entity.<\/em> <\/p>\n<p><em>Information is refreshed every 10 minutes (see timestamp).<\/em><\/p>\n<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">disk_usage<\/td>\n<td valign=\"top\" width=\"421\">Contains the disk usage for each disk (or device) including disk usage, de-duplication rate, offload capacity and compression) for <em>each entity<\/em>. <\/p>\n<p><em>Information is refreshed every 10 minutes (see timestamp).<\/em><\/p>\n<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">iops<\/td>\n<td valign=\"top\" width=\"421\">Contains the <a href=\"https:\/\/en.wikipedia.org\/wiki\/IOPS\" target=\"_blank\">IOPS<\/a> for <em>each entity<\/em> including network reads\/write and disk reads\/writes <\/p>\n<p><em><\/p>\n<p><em>Information is refreshed every 10 minutes (see timestamp).<\/em><\/em><\/p>\n<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">memory_usage<\/td>\n<td valign=\"top\" width=\"421\">Contains the memory usage for <em>each entity<\/em> storing the memory usage in bytes. <\/p>\n<p><em><em>Information is refreshed every 10 minutes (see timestamp).<\/em><\/em><\/p>\n<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">system_load<\/td>\n<td valign=\"top\" width=\"421\">Contains the system load for <em>each entity<\/em> for the last 1 minute, 5 minutes and 10 minutes.<\/td>\n<td valign=\"top\" width=\"70\">resource <\/p>\n<p>monitoring<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">DailyCpuUsage<\/td>\n<td valign=\"top\" width=\"421\">Contains the average processor usage of <em>each entity<\/em> aggregated per day<\/td>\n<td valign=\"top\" width=\"70\">trend <\/p>\n<p>analysis<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">DailyDiskUsage<\/td>\n<td valign=\"top\" width=\"421\">Contains the average disk usage for <em>each disk <\/em>of <em>each entity<\/em> aggregated per day <\/td>\n<td valign=\"top\" width=\"70\">trend <\/p>\n<p>analysis<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">DailyIops<\/td>\n<td valign=\"top\" width=\"421\">Contains the average <a href=\"https:\/\/en.wikipedia.org\/wiki\/IOPS\" target=\"_blank\">IOPS<\/a> for <em>each entity<\/em> aggregated per day<\/td>\n<td valign=\"top\" width=\"70\">trend <\/p>\n<p>analysis<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">DailyMemoryUsage<\/td>\n<td valign=\"top\" width=\"421\">Contains the average memory usage for <em>each entity<\/em> aggregated per day<\/td>\n<td valign=\"top\" width=\"70\">trend <\/p>\n<p>analysis<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"108\">SystemEvents<\/td>\n<td valign=\"top\" width=\"421\">Contains all informational events (as shown in Monitor &gt; Events)<\/td>\n<td valign=\"top\" width=\"70\">information<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#160;<\/p>\n<h5><font style=\"font-weight: bold\">Configuration<\/font><\/h5>\n<p>Getting an overview of the configuration can be useful, especially when the configuration is not working as expected or when manual cleanup activities are required.<\/p>\n<p>The following tables can be interesting:<\/p>\n<table cellspacing=\"0\" cellpadding=\"1\" width=\"601\" border=\"1\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"114\"><strong>Table<\/strong><\/td>\n<td valign=\"top\" width=\"485\"><strong>Content<\/strong><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">cluster<\/td>\n<td valign=\"top\" width=\"485\">Contains a record for each Session Cluster (new in ILIO 4) showing the internal clustername and the ID of the replication host (<strong>persistent_entity_id<\/strong>)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">clusterHealth<\/td>\n<td valign=\"top\" width=\"485\">Should show the health of the session cluster, but not sure how it is stored (info needed)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">Datastores<\/td>\n<td valign=\"top\" width=\"485\">Contains the datastores created by the Atlantis ILIO center machine for <em>each entity <\/em>including the ID of the hypervisor (from the <strong>[Hypervisors] <\/strong>table) and the name, address and path of the datastore<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">diskless_info<\/td>\n<td valign=\"top\" width=\"485\">Contains the devicename + size of ramdisk&#160; and if compression is enabled for <em>each entity<\/em> running ILIO diskless <\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">disks<\/td>\n<td valign=\"top\" width=\"485\">Contains the specifications (mount point, device, capacity, mount type and deduplication) of each disk <em>per entity<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">entities<\/td>\n<td valign=\"top\" width=\"485\">Contains a record for each Atlantis ILIO session- and replication hosts (as explained above)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">entitiesMapping<\/td>\n<td valign=\"top\" width=\"485\">Contains the mapping between the persistent entity (aka the replication host) and the diskless entity (aka the session host)<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">entity_nic_info<\/td>\n<td valign=\"top\" width=\"485\">Contains the specification (eth<em>x<\/em>, ip, netmask, gateway and configtype) for <em>each entity<\/em><\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">hypervisor_objects<\/td>\n<td valign=\"top\" width=\"485\">Contains the hypervisor objects (like group, datacenter, domain and VMs) related to the entities <\/p>\n<p><em>Only the topology of the Atlantis ILIO VMs is stored in the database<\/em><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"114\">Hypervisors<\/td>\n<td valign=\"top\" width=\"485\">Contains the specification of the registered hypervisor as specified in Setup &gt; Hypervisor<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#160;<\/p>\n<h2><font style=\"font-weight: bold\">Comments<\/font><\/h2>\n<p><a href=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Comments-that-would-be-great.png\"><img loading=\"lazy\" decoding=\"async\" title=\"\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 0px 5px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"So yeah, if you could leave a comment if you have something to say. That would be great\" align=\"right\" src=\"https:\/\/ingmarverheij.com\/wp-content\/uploads\/2013\/04\/Comments-that-would-be-great_thumb.png\" width=\"154\" height=\"129\" \/><\/a>In this article I\u2019ve shown how one can connect to the internal database of an Atlantis ILIO Center machine (called <strong>ibert<\/strong>), what information is stored in the database and how this might help you.<\/p>\n<p>If you have any questions or remarks don\u2019t hesitate to leave a comment below. Especially if you have additional information about the content of the database, yeahh\u2026.that would great!<br \/>\n    <\/p>\n<p>    <br clear=\"all\" \/><\/p>\n<p><em><strong><\/strong><\/em><\/p>\n<p><em><strong>Disclaimer<\/strong>: Changing the configuration of the machine and\/or database could result in losing support from the vendor. I take <strong>no<\/strong> responsibility if you break the system and\/or loose support. <\/em><\/p>\n<\/li>\n","protected":false},"excerpt":{"rendered":"<p>The content of a products database can tell you a lot about the inner working of that product. The Atlantis ILIO database stores the configuration and resource usage of the different components. Since I\u2019m building an environment including Atlantis ILIO I thought it would be good to learn about the internals of it. Having to [&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],"tags":[558,560,559],"class_list":["post-4861","post","type-post","status-publish","format-standard","hentry","category-atlantis-ilio","tag-atlantis","tag-hacking","tag-ilio"],"_links":{"self":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4861","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=4861"}],"version-history":[{"count":6,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4861\/revisions"}],"predecessor-version":[{"id":5030,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/posts\/4861\/revisions\/5030"}],"wp:attachment":[{"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/media?parent=4861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/categories?post=4861"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ingmarverheij.com\/en\/wp-json\/wp\/v2\/tags?post=4861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}