StrongLink-to-Versity#
file version: 9 Jul 2026
Overview#
This page is meant for users who wish to quickly update their archival/retrieval scripts so that they work with the new HSM software by Versity. Getting Started provides a broader introduction.
slk is replaced by atlas which is the ATLAS command line interface. Running only atlas starts an interactive shell whereas running atlas <command> just executes the command without entering the interactive shell. The latter behaves similar to slk.
Additionally, Versity is accessible via the ATLAS web interface which has the same features as the atlas CLI: https://tapearchive.dkrz.de (available from calendar week 29 onwards).
Important changes and new features are:
all paths have the prefix
/hsm:/hsm/arch,/hsm/double, …automatic packing of small files (invisible to users); but, 60 000 files of 1 MB each should still be packed in advance
ATLAS can read directly from
/workand/scratch(archival). It can write directly to/scratch(retrieval)async background data transfer via ATLAS: no need for users to run a long SLURM job for archivals or retrievals; each transfer has its own job id; please check job status:
atlas jobs get <job id>integrity check of data transfers (copy and move) via
sha1checksums by defaultvery efficient internal organization of the tape access: no need to sort retrieval requests by tape
Python library: currently under development
Replacing slk commands#
If you need to replace slk commands other than archive and
retrieve, please have a look into the Getting
Started.
Load module#
slk:
$ module load slk
atlas:
$ module load tape
Login#
slk:
# using your default DKRZ user credentials
$ slk login
atlas:
# using your default DKRZ user credentials
$ atlas login
mount point:
no login required
Archive one file#
case:
source:
/work/ab1234/c567890/file.txtdestination, StrongLink:
/arch/ab1234/c567890/destination, Versity:
/hsm/arch/ab1234/c567890/
slk:
# transfer file
$ slk archive /work/ab1234/c567890/file.txt /arch/ab1234/c567890/
atlas:
# create destination folder
$ atlas mkdir -p /hsm/arch/ab1234/c567890
# transfer file
$ atlas cp /work/ab1234/c567890/file.txt /hsm/arch/ab1234/c567890/
copy job submitted: 95
# get job status
$ atlas jobs get 95
...
# ALTERNATIVE transfer file => set destination filename
# e.g. renaming possible
$ atlas cp /work/ab1234/c567890/file.txt /hsm/arch/ab1234/c567890/renamed_file.txt
copy job submitted: 96
# get job status
$ atlas jobs get 96
...
Note: If `` /hsm/arch/ab1234`` exists but `` /hsm/arch/ab1234/c567890`` not, the
first command will create a file c567890 in `` /hsm/arch/ab1234``
with the content of file.txt.
mount point:
not possible
Archive folder recursively#
case:
source:
/work/ab1234/c567890/outputdestination, StrongLink:
/arch/ab1234/c567890/outputdestination, Versity:
/hsm/arch/ab1234/c567890/output
slk:
# transfer files
$ slk archive -R /work/ab1234/c567890/output/ /arch/ab1234/c567890/output/
atlas:
# create destination folder
$ atlas mkdir -p /hsm/arch/ab1234/c567890/output
# transfer files
$ atlas cp -R /work/ab1234/c567890/output/ /hsm/arch/ab1234/c567890/output/
copy job submitted: 97
# get job status
$ atlas jobs get 97
...
mount point:
not possible
Retrieve file#
case:
source, StrongLink:
/arch/ab1234/c567890/file.txtsource, Versity: `` /hsm/arch/ab1234/c567890/file.txt``
destination:
/scratch/c/c567890/parent/child
slk:
# transfer file
$ slk retrieve /arch/ab1234/c567890/file.txt /scratch/c/c567890/parent/child/
atlas:
# create destination folder
$ mkdir -p /scratch/c/c567890/parent/child
# stage file (tape to cache)
$ atlas stage /hsm/arch/ab1234/c567890/file.txt
# transfer file
$ atlas cp /hsm/arch/ab1234/c567890/file.txt /scratch/c/c567890/parent/child/
copy job submitted: 98
# get job status
$ atlas jobs get 98
...
Note: If only the second command was run and /scratch/c/c567890/parent existed but /scratch/c/c567890/parent/child not, then the
first command would create a file child in /scratch/c/c567890/parent
with the content of file.txt.
mount point:
# run staging command beforehand to be sure that file is actually in the cache
$ atlas stage /hsm/arch/ab1234/c567890/file.txt
$ rsync -av /hsm/arch/ab1234/c567890/file.txt /scratch/c/c567890/parent/child/
# will exit with an error if file.txt is not cached
Note 1: The mount point is meant for easy access to individual files -
e.g. to check the header of a netCDF file or to peek into a dataset. It
is not meant for the transfer of large amounts of data. Please use
cp of ATLAS for this.
Note 2: We recommand to always run atlas stage prior to accessing
files via the mount point. If a cache cleanup process starts before the
file was accessed, it might be removed from the cache causing the
transfer to fail. Running atlas stage is similar to a touch
command with respect to the time stamp relevant for the cache cleanup.
Retrieve folder recursively#
case:
source:
/arch/ab1234/c567890/outputdestination:
/scratch/c/c567890/output
slk:
# run slk_helpers watcher setup for recall + retrieval:
... watchers ...
# OR retrieve all files at once (not recommanded, when files are not cached)
$ slk retrieve -R /arch/ab1234/c567890/output/ /scratch/c/c567890/output
atlas:
# create destination folder
$ mkdir -p /scratch/c/c567890/output
# stage file (tape to cache)
$ atlas stage /hsm/arch/ab1234/c567890/output
# transfer files
$ atlas cp --recursive /hsm/arch/ab1234/c567890/output/* /scratch/c/c567890/output/
copy job submitted: 99
# get job status
$ atlas jobs get 99
...
mount point:
Please use ATLAS for this purpose
Replacing pyslk#
Work in progress
Replacing fsspec + slkspec#
Work in progress
Details on atlas#
Location of token#
slk:
~/.slk/config.jsonVersity:
~/.config/atlas/session.json
Commands#
** StrongLink** |
Versity |
Meaning |
|---|---|---|
slk login |
atlas login |
generate a login token |
slk archive |
atlas cp/ atlas upload |
file transfer to HSM [1,2] |
slk retrieve |
atlas cp / atlas download |
file transfer from HSM [1,3] |
slk recall |
atlas stage |
transfer file from tape to cache |
slk move |
atlas mv |
move files within HSM |
slk rename |
atlas mv |
rename files in HSM |
slk delete |
atlas rm |
delete file |
slk mkdir [-R] |
atlas mkdir [-p] |
create directory |
slk chmod |
atlas chmod |
change permissions |
slk search |
atlas search |
run search for files |
[1] atlas cp transfers data in the background between tape archive
and Lustre filesystem
[2] atlas upload transfer data from current system/node directly to
the tape archive
[3] atlas download transfer data from tape archive directly to the
current system/node
Warning
atlas mv performs a real move between filesystems. After the
transfer completes successfully, it attempts to remove the source data.
Be careful when using atlas mv to archive data to HSM.
atlas mv /work/b123456/mydata.nc /hsm/archive/b123456/mydata.nccopies the file to HSM, but the original file remains in/workbecause the filesystem is mounted read-only and cannot be modified.atlas mv /scratch/b123456/mydata.nc /hsm/archive/b123456/mydata.nccopies the file to HSM and removes the original from/scratch, because/scratchis writable.
If you want to keep the source data, use atlas cp instead of
atlas mv.
Glossary#
online: a file is cached
offline: a file is not cached
StrongLink |
Versity |
Meaning |
|---|---|---|
recall |
staging |
transfer files from tape to cache |
release |
allow removal of file from cache |
|
if it is already on tape |
||