В рамках моего проекта GSoC я установил репозиторий CernVM-FS на своем локальном компьютере для изучения и тестирования. Документация cvmfs является авторитетным источником по созданию и обслуживанию репозиториев cvmfs в производственной среде. Вместо этого этот пост будет служить простым руководством по созданию репозитория cvmfs на вашем локальном компьютере.
Для этого я использовал Ubuntu 16.04. Лучше настроить сервер на виртуальной машине или на удаленной машине, к которой у вас есть доступ, поскольку инструменты сервера cvmfs немного навязчивы по отношению к службам systemd и файлам конфигурации.
Установите инструменты
Во-первых, добавьте исходники пакета cvmfs в каталог apt sources.list
,
$ wget -qO - https://cvmrepo.web.cern.ch/cvmrepo/apt/cernvm.gpg | sudo apt-key add - $ echo "deb https://cvmrepo.web.cern.ch/cvmrepo/apt/ xenial-prod main" | sudo tee -a /etc/apt/sources.list $ sudo apt-get update
Исходники для других версий на базе Debian перечислены здесь. Лучше использовать варианты -prod
, поскольку они предназначены для промышленного использования.
Затем установите клиентский и серверный пакеты cvmfs.
$ sudo apt-get install cvmfs cvmfs-server
Создать репозиторий
Теперь создайте новый репозиторий cvmfs с помощью команды cvmfs_server
.
$ sudo cvmfs_server mkfs my.new.repo
Это попросит вас выбрать пользователя, которому будет принадлежать этот репозиторий. Я выбрал значение по умолчанию, которое равно root
.
Когда команда завершится, она смонтирует my.new.repo
под /cvmfs
на вашем сервере.
$ ls /cvmfs/my.new.repo new_repository $ cat /cvmfs/my.new.repo/new_repository New CernVM-FS repository for my.new.repo
Как видите, он уже содержит один файл с некоторым содержимым. Если вы попытаетесь написать внутри этого репозитория, это не удастся, потому что это монтирование только для чтения.
Изменить содержимое репозитория
Чтобы изменить содержимое репозитория, вы начинаете с выполнения
$ sudo cvmfs_server transaction my.new.repo
Это наложит файловую систему объединения с копированием при записи на /cvmfs/my.new.repo
, что позволит вам вносить изменения в файловую систему.
$ cd /cvmfs/my.new.repo $ mkdir new_dir $ echo "Hello, World!" | sudo tee new_dir/hello_world
Как только вы закончите с любыми изменениями, вы зафиксируете их, выполнив:
$ sudo cvmfs_server publish my.new.repo
URL репозитория
Инструменты сервера cvmfs автоматически настроят сервер Apache, который клиенты cvmfs смогут использовать для получения данных репозитория. Чтобы увидеть, по какому URL-адресу размещен наш репозиторий, запустите:
$ sudo cvmfs_server info my.new.repo Repository name: my.new.repo Created by CernVM-FS 138 Stratum1 Replication Allowed: yes Whitelist is valid for another 29 days Client configuration: Add my.new.repo to CVMFS_REPOSITORIES in /etc/cvmfs/default.local Create /etc/cvmfs/config.d/my.new.repo.conf and set CVMFS_SERVER_URL=http://localhost/cvmfs/my.new.repo CVMFS_PUBLIC_KEY=/etc/cvmfs/keys/my.new.repo.pub Copy /etc/cvmfs/keys/my.new.repo.pub to the client
Попробуйте скачать с http://localhost/cvmfs/my.new.repo/.cvmfspublished
; вы получите манифест репозитория, формат которого описан здесь. Это первый файл метаданных, загруженный до того, как репозиторий cvmfs будет смонтирован на клиентском компьютере.
Настройте клиент cvmfs
Теперь давайте настроим клиент cvmfs для доступа к репозиторию с другого компьютера. Если вы запускали сервер на виртуальной машине, такой как VirtualBox, вы можете просто настроить туннель между гостевым http://localhost:80
и хостом, скажем, http://localhost:8080
.
Установите на клиенте только пакет cvmfs
, используя описанную выше процедуру. Тогда беги,
$ sudo cvmfs_config setup
Теперь создайте новый файл /etc/cvmfs/default.local
со следующим содержимым:
CVMFS_REPOSITORIES=my.new.repo
Затем создайте еще один файл /etc/cvmfs/config.d/my.new.repo.conf
со следующим содержимым:
CVMFS_SERVER_URL=http://localhost/cvmfs/my.new.repo CVMFS_HTTP_PROXY=DIRECT
Ключ CVMFS_HTTP_PROXY
, по-видимому, обязателен для монтирования репозитория cvmfs.
Наконец, скопируйте главный открытый ключ для нашего репозитория, хранящийся по адресу /etc/cvmfs/keys/my.new.repo.pub
на сервере, в то же место на клиенте.
Теперь вы можете просто попробовать получить доступ к /cvmfs/my.new.repo
, и autofs
автоматически смонтирует репозиторий.
$ ls /cvmfs/my.new.repo new_repository new_dir $ cat /cvmfs/my.new.repo/new_dir/hello_world Hello, World!
Включить CORS
Для написания браузерного JavaScript-клиента для CernVM-FS серверы Apache для репозиториев должны установить CORS-заголовки в своих HTTP-ответах, чтобы JavaScript-выборки работали. Однако конфигурации сервера CernVM-FS не устанавливают этот заголовок по умолчанию.
Это просто изменить. На сервере конфигурация Apache для нашего репозитория будет находиться по адресу /etc/apache2/conf-available/cvmfs.my.new.repo.conf
. Добавьте в этот файл следующую строку:
Header set Access-Control-Allow-Origin "*"
Затем перезапустите сервер Apache, выполнив:
$ sudo service apache2 restart
Чтобы убедиться, что это сработало, мы проверяем заголовки ответов HTTP, используя wget
$ wget -qS http://localhost:80/cvmfs/my.new.repo/.cvmfspublished HTTP/1.1 200 OK Date: Mon, 30 Apr 2018 08:00:27 GMT Server: Apache/2.4.18 (Ubuntu) Access-Control-Allow-Origin: * Accept-Ranges: bytes Content-Length: 550 Cache-Control: max-age=61 Expires: Mon, 30 Apr 2018 08:01:28 GMT Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/x-cvmfs