A quick guide to CVMFS
Contents
Deploying software with CVMFS
For more information about CVMFS at RAL, click here.
Overview of the process
- Prepare your working area
- Prepare your software
- Upload your software to the RAL CVMFS repository and deploy it
- Wait a bit...
- Run your CVMFS-powered jobs
A trivial example
Preparing your working area
Log in to your machine of choice and create a new working area.
$ ssh -Y whyntie@heppc402 whyntie@heppc402's password: # enter your password here $ mkdir cvmfstests $ cd cvmfstests $ mkdir helloworld $ cd helloworld $ pwd /users/whyntie/cvmfstests/helloworld
Preparing your software
Create a new directory that will form the basis of your CVMFS tarball.
$ mkdir hello-world_001-00-00 $ cd hello-world_001-00-00 $ pwd /users/whyntie/cvmfstests/helloworld/hello-world_001-00-00
Create three files in this directory:
-
hello-world.sh
- the "software"; -
run.sh
- the script that runs the software; -
README.md
- for your notes, ideally in the MarkDown format.
$ cat hello-world.sh #!/bin/bash # #============================================================================= # The GridPP CVMFS Hello World! Script #============================================================================= # # Usage: . hello-world.sh [whoever you want to greet] # echo 'Hello' $1'!' $ $ $ cat run.sh #!/bin/bash # #============================================================================= # The GridPP CVMFS Hello World! run script #============================================================================= # # Usage: . run.sh [full path of the hello-world.sh script] # # Note that for grid jobs (or clusters with CVMFS enabled) this will be # the CVMFS directory. # $1/hello-world.sh World $ $ $ cat README.md My CVMFS Test Notes =================== You're keeping detailed notes, right? Good good.
Don't forget to change the permissions on the scripts so that they can be run.
$ chmod a+x run.sh $ chmod a+x hello-world.sh
Now compress these files into a tarball.
$ cd ../ $ tar -czf hello-world_001-00-00.tar hello-world_001-00-00 $ ls hello-world_001-00-00 hello-world_001-00-00.tgz
Uploading and deploying the software
Once you have supplied the RAL team with your grid certificate DN, visit the RAL CVMFS repository. You will need your grid certificate installed in your browser in order to be identified.
$ firefox https://cvmfs-upload01.gridpp.rl.ac.uk &
After confirming certificate and security settings, you should be presented with a page like this (click to enlarge):
(Note: this is from the CERN@school VO, which has already had software uploaded. Your page should be blank...)
To upload the hello-world_001-00-00
tarball, click on the blue "Upload" button. This will take you to the "Upload new package" screen:
Click on the "Select file" button, select your hello-world_001-00-00.tar
tarball and then press the blue "Upload" button. The tarball should now be uploaded to your VO's repository, appearing on the right-hand side of the Uploader homepage with a white background (indicating that is uploaded).
Now you should be ready to deploy the tarball. This is done by pressing the "Deploy" button in the project content panel of the Uploader home page:
You should now see the deploy page:
Click on the drop-down menu and you should see hello-world_001-00-00.tar
available to select. Select it, then press the blue "Deploy" button. You should now be redirected to the home page, where hello-world_001-00-00.tar
should be displayed with a green background to indicate that it has been successfully deployed to the repository.
It should take a maximum of three hours for the software to become available to worker nodes with the appropriate CVMFS access. If your local cluster has access to your VO's repository, you can check with:
$ ls /cvmfs/cernatschool.gridpp.ac.uk hello-world_001-00-00 $ ls /cvmfs/cernatschool.gridpp.ac.uk/hello-world_001-00-00 hello-world.sh README.md run.sh
(cernatschool.gridpp.ac.uk
is the address for the cernatschool.org
VO - you can find out the corresponding address from the CVMFS uploader homepage.)
Run a job using your CVMFS software
Jobs using your software can be submitted and run as normal - but now you don't need to worry about installing software anywhere. The executables you need will be available in the CVMFS repository. So a JDL file for the Hello World! software (deployed on the cernatschool.org
repository would look like this:
$ cat helloworld.jdl # The GridPP CVMFS Hello World! JDL file Executable = "/bin/sh"; # Replace "cernatschool.gridpp.ac.uk" with your VO's address, of course! Arguments = "/cvmfs/cernatschool.gridpp.ac.uk/hello-world_001-00-00/run.sh /cvmfs/cernatschool.gridpp.ac.uk/hello-world_001-00-00"; StdOutput = "stdout.txt"; StdError = "stderr.txt"; OutputSandbox = {"stdout.txt", "stderr.txt"}; #
As you can see, the shell executable is being run with two arguments:
- The script to run -
run.sh
- which is in the tarball. - The first argument supplied to
run.sh
. In this example, the first argument ofrun.sh
base directory (including the CVMFS prefix). We have made this an argument in therun.sh
to make local testing easier - which, when the software gets more complicated, is a worthwhile thing to do...
So, if you're using glite
for your WMS, you can submit the job as usual:
$ voms-proxy-init --voms cernatschool.org Enter GRID pass phrase for this identity: # you know what to do... ...[proxy confirmation messages] $ myproxy-init -d -n Your identity: /C=UK/O=eScience/OU=QueenMaryLondon/L=Physics/CN=tom whyntie Enter GRID pass phrase for this identity: # and again... ...[proxy confirmation messages] $ glite-wms-job-submit -a -o jobIDfile helloworld.jdl ...[job submission messages]
When you retrive the output from the jobs, stdout.txt
should contain a very, very exciting message, indicating that your job has succeeded and the CVMFS software has been successfully deployed.
Useful links
Internal
External
- The CERN CVMFS page;
- CernVM-FS - Building an Infrastructure for Non-LHC Computing - ISGC 2014 talk from I. Collier (slides).