6. Теперь вам дается последняя возможность отменить сделан-
ные вами изменения, прежде чем выйти из divvy:

+---------------------------------------------------------------
| i[nstall] Install the division set-up shown
| (Установить созданные разделы)
| r[eturn] Return to the previous menu
| (Возврат в предыдущее меню)
| e[xit] Exit without installing a division table
| (Выход без установки таблицы разделов)
|
| Please enter your choice:
| (Введите выбранную опцию)
|
Если вы сделали ошибку, введите "e", в противном случае -
"i", чтобы зафиксировать сделанные изменения. Теперь можно сов-
сем выйти из divvy. Когда вы выйдете, система перестроится. Поя-
вится сообщение:

+---------------------------------------------------------------
| Making Filesystems (Создание файловых систем)
|

7. Войдите в sysadmsh и выберите

Backups->Restore->Full

Замечание
При восстановлении резервной копии уровня 0 запись будет
идти поверх вашей файловой системы.
Даже если файловая система была повреждена, в ней может ос-
таться ценная информация. Перед восстановлением на поврежденную
файловую систему важно убедиться, что не повреждена резервная
копия, с которой производится восстановление.
.
- 6-30 -

8. На экране появится:

+--------------------------------------------------------------+
| Full |
| Press <F3> to choose from a list of filesystems |
| |
| /tmp/sysadm 03/15/89 08:20 |
| |
|+-------------------- Restore Filesystems -------------------+|
|| ||
|| Filesystem to Restore : [ ] ||
|| Media : [ ] ||
|| Block size in Bytes : [512 ] ||
|| ||
|| Press <Return> to restore the filesystem or <ESC> to ||
|| abandon ||
|| ||
|| [Restore] ||
|| ||
|+------------------------------------------------------------+|
| |
| Полное |
| Нажмите <F3> для выбора файловой системы из списка |
| Восстановление файловой системы |
| Восстанавливаемая файловая система: [ ] |
| Носитель: [ ] |
| Размер блока в байтах: [512 ] |
| Нажмите <Return>, чтобы восстановить файловую систему, |
| или <ESC>, если этого не надо делать |
| [Восстановление] |
| |
+--------------------------------------------------------------+

9. Введите имя файловой системы или нажмите <F3>, чтобы
выбрать ее из предложенного списка. То же сделать для устройства
с носителем. Вам будет предложено подтвердить выбор.
10. Теперь на экране появляется актуальная командная стро-
ка, например:

xrestore fr /dev/frd096ds15 -C 512 /dev/u; /etc/fsck /dev/u

11. Начните с последней полной копии (уровня 0), загружая
по порядку тома согласно приглашениям.
12. Вам дается еще один шанс остановиться:

+---------------------------------------------------------------
| Last chance before scribbling on /dev/name.
|
Если вы намерены продолжать, нажмите <Return>; в противном
случае нажмите <DEL>.
.
- 6-31 -

13. Процесс восстановления может занять некоторое время.
Когда эта фаза операции завершится, на экране появится:

+---------------------------------------------------------------
| End of backup
| The restore phase of /name has been successful.
| The filesystem will be checked to ensure integrity.
|
| (Конец резервной копии. Фаза восстановления /name
| выполнилась успешно. Файловая система будет проверена
| на целостность)
|
Затем sysadmsh выполняет проверку файловой системы с по-
мощью fsck(ADM). На экран выйдет несколько сообщений вида

+---------------------------------------------------------------
| ** Phase 1 - Check Blocks and Sizes
| (Фаза 1 - Проверка блоков и размеров)
| ** Phase 2 - Check Pathnames (Проверка имен путей)
| ** Phase 3 - Check Connectivity (Проверка связности)
| ** Phase 4 - Check Reference Counts
| (Проверка счетчиков обращений)
| ** Phase 5 - Check Free List (Проверка свободного списка)
| ***** FILE SYSTEM WAS MODIFIED *****
| (Файловая система была модифицирована)
|
14. Когда проверка файловой системы завершится, она снова
монтируется.
15. Теперь, после завершения восстановления с томов уровня
0, вы возвращаетесь в меню сопровождения файловых систем. Повто-
ряйте пункты 6-12 до тех пор, пока не выполнится восстановление
резервных копий высших уровней (1, 8 и 9), которые были сделаны
в период между последним дублированием уровня 0 и моментом пов-
реждения файловой системы. Восстанавливайте их в том порядке, в
котором они были сделаны (т.е. в убывающем порядке), чтобы не
перекрыть более поздние версии файлов более старыми.
.
- 6-32 -

ОПИСАНИЕ УРОВНЕЙ ДУБЛИРОВАНИЯ

Самый простой и надежный способ обеспечения безопасности
данных - каждый раз делать резервную копию всего содержимого
файловой системы. Однако файловые системы могут оказаться боль-
шими (400 MB и больше) и будут копироваться часами. Концепция
уровней дублирования (или инкрементных дублирований) вызвана
этой проблемой. Основная идея инкрементного дублирования - де-
лать копию только тех файлов, которые изменились с предыдущего
дублирования. Тем самым можно значительно сократить размер ре-
зервной копии и продолжительность дублирования. Рассмотрим сле-
дующую схему:
ежемесячно - полное дублирование;
еженедельно - все, что появилось с предыдущей недели;
ежедневно - все, что появилось с предыдущего дня.
Это значит, что в конце каждого месяца дублируется вся файловая
система. Каждую неделю дублируются файлы, изменившиеся после
предыдущей недели, и каждый день - файлы, изменившиеся за день.
Если в некоторый момент файловая система получает повреждение,
вам придется просто восстановить последнюю полную (ежемесячную)
резервную копию, последнюю еженедельную копию и все ежедневные
копии, сделанные до инцидента. Таким образом, всегда можно ре-
конструировать файловую систему, имея набор резервных копий.
Хотя это и выглядит просто, реализовать инкрементное дубли-
рование сложнее.

Принципы уровней инкрементного дублирования

Чтобы процесс дублирования был более эффективным, в средс-
тве дублирования предусмотрен последовательный ряд уровней, каж-
дый из которых базируется на последнем дублировании более низко-
го уровня. Поддерживается до десяти различных уровней дублирова-
ния, что позволяет администратору системы проявлять значительную
гибкость в организации дублирования.
.
- 6-33 -

Уровень Сохраняемые файлы
----------------------------------------------
0 Все файлы файловой системы
1 Файлы, изменившиеся после последнего
дублирования уровня 0
2 Файлы, изменившиеся после последнего
дублирования уровня 1
3 Файлы, изменившиеся после последнего
дублирования уровня 2
..............................................
9 Файлы, изменившиеся после последнего
дублирования уровня 8

Все десять уровней могут использоваться в компьютерах с
массивными файловыми системами; обычные системы используют лишь
несколько уровней. Уровни предназначены для разбиения дублирова-
ния на управляемые элементы. Важно усвоить, что дублирование
каждого уровня создает резервную копию на основе копии предыду-
щего (ближайшего более низкого) уровня. Это значит, что порядок
дублирований несущественен, но существенен номер уровня.
Предположим, например, что за неделю были сделаны следующие
резервные копии:

День Уровень Скопированные файлы
--------------------------------------------------------
Понед. 0 Все файлы файловой системы
Втор. 5 Все файлы, изменившиеся с понедельника
Среда 2 Все файлы, изменившиеся с понедельника
Четв. 7 Все файлы, изменившиеся со вторника
Пятн. 5 Все файлы, изменившиеся со среды

Этот пример нелогичен, но его можно использовать для де-
монстрации работы уровней. Помните, что при каждом дублировании
сохраняются файлы, изменившиеся после дублирования с ближайшим
более низким уровнем (самый низкий уровень - 0). Следовательно,
в пятницу на уровне 5 будет сделана резервная копия файлов, из-
менившихся после дублирования с ближайшим более низким уровнем,
уровнем 2, которое выполнялось в среду. Во вторник на уровне 5
будут сохранены только те файлы, которые изменились с предыдуще-
го дня, так как единственный предыдущий более низкий уровень
дублирования - уровень 0. Если бы все дублирования, кроме поне-
дельника, выполнялись на уровне 5, в каждом случае дублировались
бы все файлы, изменившиеся после дублирования уровня 0 в поне-
дельник.

Как работает расписание, принятое по умолчанию

Файл schedule, принимаемый по умолчанию, поставляется с
дистрибуцией; в нем используется только четыре уровня, и его
можно оптимизировать для применения в системах умеренного поль-
зования (8-10 пользователей с общей дисковой памятью 200-400 MB).
.
- 6-34 -

+--------------------------------------------------------------+
| # 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10|
| # Filesystem M T W T F M T W T F M T W T F M T W T F |
| /dev/rroot 0 x 9 x 9 8 x 9 x 9 1 x 9 x 9 8 x 9 x 9 |
| /dev/ru 9 0 9 9 9 9 8 9 9 9 9 1 9 9 9 9 8 9 9 9 |
+--------------------------------------------------------------+

Рисунок 6-5. Расписание, принимаемое по умолчанию

Файловая система /u

Файловая система /dev/ru является интенсивно используемым
ресурсом. Каждый день делается резервная копия некоторого уров-
ня. Эта схема служит для минимизации ресурсов при максимизации
надежности; если одна или несколько резервных копий за эту неде-
лю потеряется или испортится, существующей избыточности будет
достаточно для минимизации любой потери данных.
Согласно расписанию, принятому по умолчанию, полное дубли-
рование (уровня 0) файловой системы /dev/ru выполняется в начале
месяца. (Так как резервная копия уровня 0 для корневой файловой
системы делается в понедельник, то резервная копия уровня 0 для
/u делается во вторник.) В среду при дублировании уровня 9 будут
сохранены только те файлы /dev/ru, которые изменились после дуб-
лирования уровня 0. К концу недели будет задействовано гораздо
меньшее число дискет или лент, чем нужно при ежедневном полном
дублировании. Значительно сокращается и время дублирования. Если
нужно восстановить файловую систему в последнее зарегистрирован-
ное состояние, вам придется восстановить последнюю резервную ко-
пию уровня 0, а затем - все резервные копии более низкого уров-
ня, сделанные с тех пор.
Заметьте, что каждый вторник происходит дублирование низше-
го уровня (0, 1 или 8), при котором сохраняется все с начала ме-
сяца; теперь каждое последующее дублирование уровня 9 будет ба-
зироваться по этой неделе. В итоге резервные копии уровня 9 не
будут чрезмерно большими и избыточными.

Файловая система root

Корневая файловая система содержит операционную систему и
другие системные файлы. Она изменяется реже, и ее не нужно дуб-
лировать каждый день. Каждый понедельник делается резервная ко-
пия низшего уровня, и дважды в неделю - резервная копия уровня
9. Как и для файловой системы /u, дублирование уровня 9 сводится
к тем только файлам, которые изменились за эту неделю.
.
- 6-35 -

Как используются резервные копии для восстановления файло-
вой системы

Теперь предположим, что произошел аппаратный сбой, разру-
шивший информацию на жестком диске. Допустим, это случилось в
последний четверг месяца, как раз перед тем, когда должна была
быть сделана резервная копия. После того, как проблема с аппара-
турой устранена и система заново установлена, нужно как-то вос-
становить резервные копии. Восстановите последний вариант каждо-
го уровня дублирования в убывающем порядке:
* уровень 0 (сделанный в первый вторник месяца)
* уровень 1 (сделанный в третий вторник)
* уровень 8 (сделанный в четвертый вторник)
* уровень 9 (сделанный в среду вечером)
Вам не нужно восстанавливать резервную копию уровня 8, сде-
ланную во второй вторник, так как последовавшая за ней копия
уровня 1 покрыла те же файлы. Единственная информация, которой
не хватает, - что изменилось за четверг до сбоя. Это главная
причина необходимости дублирования; восстановление после сбоя
пройдет просто и с минимальными потерями.


Глава 7

Добавление драйверов устройств в среде конструктора связей
________________________________________________________________

Введение 7-1
Драйверы устройств 7-2
Установка драйверов устройств 7-2
Установка драйверов с предварительной
конфигурацией 7-3
Установка драйверов без процедуры
настройки оболочки 7-3

- 7-2 -

________________________________________________________________
Драйверы устройств

Драйвер устройства в среде UNIX представляет собой набор
программ, которые обеспечивают связь с физическими устройствами
и являются средствами, с помощью которых операционная система
может управлять выполнением операций ввода/вывода для этих уст-
ройств.
Драйвер устройства обычно поставляется в виде одного прог-
раммного модуля. Установка этого программного модуля в ядро яв-
ляется важной и необходимой частью для установки физических
устройств. Она должна быть полностью завершена до того как уст-
ройство будет использоваться. Драйвер обычно дополняется вспомо-
гательной программой или процедурой настройки оболочки, которые
помогают сформировать связи между драйвером и ядром.
Чтобы подготовить установку нового драйвера устройства не-
обходимо выполнить следующие действия:
* После закрытия системы и отключения питания установить
физическое устройство в системный блок в соответствии с
инструкциями его производителя.
* Загрузить систему и выбрать режим поддержки системы. Все
операции, описанные в процессе установки, должны выпол-
няться в этом режиме.
* Убедиться, что установлен конструктор связей. Если он еще
не установлен, установите его используя команду
custom(ADM).
* Установите каталог, содержащий конструктор связей так,
чтобы можно было запустить средства конфигурации.
cd /etc/conf/cf.d
Большинство процедур установки, описанных ниже, должны
выполняться в этом каталоге.

Установка драйверов устройств

Инструкции по установке новых драйверов устройств отличают-
ся для каждого типа устройств. Необходимо пользоваться только
инструкцией по установке, поставляемой вместе с программным
обеспечением конкретного драйвера устройства.

- 7-3 -

После того, как установлен конструктор связей и изучена ин-
струкция по установке, можно приступить к следующим шагам по ус-
тановке драйвера, которые зависят от того как, много работы уже
было сделано поставщиком драйвера.
Многие поставщики драйверов компонуют драйверы утилитами
автоматической установки драйвера, совместимыми с custom.
Вставьте гибкий диск, полученный от поставщика драйвера, в дис-
ковод и введите :
custom
sysadmsh выбор пользователя: Система->Программное обеспечение
Выберите опцию добавления поддерживаемых продуктов, и
следуйте инструкциям, появляющимся на экране. Custom запустит
поставляемое вместе с драйвером V-совместимое с системой UNIX
программное обеспечение автоматической установки. Оно устанавли-
вает программное обеспечение драйвера устройства и устанавливает
связи с версией ядра UNIXa, которое содержит новый драйвер уст-
ройства. После того как custom завершит свою работу, следует пе-
рейти к следующему шагу установки, обычно заключающемся в тести-
ровании созданного ядра. Для получения детального описания
обратитесь к документации устанавливаемого драйвера устройства.
Если драйвер имеет предварительную конфигурацию следует вы-
полнить инструкции, описанные в "Установке драйверов с предвари-
тельной конфигурацией". Если это не так, следуйте "Установке
драйверов без процедуры настройки оболочки", где определены
действия, необходимые для включения драйвера в конфигурацию сис-
темы.

Установка драйверов с предварительной конфигурацией

Гибкий диск установки драйвера может поставляться с проце-
дурой установки оболочки, используемой для включения нового
драйвера в систему. Если такая процедура присутствует на диске,
запустите ее, введя:
./<имя процедуры>

- 7-3a -

где имя процедуры есть имя процедуры установки оболочки.
Большинство процедур установки оболочки также создает все специ-
альные файлы необходимые для работы устройства; если это так,
перезагрузите ядро, которое теперь включает новый драйвер. Если
процедура установки оболочки не создала соответствующие специ-
альные файлы в /dev, Вы должны создать их с помощью команды
mknod(C). Для получения более подробной информации по созданию
специальных файлов смотрите шаг 10 в "Установка драйверов без
процедуры настройки оболочки" или обратитесь к руководству по
команде mknod(C).

Установка драйверов без процедуры настройки оболочки

Если на гибком диске, поставляемом с драйвером, не сущест-
вует процедуры установки оболочки, следуйте действиям описанным
ниже (если у Вас возникнут проблемы, обратитесь к поставщику
драйвера для получения помощи):

- 7-4 -

1. Создайте резервную копию ядра с помощью следующей коман-
ды:

    cp/unix/unix.old


2. Введите имя программы драйвера из модуля драйвера. Мо-
дуль драйвера является .o файл (обычно Driver.o) в
инсталяционной области. Введите команду :

    ./routines Driver.o


________________________________________________________________
Примечание
Если Вы видите несколько файлов, то это значит, что
установочная область содержит более чем один драйвер. Каждый
файл является модулем драйвера. Имена этих файлов для каждого
драйвера обычно содержат некоторый префикс, который является
именем соответствующего устройства. Например, модуль драйвера
для серийного устройства ввода/вывода может иметь имя
sioDriver.o. Вы должны повторить шаги 2-10 процедуры, которая
описывается в данном разделе, для каждого драйвера, который Вы
хотите установить.
________________________________________________________________

3. Определите уровень приоритета прерываний. Уровень прио-
ритета драйвера имеет имя, состоящее из строки spl, за
которым следует номер от 0 до 7. Наибольший номер следу-
ющий за spl и есть уровень приоритета прерываний. Напри-
мер, если имя spl6 является наибольшим уровнем приорите-
та, то уровень приоритета прерываний устройства есть 6.
Затем вычеркните все spl программы из списка.
4. Найдите соответствующие имена программ драйвера. Все
программы драйвера с перестраиваемой конфигурацией имеют
общий префикс, такой как sio. За каждым префиксом сле-
дует один из суффиксов:open, сlose, read, write, ioctl,

    startup, exit,

fork, exec, init, halt, poll, strategy,

    print, _tty,

или intr. Если имя программы образовано не
по этому правилу вычеркните его из списка. Например, ес-
ли Ъ3routines для sioDriver.o порождает большой список
программ, начинающихся с sio, и одну ttinit программу,
то Вы должны вычеркнуть ее из списка, так как имя ее на-
чинается не с sio. Sio драйвер содержит несколько других
программ, которые также должны быть вычеркнуты, такие
как siopinit - из-за "p". Sio - исключительный случай:
большинство драйверов не имеют такие неправильные имена
программ.

- 7-5 -

5. Определите являются ли периферийные устройства блок-ориен-

    тированными

или символ-ориентированными устройствами.
Если существует программа с суффиксом strategy или

    print, то устройство является блок-ориентированным. Если


суффикс - read, write или ioctl, то устройство сим-
вол-ориентированное. Если нет программ ни с одним из вы-
шеперечисленных суффиксов, то считайте, что устройство -
символ-ориентированное.
6. Создайте подкаталог в /etc/conf/pack.d , в который надо
поместить набор файлов устанавливаемого драйвера. В
качестве имени подкаталога примите общий префикс фай-
лов.
Ъ2mkdir /etc/conf/pack.d/prefix
Если вы планируете использовать имя драйвера отличное от
общего префикса (см. использование опции -h в команде

    configure, описанной дальше), используйте это имя для


имени подкаталога вместо префикса.
Поместите файлы, связанные с драйвером в этот новый под-
каталог. Список файлов будет по крайней мере включать
файл Driver.o. Если набор файлов драйвера также содержит
файлы space.c и stub.c, поместите эти файлы также в соз-
данный подкаталог.
Ъ2mv Driver.o space.c stubs.c /etc/conf/pack.d/prefix
_______________________________________________________________
Примечание
Если выбранные Вами файлы из установочной области относятся
более чем к одному драйверу (несколько файлов), то имена этих
файлов начинаются с имени соответствующего драйвера для каждого
драйвера из установочной области (например, sioDriver.o,
siospace.c и siostubs.c). Когда Вы разместите файлы в подката-
логе каталога /etc/conf/pack.d, удалите префикс из имен фай-
лов таким образом, чтобы имена их были просто Driver.o, space.c
и stubs.c. Например :
mv sioDriver.o /etc/conf/pack.d/sio/Driver.o
mv space.c /etc/conf/pack.d/sio/space.c
mv stubs.c /etc/conf/pack.d/sio/stubs.c
Не забудьте создать подкаталог и поместить в него файлы
для каждого драйвера, который Вы устанавливаете.
_______________________________________________________________

- 7-6 -

7. Получите главный номер устройства с помощью следующей
команды и запомните его для дальнейшего использования :

    ./configure -j NEXTMAJOR


8. Выберите вектор прерываний для конкретного устройства.
Если существует программа с именем intr, обратитесь к
руководству по техническому обеспечению для того, чтобы
найти какие вектор или вектора доступны для использова-
ния конкретным устройством для прерывания. Чтобы полу-
чить список уже активизированных векторов, введите ко-
манду :
./vectorsinuse
Некоторые драйверы написаны таким образом, что позволяют
разделение векторов, однако для наилучшего использования
системы рекомендуется каждому устройству предоставлять
свой собственный вектор или вектора, если это возможно.
Выберите подходящие вектор или вектора для данного уст-
ройства и запишите их.
9. Используйте команду configure для занесения информации о
новом драйвере в файлы конфигурации системы. Все опции
команды configure подробно описаны в руководстве по этой
команде (ADM). Команда configure имеет следующий синтак-
сис и вводится в одной строке, т.е. без нажатия клавиши
Return до того, пока не будет полностью введена команда:
./configure -b -c -m <главный номер устройства> -с -m \
<список векторов> -l <уровень приоритета прерываний> -h \
<имя устройства>
Эти опции имеют следующие назначения и ограничения ис-
пользования :
-b используется, если устанавливается блок-ориентиро-
ванное устройство.
-c используется, если устанавливается
символ-ориентированное устройство.
-m должна предшествовать главному номеру устройства,
определенному ранее.
-s используется вместе с опцией -h, когда добавляется
или удаляется некоторый последовательный модуль и
заменяет -m,-b и -c. Для поток-ориентированного
драйвера используется с опциями -m и -c.
-v используется только если драйвер имеет intr прог-
рамму; предшествует списку векторов определенным
ранее.
-a предшествует списку имен программ драйвера, опре-
деленным командой routines и вычеркиванием исклю-
чительных элементов.

- 7-7 -

-l используется только если драйвер имеет spl прог-
рамму; предшествует уровню приоритета прерываний,
определенному ранее.
-h используется только для того, чтобы указать имя
устройства, отличное от префикса программ драйве-
ра, или вместе со stream module когда не указан
префикс; подкаталог каталога /etc/conf/pack.d,
предназначенный для хранения файлов драйвера,
должен иметь имя этого устройства.
Например, для установки в конфигурацию серийного драйве-
ра ввода/вывода, используется команда:

    ./configure -c -m 5 -v 3 4 -a sioopen sioread siowrite\


    sioioctl siopoll sioinit sio_tty -l 7


Установка драйвера виртуального диска является более
простым примером, для внесения его в конфигурацию ис-
пользуется команда:

    ./configure -b -m 31 -a ramopen ramclose ramstrategy

\

    ramprint


Используя опции -s и -h, Вы можете внести в конфигурацию
поток-ориентированный модуль:

    ./configure -a nmi_init -s -h nmi


10. Для того, чтобы программы могли получить доступ к вновь
установленному устройству, создайте специальный файл
устройства в /dev. Специальные инструкции по установке,
поставляемые вместе с устройством, содержат более точ-
ные сведения по имени специального файла и другим пара-
метрам, связанным с ним. Для создания специального фай-
ла устройства используется команда mknod. Определите
имя специального файла, тип устройства( "b" - для блок-
ориентированного, "c" - для символ-ориентированного),
главный номер устройства и младший номер устройства
(показывающий номер устройства, драйвера или линейный
номер). Например, для того чтобы создать специальный
файл для серийного драйвера ввода/вывода, введите :