Установка Fossil
Используйте Venti для получения наибольшей производительности сервера Fossil (см. документ Установка Venti).
Если вы используете сервер Venti на локальной машине, вам нужно узнать свой IP адрес (cat /net/ndb) и установить значение переменной:
% venti=ваш-ip-адрес
в окружении.
Основным хранилищем данных для Fossil является сервер Venti. Fossil сохраняет dirty блоки и эфемерные картины всех файлов на локальном дисковом разделе под названием буфер записи (write buffer).
Буфер записи не обязательно должен быть одинаковым по размеру с файловой системой, которую он хранит, но, если он большой, то проблем меньше + легкая инициализация. Лэптоп Расса Кокса (Russ Cox, rsc) использует гигабайтовый буфер записи, при чем исходный тексты используют все-навсего полгигабайта.
Отформатируйте буфер записи командой:
% fossil/flfmt /dev/sdC0/fossil
Затем создайте файл под названием flproto, содержащий строки:
srv -p fscons srv fossil fsys main config /dev/sdC0/fossil fsys main open -AWP fsys main
Если вы хотите узнать, что означает каждая из команд, прочитайте страницу fossilcons(8). Выполните:
% fossil/fossil -c '. flproto' % con -l /srv/fscons
для запуска fossil, выполнения сценария flproto и подключения к консоли.
В случае, если какая-нибудь из команд не срабатывает, сценарий не будет продолжать работу. Подключение к /srv/fscons должно вывести сообщения об ошибках. Если вы нажмете Enter несколько раз, то получите:
prompt: main: main:
(Первое приглашение выводится перед запуском сценария. Последняя команда в сценарии изменяет файловую систему по-умолчанию на «main»; последующие приглашения показывают именно его.)
Создайте новое окно и подмонтируйте fossil:
% mount -c /srv/fossil /n/fossil
Теперь у вас есть консольное окно и окно, содержащее подмонтированный fossil. Некоторое время вы будете переключаться между ними. Примеры покажут приглашение «%» для команд оболочки и «main: » — для консольных команд fossil.
Флаги -AWP в команде open отключают аутентификацию, включают произвольные wstats и выключают проверку разрешений.
Файловая система fossil имеет три основных дерева каталогов: /active, /archive и /snapshot. Активная файловая система находится в каталоге /active. Когда вы подмонтировали каталог /srv/fossil, вы автоматически подключили его к /active. О деталях читайте fossil(4).
Перед созданием файлов для конкретных пользователей и групп, вы должны добавить их в таблицу пользователей. Чтобы создать файл пользователей, выполните следующее в консоли fossil:
main: create /active/adm adm sys d775 main:
Возможно, вам захочется использовать тот же набор пользователей, что и в вашей текущей файловой системе. Формат файла был немного изменен, так что теперь первое поле — строка, а не число. (Строка описывает структуру диска fossil, подобно числу, хранящемуся в kfs и структуре диска fs.) Чтобы преобразовать файл, выполните:
% sed 's/^([^:]+):([^:]+)/\2:\2/' /adm/users >/n/fossil/adm/users
Здесь используется /adm/users из вашей локальной kfs. Теперь дайте команду fossil выполнить перезагрузку файла пользователей:
main: users /active/adm/users
Протестируйте результативность перезагрузки:
% echo hi >/n/fossil/foo % chgrp glenda /n/fossil/foo % ls -l /n/fossil/foo % rm /n/fossil/foo
Команда chgrp должна быть успешной, если этого не произошло, то у вас проблема с таблицей пользователей.
Настало время проинициализировать файловую систему. Это можно сделать таким образом:
% disk/mkfs -a -s /n/kfs /sys/lib/sysconfig/proto/allproto | disk/mkext -d /n/fossil
Если ваша kfs и буфер записи fossil находятся на одном диске, то вы можете заметить, что запуск первого, а затем второго — значительно быстрее, таким образом, они не оспаривают диск:
% disk/mkfs -a -s /n/kfs /sys/lib/sysconfig/proto/allproto >/где-нибудь/куда-нибудь % disk/mkext -d /n/fossil </где-нибудь/куда-нибудь
Теперь у вас есть файловая система. Файл пользователей, вероятно, только что был переписан, так что верните его назад:
main: users -w
Эта команда перепишет файлом /adm/users текущую таблицу пользователей сервера.
Создайте картину всех файлов:
main: snap -a
После короткой паузы диск начнет жужжать, так как все блоки, которые вы скопировали, сейчас отправляются на Venti. В конечном счете эта операция завершится.
Теперь убейте fossil и перезапустите его:
% kill fossil | rc % fossil/fossil -c '. flproto'
В консольном окне вам опять необходимо подключится к /srv/fscons.
Проверьте все ли на месте:
% mount /srv/fossil /n/fossil % mount /srv/fossil /n/archive main/archive % ls -l /n/fossil % ls -l /n/archive
Не плохо, не так ли?
Теперь мы готовы к настоящим действиям. Добавьте строку
users /active/adm/users
в файл flproto и удалите флаги -AWP из open. Перезапустите fossil:
g% kill fossil | rc g% fossil/fossil -c '. flproto' g% mount /srv/fossil /n/fossil g% mount /srv/fossil /n/archive main/archive g% ls -l /n/archive
Если вы хотите сохранить сеть, выполните команды:
listen tcp!*!9fs listen il!*!9fs
в flproto или консоли. Теперь другие могут подключаться.
Соединения (даже к локальным /srv файлам) аутентифицируются посредством factotum. Если вы загружаете автономный сервер и не используете ключи p9sk1, вам необходимо добавить ключ к вашему factotum для использования при аутентификации. Особенно, если
% grep p9sk1 /mnt/factotum/ctl
ничего не находит, в таком случае вы должны дать следующую команду:
% echo 'key proto=p9sk1 user=you dom=local !password=local' >/mnt/factotum/ctl
для установки ключа. Это будет нужно для монтирования при работе без флагов -AWP.
Имя пользователя должно совпадать с вашим именем на локальной машине. На пароль нет ограничений. (Так как оба монтирования и fossil используют одинаковый factotum и одинаковые ключи, аутентификация должна быть успешной!)
Примите наши поздравления! Вы владеете fossil.
Для получения большей информации смотрите fossil(4) и fossilcons(8).
Загрузка автономной системы fossil
Это достаточно сложное и неблагодарное занятие. При загрузке вам придется много отлаживать. Вы должны определенно хорошо понимать устройство системы и то, как все ее части объединяются, перед тем как начнете попытки загрузки системы.
Есть возможность сборки ядра, которое загружалось бы из локальной системы fossil. Точкой отсчета является конфигурация pc ядра — pcfl. Скопируйте pcfl в файл pcваше-сист-имя, а затем:
- Замените cpuserver = 0 на cpuserver = 1 в секции port, если вы хотите получить CPU сервер.
- Замените fl на имя вашей системы в путях секции bootdir.
Создайте файл /sys/lib/sysconfig/ваше-сист-имя и заполните его. Файлы в каталоге /sys/lib/sysconfig/fl являются хорошей точкой отсчета. Отредактируйте их, чтобы они подходили вашей установке. Если конкретно, то вам нужно:
- заменить cpuserver=no на cpuserver=yes в файле boot, если это необходимо;
- заменить командную строку venti в boot, если это необходимо;
- отредактировать flproto для соответствия вашей настройке; запомните также, что srv файл должен быть назван boot, а не fossil;
- отредактировать venti.conf для соответствия вашей настройке.
Теперь вы готовы для сборки ядра и его загрузки. Для построения вам нужно запустить lnfs.
Если что-нибудь не так, то ядро не загрузится. И настает время для отладки…
Использование зеркала с fossil
Устройство fs(3) может использоваться для создания зеркала ваших разделов fossil и venti. К примеру, для установки зеркала /dev/fs/fossil, которое является RAID-массивом /dev/sdC0/fossil и /dev/sdD0/fossil, выполните:
bind -a '#k' /dev echo mirror fossil /dev/sdC0/fossil /dev/sdD0/fossil >/dev/fs/ctl
После этого, используя /dev/fs/fossil, вы можете запускать fossil. Намного эффективнее установить зеркало перед форматированием раздела и инсталляцией на него fossil.
Устройство fs(3) не включено в дистрибутив plan9.iso.bz2 (по данным 6 июня 2003 г.) и вам требуется установить ночной снимок системы или же использовать replica/pull(1) (читайте Обновление системы).
Если у вас уже есть fossil и вы хотите добавить диск для его зеркалирования, то можете установить зеркало как это описано выше, запустите fossil и пока вы работаете, используйте команду dd(1) для копирования первого устройства на новое. Дальше используйте cmp(1) для соединения устройства с другим. Если что-то пошло не так, повторите процедуру.
Если вы используете автономную fossil систему, тогда вам необходимо изменить /sys/lib/sysconfig/имя-вашей-системы/boot для установки зеркала перед запуском fossil. Например, вот так:
bind -a '#S' /dev bind -a '#k' /dev ... echo mirror fossil /dev/sdC0/fossil /dev/sdD0/fossil >/dev/fs/ctl fossil -c '. flproto'
где fossil proto файл (flproto) должен использовать устройство fs(3):
srv boot fsys main config /dev/fs/fossil …
Copyright © 2003 Перевод Андрей С. Кухар. Последняя модификация 24.08.2003