Основы системы управления данными в gLite
- Переменные окружения
- Получение списка файлов и директорий
- Создание директории
- Сохранение файла на SE
- Получение SURL файла
- Репликация файла между SE
- Создание символической ссылки
- Передача файла с SE на UI
- Удаление
Цель этого практикума - введение в систему управления данными в gLite.
Для этого используются два набора команд
- "lfc-" команды взаимодействуют с сервером каталогов LFC, который отбражает логические имена файлов в "site URLs" или SURL.
- "lcg-" команды включают в себя команды для копирования файлов на/с SE(Storage Element, Элемент Хранения), а также для репликации файлов.
Команды lcg- также реализуют взаимодействие между SE's и сервером каталогов.
Практикум по работе с File Transfer Service (FTS) находится здесь
Переменные окружения
Некоторые переменные окружения должны быть установлены до начала работы для того чтобы быть уверенным, что используется правильный сервис каталогов. Как правило, значения по умолчанию для этих переменных установлены правильно, но это должно быть проконтролировано. Переменные, для которых должно быть проверено, какие именно значения для них установлены - это следующие:
$ echo $LCG_GFAL_INFOSYS; echo $LCG_CATALOG_TYPE; echo $LFC_HOST grid004.ct.infn.it:2170 lfc lfc-gilda.ct.infn.it
Эти значения устанавливаются, если вы работаете в GILDA. Если же вы работаете в другой среде или хотите использовать другие сервисы, уточните у системного администратора, какие значения должны иметь эти переменные окружения. Для того чтобы изменить значения по умолчанию, используйте команды:
$ export LCG_GFAL_INFOSYS=grid004.ct.infn.it:2170 $ export LCG_CATALOG_TYPE=lfc $ export LFC_HOST=lfc-gilda.ct.infn.it
Теперь вы готовы начать работу.
Команды LFC и LCG
Получение списка файлов и директорий
Для каждой поддерживаемой Виртуальной Организации (ВО) существует своя отдельная "головная директория", как поддиректория для /grid директории. Так, вы можете видеть все файлы, которые храняться для ВО GILDA. Прежде всего проверьте, что у вас уже создан VOMS proxy и затем наберите команду
$ lfc-ls -l /grid/gilda
Вы увидите список содержимого директории /grid/gilda.
Вместо того, чтобы каждый раз набирать полный путь для каждого файла и директории, которые мы будем использовать, можно определить HOME директорию, для которой вы можете использовать уже относительные пути к файлам/директориям. Сделайте это сейчас, установив переменную окружения LFC_HOME следующим образом:
$ export LFC_HOME=/grid/gilda/tutorial
Создание директории
Прежде чем создавать и копировать свои собственные файлы, создайте свою персональную директорию для их сохранения:
$ lfc-mkdir $USER
Для того чтобы проверить, что директория создалась, введите команду
$ lfc-ls -l
И вы увидите вашу созданную директорию (плюс директории, созданные другими участниками практикума).
Сохранение файла на SE
Следующий шаг - сохранение файла в директории, которую вы только что создали. Для начала создайте локально простой текстовый файл.
$ echo "Put something here" > text_file.txt
Команда, использующаяся для копирования файла - lcg-cr(LCG copy and register). Введите следующую команду для того чтобы скопировать этот файл на SE aliserv6.ct.infn.it: (используйте команду lcg-infosites, чтобы определить, какие SE доступны).
$ lcg-cr --vo gilda file://$PWD/text_file.txt -l lfn:$USER/text_file.txt -d aliserv6.ct.infn.it
Вывод команды будет выглядеть примерно так:
$ lcg-cr --vo gilda file://$PWD/text_file.txt -l lfn:$USER/text_file.txt -d aliserv6.ct.infn.it guid:c8da3f42-9a84-47de-9f32-f10ef93c8daa
Конечно, guid, который вы увидите, будет совсем другой, потому что это уникальный идентификатор, который имеет каждый файл (за исключением случаев репликации файла, как мы увидим в дальнейшем). Проверьте, что файл появился, используя команду просмотра содержимого директории.
Прежде, чем продолжить, стоит подчеркнуть разницу между командой, используемой для сохранения файла и созданием директории в предыдущем примере. Созданная директория - это только виртуальная директория и она существует только внутри каталога для логических имён файлов (lfn). С другой стороны файл физически существует на SE, но имеет дополнительное виртуальное имя файла в каталоге. Именно с этим связано то, что команды, которые работают только с пространством логических имён файлов как правило начинаются с префикса "lfc", в то время как команды, непосредственно работающие с файлами, начинаются с "lcg".
Получение SURL файла
Для некоторых случаев, например при использовании FTS, полезно знать SURL файла (их может быть несколько, если файл имеет несколько реплик ещё где-то). Соответствующая команда для этого lcg-lr (list-replicas) [lfn | guid].
$ lcg-lr --vo gilda lfn:$USER/text_file.txt srm://aliserv6.ct.infn.it/dpm/ct.infn.it/home/gilda/generated/2006-07-19/filef42b726f-d9dc-45f4-b3b5-f4d55a6d9c44
Репликация файла между SE
gLite поддерживает репликацию. Файл может сохранён на нескольких SE и затем выполняемая задача может получить доступ к ближайшему SE, где есть реплика файла, обеспечивая таким образом самое быстрое время доступа к файлу. Это также помогает защититься от сбоев или проблем с доступом к конкретному SE. Для того чтобы получить список доступных SE, обратитесь к практикуму по утилите lcg-infosites, который можно найти здесь. Мы будем реплицировать только что созданный файл на SE egee016.cnaf.infn следующей командой:
$ lcg-rep --vo gilda -d egee016.cnaf.infn.it lfn:$USER/text_file.txt
В случае успешного завершения эта команда не выводит ничего, но вы можете прверить, что реплика действительно создалась, просмотрев список всех реплик данного файла, используя команду получения списка реплик
$ lcg-lr --vo gilda lfn:$USER/text_file.txt
Вы должны получить список из двух реплик, примерно следующего вида:
$ lcg-lr --vo gilda lfn:$USER/text_file.txt srm://aliserv6.ct.infn.it/dpm/ct.infn.it/home/gilda/generated/2006-07-19/filef42b726f-d9dc-45f4-b3b5-f4d55a6d9c44 srm://egee016.cnaf.infn.it/dpm/cnaf.infn.it/home/gilda/generated/2006-07-21/file94b9ea79-37cf-49b7-9d16-b82a564fb16f
Отметим, что пути к месту сохранения файлов различны. Это демонстрирует, как использование "lfn" позволяет избежать необходимости разбираться с особенностями локальной файловой системы, где хранятся реплики файла.
Создание символической ссылки
Как пример некоторых других доступных возможностей, создадим второй lfn для файла, который вы сохранили. Это очень напоминает процесс создания символической ссылки в UNIX. Второй lfn создаётся командой:
$ lfc-ln -s $USER/text_file.txt $USER/text_file_symlink.txt
Заметим, что при создании ссылки используется путь к исходному файлу, чтобы избежать проблем, когда относительная ссылка используется из неправильной директории. Если вы сейчас посмотрите на содержимое директории, то вы должны увидеть оба имени, но символическая ссылка имеет размер 0, а также показан файл, на который делалась ссылка.
$ lfc-ls -l $USER -rw-rw-r-- 1 554 102 19 Jul 19 15:36 text_file.txt lrwxrwxrwx 1 554 102 0 Jul 19 15:37 text_file_symlink.txt -> /grid/gilda/tutorial/catania41/text_file.txt
Передача файла с SE на UI
Уже имея файл, переданный на SE, следующий шаг - показать как получить файл обратно. Чтобы получить файл, уже переданный на SE, и имеющий новый lfn, используйте команду:
$ lcg-cp --vo gilda lfn:$USER/text_file.txt file://$PWD/text_file_copy.txt
Вы можете проверить, что файл, полученный обратно, в точности такой же, используя команду cat. Вы увидите точно такой же текст, который вы вводили ранее.
$ cat text_file_copy.txt Put something here $
Удаление
Вы можете удалить файл с SE командой lcg-del
$ lcg-del -a --vo gilda lfn:/grid/gilda/tutorial/$USER/text_file.txt
Эта команда также удаляет и запись о файле из Каталога Файлов
$ lfc-ls $USER $
Завершая процесс удаления, полностью удалим рабочую директорию из каталога.
$ lfc-rm -r /grid/gilda/tutorial/$USER $ lfc-ls /grid/gilda/tutorial/ | grep $USER