Difference between revisions of "MARS"

From oldwiki.scinet.utoronto.ca
Jump to navigation Jump to search
Line 3: Line 3:
 
(Pilot usage phase to start in Jun/2011 with a select group of users. Deployment and configuration are still a work in progress)
 
(Pilot usage phase to start in Jun/2011 with a select group of users. Deployment and configuration are still a work in progress)
  
<span style="color:#CC0000">'''NOTE: PLEASE TAKE THE TIME TO AT LEAST READ THIS PAGE IN FULL.'''</span>
+
The SciNet Massive Archive and Retrieval System (MARS) is a tape backed hierarchicle storage management system that will provide a significant portion of the allocated storage space at SciNet. It is a repository for archiving data that is not being actively used. Data will be returned to the active GPFS filesystem when it is needed.  
  
  
The '''MARS''' deployment at SciNet is an effort to offer a more efficient way to offoad/archive data from the most active file systems (scratch and project) than our current TSM-HSM solution, still without having to deal directly with the tape library or "tape commands"
+
Migration of data into and out of the repository will be under the control of the user who will interact with system using one or both of the
 +
following utilities:
 +
* HSI is a client with an ftp-like interface will be used to archive and retrieve large files. It is also useful for browsing the contents of the repository.
 +
* HTAR is a utility that creates tar format archives resident in the archive. It also creates a separate index file that can be accessed quickly.
  
The system is a combination of the underlaying hardware infrastructure, 3 software components, ''HPSS'', ''HSI'' and ''HTAR'', plus some environment customization.
 
  
* '''[http://www.hpss-collaboration.org/index.shtml HPSS]''': the main software component, best described as a very scalable engine running on a "blackbox" made of disks and tapes, to support the Archive and Retrieve operations. The ''High Performance Storage System'' is the result of over a decade of collaboration among five Department of Energy laboratories and IBM, with significant contributions by universities and other laboratories worldwide. For now the best way for SciNet users to [https://support.scinet.utoronto.ca/wiki/index.php/HPSS_compared_to_HSM-TSM understand HPSS] may be to compare it with our existing HSM-TSM implementation.
+
User access will be controlled by the job scheduling system of the GPC. An interactive session can be requested that will allow a user to list, rearrange or remove files with the HSI client. Transfer of data into or out of the archive is expected to be scripted and submitted as a batch job.
  
* '''[http://www.mgleicher.us/GEL/hsi/ HSI]''': it may be best understood as a supercharged ftp like interface, designed by [http://www.mgleicher.us Gleicher Enterprises] to act as a front-end for HPSS, gathering some of the best features you would encounter on a shell, rsync and GridFTP (and a few more). It enables users to transfer whole directory trees from /project and /scratch, therefore freeing up space. HSI is most suitable when those directory trees do not contain too many small files to start with, or when you already have a series of tarballs.
 
  
* '''[http://www.mgleicher.us/GEL/htar/ HTAR]''': similarly, htar is sort of a "super-tar" application, also designed by [http://www.mgleicher.us/ Gleicher Enterprises] to interact with HPSS, allowing users to build and automatically transfer tarballs to HPSS on the fly. HTAR is most suitable to aggregate whole directory trees. When HTAR creates the TAR file, it also builds an index file, with a ".idx" suffix added, which is stored in the same directory as the TAR file.
+
=== Guidelines ===
 +
* HPSS storage space is provided on tape -- a media that is not suited for storing small files. Files smaller than ~100MB should be grouped into archive files with tar or htar.
 +
* The maximum size of a file that can be transferred into the archive is 1TB. However, optimal performance is obtained with file sizes <= 100 GB.
 +
* Make sure to check the application return code and check the log file for errors after all data transfers.
 +
* '''Pilot users:''' <span style="color:#CC0000">DURING THE TESTING PHASE DO NOT DELETE THE ORIGINAL FILES FROM /scratch OR /project</span>
  
=== '''General guide lines''' ===
+
=== Access Through the Queue System  ===
* IN/OUT transfers to HPSS using HSI is bound to maximum of about '''4 files/second'''. Therefore do not attempt to transfer directories with too many small files inside. Not only it will take "forever", it will induce a lot of ware and tear on the library's robot mechanism as well as the tapes themselves in case of recalls. Instead use HTAR, so the files are aggregated while being sent to HPSS
+
All access to the archive system is through the queue system. To get an interactive session and use the HSI client, use the -I option of qsub.
* The maximum size that an individual file can have inside an HTAR is '''68GB'''. Please be sure to identify and "fish out" those files that are larger than 68GB from the directories and transfer them with  HSI
+
== Interactive Access ==
* The maximum size of a tar file that HPSS will take is '''1TB'''. Please do not generate tarballs that large.
+
<pre>
* The maximum number of files in a htar is '''1 million'''. Please, break-up your htar segments as required.
+
gpc04 $ qsub -q archive -I
* These guide lines may be strict, but for as long as they are followed the system will perform reasonably well
+
hpss-archive01:~ $ hsi ls
 +
******************************************************************
 +
*   Welcome to the Massive Archive and Restore System @ SciNet  *
 +
*                                                                *
 +
*       Contact Information: support@scinet.utoronto.ca        *
 +
*  NOTE: do not transfer SMALL FILES with HSI. Use HTAR instead  *
 +
******************************************************************
 +
[HSI]/archive/group/user->
 +
</pre>
  
=== '''Performance considerations''' ===
+
== Scripted File Transfers ==
* Files are kept on disk-cache for as long as possible, so as to avoid tape operations during recalls.
+
File transfers in and out of the archive should be scripted into jobs and submitted to the archive queue.
* Average transfer rates with '''HSI'''
+
<pre>
  No small files, average > 10MB/file:
+
#!/bin/env bash
  * write: 100-130MB/s
+
#PBS -q archive
  * read:  450-600MB/s (IF no recall from tapes required)
+
#PBS -N hsi_file_transfer
 
+
#PBS -j oe
* <span style="color:#CC0000">'''NOTE: do not use HSI with small files (< 1MB/file). It would take over 1 week to transfer 1 TB. If we find that you are abusing the system we'll suspend your privileges'''</span>
+
#PBS -o hpsslogs/$PBS_JOBNAME.$PBS_JOBID
  
* Average transfer rates with '''HTAR'''
+
/usr/local/bin/hsi  -v <<EOF
  Average files size > 1MB
+
cput -p /scratch/$USER/workarea/finished-job1.tar.gz : finished-job1.tar.gz
  * write: 120MB/s
+
EOF
  * read:  480MB/s (IF no recall from tapes required)
+
</pre>
 +
if [ ! $? == 0 ];then
  
  Not too many small files, average > 100KB/file:
 
  * write: 64MB/s
 
  * read:  170MB/s (IF no recall from tapes required)
 
  
* Average transfer rates from '''tapes''', if stage is required (add to the above estimates)
+
=== '''Using HSI''' ===
  * read: 80-100MB/s per tape drive.
 
  * maximum of 4 drives may be used per hsi/htar session
 
 
 
=== '''Quick Reference''' ===
 
 
 
* Users must request authorization to access MARS@SciNet. To run HSI or HTAR with HPSS please login to the '''gpc-archive01''' node.
 
* To browse the contents of your HPSS archive just type '''hsi''' on a shell to get the ''hsi prompt''. Then use simple commands such as '''ls''', '''pwd''', '''cd''' to navigate your way around. You may also use [https://support.scinet.utoronto.ca/wiki/index.php/HSI_help '''help'''] from the hsi prompt.
 
* Files are organized inside HPSS in the same fashion as in /project. Users in the same group have read permissions to each other's archives.
 
<pre>
 
[HSI]/archive/<group>/<user>
 
</pre>
 
* '''Pilot users:''' <span style="color:#CC0000">DURING THE TESTING PHASE DO NOT DELETE THE ORIGINAL FILES FROM /scratch OR /project</span>
 
  
=== '''Using HSI''' ===
+
* Link to docs at Gleicher Ent.
  
 
* Interactively put a subdirectory ''LargeFiles'' and all its contents recursively. You may use '-u' option to resume a previously disrupted session (as rsync would do).
 
* Interactively put a subdirectory ''LargeFiles'' and all its contents recursively. You may use '-u' option to resume a previously disrupted session (as rsync would do).
Line 147: Line 146:
 
For more details please check the '''[http://www.mgleicher.us/GEL/htar/ HTAR - Introduction]''' or the '''[http://www.mgleicher.us/GEL/htar/htar_man_page.html HTAR Man Page]''' online
 
For more details please check the '''[http://www.mgleicher.us/GEL/htar/ HTAR - Introduction]''' or the '''[http://www.mgleicher.us/GEL/htar/htar_man_page.html HTAR Man Page]''' online
  
=== '''Using the batch queue''' ===
+
=== '''More detailed examples''' ===
 
[[GPC_Quickstart|Submitting_A_Batch_Job]]
 
[[GPC_Quickstart|Submitting_A_Batch_Job]]
 
* gpc-archive01 is part of the gpc queuing system under torque/moab
 
* gpc-archive01 is part of the gpc queuing system under torque/moab

Revision as of 14:54, 8 June 2011

Massive Archive and Retrieval System

(Pilot usage phase to start in Jun/2011 with a select group of users. Deployment and configuration are still a work in progress)

The SciNet Massive Archive and Retrieval System (MARS) is a tape backed hierarchicle storage management system that will provide a significant portion of the allocated storage space at SciNet. It is a repository for archiving data that is not being actively used. Data will be returned to the active GPFS filesystem when it is needed.


Migration of data into and out of the repository will be under the control of the user who will interact with system using one or both of the following utilities:

  • HSI is a client with an ftp-like interface will be used to archive and retrieve large files. It is also useful for browsing the contents of the repository.
  • HTAR is a utility that creates tar format archives resident in the archive. It also creates a separate index file that can be accessed quickly.


User access will be controlled by the job scheduling system of the GPC. An interactive session can be requested that will allow a user to list, rearrange or remove files with the HSI client. Transfer of data into or out of the archive is expected to be scripted and submitted as a batch job.


Guidelines

  • HPSS storage space is provided on tape -- a media that is not suited for storing small files. Files smaller than ~100MB should be grouped into archive files with tar or htar.
  • The maximum size of a file that can be transferred into the archive is 1TB. However, optimal performance is obtained with file sizes <= 100 GB.
  • Make sure to check the application return code and check the log file for errors after all data transfers.
  • Pilot users: DURING THE TESTING PHASE DO NOT DELETE THE ORIGINAL FILES FROM /scratch OR /project

Access Through the Queue System

All access to the archive system is through the queue system. To get an interactive session and use the HSI client, use the -I option of qsub.

Interactive Access

gpc04 $ qsub -q archive -I
hpss-archive01:~ $ hsi ls
******************************************************************
*   Welcome to the Massive Archive and Restore System @ SciNet   *
*                                                                *
*        Contact Information: support@scinet.utoronto.ca         *
*  NOTE: do not transfer SMALL FILES with HSI. Use HTAR instead  *
******************************************************************
[HSI]/archive/group/user->

Scripted File Transfers

File transfers in and out of the archive should be scripted into jobs and submitted to the archive queue.

#!/bin/env bash
#PBS -q archive
#PBS -N hsi_file_transfer
#PBS -j oe
#PBS -o hpsslogs/$PBS_JOBNAME.$PBS_JOBID

/usr/local/bin/hsi  -v <<EOF
cput -p /scratch/$USER/workarea/finished-job1.tar.gz : finished-job1.tar.gz
EOF

if [ ! $? == 0 ];then


Using HSI

  • Link to docs at Gleicher Ent.
  • Interactively put a subdirectory LargeFiles and all its contents recursively. You may use '-u' option to resume a previously disrupted session (as rsync would do).
    hsi <RETURN>
    [HSI] prompt
    [HSI] mput -R -u LargeFiles
  • Same as above, but from a shell
    hsi "prompt; mput -R -u LargeFiles"
  • Interactively descend into the Source directory and move all files which end in ".h" into a sibling directory (ie, a directory at the same level in the tree as "Source") named "Include":
    hsi <RETURN>
    [HSI] cd Source
    [HSI] mv *.h ../Include
  • Delete all files beginning with "m" and ending with 9101 (note that this is an interactive request, not a one-liner request, so the wildcard path does not need quotes to preserve it):
    hsi <RETURN>
    [HSI] delete m*9101
  • Interactively delete all files beginning with H and ending with a digit, and ask for verification before deleting each such file.
    hsi <RETURN>
    [HSI] mdel H*[0-9]
  • From a shell, save your local files that begin with the letter "c" (let the UN*X shell resolve the wild-card path pattern in terms of your local files by not enclosing it in quotes):
    hsi mput c*
  • From a shell, get all files in the subdirectory subdirA which begin with the letters "b" or "c" (surrounding the wildcard path in single quotes prevents shells on UNIX systems from processing the wild card pattern):
    hsi get ’subdirA/[bc]*’
  • Save a "tar file" of C source programs and header files:
   tar cf - *.[ch] | hsi put - : source.tar

Note: the ":" operator which separates the local and HPSS pathnames must be surrounded by whitespace (one or more space characters)

  • Restore the tar file source kept above and extract all files:
    hsi get - : source.tar | tar xf -
  • The commands below are equivalent (the default HSI directory placement is /archive/<group>/<user>/):
    hsi put source.tar
    hsi put source.tar : /archive/<group>/<user>/source.tar

Using HTAR

  • To write the file1 and file2 files to a new archive called files.tar in the default HPSS home directory, enter:
    htar -cf files.tar file1 file2
OR
    htar -cf /archive/<group>/<user>/files.tar file1 file2
  • To write a subdirA to a new archive called subdirA.tar in the default HPSS home directory, enter:
    htar -cf subdirA.tar subdirA
  • To write the file1 and file2 files to a new archive called files.tar on a remote FTP server called "blue.pacific.llnl.gov", creating the tar file in the user’s remote FTP home directory, enter (bonus HTAR functionality to sites outside SciNet):
    htar -cf files.tar -F blue.pacific.llnl.gov file1 file2
  • To extract all files from the project1/src directory in the Archive file called proj1.tar, and use the time of extraction as the modification time, enter:
    htar -xm -f proj1.tar project1/src
  • To display the names of the files in the out.tar archive file within the HPSS home directory, enter (the out.tar.idx file will be queried):
    htar -vtf out.tar

For more details please check the HTAR - Introduction or the HTAR Man Page online

More detailed examples

Submitting_A_Batch_Job

  • gpc-archive01 is part of the gpc queuing system under torque/moab
  • Currently it is setup to share the node with up to 12 jobs at one time
  • default parameters ( -l nodes=1:ppn=1,walltime=48:00:00)
showq -w class=archive

qsub -I -q archive
  • sample data offload
#!/bin/bash

# This script is named: data-offload.sh

#PBS -q archive
#PBS -N offload
#PBS -j oe
#PBS -o hpsslogs/$PBS_JOBNAME.$PBS_JOBID

date

# individual tarballs already exist
/usr/local/bin/hsi  -v <<EOF
mkdir put-away-and-forget
cd put-away-and-forget
put /scratch/$USER/workarea/finished-job1.tar.gz : finished-job1.tar.gz
put /scratch/$USER/workarea/finished-job2.tar.gz : finished-job2.tar.gz
EOF

# create a tarball on-the-fly of the finished-job3 directory
/usr/local/bin/htar -cf finished-job3.tar /scratch/$USER/workarea/finished-job3/

date
  • sample data list
  - Very painful without interactive browsing
      -Tentative solution: dump all user files to log file and use that as file index
#!/bin/bash

# This script is named: data-list.sh

#PBS -q archive
#PBS -N hpss_dump
#PBS -j oe
#PBS -o hpsslogs/$PBS_JOBNAME.$PBS_JOBID

date
echo ===========
echo
/usr/local/bin/hsi  -v <<EOF
ls -lUR
EOF
echo
echo ===========
date
  • sample data restore
#!/bin/bash

# This script is named: data-restore.sh

#PBS -q archive
#PBS -N restore
#PBS -j oe
#PBS -o hpsslogs/$PBS_JOBNAME.$PBS_JOBID

date

mkdir -p /scratch/$USER/restored-from-MARS

/usr/local/bin/hsi  -v << EOF
get /scratch/$USER/restored-from-MARS/Jan-2010-jobs.tar.gz : forgotten-from-2010/Jan-2010-jobs.tar.gz
get /scratch/$USER/restored-from-MARS/Feb-2010-jobs.tar.gz : forgotten-from-2010/Feb-2010-jobs.tar.gz
EOF

cd /scratch/$USER/restored-from-MARS
/usr/local/bin/htar -xf finished-job3.tar

date
  • sample analysis (depends on previous data-restore.sh execution)
gpc04 $ qsub $(qsub data-restore.sh | awk -F '.' '{print "-W depend=afterok:"$1}') job-to-work-on-restored-data.sh