Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions docs/cvmfs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# The ESCAPE CVMFS repository

The [CERN Virtual Machine File System](https://cernvm.cern.ch/fs/) (CVMFS) is a read-only, HTTP-based file system optimized for distributing scientific software at scale.
Originally developed at CERN for the Worldwide LHC Computing Grid (WLCG), CVMFS is now widely adopted across many research infrastructures.<br/>
Among other capabilities, CVMFS provides the following functionalities:

- **Global software delivery system**: Software is published once and instantly becomes available across all connected clients and compute sites.

- **HTTP and caching-based**: CVMFS fetches files over standard HTTP and relies on [caching proxies](https://www.squid-cache.org/) to reduce load and latency.

- **FUSE-mounted**: Software appears as a regular local file system on the client machine.

Find more at [the official CVMFS documentation](https://cvmfs.readthedocs.io/en/stable/).
### Components
The ESCAPE CVMFS infrastructure consists of three main components:
1. The single source, called the Stratum 0 Repository Server
2. Public mirrors, called Stratum 1 Replica Servers
3. Caches, usually managed by Squid Proxy servers

One protected read/write Stratum 0 instance, called `sw.escape.eu`, is feeding up the public, distributed mirror servers. <br/>
Then, a distributed hierarchy of proxy servers fetches content from the closest public mirror server.

Find more details about `sw.escape.eu` and how to setup CVMFS in [the developer documentation](tech-docs/services/cvmfs).

A diagram of the infrastructure described is shown below.

![image](../static/img/CVMFS-diagram.png)

## CVMFS the ESCAPE VRE

In the ESCAPE VRE, we use CVMFS to:

- Distribute pre-built scientific software and tools in a consistent, portable way across cloud, HPC, and local environments.

- Package domain-specific applications, such as Rucio clients or analysis environments, as tarballs that are extracted into CVMFS repositories.

- Ensure reproducibility by version-controlling software environments and decoupling runtime dependencies from local installations.

- Facilitate onboarding of new communities by removing the burden of local software setup and environment configuration.

This CVMFS-based software delivery system allows ESCAPE to scale up access to research tools, reduce setup time, and ensure consistency across diverse computing resources.
68 changes: 68 additions & 0 deletions docs/tech-docs/services/cvmfs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# CVMFS
:::warning
These instructions are highly CERN-dependent.<br/>
Please refer to the [Official CernVM-FS documentation](https://cvmfs.readthedocs.io/en/stable) for detailed instructions on how to start from scratch.
:::
## Setting up a Repository

At CERN, the repository and release manager creation are provided by the Storage and Data Management group, through the [CVMS Repository creation request](https://cern.service-now.com/service-portal?id=sc_cat_item&name=CVMS-repository&se=cvmfs).

Elsewhere, please follow the steps at [Creating a Repository (Stratum 0)](https://cvmfs.readthedocs.io/en/stable/cpt-repo.html).

A set of useful information to know before submitting the request (or autonomously creating a repository):
1. What is the quota for the repository and expected growth of the over time?
2. Does the repository need (periodical) garbage collection?
3. Should the visibility of the repository be restricted (e.g., due to licensed software)?
4. Should the repository be replicated on other Stratum 1 servers worldwide?

:::tip[Repository naming]
*The repository name resembles a DNS scheme, but it does not need to reflect any real server name. It is supposed to be a globally unique name that indicates where/who the publishing of content takes place. A repository name must only contain alphanumeric characters plus -, , or ., and it is limited to a length of 60 characters.*
:::

The release manager is usually a VM where operators can upload, modify and delete the content of the repository.

## Publishing content

As described [here](https://cvmfs.readthedocs.io/en/stable/cpt-repo.html#content-publishing), there are four main steps needed to publish content:
1. Initiate the transation via `cvmfs_server transaction <repository name>`
2. Install content into `/cvmfs/<repository name>`
3. (optional) Create nested catalogs at proper locations
4. Finalise the transaction via `cvmfs_server publish <repository name>`

#### Install content

At startup, a CERN-hosted release manager will look like this:
```sh
* ********************************************************************
* Welcome to xxxxx.cern.ch, AlmaLinux release 9.5 (Teal Serval)
* Archive of news is available in /etc/motd-archive
* Reminder: you have agreed to the CERN
* computing rules, in particular OC5. CERN implements
* the measures necessary to ensure compliance.
* https://cern.ch/ComputingRules
* Puppet environment: production, Roger state: build
* Foreman hostgroup: xxxxxxx
* #######################################################
The CVMFS Stratum 0 for repo xxxxxx.
Access is controlled via the e-group xxxxxxx.
Shared local unix user for account xxxxxxx.

To become the shared user execute:
sudo -i -u xxxxxxx
To start a transaction:
cvmfs_server transaction sw.escape.eu
To publish a transaction
cvmfs_server publish sw.escape.eu

* A cvmfs installation host.
* ********************************************************************
```

In order to publish content, it is necessary to switch to a dedicated user, as suggested: `sudo -i -u xxxxxxx`.

How to provide packages and proper versioning is left to the operators.

:::danger[Pro Tip]
The VRE strategy for content publishing relies on the creation of a tarball containing the necessary software and versions, followed by a setup script to be executed at need. <br/>
More details can be found in the **[ESCAPE CVMFS GitHub Repository](https://github.com/vre-hub/escape-cvmfs)**.
:::
13 changes: 9 additions & 4 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,13 @@ const config = {
},
{
type: 'doc', // This is a preset regarding the type of document, please update if needed
docId: 'rucio', // The ID of the corresponding document. This should match with what you wrote in the document header.
label: 'Rucio', // The title that will appear on the menu
docId: 'cvmfs', // The ID of the corresponding document. This should match with what you wrote in the document header.
label: 'CVMFS', // The title that will appear on the menu
},
{
type: 'doc', // This is a preset regarding the type of document, please update if needed
docId: 'notebook', // The ID of the corresponding document. This should match with what you wrote in the document header.
label: 'JupyterHub', // The title that will appear on the menu
},
{
type: 'doc', // This is a preset regarding the type of document, please update if needed
Expand All @@ -111,8 +116,8 @@ const config = {
},
{
type: 'doc', // This is a preset regarding the type of document, please update if needed
docId: 'notebook', // The ID of the corresponding document. This should match with what you wrote in the document header.
label: 'JupyterHub', // The title that will appear on the menu
docId: 'rucio', // The ID of the corresponding document. This should match with what you wrote in the document header.
label: 'Rucio', // The title that will appear on the menu
},
],
},
Expand Down
1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ const sidebars = {
label: 'Services',
items: [
'tech-docs/services/aai',
'tech-docs/services/cvmfs',
'tech-docs/services/data-management',
'tech-docs/services/jupyterhub',
'tech-docs/services/computing-resources',
Expand Down
2 changes: 1 addition & 1 deletion src/pages/LatestNews.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const newsItems = [
title: 'The Virtual Research Environment: A multi-science analysis platform',
authors: 'E. Gazzarrini, E. Garcia Garcia, D. Gosein, and X. Espinal',
journal: 'EPJ Web of Conferences 295, 08023 (2024)',
links: [{ text: 'CHEP 2023 proceedings', url: 'https://doi.org/10.1051/epjconf/202429508023/' }],
links: [{ text: 'CHEP 2023 proceedings', url: 'https://doi.org/10.1051/epjconf/202429508023' }],
iconType: 'book-open',
type: 'proceedings',
},
Expand Down
5 changes: 3 additions & 2 deletions src/pages/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ The Virtual Research Environment’s main components are:


1. **[AAI](/docs/auth)**: A federated and reliable **Authentication and Authorization** layer
2. **[The Rucio Data Lake](/docs/rucio)**: A **federated distributed storage** solution (the ESCAPE Data Lake), providing functionalities for data injection and replication through a Data Management framework (Rucio)
2. **[The Rucio Data Lake](/docs/rucio)**: A **federated distributed storage** solution, providing functionalities for data injection and replication through a Data Management framework (Rucio)
3. **[Reana](/docs/reana)**: A **computing** cluster supplying the processing power to run full analyses with Reana, a re-analysis software
4. **[JupyterHub](/docs/notebook)**: An enhanced **notebook interface** with containerised environments to hide the infrastructure’s complexity from the user.
4. **[CVMFS](/docs/cvmfs)**: A read-only file system designed to distribute software, and more.
5. **[JupyterHub](/docs/notebook)**: An enhanced **notebook interface** with containerised environments to hide the infrastructure’s complexity from the user.

![image](../../static/img/VRE-diagram.png)

Expand Down
Binary file added static/img/CVMFS-diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.