Заявление. 
           
          Автором не найдено ни одного текста на русском языке, который можно рассматривать, как инструкцию для пользователя системы dCache, представляем 
          Руководство пользователя dCache. 
           
          
             
            Первоисточники.
  
            
          Желающие могут посетить http://www.dcache.org/index.shtml и конспектировать оттуда, например: 
           
          http://www.dcache.org/manuals/dcache-whitepaper-light.pdf - статью, где авторы dCache на 4 страницах объясняют что это такое, или 
           
          http://www.dcache.org/manuals/Book/ - энцеклопедическую работу на 40 листах по инсталляции, настройке и использованию dCache. 
           
          Есть также очень толковый, но также несколько избыточный документ рождённый в ЦЕРНе для администраторов dCache http://wiki.gsi.de/pub/Gridadmin/ToDo2005Apr21080327/dCache4SiteAdmins.pdf . 
           
          Вообще dCache используется в настоящее время в 35 организациях, таких как: 
           
          BNL, CNAF, DESY, FNAL, MDGF, PIC, RAL, SARA. Каждая из них имеет свой набор инструкция, например http://www-cdf.fnal.gov/upgrades/computing/dh/cdf5981/CdfIntroDCacheUseAtCdf/node1.html для FNAL, но надо учитывать, что настройки отличаются от настроек, используемых в ОИЯИ. 
           
          Толковое руководство можно также найти в http://storage.esc.rl.ac.uk/documentation/html/D-Cache-Howto/ch11.html 
           
          
             
            Что такое dCache.
  
            
          dCache создавалась средство кеширования файлов на дисковых пулами при работе с большими ленточными библиотеками, но затем обрело самостоятельность, т.е. его использование не требует ленточных библиотек. Именно так dCache используется в ОИЯИ и на большинстве других TIER 2. dCache предоставляет доступ к файлам, в том числе средствами GRID, которые логически упорядочены в одно дерево, но физически находятся на разных дисках. dCache может автоматически дублировать информацию и оптимизировать размещение файлов, балансируя нагрузку на дисковые серверы. С точки зрения пользователя dCache полупрозрачная система, т.е. для доступа к файлам используется очень ограниченный набор команд, многие операции можно выполнить исключительно средствами Linux. 
           
          
             
            Что хранится в dCache
  
            
          Система ориентированна на хранение больших файлов. Это значит, что помещать в dCache надо результаты экспериментов и моделирования, но никак не программы, для которых предназначена AFS; *.jpeg, *.mp3, *.mov, *.cab и другие продукты жизнедеятельности также не приветствуются. 
           
          
             
            Доступ к dCache.
  
            
          Если пользователь зарегистрирован на ферме ЛИТ он может использовать dCache без дополнительных действий. Если доступ к файлам производится с персонального компьютера, включённому в домен jinr.ru, на нём должен быть установлен NFS клиент (ставится по умолчанию при установке Linux), клиент dCache и смонтирована директория /pnfs/jinr.ru 
           
          Для установки клиента dCache надо скачать rpm клиента, например с http://www.dcache.org/downloads/IAgree.shtml и установить его. 
           
          Далее надо смонтировать PNFS на своём локальном компьютере командами 
          mkdir -p /pnfs/jinr.ru 
           
          mount -o intr,rw,noac,hard lxfs07.jinr.ru:/pnfs /pnfs/jinr.ru 
           
          после этого файлы будут доступными в директории 
          /pnfs/jinr.ru/user/<�дальше как в AFS> 
           
           
          Коротко и быстро. Делай как я. 
           
           
          
             
            Как добраться до файлов в dCache.
  
            
          Пользователь работает с файловой системой pnfs которая отделяет работу с информацией о файле от работы с собственно файлом. Это значит, что для доступа к файлу его в общем случае надо переписать в локальную директорию. 
          После этого могут быть использованы следующие команды: 
           
          ls, pwd, find, rm and rmdir, cd, mkdir, ln (только hard links), chown, chmod. 
           
          А вот команды которые не могут быть использованы: 
           
          cp, mv, cat, more, less, grep, head, tail, wc, od, file. 
           
          Использование mc происходит с оглядкой на вышеприведённые списки. 
          Итак для доступа к информации файла его надо переписать из системы dCache в свою локальную директорию: 
           
          а) команда dccp, (далее именуется доступ по dcap) если PNFS смонтирована для копирования туда 
           
          dccp $HOME/nobel_price_result.row /pnfs/jinr.ru/user/i/iam 
          и обратно 
          dccp /pnfs/jinr.ru/user/i/iam/two_weeks_of_simulation.001 $HOME/to_cern.001 
          б) если PNFS не смонтирована, файл адресуется в стиле URL (далее будем называет это url-dcap) 
           
          dccp dcap://lxfs07.jinr.ru:22125/pnfs/jinr.ru/data/cms/sourcefile \ /localpath/destinationfile 
           
          в) Если работа производится в окружении GRID, то для доступа используются gsi-ftp (Globus), при этом, разумеется, надо быть зарегистрированным в VO. Копируем туда 
          globus-url-copy file:/tmp/test gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/testfile2 
          Копируем обратно 
           
          srmcp srm://lxfs07.jinr.ru:8443/pnfs/jinr.ru/dteam/testfile2 file:////tmp/backtest 
          г) Пример работы в замечательной системе ROOT приведён в http://www.uscms.org/SoftwareComputing/UserComputing/dCache/dCache.html 
          д) В конце концов можно написать программу используя библиотеку libcap которая предоставляет API POSIX формата. Как утверждают создатели dCache (http://www.dcache.org/manuals/libdcap.shtml) “The libdcap library provides a POSIX like open, create, read, write and lseek functions to the dCache storage.” 
          Подводя итог. С файлами в dCache работать можно. Для этого файл помещается в dCache, при необходимости извлекается в домашнюю или временную директорию и там с ним работают. В dCache изменённый файл переписать нельзя, можно только под новым именем. Для сохранения старого имени файл сначала удаляется, а потом записывается вновь. 
           
          Для общего развития 
           
          
             
            Введение в dCache
  
            
          dCache первоначально разрабатывалась, как интерфейс к хранилищам данных HSM; чтобы уменьшить время операций. Доступ к HSM медленный: (поиск ленты, монтирование ленту, чтение данных и т.д.). Идея заключалась в том, чтобы держать копии недавно используемых файлов на дисковом массиве, таким образом запросы к этим файлам не требовали связи с серверами лент. Потом оказалось, что dCache полезна без лент тоже, когда используются дисковые серверы с большим (десякти Тб) объёмом дискового пространства. 
           
          dCache состоит из дисковой памяти, представленной рядом узлов, возможно связанных с HSM. Узлы (так называемые пулы) - обычные дисковые серверы под управлением, по крайней мере Мы имеем дело с dCache без HSM, в этом случае она предоставляет прозрачный доступ к дисковой памяти, состоящей в действительности из нескольких отдельных серверов, предоставляющих дисковую память. Один выделенный компьютер, решает административные задачи. Эта конфигурация не является бесконечной в плане объёма памяти. На дисках в этом случае хранятся файлы для которых опять же на дисках могут быть созданы копии. Учитывая требования к надёжности хранения информации, диски для исходных файлов должны обладать высокой надёжностью, тогда как к пулам содержащим копии такого требования не выдвигатся. Как с HSM так и без, dCache предоставляет единое пространство имён файлов. Это достигается использованием файловой системы pnfs которая специально разработана для dCache. Она скрывает физическое расположение файла от пользователя, устраняя различие между обращением к оригиналу файла, его копии в дисковом кэше, или копии на ленте. dCache включает средства диагностики через www через которые можно получить информацию о пулах, очередях и т.д. 
          С точки зрения архитектуры система состоит из независимых перемещаемых компонент, называемых ячейками, которые поддерживают постоянную связь друг с другом и реализованных на Java. 
           
          
            - 
              
 
               Пространство файлов pnfs. 
             
            
          PNFS это виртуальная файловая система, монтируется она так же, как NFS, но не выполняет операций ввода-вывода с файлами. Она только поддерживает группировку имён файлов в дереве директорий и информацию о файлах через набор тэгов, которые хранятся в директориях. 
           
           По соображениям безопасности pnfs может быть смонтирована только на компьютерах домена jinr.ry. Для предотвращения неавторизованного доступа к файлам используется обычная авторизация UNIX. 
          
            - 
              
 
               По мнению знатоков (Беркли) 
             
            
           Принципиальными преимуществами безленточной конфигурации dCache являются: 
          
            - 
              
 
               Лучшее использование пропускной способности сети через оптимальное размещение информации 
             
            - 
              
 
               Возможность использования posix IO для чтения и записи, в отличие от полного копирования файлов 
             
            - 
              
 
               Интерфейс ROOT. 
             
            - 
              
 
               Не обязательно монтировать Pnfs для доступа к информации. 
             
            - 
              
 
               Одинаковый способ доступа к файлам как извне так и изнутри. Защита от левого доступа, через gss и gsi. Разнообразие протоколов доступа. 
             
            - 
              
 
               Методы доступа не зависят от физического расположения информации. 
             
            - 
              
 
               dCache даже при значительных объёмах предоставляет единое пространство имён и методов доступа к файлам. 
             
            - 
              
 
               поддерживается DESY-FNAL с гарантией продолжения развития. 
             
            
          Медленно и подробно 
           
          
             
            Двери
  
            
          Клиент посылает запрос на файл данных в систему dCache через дверь. Дверь это сервер который производит аутентификацию пользователя, конвертирует протокол к языку понятному dCache и посылает запрос дальше менеджеру пулов. Дверь общается с остальной системой dCache по внутреннему протоколу, скрывая от пользователя все остальные детали. Дверей может быть много и каждая потенциально поддерживает разные механизмы аутентификации и работает на отдельном компутере. Или не на отдельном. Цель правильной конфигурации дверей – распределение нагрузки и защита от сбоев. Дверь идентифицируется именем компьютера и портом. Двери бывают например FTP для чтения/записи с Керберосом на входе, gridftp, dcap (в качестве родного API), FTP для чтения без Кербероса и т.д. Для зарегистрированных на ферме ЛИТ все двери открыты (по dcap). Есть несколько общих дверей (gridftp, srmcp). Каждый эксперимент может создать свою собственную дверь и ходить только через неё. Если pnfs смонтирован и доступ производится через протокол dcap сервер и порт выбирается автоматически. В остальных случах надо указывать FQDN сервера и порт. В ОИЯИ используется 
           
          url-dcap lxfs07.jinr.ru:22125 
           
          gsiftp lxfs07.jinr.ru:22128 
           
          srm lxfs07.jinr.ru:22127 
           
          Этот список будет действовать ограниченное словом “пока” время. В дальнейшем каждая виртуальная организация получит свою дверь и будет через неё входить и выходить. Список дверей будет висеть на где-то на http://grid.jinr.ru/enter/ 
          
             
            Менеджер пулов.
  
            
          Любой запрос на пространство будь то PUT или GET, обрабатывается менеджером пула. Он оптимально выбирает подходящий пул и очередь запросов. Каждый пул регистрируется в менеджере с указанием класса памяти и правил доступа к нему. 
           
           
          
             
            Пул.
  
            
          Пул отвечает за непрерывную область дисковой памяти: 
          
             
            следит за величиной памяти,
  
             
            поддерживает список файлов, которые можно удалить,
  
             
            инициирует процесс копирования файлов,
  
             
            связывается с клиентом для передачи данных,
  
             
            определяет оптимальное количество задачь передачи данных к конкретной области диска.
  
            
           
           
          
             
            Директории pnfs, GRID.
  
            
          Дерево каталогов отражает сложившееся положение и организовано следующим образом. Для доступа по dcap при смонтированной pnfs 
           
          /pnfs/jinr.ru/user/<�дальше как в AFS> 
          При доступе по url-dcap 
          /pnfs/jinr.ru/data/user/<�дальше как в AFS> 
          При доступе по gsi-ftp или srm 
          /pnfs/jinr.ru/data/<�каталог виртуальной организации> 
          С чего начать. 
           
          
             
            Установка и настройка клиента.
  
            
          Устанавливаем клиент на локальном компьютере. Если AFS уже используется, то вся необходимая dCache инфраструктура (java и т.д.) установлена. Тогда надо получить или установить через yaim lcg-UI 
           
          http://grid-deployment.web.cern.ch/grid-deployment/documentation/LCG2-Manual-Install/ 
           
          и экспортнуть директории 
           
          export PATH=/opt/d-cache/srm/bin:$PATH 
           
          export SRM_PATH=/opt/d-cache/srm 
           
          export GLOBUS_TCP_PORT_RANGE=20000,22000 
           
          Если доступ по протоколам grid кажется излишним, тогда скачать dCache Client посвежее, например dcache-client-1.6.6-5.i386.rpm с http://www.dcache.org/downloads/IAgree.shtml 
           
          и установить его 
          rpm –i dcache-client-1.6.6-5.i386.rpm 
          и дополнить PATH. 
          export PATH=/opt/d-cache/dcap/bin:$PATH 
          Теперь надо создать диреторию 
           
          /pnfs/jinr.ru 
          и смонтировать там Pnfs ЛИТ ОИЯИ 
          mount –o intr,hard,rw,noac lxfs07.jinr.ru:/pnfs /pnfs/jinr.ru 
          Внимание! Команда mount идёт достаточно медленно. 
           
          После этого можно будет посмотреть что там есть в dCache 
          ls /pnfs/jinr.ru/user 
          получается латинский алфивит, такой же как от ls /afs/jinr.ru/user 
           
           
          
             
            Права доступа, uid и шизофрения.
  
            
          Немного технических деталей. Права в системе linux зависят грубо говоря от того, под каким именем личность вошла в систему. С доступом по dcap к смонтированным директориям или всё ясно. Пользователь должен быть зарегистрирован на ферме ЛИТ и тогда права доступа к файлу и назначение uid регулируются правилами linux. Например автор зарегистрирован как 
           
          trofimov (uid=8401) 
           
          и работает с 
           
          /pnfs/jinr.ru/user/t/trofimov 
           
          Если доступ происходит по gsi-ftp или srm, то доступ происходит сложнее. Пользователь должен иметь действительный grid proxy. Когда он обращается файлам этой виртуальной организации, то идентификация его личности производится средствами системы GRID, а вот на компьютерах фермы ОИЯИ он получает псевдоним, который говорит о его членстве в этой виртуальной организации и всё. Например автор с точки зрения GRID не кто иной как 
           
          /C=RU/O=RDIG/OU=users/OU=jinr.ru/CN=Vladimir Trofimov 
           
          для которого на компьютерах фермы ЛИТ происходир реинкарнация в 
           
          dteam001. 
           
          Пользователь dteam001 зарегистрирован на ферме ЛИТ под uid=17206. Добро пожаловать в директорию 
           
          /pnfs/jinr.ru/data/dteam 
           
          и никуда больше. 
           
          Из ситуации раздвоения личности два выхода. Выход номер один: пользователь в каждый момент работы осознаёт кто он есть – член виртуальной организации или сам по себе пользователь фермы ЛИТ. Выход номер два: все файлы домашнего каталога на ферме ЛИТ за исключением почты и откровенных фотографий получают 
           
          сhmod o+r,o+w 
           
          а файлы в директориях виртуальных организаций по крайней мере 
           
          сhmod o+r 
           
          Альтернативой служит решение в стиле Александра Македонского принятое, например, в НИЯФ МГУ: доступ на ферму только средствами GRID. 
           
          
             
            Игры разума
  
            
          Проиллюстрируем вышесказанное. Текст компьютера маленький, а команды выделены жирным. 
          Сижу я на своём компьютере tvv внутри сети ОИЯИ 
           
          [tvv] /home/vtrofimov > uname -a 
          Linux tvv 2.4.21-32.0.1.EL.cern #1 Thu May 26 12:45:05 CEST 2005 i686 i686 i386 GNU/Linux 
          имея тот же uid, что и на ферме 
           
          [tvv] /home/vtrofimov > id uid=8401(vtrofimov) gid=503(vtrofimov) groups=503(vtrofimov) 
           
          и смонтированную pnfs 
           
          [tvv] /home/vtrofimov > mount | grep pnfs lxfs07.jinr.ru:/pnfs on /pnfs/jinr.ru type nfs (rw,intr,noac,hard,addr=159.93.39.37) 
           
          Благодаря этим двум обстоятельствам я могу узнать, что у меня в системе dCache есть файл 
           
          [tvv] /home/vtrofimov > ls -l /pnfs/jinr.ru/user/t/trofimov 
          total 10000 
          -rw-r--r--    1 8410    500      10240000 Mar 16 16:29 test_as_local 
           
          Но я не могу просто так узнать, что находится в директории у trofimov, который является членом VO dteam потому что этот член VO закрыл свою директорию от чтения посторонними. 
           
          Это я-то посторонний? У меня есть сертификат GRID, 
           
          [tvv] /home/trofimov > grid-proxy-info 
          subject  : /C=RU/O=RDIG/OU=users/OU=jinr.ru/CN=Vladimir Trofimov/CN=proxy 
          issuer   : /C=RU/O=RDIG/OU=users/OU=jinr.ru/CN=Vladimir Trofimov 
          identity : /C=RU/O=RDIG/OU=users/OU=jinr.ru/CN=Vladimir Trofimov 
          type     : full legacy globus proxy 
          strength : 512 bits 
          path     : /tmp/x509up_u500 
          timeleft : 8:52:21 
           
          поэтому я могу выяснить, что в директории есть файл 
           
          [tvv] /home/trofimov > /opt/edg/bin/edg-gridftp-ls –verbose \ gsiftp://lxfs07.jinr.ru/pnfs/jinr.ru/data/dteam/trofimov 
          -rw               10240000    test_as_VO1 
           
          В дополнение к нему я бы хотел переписать файл test_as_local принадлежащий сотруднику ОИЯИ Трофимову из его директории. Для записи в принадлежащую члену VO dteam Трофимову директорию под именем test_as_VO недостаточно команды 
           
          [tvv] /opt/edg > cp /pnfs/jinr.ru/user/t/trofimov/test_as_local /pnfs/jinr.ru/dteam/trofimov/test_as_VO 
          cp: accessing `/pnfs/jinr.ru/dteam/trofimov/test_as_VO': Permission denied 
           
          а придётся использовать 
           
          [tvv] /opt/edg > dccp /pnfs/jinr.ru/user/t/trofimov/test_as_local - | globus-url-copy -dbg - \ gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
          debug: starting to put gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
          debug: connecting to gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          220 GSI FTP Door ready 
            
          debug: authenticating with gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          200 Already logged in 
            
          debug: sending command: 
          FEAT 
            
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          211-OK 
           EOF 
           PARALLEL 
           SIZE 
           SBUF 
           ERET 
           ESTO 
          211 End 
            
          debug: sending command: 
          TYPE I 
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          200 Type set to I 
            
          debug: sending command: 
          PASV 
            
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          227 OK (159,93,39,37,78,32) 
            
          debug: sending command: 
          STOR /pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
            
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          150 Openning BINARY data connection for /pnfs/jinr.ru/data/dteam/trofimov/test_as_VO 
            
          debug: data callback, no error, buffer 0xb710f008, length 1048576, offset=0, eof=false 
          debug: data callback, no error, buffer 0xb700d008, length 1048576, offset=1048576, eof=false 
          debug: data callback, no error, buffer 0xb6f0c008, length 1048576, offset=2097152, eof=false 
          debug: data callback, no error, buffer 0xb710f008, length 1048576, offset=3145728, eof=false 
          debug: data callback, no error, buffer 0xb700d008, length 1048576, offset=4194304, eof=false 
          debug: data callback, no error, buffer 0xb6f0c008, length 1048576, offset=5242880, eof=false 
          debug: data callback, no error, buffer 0xb710f008, length 1048576, offset=6291456, eof=false 
          10240000 bytes in 19 seconds (526.32 KB/sec) 
          debug: data callback, no error, buffer 0xb700d008, length 1048576, offset=7340032, eof=false 
          debug: data callback, no error, buffer 0xb6f0c008, length 1048576, offset=8388608, eof=false 
          debug: data callback, no error, buffer 0xb710f008, length 802816, offset=9437184, eof=true 
          debug: response from gsiftp://lxfs07.jinr.ru:2811/pnfs/jinr.ru/data/dteam/trofimov/test_as_VO: 
          226 Transfer complete. 
            
          debug: operation complete 
           
          Вывод. Если не хочется усложнять себе жизнь или работайте как локальный пользователь и забудьте о GRID, или работайте в структуре GRID и забудьте, что у вас есть другие возможности доступа.
         |