В последнее время было большое количество постов о ЦЕРНе и Большом Адронном Kоллайдере (БАК или LHC). Но не многие знают, что БАК производит ~20 ПБ данных в год. Порядка 50% всех данных хранится в dCache.
dCache является распределённой системой хранения данных, способной работать на обычном железе, с возможностью расширения посредсвом добавления новых узлов. Всё, что нужно для работы на узле, — это JVM (так как всё написано на джаве) и файловая система, где, собственно, и хранятся данные. Типичные инсталляции используют Linux(RHEL/SL/CentOS 6) или Solaris с XFS или ZFS, соответсвенно. В связи с натурой эксперементальных данных dCache не предусматривает изменение хранимых файлов.
dCache разрабатывается с 2000 года и с 2002 года используеться в более чем 80 научных центрах мира, включая Россию. Самые маленькие системы состоят из одного узла в несколько ТБ, самые большие состоят из ~500 узлов с суммарным дисковым пространством в 22 ПБ.
dCache поддерживает разные протоколы доступа к данным. Наряду с широкораспространенными стандартными протоколами WebDAV, FTP, NFSv4.1/pNFS используются а также грид протоклы SRM и GRIDFTP.
Самое простое применение dCache — это расспределённый WebDAV сервер. На его основе можно создать свой собственный Cloud Storage, тем более, что уже существует достаточное количество клиентов, использующих HTTP и WebDAV.
Мы расмотрим более банальное применение — распределенное NFSv4.1 хранилище.
Для хранения метадданных dCache использует postgresql.
Итак, приступим:
# yum install postgresql-server
# yum install java-1.7.0-openjdk
# yum install http://www.dcache.org/downloads/1.9/repo/2.6/dcache-2.6.10-1.noarch.rpm
# /etc/init.d/postgresql initdb
В /var/lib/pgsql/data/postgresql.conf включаем TCP:
listen_addresses = 'localhost'
В /var/lib/pgsql/data/pg_hba.conf добавляем
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# /etc/init.d/postgresql restart
# su postgres -c "createuser -D -R -S chimera"
# su postgres -c "createdb -O chimera chimera"
# su postgres -c "createlang plpgsql chimera"
Все конфигурационные файлы находятся в /etc/dcache директории. Нас интересует только один из них: /etc/dcache/layout/single.conf, где находится описание сервисов, которые должны быть запущены на данном узле.
Говорим dCache, что должно работать в /etc/dcache/layouts/single.conf:
[dCacheDomain]
[dCacheDomain/admin]
[dCacheDomain/broadcast]
[dCacheDomain/poolmanager]
[dCacheDomain/loginbroker]
[dCacheDomain/pnfsmanager]
[dCacheDomain/cleaner]
[dCacheDomain/httpd]
[dCacheDomain/topo]
[dCacheDomain/nfsv41]
Данная кофигурация создаёт dCacheDomain ( каждый домайн — одна JVM, один процесс) с соответствующими сервисами.
И конфигурируем дата сервер на том же узле:
# dcache pool create /srv/dcache pool1 pool1Domain
Данная команда добавит в конфигурационный файл pool1Domain с сервисом типа дата сервер с именем pool1:
[pool1Domain]
[pool1Domain/pool]
name=pool1
path=/srv/dcache
waitForFiles=${path}/data
Создаём директорию:
# chimera-cli mkdir /data<br>
# chimera-cli chmod /data 777
И экспортируем в /etc/exports:
/data *(rw)
Запускаем dCache:
# dcache start
Лог файлы находятся в /var/log/dcache.
Так как dCache является распределённым храннилищем, нам нужен NFS клиент, который поддерживает pNFS (parallel NFS). Это RHEL/CentOS 6 или любой другой современный линукс дистрибутив:
# mount -overs=4.1 <server>:/data /data
Чтобы добавить новый узел и, тем самым, расширить хранилище, достаточно на другом хосте поставить пакеты openjdk и dcache, создать
/etc/dcache/layouts/single.conf с одной строкой:
dcache.broker.host=и создать дата сервер:
# dcache pool create /srv/dcache pool2 pool2Domain
Важно помнить, что имена домайнов и дата серверов должны быть уникальные.
To steal and contribute code
Код dCache-а находится на гитхабе и, в зависимости от компонента, распостраняется под лицензией AGPL, LGPL и BSD.
Ресурсы:
www.dcache.org
https://github.com/dCache/dcache
Буду рад, если вас интересуют долее сложные конфигурации.
Автор: tmk826