Discussion
· Nov 11

Which is the "right" installation directory for IRIS on Linux?

The IRIS Installation Guide for Linux, Installation Directory section, says "Do not choose the /home directory, any of its subdirectories, or the /usr/local/etc/irissys directory." but there are no suggestions or any default.

What are your opinions on this? For example, I see that IRIS in a Docker container is installed in /usr/irissys. I'm wondering why that directory was chosen.

The official Linux filesystem docs say:

  • /usr is the second major section of the filesystem. /usr is shareable, read-only data. That means that /usr should be shareable between various FHS-compliant hosts and must not be written to. Any information that is host-specific or varies with time is stored elsewhere. Large software packages must not use a direct subdirectory under the /usr hierarchy.
  • The /usr/local hierarchy is for use by the system administrator when installing software locally. It needs to be safe from being overwritten when the system software is updated. It may be used for programs and data that are shareable amongst a group of hosts, but not found in /usr.
  • /opt is reserved for the installation of add-on application software packages. A package to be installed in /opt must locate its static files in a separate /opt/<package> or /opt/<provider> directory tree, where <package> is a name that describes the software package and <provider> is the provider's LANANA registered name.

From that, it seems like /usr/local/InterSystems/<instance> or /opt/InterSystems/<instance> would be "right." To me that seems better than /usr/irissys, /usr/irissys1, /usr/irissys2, etc.

Discussion (4)1
Log in or sign up to continue

Some thoughts:
Install it outside the rootvg so not in /usr or /opt
Don't bury it deep in a path. Something like /[application]/[instance]/irissys for example
Data in a separate volume group to enable snapshots and the external freeze.
Journals in a separate volume group to enable snapshots and the external freeze.
Keep instance names unique unless it is a failover member or DR async

Look at Storage Planning
 

Where you install IRIS depends on your use case. E.g. if you are "only" developing, no real user load the disc layout you would use is markedly different to a production system with 1000s concurrent connections.

so just a couple of thoughts on disk layout:

Install IRIS and every of its components in a dedicated folder e.g. /iris . Reasoning behind this is a single folder is easier to be excluded from any e.g. AntiMalware scanner that could wreak havoc on a database backend. 

In that subfolder separate data, file store, journals and executables.

Reasoning: For a high-performance system each of above has a different i/o workload and a different performance profile. e.g. while journals are nearly 100% sequential writes, database executable are a mix of read and writes.  Database files are also a mix of read and writes but usually much bigger block sizes. Also different filesystems have different performance profiles.

So taking above in account also following best practises for mounts and i/o workload separation:

root (/)
/{instancename}/iris -> instance installation folder
/{instancename}/journalPrimary
/{instancename}/journalSecondary
/{instancename}/database
/{instancename}/filestore
/{instancename}/webfiles

Based on above you can mount volumes depending on workload sitting on different physical disks/lvms also for high performance environment you might want to separate the disc on multiple scsi controllers. So each controller only served a specific i/o profile.

Also to note IRIS2021 changed the default disc i/o behaviour from use OS file cache to direct unbuffered i/o. Which again means separate IRIS workloads from any OS workload.