From 21ddf682bc2a584ed622e2a72521b6523e882789 Mon Sep 17 00:00:00 2001 From: Georgios Christodoulis Date: Fri, 16 May 2025 17:02:14 +0200 Subject: [PATCH 1/2] [tutorial] introduce the reader to how files reach the user --- docs/tutorial/cvmfs/what-is-cvmfs.md | 14 ++++++++++++++ docs/tutorial/img/cvmfs_topo.png | Bin 0 -> 58820 bytes 2 files changed, 14 insertions(+) create mode 100644 docs/tutorial/img/cvmfs_topo.png diff --git a/docs/tutorial/cvmfs/what-is-cvmfs.md b/docs/tutorial/cvmfs/what-is-cvmfs.md index c2662cdce4..a6b779883b 100644 --- a/docs/tutorial/cvmfs/what-is-cvmfs.md +++ b/docs/tutorial/cvmfs/what-is-cvmfs.md @@ -49,6 +49,20 @@ triggered when search paths are examined. In certain cases, the CernVM-FS has also been used to [distribute large *data* repositories](https://cvmfs.readthedocs.io/en/stable/cpt-large-scale.html). +## How do files become available to the user? +Files in CVMFS are organized in repositories, in the form of content addressable storage. +A [Stratum 0 server](../appendix/terminology.md#stratum0) is the single authoritative source of a repository, responsible for publishing modifications of its contents. +Information on how to create a new repository can be found in the [CVMFS documentation](https://cvmfs.readthedocs.io/en/stable/cpt-repo.html). + +Repository administrators should discourage users from accessing Stratum 0 directly, but via a network of public mirror servers. +[Stratum 1](../appendix/terminology.md#stratum1) is a public replica server, containing repositories in their entireties, configured to automatically remain consistent with the stratum 0. +In cases where users do not have access on the public servers, site administrators can [create a private Stratum 1](../access/stratum1.md). + +On top of Stratum 1, site administrators are encouraged to [install a reverse proxy](https://cvmfs.readthedocs.io/en/stable/cpt-replica.html#squid-configuration) that works as yet another caching layer. + +
+CernVM-FS Topology
+
## Features diff --git a/docs/tutorial/img/cvmfs_topo.png b/docs/tutorial/img/cvmfs_topo.png new file mode 100644 index 0000000000000000000000000000000000000000..87bdf03841690f0d272aceb0a2ffc4fdfc62640b GIT binary patch literal 58820 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

$a!0M`TIwYS@a2pjTxZ6F#A0rH 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 a-#m#%M;eD)?;in>ho-8o3QWm5^#1@{L7z|n literal 0 HcmV?d00001 From 621668a1f9d7220c85cf8b73e14bbe9c3c6d774d Mon Sep 17 00:00:00 2001 From: Georgios Christodoulis Date: Wed, 21 May 2025 17:14:15 +0200 Subject: [PATCH 2/2] fixup! [tutorial] introduce the reader to how files reach the user --- docs/tutorial/cvmfs/what-is-cvmfs.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/tutorial/cvmfs/what-is-cvmfs.md b/docs/tutorial/cvmfs/what-is-cvmfs.md index a6b779883b..ca44cc3857 100644 --- a/docs/tutorial/cvmfs/what-is-cvmfs.md +++ b/docs/tutorial/cvmfs/what-is-cvmfs.md @@ -50,20 +50,23 @@ In certain cases, the CernVM-FS has also been used to [distribute large *data* repositories](https://cvmfs.readthedocs.io/en/stable/cpt-large-scale.html). ## How do files become available to the user? -Files in CVMFS are organized in repositories, in the form of content addressable storage. -A [Stratum 0 server](../appendix/terminology.md#stratum0) is the single authoritative source of a repository, responsible for publishing modifications of its contents. -Information on how to create a new repository can be found in the [CVMFS documentation](https://cvmfs.readthedocs.io/en/stable/cpt-repo.html). +Files in CernVM-FS are organized in repositories, in the form of content addressable storage. +For every repository, there is a dedicated server [( Stratum 0 )](../appendix/terminology.md#stratum0) that is its single authoritative source, responsible for publishing modifications of its contents. +Information on how to create a new repository can be found in the [CernVM-FS documentation](https://cvmfs.readthedocs.io/en/stable/cpt-repo.html). -Repository administrators should discourage users from accessing Stratum 0 directly, but via a network of public mirror servers. -[Stratum 1](../appendix/terminology.md#stratum1) is a public replica server, containing repositories in their entireties, configured to automatically remain consistent with the stratum 0. -In cases where users do not have access on the public servers, site administrators can [create a private Stratum 1](../access/stratum1.md). +Repository administrators should discourage users from accessing Stratum 0 directly, but use a network of public mirror servers instead. +[Stratum 1](../appendix/terminology.md#stratum1), is a public replica server containing repositories in their entireties, configured to automatically remain consistent with the stratum 0. +In cases where users do not have access on the public servers, site administrators can [create private Stratum 1 servers](../access/stratum1.md). -On top of Stratum 1, site administrators are encouraged to [install a reverse proxy](https://cvmfs.readthedocs.io/en/stable/cpt-replica.html#squid-configuration) that works as yet another caching layer. +On top of Stratum 1, site administrators are encouraged to [install a series of forward proxies](https://cvmfs.readthedocs.io/en/stable/cpt-replica.html#squid-configuration) that works as yet another caching layer. +This will improve the cold cache performance (especially on sites with clusters of nodes) on the client side (see [performance analysis](../performance.md)), but also reduce the load of the Stratum 1 servers.

+To access a repository, the user (here the CernVM-FS client) specifies the proxy that will forward its requests, and a list of Stratum 1 servers. +Stratum 1 servers will be sorted automatically based on their geographic proximity (see [relevant documentation](https://cvmfs.readthedocs.io/en/stable/cpt-configure.html#sct-geoapi)). ## Features ### On-demand downloading of files and metadata { #features-ondemand }