NERSCPowering Scientific Discovery Since 1974

Global Home Filesystem

Overview

Global home directories (or "global homes") provide a convenient means for a user to have access to dotfiles, source files, input files, configuration files, etc., regardless of the platform the user is logged in to. 

Quotas, Performance, and Usage

Default global home quotas are 40 GB and 1,000,000 inodes. Quota increases in global homes are approved only in extremely unusual circumstances; users are encouraged to use the various scratch, project, and HPSS storage systems for large data.  If you believe you have a legitimate need for a larger global home quota, please fill out the Disk Quota Change Request Form.

Performance of global homes is optimized for small files. This is suitable for compiling and linking executables, for example. Home directories are not intended for large, streaming I/O. User applications that depend on high-bandwidth for streaming large files should run in Scratch (Global or Local) or Project.  Please do not run such jobs in your home directory.

Wherever possible, you should refer to your home directory using the environment variable $HOME. The absolute path to your home directory (e.g., /u4/elvis/) may change, but the value of $HOME will always be correct.

For security reasons, you should never allow "world write" access to your $HOME directory or your $HOME/.ssh directory. NERSC scans for such security weakness, and, if detected, will change the permissions on your directories.

Purging

Files in global homes are not subject to purging.

Snapshots

Global homes use a snapshot capability to provide users a seven-day history of their home directories.  This allows you to restore lost files, for example.  Every directory and sub-directory in global homes contains a ".snapshot" entry.  This entry is not a typical directory.  It is invisible; that is, the "ls" command will not display it, even with the "-a" option.  Nor will the "find" command be able to find it.  However, its contents are visible.  This is best illustrated with an example.

% ls -al
total 24
drwxrwxr-x 2 dpturner dpturner 4096 Dec 15  2013 .
drwxrwxr-x 5 dpturner dpturner 4096 Dec 20  2013 ..
-rw-rw-r-- 1 dpturner dpturner  115 Dec 15  2013 chkenv.pbs
-rw-rw-r-- 1 dpturner dpturner  182 Dec 15  2013 chkenv_mpi.pbs

In the above directory listing, note that ".snapshots" is not visible.  Next, I "accidentally" remove a file:

% rm chkenv.pbs
% ls -al
total 20
drwxrwxr-x 2 dpturner dpturner 4096 Feb  9 16:44 .
drwxrwxr-x 5 dpturner dpturner 4096 Dec 20  2013 ..
-rw-rw-r-- 1 dpturner dpturner  182 Dec 15  2013 chkenv_mpi.pbs

Realizing my error, I look in .snapshots:

% ls -F .snapshots
2015-02-01/  2015-02-02/  2015-02-03/  2015-02-04/  2015-02-05/  2015-02-06/  2015-02-07/  2015-02-08/

Today is February 9 2015, so I look in the entry for February 8:

% date
Mon Feb  9 16:45:18 PST 2015
% ls -al .snapshots/2015-02-08
total 17
drwxrwxr-x  2 dpturner dpturner 4096 Dec 15  2013 .
dr-xr-xr-x 10 root     root     4096 Feb  8 22:03 ..
-rw-rw-r--  1 dpturner dpturner  115 Dec 15  2013 chkenv.pbs
-rw-rw-r--  1 dpturner dpturner  182 Dec 15  2013 chkenv_mpi.pbs

Next, I copy (using the "-p" option to preserve the original file's time stamp) yesterday's version of the missing file back to its original location:

% cp -p .snapshots/2015-02-08/chkenv.pbs .
% ls -al
total 20
drwxrwxr-x 2 dpturner dpturner 4096 Feb  9 16:48 .
drwxrwxr-x 5 dpturner dpturner 4096 Dec 20  2013 ..
-rw-rw-r-- 1 dpturner dpturner  115 Dec 15  2013 chkenv.pbs
-rw-rw-r-- 1 dpturner dpturner  182 Dec 15  2013 chkenv_mpi.pbs

Note that you cannot delete or create anything in a snapshot; you can only copy items out of a snapshot.

Backup/Restore

Global homes are backed up to HPSS on a regular basis.  If you require a restoration of lost data that cannot be accomplished via the snapshots capability, please contact NERSC Consulting with pathnames and timestamps of the missing data.  Such restore requests may take a few days to complete.

IMPORTANT: All NERSC users should back up important files to HPSS on a regular basis.  Ultimately, it is your responsiblity to protect yourself from data loss.

Usage Across Multiple Platforms

Many users maintain application codes in their home directories. This usually consists of a set of source files, configuration files and makefiles or scripts, object files and libraries, and executable files. In addition, there might be sample input and output files for testing.

Global homes provide a mechanism where users can maintain a single copy of files that are machine independent (source files, input files, etc). Users should arrange that machine-dependent files (object files, executables, etc) are placed in separate directories. One obvious way is to create subdirectories in the global home directory, each named after a particular NERSC system:

% ls -F $HOME 
carver/     edison/     hopper/

Another way is to make a directory per application and make specific system sub-directories:

% ls -F $HOME/astro_application/ 
carver_build/   edison_build/   hopper_build/