LC provides the /usr/gapps file system for user-developed and supported applications on LC systems. There is a single /usr/gapps file system globally available to all LC systems within a given zone or network (three on OCF and one on SCF). This global file system replaces the previous /usr/apps file systems that were local to each production system or cluster.
There are three instances of /usr/gapps on the OCF:
Collaboration Zone (CZ) | Infrastructure Zone (shared by CZ and RZ) |
Restricted Zone (RZ) |
---|---|---|
CZ /usr/gapps | Shared /collab/usr/gapps | RZ /usr/gapps |
The shared /collab/usr/gapps file system will be mounted as read-write in the RZ and read-only in the CZ. The intent is to provide a means for code developers on the RZ to build content that can be placed in the shared /collab/usr/gapps. CZ users can then access the content from CZ computing resources.
CZ users can access the CZ /usr/gapps, which is mounted on CZ machines, as well as the shared /collab/usr/gapps file system. Likewise, RZ users have access to RZ /usr/gapps, which is mounted on RZ computing resources, as well as the shared /collab/usr/gapps file system.
The /usr/gapps file systems are provided on fast and highly reliable Network Appliance machines and are backed up nightly. In addition, there are 48 hours of online backups (see news online.backup for further information).
What about /usr/apps paths?
Despite the fact that the local /usr/apps file systems are gone, /usr/apps can still be used in path names. Old /usr/apps path names continue to work and standardized system-independent path naming can be used across LC machines. This has been done by making /usr/apps a meaningful link into the /usr/gapps file system, as described in the next section.
The links that allow continued use of /usr/apps paths are permanent.
How is /usr/gapps structured to allow different binaries across multiple platforms in one file system?
An environment variable called SYS_TYPE is defined for each user upon login that identifies the current type of platform (operating system and identifying information such as major operating system release or architecture) so that classes of machines that are able to share binaries may be identified.
The values for SYS_TYPE on some LC systems are:
The above table does not offer an exhaustive list of TOSS3 or TOSS4 systems.
What about other /usr/apps subdirectories (bin, data, include, lib)?
The /usr/gapps file system has a directory for each SYS_TYPE value. /usr/apps on each system or cluster is a link to /usr/gapps/$SYS_TYPE:
/usr/apps/ → usr/gapps/$SYS_TYPE
Note: Arrow (→)signifies symbolic link in this document.
The /usr/gapps/$SYS_TYPE directory contains links that point each code name to the appropriate file or directory. In most cases, the appropriate directory for each code is a $SYS_TYPE directory within the /usr/gapps tree for that code. You are able to create whatever links you need within the /usr/gapps/$SYS_TYPE directories. You are not able to delete a link created by anyone else. Only links (no files or directories) are allowed within the /usr/gapps/$SYS_TYPE directories. Any files or directories created within the SYS_TYPE directories will be periodically removed.
/usr/apps/code → /usr/gapps/$SYS_TYPE/code → /usr/gapps/code/$SYS_TYPE
Example: For a user application code noted as code, the recommended structure for code is a /usr/gapps/code directory with a subtree for each relevant SYS_TYPE value and a subtree for each platform-independent directory.
What happens when new SYS_TYPEs are created?
A new SYS_TYPE is created when it is determined that code developers may need to create and maintain a new set of binary files for an updated or different operating system or machine architecture. When a new SYS_TYPE is created for a machine, the /usr/gapps/$SYS_TYPE directory (and /usr/gapps/bin/$SYS_TYPE, etc.) will be created empty; code developers are responsible for populating the directories with links to code versions specific to the new SYS_TYPE.
Would you like to create a /usr/gapps directory?
If you would like to share an application with other users in a /usr/gapps directory, here are the steps to follow. In these directions, the application to be shared is noted as code.
- Submit a /usr/gapps Request form to request a /usr/gapps directory. The form requires Computer Coordinator or Principal Investigator signature.
- Determine who will be sharing code and how access will be allowed. On the OCF, world ("other") access is not allowed unless a UNIX World Permissions Exemption form has been completed. This form requires Associate Director signature. Access is usually allowed to codes by Unix user groups. If the group you need does not exist, you may request the creation of the group by submitting the request online via the LC Identity Management System.
- Once /usr/gapps/code is created, you may structure it as you chose, but LC recommends a subdirectory for each SYS_TYPE for which you will be maintaining the code, and subdirectories for platform-independent files such as documentation and scripts.
- To make the /usr/apps/code pathname meaningful:
For each platform on which code will be used, email lc-hotline@llnl.gov and request creation of a symbolic link from /usr/apps/code to the correct area within /usr/gapps/code.
Remember that /usr/apps is a symbolic link to /usr/gapps/$SYS_TYPE on each platform. The LC Hotline will not create any files or directories (other than the symbolic link) in the /usr/apps directory. Any non-links created in this directory will be removed. - If you wish to add files or symbolic links to the bin, data, lib or include subdirectories of /usr/gapps, you will need to specify those additional directions on the usr_gapps form. You will not be able to write into those directories.
You may want to place files or links into /usr/gapps/bin or /usr/apps/bin (which is linked to /usr/gapps/bin/$SYS_TYPE) so that users will find code in their default path. User default paths include /usr/apps/bin and /usr/gapps/bin. - Call the LC-Hotline for assistance in planning the structure of your application directory or for assistance with any of these steps.
SYS_TYPEs not currently in use at LC
Platform | SYS_TYPE Value |
---|---|
ASC IBMs 32 bit at AIX version 4 | aix_4 |
ASC IBMs 64 bit at AIX version 4 long long |
aix_4ll |
ASC IBMs 32 bit at AIX version 5 | aix_5 |
ASC IBMs 32/64 bit (default is 64) at AIX version 5 | aix_5_64 |
ASC IBMs 32/64 bit (no default) at AIX version 5 long long |
aix_5_ll |
ASC IBMs 32/64 bit (default is 64) at AIX version 5 federation switch |
aix_5_64_fed |
Compaqs at tru64 version 4 | tru64_4 |
Compaqs at tru64 version 5 | tru64_5 |
Compaqs at tru64 version 4 sierra cluster |
tru64_4sc |
Compaqs at tru64 version 5 sierra cluster |
tru64_5sc |
Compaq at Red Hat 7.1 intel 32-bit, myrinet |
redhat_7_ia32_myri |
CORAL 1 Early Access systems on Power8 nodes | blueos_3_ppc64le_ib |
Fedora Core 2 on X86 processors with 32 bit address version of fedora | fedora_2_ia32 |
Fedora Core 3 on X86 processors with 32 bit address version of fedora | fedora_3_ia32 |
Fedora Core 4 on X86 processors with 32 bit address version of fedora | fedora_4_ia32 |
Fedora Core 2 on X86 processors with 64 bit address version of fedora | fedora_2_x86_64 |
Fedora Core 3 on X86 processors with 64 bit address version of fedora | fedora_3_x86_64 |
Fedora Core 4 on X86 processors with 64 bit address version of fedora | fedora_4_x86_64 |
Linux cluster at Red Hat 7.1 alpha |
redhat_7_a |
Linux cluster at Red Hat 7.1 intel 32-bit |
redhat_7_ia32 |
Linux clusters at Red Hat 7.1 intel 32-bit, quadrics switch |
redhat_7_ia32_qsw |
Linux clusters at Red Hat 7.3 intel 32-bit |
redhat_7a_ia32 |
Linux clusters at Red Hat 7.3 intel 32-bit, quadrics switch |
redhat_7a_ia32_qsw |
Linux clusters at SuSE Linux Enterprise 9 power pc 64-bit |
sles_9_ppc64 |
Linux clusters at SuSE Linux Enterprise 10 power pc 64-bit |
sles_10_ppc64 |
Linux clusters at CHAOS 2 | chaos_2_ia32 chaos_2_ia32_elan3 chaos_2_ia64_elan4 |
Linux clusters at CHAOS 3 | chaos_3_x86 chaos_3_x86_64 chaos_3_x86_64_ib chaos_3_x86_elan3 chaos_3_x86_elan4 |
Linux clusters at CHAOS 4 | chaos_4_x86_64 |
Linux clusters at CHAOS 4 x86 64-bit, InfiniBand switch |
chaos_4_x86_64_ib |
Linux clusters at CHAOS 5 | chaos_5_x86_64 |
Linux clusters at CHAOS 5 x86 64-bit, InfiniBand switch |
chaos_5_x86_64_ib |
Linux at Redhat 8 intel 32-bit |
redhat_8_ia32 |
Linux at Redhat 9 intel 32-bit |
redhat_9_ia32 |
Linux at Redhat Enterprise 3 x86 64-bit |
rhe_3_x86_64 |
SGI visualization server | irix_6.5_64 |
Mac OS X 10.2 | macos_10 |
Mac OS X 10.3 | macos_10a |
Mac OS X 10.4 | macos_104 |
Solaris 8 at 32-bit | solaris_8_s32 |
Solaris 8 at 64-bit | solaris_8_s64 |
If you have any questions, contact the LC Hotline—send e-mail to lc-hotline@llnl.gov or phone (925) 422-4531.