Gentoo Logo

Предупреждение : Этот документ находится в разработке, и его пока не следует считать официальным.


Руководство по OpenAFS в Gentoo Linux

Содержание:

1.  Обзор

Об этом документе

Этот документ проведёт Вас по всем необходимым этапам установки сервера openafs на Gentoo Linux. Часть материалов этого документа взята из AFS FAQ и IBM's Quick Beginnings guide on AFS. Никогда не стоит заново изобретать колесо :)

Что такое AFS?

AFS - распределённая файловая система, включающая объединенные хосты (клиенты и серверы) для эффективного совместного доступа к ресурсам файловой системы через LAN и WAN. Клиенты кэшируют часто используемые объекты (файлы), для быстрого доступа к ним.

AFS основана на распределённой файловой системе, разработанной в Information Technology Center в Carnegie-Mellon University, она была названа "Andrew File System". "Andrew" - имя исследовательского проекта в CMU, в честь основателя университета. Когда сформировалась Transarc и AFS стал продуктом, имя "Andrew" было отброшено, чтобы показать, что AFS это не научный проект, а поддерживаемая качественная файловая система. Однако, определенное количество уже существующих ячеек прописывали свои файловые системы как afs. Поэтому иногда совсем нелегко было изменить корневой каталог файловой системы. Посему, чтобы уберечь ранние AFS сайты от переименования их файловых систем, AFS сохранили имя и корень (корневой каталог) файловой системы.

Что такое ячейка AFS?

Ячейка AFS это группа серверов объединенных административно и представляющая собой единую, связанную файловую систему. Обычно, ячейка AFS - это набор хостов имеющих одинаковое доменное имя (например gentoo.org). Пользователь подключается к рабочей станции AFS client которая запрашивает информацию и файлы от имени пользователя. Пользователи не будут знать на каком сервере находится файл, который они запрашивают. Они даже не заметят что сервер перемещен в другое помещение, так как любой том данных может быть изъят и перемещен, незаметным для пользователя образом. Файлы всегда доступны. Это напоминает NFS на стероидах :)

Какая выгода от использования AFS?

Главная сила AFS это её: возможности кэширования (на клиентской стороне, обычно от 100M до 1GB), безопасность (основана на Kerberos 4, списки контроля доступа (access control lists)), простота адресации (у Вас только одна файловая система), масштабируемость (добавление серверов в ячейку, если необходимо), протокол связи.

Где я могу получить больше информации?

Читайте AFS FAQ.

Главная страница Openafs - это www.openafs.org.

AFS была разработана Transarc, которой теперь владеет IBM. Вы можете найти некоторую информацию о AFS на страничке Transarc.

2.  Документация

Получение документации по AFS

Вы можете получить оригинальную документацию IBM по AFS. Она очень хорошо написана и Вы должны её обязательно прочитать, если будете администрировать сервер AFS.

Листинг 2.1:

# emerge app-doc/afsdoc

3.  Установка клиентской части

Предварительная работа

Примечание: Все, все команды должны вводиться в одну строку! В этом документе некоторые команды разбиты на две строки для удобства чтения.

Примечание: К сожалению, для нормального запуска AFS клиент требует под кеш раздел с ext2, т.к. у него некоторые проблемы с reiserfs. Вы должны создать раздел ext2 приблизительно 200MB (больше не повредит) и примонтировать его в /usr/vice/cache

Перед установкой afs клиента, отредактируйте два файла, CellServDB и ThisCell (Они находятся в /usr/portage/net-fs/openafs/files).

Листинг 3.1:

 CellServDB:
 >netlabs        #Cell name
 10.0.0.1        #storage

 ThisCell:
 netlabs       

CellServDB сообщает клиенту, какой сервер(а) ему необходим для соединения с определённой ячейкой. Назначение ThisCell весьма очевидно. Используйте имя своей организации. Ваш (официальный) домен будет хорошим выбором.

Установка клиента

Листинг 3.2:

emerge net-fs/openafs

После успешной компиляции всё готово для начала.

Старт afs при загрузке

Следующие команды создадут соответствующие ссылки для старта Вашего afs клиента при загрузке системы.

Предупреждение: У вас всегда должен быть запущен afs сервер при попытке запустить afs клиент. Система не будет загружаться, пока не пройдёт некоторый таймаут, если сервер не запущен. (Это очень, очень долго)

Листинг 3.3:

# rc-update add afs default

4.  Установка серверной части

Сборка сервера

Следующая команда установит все необходимые пакеты для запуска AFS сервера и клиента.

Листинг 4.1:

# emerge net-fs/openafs

Запуск сервера AFS

Для начала Вы должны удалить образцы файлов CellServDB и ThisCell.

Листинг 4.2:

# rm /usr/vice/etc/ThisCell
# rm /usr/vice/etc/CellServDB

Далее Вы должны выполнить команду bosserver для инициализации Basic OverSeer (BOS) Serv. Считайте что это инициализация системы. Воспользуйтесь флагом -noauth для отключения авторизации, так как Вы пока не добавили пользователя admin.

Предупреждение: Отключение авторизации существенно снижает безопасность ячейки. Вы должны проделать все последующие шаги за один непрерывный проход и не должны оставлять машину без присмотра, пока не перезапустите BOS Server с включённой авторизацией. По краиней мере это то, что говорит документация по AFS :)

Листинг 4.3:

# /usr/afs/bin/bosserver -noauth &

Проверьте, что BOS Server создал /usr/vice/etc/CellServDB и /usr/vice/etc/ThisCellVerify

Листинг 4.4:

# ls -al /usr/vice/etc/
-rw-r--r--    1 root     root           41 Jun  4 22:21 CellServDB
-rw-r--r--    1 root     root            7 Jun  4 22:21 ThisCell

Определение имени ячейки и принадлежности процессов сервера.

Теперь установим имя ячейки.

Важно: Существует несколько ограничений, налагаемых на формат имени. Два наиболее важных ограничения, это то что имя не должно содержать символов в верхнем регистре и не должно быть длиннее 64 символов. Запомните, что имя ячейки будет отображаться под /afs, так что его стоит выбрать коротким.

Примечание: Во всех последующих инструкциях в этом руководстве аргумент <server name> заменяется полным именем машины (таким как afs.gentoo.org) на которую производится установка. Аргументу <cell name> присваивается полное имя ячейки (например gentoo)

Запустите команду bos setcellname для установки имени ячейки:

Листинг 4.5:

  # /usr/afs/bin/bos setcellname <server name> <cell name> -noauth

Запуск процесса Database Server

Далее воспользуйтесь командой bos create для создания записей для четырёх процессов базы данных сервера в файле /usr/afs/local/BosConfig. Эти процессы запускаются только в сервере базы данных.

kaserver Сервер аутентификации, поддерживающий базу данных аутентификации. Он может быть заменён демоном Kerberos 5. Если кто либо захочет попробовать сделать это, пускай не стесняется и свободно модифицирует этот документ :)
buserver Сервер резервных копий - поддерживает базу данных резервных копий (Backup Database)
ptserver Сервер защиты - поддерживает базу данных защиты (Protection Database)
vlserver Сервер размещения томов - поддерживает базу данных размещения томов (Volume Location Database (VLDB)). Очень важный :)

Листинг 4.6:

# /usr/afs/bin/bos create <server name> kaserver simple 
    /usr/afs/bin/kaserver -cell <cell name> -noauth
# /usr/afs/bin/bos create <server name> buserver simple 
    /usr/afs/bin/buserver -cell <cell name> -noauth
# /usr/afs/bin/bos create <server name> ptserver simple 
    /usr/afs/bin/ptserver -cell <cell name> -noauth
# /usr/afs/bin/bos create <server name> vlserver simple 
    /usr/afs/bin/vlserver -cell <cell name> -noauth

Вы должны убедиться, что все серверы запущены с помощью команды bos status:

Листинг 4.7:

# /usr/afs/bin/bos status <server name> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.

Инициализация безопасности ячейки

Теперь мы инициализируем механизм безопасности ячейки. Мы начнём с создания следующих двух инициализационных записей в базе данных аутентификации: главная административная учетная запись, традиционно называется admin и является входом на AFS сервер, называемый afs. Пользователи не входят под идентификатором afs, но модуль Authentication Server's Ticket Granting Service (TGS) использует эту учетную запись для шифрования "серверных билетов" (server tickets) которые выдаются AFS клиентам. Это звучит симпатичнее, почти как Kerberos :)

Вход в интерактивный режим kas

Листинг 4.8:

# /usr/afs/bin/kas -cell <cell name> -noauth
ka> create afs
initial_password:
Verifying, please re-enter initial_password:
ka> create admin
initial_password:
Verifying, please re-enter initial_password:
ka> examine afs

User data for afs
  key (0) cksum is 2651715259, last cpw: Mon Jun  4 20:49:30 2001
  password will never expire.
  An unlimited number of unsuccessful authentications is permitted.
  entry never expires.  Max ticket lifetime 100.00 hours.
  last mod on Mon Jun  4 20:49:30 2001 by $lt;none>
  permit password reuse
ka> setfields admin -flags admin
ka> examine admin

User data for admin (ADMIN)
  key (0) cksum is 2651715259, last cpw: Mon Jun  4 20:49:59 2001
  password will never expire.
  An unlimited number of unsuccessful authentications is permitted.
  entry never expires.  Max ticket lifetime 25.00 hours.
  last mod on Mon Jun  4 20:51:10 2001 by $lt;none>
  permit password reuse
ka>

Воспользуйтесь командой bos adduser для добавления пользователя admin в /usr/afs/etc/UserList.

Листинг 4.9:

# /usr/afs/bin/bos adduser <server name> admin -cell <cell name> -noauth

Выполните команду bos addkey определения шифровального ключа AFS сервера в /usr/afs/etc/KeyFile

Примечание: Если программа попросит ввести ключ, воспользуйтесь паролем введённым при создании записи afs с kas

Листинг 4.10:

# /usr/afs/bin/bos addkey  <server name> -kvno 0 -cell <cell name> -noauth
    input key:
    Retype input key:

Выполните команду pts createuser для создания записи пользователя admin в Protection Database.

Примечание: По умолчанию, Protection Server присваивает AFS UID 1 для пользования admin т.к. это первый пользователь, запись для которого Вы создаёте. Если локальный файл паролей (/etc/passwd или эквивалент) уже содержит запись для admin присваивается другой UID, используйте аргумент -id для приведения UID в порядок.

Листинг 4.11:

# /usr/afs/bin/pts createuser -name admin -cell <cell name> [-id <AFS UID>] -noauth

Выполните команду pts adduser для добавления пользователя admin в группу system:administrators, и pts membership для проверки нового члена.

Листинг 4.12:

# /usr/afs/bin/pts adduser admin system:administrators -cell <cell name> -noauth
# /usr/afs/bin/pts membership admin -cell <cell name> -noauth
      Groups admin (id: 1) is a member of:
        system:administrators

Перезапуск всех процессов AFS сервера

Листинг 4.13:

# /usr/afs/bin/bos restart <server name> -all -cell <cell name> -noauth

Запустите File Server, Volume Server и Salvager

Запустит процесс fs который содержит File Server, Volume Server и Salavager (fileserver, volserver и salvager процессы).

Листинг 4.14:

# /usr/afs/bin/bos create <server name> fs fs /usr/afs/bin/fileserver 
		                              /usr/afs/bin/volserver 
        		                      /usr/afs/bin/salvager 
                		              -cell <cell name> -noauth

Проверьте, что все процессы запущены

Листинг 4.15:

 # /usr/afs/bin/bos status <server name> -long -noauth
 Instance kaserver, (type is simple) currently running normally.
     Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
     Last exit at Mon Jun  4 21:07:17 2001
     Command 1 is '/usr/afs/bin/kaserver'

 Instance buserver, (type is simple) currently running normally.
     Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
     Last exit at Mon Jun  4 21:07:17 2001
     Command 1 is '/usr/afs/bin/buserver'

 Instance ptserver, (type is simple) currently running normally.
     Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
     Last exit at Mon Jun  4 21:07:17 2001
     Command 1 is '/usr/afs/bin/ptserver'

 Instance vlserver, (type is simple) currently running normally.
     Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
     Last exit at Mon Jun  4 21:07:17 2001
     Command 1 is '/usr/afs/bin/vlserver'

 Instance fs, (type is fs) currently running normally.
     Auxiliary status is: file server running.
     Process last started at Mon Jun  4 21:09:30 2001 (2 proc starts)
     Command 1 is '/usr/afs/bin/fileserver'
     Command 2 is '/usr/afs/bin/volserver'
     Command 3 is '/usr/afs/bin/salvager'

Ваши следующие действия зависят от того, запускали ли вы AFS File Server в ячейке:

Если Вы инсталлируете первый AFS сервер в ячейке, создайте первый том AFS, root.afs

Примечание: Для аргумента имени раздела, используйте имя одной из машин раздела AFS сервера. По договорённости эти разделы называются /vicex, где x выбирается из диапазона a-z.

Листинг 4.16:

  # /usr/afs/bin/vos create <server name> 
                            <partition name> root.afs 
				-cell <cell name> -noauth

Если AFS файл-серверы и разделы в ячейке созданы, используйте команды vos sncvldb и vos syncserv для синхронизации VLDB (Volume Location Database) с текущим состоянием разделов на локальной машине. При этом все необходимые данные скопируются на новый сервер.

Листинг 4.17:

  # /usr/afs/bin/vos syncvldb <server name> -cell <cell name> -verbose -noauth
  # /usr/afs/bin/vos syncserv <server name> -cell <cell name> -verbose -noauth

Запуск Server Portion Update Server'а

Листинг 4.18:

# /usr/afs/bin/bos create <server name> 
                    upserver simple "/usr/afs/bin/upserver 
		    -crypt /usr/afs/etc -clear /usr/afs/bin" 
		    -cell <cell name> -noauth

Настройка Top Level AFS файлового пространства

Для начала Вы должны установить несколько acl'ей (списков доступов), что бы любой юзер мог видеть /afs.

Листинг 4.19:

# /usr/afs/bin/fs setacl /afs system:anyuser rl

Вы должны создать корневой том, и примонтировать его в режиме readonly в /afs/<cell name> и режиме read/write в /afs/.<cell name>

Листинг 4.20:

# /usr/afs/bin/vos create <server name><partition name> root.cell
# /usr/afs/bin/fs mkmount /afs/<cell name> root.cell 
# /usr/afs/bin/fs setacl /afs/<cell name> system:anyuser rl
# /usr/afs/bin/fs mkmount /afs/.<cell name> root.cell -rw

Наконец конфигурация закончена!!! Теперь в Вашей локальной сети есть рабочий AFS файл сервер. Теперь время сделать большую чашку кофе и распечатать документацию по AFS!!!

Примечание: Для корректного функционирования сервера AFS, необходима синхронизация всех системных часов. Лучшее решение, установка ntp сервера на одной из машин (например AFS сервере) и синхронизация всех клиентских часов с помощью ntp клиента. Это может также быть сделано afs клиентом.

5.  Базовое администрирование

Будет сделано... А пока читайте документацию по AFS :)



Для печати

Обновлено 4 апреля 2003

Исходный документ обновлен 13 декабря 2011

Аннотация: Это руководство по установке сервера и клиента openafs на gentoo linux.

Holger Brueckner
редактор

Юрий Борисов
переводчик

Георгий Шаповалов
редактор перевода

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.