Предупреждение :
Этот документ находится в разработке, и его пока не следует считать официальным.
|
Руководство по 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 :)
|