Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 51 52 53 54 55 56 57  58 59 60 61 62 63 64 ... 71
мер,  неструктурированное  устройство не будет ничего знать о файловой
системе в данном разделе и может затереть данные, относящиеся к файло-
вой системе.

     Теперь, когда вы знаете, как осуществить доступ к диску, мысленно
вернемся к главе 2 и программам  копирования.  Командный  файл  cpiobr
использует  для  копирования  файлов неструктурированное дисковое уст-
ройство /dev/rfd0, в то время как autobkp использует файловую систему.

     Большинство из этих способов работы с  устройствами  могут  пока-
заться несколько экзотичными и предназначенными в основном для шутки и
обучения. Однако часто шутка помогает продуктивно работать. Ведь пыта-
ясь заставить систему сделать то или иное,  вы можете открыть для себя
новые возможности системы.  Ситуация с аппаратурой очень похожа. Появ-
ляются новые устройства,  и требуются годы для разработчиков программ-
ного обеспечения,  чтобы обнаружить все  возможности  машины.  Система
UNIX существует в том или ином виде уже более десяти лет, но пользова-
тели до сих пор открывают ее новые и удивительные способности.

     Итак, поскольку вы обычно  должны  выбрать  тот  или  иной  метод
использования  раздела  диска,  то ничто не мешает вам завести на уст-
ройстве все разделы одинакового типа. Обычным подходом является созда-
ние файловых систем во всех возможных разделах, чтобы они могли содер-
жать файлы. Тем не менее, вы можете сочетать файловую систему с "нест-
руктурированными" разделами любым способом,  который вам нравится. Од-
ной из возможных схем является использование одного раздела  (fd01)  в
качестве неструктурированного устройства для копирования файлов коман-
дой "cpio -o". Этот раздел занимает почти весь диск, но какая-то часть
отводится  для  размещения второго раздела с файловой системой (fd02).
Распределенное пространство содержит некоторые справочные (help) файлы
и  текстовый файл с именами файлов,  находящихся в неструктурированном
разделе.  Такое разбиение на  разделы  использует  преимущества  обоих
способов. Для того чтобы получить данные, скопированные командой cpio,
вы вводите команду "cpio -i < /dev/rfd01".  Для  получения  данных  из
второго  раздела,  вы вводите команду "mount /dev/fd02 /mnt",  а затем
используете команды ls,  file, grep и другие, которые относятся к фай-
ловой системе. В этом случае раздел с файловой системой служит для до-
кументирования неструктурированного раздела.

              ЗАГРУЖАЕМЫЙ ДИСК И АВТОНОМНЫЙ shell (SASH)

     Инсталляция системы UNIX на жесткий диск обычно выполняется с по-
мощью автономного shell (SASH,  standalone shell). Иногда эта операция
выполняется  с  магнитной  ленты,  но  легче всего использовать гибкий
диск. Возникает вопрос: "Как загрузить UNIX с гибкого диска?"

     Картина следующая:  гибкий диск имеет один раздел или даже  может
быть разделен на корневой раздел и раздел пользователей.  В любом слу-
чае гибкий диск имеет файловую систему,  созданную другой  системой  и
помещенную на диск.  Первый блок файловой системы является загружаемой
записью, которая размещается на носителе с помощью команды dd. Команда
dd копирует байты, начиная с самого начала устройства. Загрузочная за-
пись содержит код, необходимый для запуска системы UNIX с диска.

     Второй блок - это суперблок, своего рода главный каталог файловой
системы.  В нем находятся индексные дескриптооы файлов, содержащие ин-
формацию о каждом файле,  а также список доступных  свободных  блоков.
Корневая  файловая система имеет также вариант ядра для гибкого диска,
который загружается и запускает shell точно так же, как это делает его
старший  брат (ядро системы для жесткого диска) для всей системы в це-
лом.  Вы даже можете смонтировать инсталляционный диск на жесткий диск
с другой системой и выполнять команды копирования. Ограничивающим фак-
тором является размер одного  инсталляционного  диска.  Самый  большой
объем  гибкого  диска  на машинах PC - 1.2 Мб (используется на PC AT),
что вполне достаточно.  Можно уместить почти всю  программу  загрузки,
которая необходима для запуска многопользовательской системы с гибкого
диска.

     Как только ядро системы с гибкого диска загружено, имеется полная
файловая  система  со  всеми файлами устройств.  Ядро монтирует раздел
жесткого диска (предполагается,  что жесткий диск был разбит на разде-
лы)  и копирует на него файлы в формате файловой системы.  Вот как это
выглядит:

# mount /dev/hd01 /mnt <-вызов с гибкого диска для монтирования
                         первого раздела жесткого диска
# copy /unix /mnt      <-копирование ядра жесткого диска в раздел
                         жесткого диска

     ОБНОВЛЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ

     Мы описали суперблок как запись с ключевой информацией о  размере
и  содержимом  файловой системы.  Причиной разрушения файловой системы
обычно являются проблемы,  возникающие в суперблоке.  Команда  sync(1)
выполняет  запись  образа суперблока на диск,  тем самым обновляя его.
Иногда эта операция должна выполняться автоматически и  постоянно  для
того,  чтобы  образы суперблока на диске и в памяти были одинаковы.  В
настоящее время в System V включена программа update, которая запуска-
ется  из  загрузочного файла /etc/rc.  Она живет в системе и исполняет
команды sync и sleep.  В результате информация  о  состоянии  файловой
системы на диске хранится со всеми текущими изменениями, произведенны-
ми с самой файловой системой. Если у вас нет такой программы, вы може-
те  написать командный файл на языке shell,  которая работает в цикле,
вызывая команду sync через соответствующие  интервалы  команды  sleep.
Запустите этот командный файл в фоновом режиме, чтобы поддерживать це-
лостность файловой системы.

     МОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ

     Давайте рассмотрим, что происходит, когда файловая система монти-
руется в древовидной структуре системы.  На рис.  7 -3  показано,  как
взаимодействуют между собой индексные дескрипторы (inodes) двух файло-
вых систем.

                               Рис. 7-3

             Монтирование одной файловой системы в другую
---------------------------------------------------------------------------

                          +------------------------------+
                          |Раздел| Физическое| Логическое|
                          |диска | имя       | имя       |
                          |------------------------------|
                          |  1   | /dev/hd01 |/dev/root  |
                          |  2   | /dev/hd02 |/dev/usr   |
                          +------------------------------+
                   +----+
                   |    |
          Раздел 1 |  / |inode 2 (ls -lia /)
              /  / |    |  \  \  \
           /   /   +----+     \   \   \
        /    /    /  |    \    \    \    \
     /     /     /   |     \     \     \     \
  /      /      /    |      \      \      \     \
+---+  +---+ +---+ +---+ +-----+ +---+ +---+ +---+
|bin|  |dev| |etc| |lib| |lost+| |mnt| |tmp| |usr| inode 245
|   |  |   | |   | |   | |found| |   | |   | | +---+
+---+  +---+ +---+ +---+ +-----+ +---+ +---+ +-|   |
/ | \  / | \  / |\ / | \  / | | \              |   |
                 /   |   \                     +---+
               /|\  /|\  /|\                    /|\
                                                 |
                                /----------------+
                               /
 КОМАНДА                      /
 # /etc/mount /dev/hd02 /usr /
                         +-----+
                         |     |
           Раздел 2      |  /  | inode 2 (ls -lia /usr)
                         |     |
                         +-----+    \  \   \
                     / / /  |  \   \    \   \   \
                 /  /   /   |   \    \     \    \   \
             /   /     /    |    \     \      \     \    \
         /    /       /     |     \      \       \     \     \
      /     /        /      |      \       \       \      \     \
    +---+ +---+ +-------+ +---+ +-----+ +-----+ +-----+ +---+ +---+
    |adm| |bin| |include| |lib| |lost+| |pre- | |spool| |sys| |tmp|
    |   | |   | |       | |   | |found| |serve| |     | |   | |   |
    +---+ +---+ +-------+ +---+ +-----+ +-----+ +-----+ +---+ +---+
    / | \ / | \  / | | \  / | \          /|\    / || \  / | \
               /         /  |   \             /    |   \      \
             /         /    |     \         /      |     \      \
           /|\       /|\   /|\    /|\     / |  \  /|\    /|\    /|\
---------------------------------------------------------------------------

     В примере,  показанном на рис. 7-3, файловая система из раздела 2
монтируется в корневой файловой системе (раздел 1) в каталог /usr. Од-
нако мы помним,  что каждая файловая система  имеет  свой  собственный
корневой каталог.  В каждой файловой системе нумерация индексных деск-
рипторов файла начинается с числа 2, поэтому номера индексных дескрип-
торов  дублируются в двух файловых системах.  Это и является причиной,
по которой не могут быть образованы связи между файлами,  находящимися
в разных файловых си      бразованы связи между файлами,  находящимися

     Одним из атрибутов корневого каталога является то,  что номер его
индексного дескриптора равен 2.  Это значение может быть  проверено  в
корневом каталоге командой "ls -lid /".  Каталог /usr - это просто еще
один файл (а именно каталог) в корневой файловой системе. Этот каталог
может содержать файлы и подчиненные каталоги,  которые хранятся в раз-
деле 1. После выполнения команды "mount /dev/hd02 /usr" корневой ката-
лог  раздела 2 (индексный дескриптор 2) помещается в каталог /usr (ин-
дексный дескриптор 245).  Если какие-либо файлы существуют в  каталоге
/usr в разделе 1, они остаются там, но получить доступ к ним вы не мо-
жете. Единственным способом увидеть их является размонтирование файло-
вой системы,  которая была смонтирована на их место.  Хитрость команды
mount заключается в том, что она представляет новый раздел как бы при-
надлежащим  реальному  корневому  разделу.  В сущности,  это позволяет
иметь безграничную файловую систему.

     Механизмом, который позволяет производить это,  является  таблица
смонтированных устройств,  находящаяся внутри ядра системы.  Когда вы-
полняется обращение к файлу, его индексный дескриптор определяет марш-
рут,  по которому находится данный файл. Если в таблице смонтированных
устройств имеется запись, то этот маршрут ведет на другой раздел диска
или  в  другую файловую систему.  Для того чтобы убедиться,  что вновь
смонтированная файловая система уникальна,  посмотрите индексный деск-
риптор  каталога  /usr сначала из корневого каталога (командой "ls -li
/",  индексный дескриптор 245), а затем из другой файловой системы (ls
-ldi /usr, индексный дескриптор 2).

     КАК ПОЛУЧИТЬ ПОБОЛЬШЕ ИНФОРМАЦИИ О ФАЙЛОВОЙ СИСТЕМЕ?

     Как указывалось ранее, файловая система размещается внутри разде-
ла на диске.  Файловые системы создаются командой mkfs(1), поддержива-
ются командой fsck(1),  отлаживаются командой fsdb(1), а первый доступ
к ним осуществляется командой mount(1).  Каталог /usr/include содержит
все включаемые файлы для использования в программах на языке Си,  реа-
лизующих эти команды.  Таким образом,  этот каталог представляет собой
прекрасную возможность  для  поиска  информации  о  файловой  системе,
поскольку включаемые файлы содержат глобальные определения, используе-
мые подпрограммами файловой системы. В документации Bell Labs (в руко-
водстве  программиста)  также  описаны  некоторые  внутренние таблицы,
используемые файловой системой.

     Теперь мы готовы рассмотреть программные средства для автоматиза-
ции рутинной работы с файловой системой.

---------------------------------------------------------------------------

ИМЯ:  mntf
---------------------------------------------------------------------------
Предыдущая страница Следующая страница
1 ... 51 52 53 54 55 56 57  58 59 60 61 62 63 64 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама