C C++ Shell Perl CMake Python Makefile
Latest commit c0a42b8 Nov 17, 2017 @jblomer jblomer changelog
Permalink
Failed to load latest commit information.
add-ons add check for cache cleanup rate to nagios probe Jun 19, 2017
ci Merge branch 'cvmfs-2.4' into devel Nov 15, 2017
cmake/Modules remove tbb from top level CMakeLists Nov 8, 2017
cvmfs Merge pull request #2018 from cvmfs/CVM-1379 Nov 17, 2017
doc Merge pull request #1606 from cvmfs/fix-doc May 31, 2016
externals remove tbb external dependency Nov 8, 2017
mount don't claim ownership of files in graph driver Oct 16, 2017
packaging Merge branch 'cvmfs-2.4' into devel Nov 15, 2017
python remove python library from cvmfs repo Dec 17, 2015
test Merge branch 'cvmfs-2.4' into devel Nov 15, 2017
vagrant add Debian 8 Vagrant box Jun 29, 2017
.clang-format Adding configuration for clang-format Jan 6, 2017
.gitignore Adding default externals build & install location to .gitignore Jan 25, 2017
.travis.yml temporarily remove clang from travis as 3.5.0 is buggy with cvmfs Aug 1, 2017
AUTHORS FIX: typo in AUTHORS Sep 7, 2015
CMakeLists.txt remove tbb from top level CMakeLists Nov 8, 2017
CONTRIBUTING.md style fixes Feb 21, 2015
COPYING added a code style guide compliance tester Dec 9, 2011
CPPLINT.cfg final style fixes Feb 27, 2015
ChangeLog changelog Nov 17, 2017
INSTALL fix documentation May 15, 2017
NEWS fixed the branch copy mistake Jul 19, 2011
README.md update doi badge Oct 26, 2017
Vagrantfile add Debian 8 Vagrant box Jun 29, 2017
bootstrap.sh remove tbb external dependency Nov 8, 2017
bump_version.sh bump version number to 2.3.0 Feb 2, 2016
changelog-commit.sh changelog Sep 20, 2016
changelog-start.sh add git scripts for changlog edits Sep 8, 2016
cloc-1.64.pl Update cloc.pl 1.62 -> 1.64 Sep 18, 2015
config_cmake.h.in reset patch level to 0 Nov 28, 2012
cpplint.py add first micro benchmarks Jul 10, 2016
cpplint.py.cvmfs-patch add first micro benchmarks Jul 10, 2016
cpplint.py.rev141 style fixes Feb 21, 2015
note-install-prefix added root_hash to list of extended attributes Jun 22, 2012
re-engineering notes remove ancient unsused files from sources Jun 24, 2016
sign-whitelist fixed the branch copy mistake Jul 19, 2011
testnotes ci scripts Mar 29, 2012
testsync server sync test case added Jul 29, 2012

README.md

Build Status Documentation Status DOI

The CernVM-File System (CernVM-FS) provides a scalable, reliable and low- maintenance software distribution service. It was developed to assist High Energy Physics (HEP) collaborations to deploy software on the worldwide- distributed computing infrastructure used to run data processing applications. CernVM-FS is implemented as a POSIX read-only file system in user space (a FUSE module). Files and directories are hosted on standard web servers and mounted in the universal namespace /cvmfs. Internally, CernVM-FS uses content- addressable storage and Merkle trees in order to maintain file data and meta-data. CernVM-FS uses outgoing HTTP connections only, thereby it avoids most of the firewall issues of other network file systems. It transfers data and meta-data on demand and verifies data integrity by cryptographic hashes.

By means of aggressive caching and reduction of latency, CernVM-FS focuses specifically on the software use case. Software usually comprises many small files that are frequently opened and read as a whole. Furthermore, the software use case includes frequent look-ups for files in multiple directories when search paths are examined.

Content is published into /cvmfs by means of dedicated "release manager machines". The release manager machines provide a writeable CernVM-FS instance by means of a union file system (aufs or overlayfs) on top of the read-only client. When publishing, the CernVM-FS server tools process new and modified data from the union file system's writable branch and transform the data into the CernVM-FS storage format.

CernVM-FS is actively used by small and large scientific collaborations. In many cases, it replaces package managers and shared software areas on cluster file systems as means to distribute the software used to process experiment data.