CernVM File System
cernvm.cern.ch
cernvm.cern.ch
[0] https://indico.cern.ch/event/567550/contributions/2627182/at...
The startup time is clearly faster as we don't download the image (especially if compared to download the layers and start the docker image).
The main "trick" is that docker images usually includes a lot of files that are not really accesses during standard operations hence pulling them is not needed most of the time.
A lot of work goes into properly handling and optimizing the download and distribution of excessively large application images, often on slow and unreliable networks, when smaller is always faster and more reliable.
I've been using this like 10 years ago to do just that: http://lftpfs.sourceforge.net/
* data is chunked and de-duplicated
* catalogues are signed so you can use untrusted HTTP proxies and still ensure integrity
Looks like this isn't meant to be used on a LAN to squeeze out every bit of performance, but rather to work across hosts on different local networks over the whole internet (even passing through NATs) in a somewhat distributed fashion. Cool!
We use it in ATLAS to deploy both tagged releases and nightly builds. These can be about 100GB in size each.
The releases are used for production jobs across the worldwide grid, while the nightlies are used as development targets for individual developers.
It appears to simply be a read-only POSIX-fs interface to Merkle-encapsulated bits distributed via http.
Ceph and Gluster are completely different animals.
[1] Though for publishing files you have have many concurrent transactions open from different machines so long as they lock unique paths.
Is CernVM’s similar naming homage or coincidence?
The project started around 2007/2008 and produced a virtual machine image to run LHC experiment applications in the cloud. In order to keep image sizes manageable, we looked into network file systems that could distribute the application software (including AFS/Conda, HTTP-FUSE [1], Igor-FS [2], GROW-FS [3]). None of them ticked all the boxes, so we developed CernVM-FS (CVMFS), which then developed a life beyond CernVM.
[1] https://kernel.org/doc/ols/2006/ols2006v2-pages-387-400.pdf [2] https://indico.cern.ch/event/28823/contributions/658268/atta... [3] https://iopscience.iop.org/article/10.1088/1742-6596/219/6/0...
By the way, is the AFS from HLT TDAQ still used anywhere?
Obviously I realise CernVM is not the same thing per-se and that CernVM is more focused on delivering the storage/distribution side rather than the security side. I suppose its understandable as they have their own distributed internal network and so perhaps don't have quite the same extent of trust concerns as others might.
CVMFS specifically exists for the purpose of delivering data securely to isolated VMs - that is, not assuming any site infrastructure like shared filesystems in a cluster. since it's trying to minimize the need for hosting site cooperation, it also normally uses http (not https, etc).
Next week there is a workshop with talks from some of the users: https://indico.cern.ch/event/1079490/timetable/#20220912.det...
Even if you're not a researcher it's worth checking out for the technical accomplishments.
CVMFS has been essential in making a uniform user-facing software environment available throughout our distributed infrastructure (we have 5 different clusters located across the country, totalizing over 250k cores, close to 2k GPUs, and something like 200PB of disk storage).
It is a proven geo-distributed redundant and high performance (through local caching) filesystem which enables a install-once-available-everywhere strategy. Our software stack currently hosts over 1150 different scientific software packages in over 2800 versions, and built optimized for multiple CPU architectures, totalizing nearly 10k different builds. This is in addition to nearly 10k python packages which we make available in the form of python wheels.
Our software stack now is close to 8TB in size, and contains tens of millions of files.
Cache invalidation happens through checksums and catalogs (each revision has one or multiple nested catalogs, content is checksummed, and clients can know if one or multiple catalogs are outdated by comparing checksums they have to upstream checksums).