• 4.1. Файлы и каталоги. Дерево каталогов
  • 4.2. Команды для работы с файлами и каталогами
  • 4.2.1. Команды для работы с файлами
  • 4.2.2. Команды для работы с каталогами
  • 4.3.Ссылки
  • 4.4. Стандартные имена устройств в Linux
  • 4.5. Стандартные каталоги
  • 4.6. Создание файловой системы. Типы файловых систем
  • 4.7. Использование программы fdisk
  • 4.8. Программа Disk Drake
  • 4.9. Монтирование дисков. Файл/etc/fstab
  • 4.10. Создание раздела (файла) подкачки
  • 4.11. Использование LILO
  • 4.12. Права доступа
  • 4.13. Обслуживание файловой системы
  • 4.14. Подключение магнитооптического диска
  • 4.15. Использование стримера
  • 4.15.1. Подключение стримера с интерфейсом SCSI
  • 4.15.2. Подключение стримера с интерфейсомFDC
  • 4.15.3. Управление стримером
  • 4.16. Стратегия резервного копирования
  • 4.17. Использование программы cpio
  • 4.18. Повышение производительности жесткого диска
  • 4.19. Создание массивов RAID
  • 4.20. Форматирование дискет в Linux
  • 4

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

    4.1. Файлы и каталоги. Дерево каталогов

    В свое время, при использовании DOS вводилось определение файла как поименованной области данных на диске — на то DOS и дисковая операционная система. В Linux понятие файла значительно расширено. Практически все, с чем вы имеете дело в Linux, является файлом. Команды, которые вы вводите с клавиатуры, — это файлы, которые содержат программы. Устройства вашего компьютера – это тоже файлы. Грубо говоря, файл — это последовательность битов, а жесткий диск — просто смесь нулей и единиц. Linux представляет биты так, как вам понятно, и в этом заключается одна из ее основных функций — управление файловой системой. Файловая система — способ организации и представления битов на жестком диске.

    Большинство файловых систем Unix-подобных операционных систем сходны между собой. Файловая система Linux — ext2 (ext3) — очень похожа на файловую систему ufs. К основным понятиям файловых систем в мире unix относятся:

    1. Блок загрузки (boot block).

    2. Суперблок (superblock).

    3. Индексный (информационный) узел (inode).

    4. Блок данных (data block).

    5. Блок каталога (directory block).

    6. Косвенный блок (indirection block).

    Блок загрузки содержит программу для первоначального запуска Unix.

    В суперблоке содержится общая информация о файловой системе. В суперблоке также содержится информация о количестве свободных блоков и информационных узлов. Для повышения устойчивости создается несколько копий суперблока, но при монтировании используется только одна. Если первая копия суперблока повреждена, то используется его резервная копия.

    В индексном (информационном) узле хранится вся информация о файле, кроме его имени. Имя файла и его дескриптор (номер информационного узла — inode) хранятся в блоке каталога. В информационном узле есть место только для хранения нескольких блоков данных. Если же нужно обеспечить большее количество, то в этом случае динамически выделяется необходимое  пространство для указателей на новые блоки данных. Такие блоки называются косвенными. Для того, чтобы найти блок данных, нужно найти его номер в косвенном блоке.

    Файловая система ext2 имеет следующую структуру (см. рис. 4.1):

    1. Суперблок.

    2. Описатель группы.

    3. Карта блоков.

    4. Карта информационных узлов.

    5. Таблица информационных узлов.

    6. Блоки данных.

    Рис. 4.1. Структура файловой системы


    Суперблок, как уже отмечалось выше, содержит информацию обо всей файловой системе. Он имеется в каждой группе блоков, но это всего лишь копия суперблока первой группы блоков: так достигается избыточность файловой системы.

    Описатель (дескриптор) группы содержит информацию о группе блоков. Каждая группа имеет свой дескриптор группы. Карты блоков и информационных узлов — это массивы битов, которые указывают на блоки или информационные узлы соответственно. Таблица информационных узлов содержит информацию о выделенных для данной группы блоков в информационных узлах.

    Блоки данных — это блоки, содержащие реальные данные.

    Что касается файлов, то в операционной системе Linux существует четыре типа файлов:

    1. Файлы устройств.

    2. Каталоги.

    3. Обычные файлы.

    4. Ссылки.

    Файлы устройств представляют собой устройства вашего компьютера. Файлы устройств находятся в каталоге /dev. Например, /dev/ttyS0 — первый последовательный порт (СОМ1). Обычные файлы, в свою очередь, делятся на нормальные (текстовые) и двоичные.

    Каталоги — это специальные файлы, содержащие информацию о других файлах (файлах устройств (/dev), обычных файлов и ссылок). Конечно, это довольно грубое определение, скорее интуитивное, чем точное.

    Ссылки позволяют хранить один и тот же файл, но под разными именами. Немного позже мы поговорим более подробно о ссылках, а сейчас рассмотрим команды для работы с файлами и каталогами. Максимальная длина имени файла составляет 254 символа. Имя может содержать практически любые символы, кроме: / \ ? > < | " *

    В своей работе я не рекомендую использовать слишком длинные, а также русскоязычные имена файлов. Linux чувствительна к регистру символов, поэтому file.txt, FILE.TXT и File.txt — совершенно разные имена файлов, и данные файлы могут находиться в одном каталоге. Понятие «расширение файла» в Linux отсутствует. Напомню, что в DOS имена файлов строились по схеме 8+3: 8 символов — для имени и 3 — для расширения. Расширением (или типом в терминологии Windows) называется последовательность символов после точки.

    Свойства файловой системы ext2:

    Максимальный размер файловой системы 4 Тбайт
    Максимальный размер файла 2 Гбайт
    Максимальная длина имени файла 255 символов
    Минимальный размер блока 1024 байт
    Количество выделяемых индексных дескрипторов 1 на 4096 байт раздела

    4.2. Команды для работы с файлами и каталогами

    4.2.1. Команды для работы с файлами

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

    Создание и просмотр файла

    Для просмотра файла обычно используется команда cat. Например:

    $ cat file.txt

    При этом на стандартный вывод, то есть на ваш терминал, будет выведен файл file.txt. Однако более удобными командами для просмотра файлов являются команды more или less:

    $ less file.txt

    Создать файл можно так:

    $ cat > file.txt

    Здесь используется перенаправление ввода/вывода, о котором подробно сказано в гл. 5. Данные со стандартного ввода (клавиатуры) перенаправляются в файл file.txt. Проще говоря все, что вы после этой команды введете с клавиатуры, будет записано в файл file.txt. Чтобы закончить ввод нажмите Ctrl+D. Помните, что вы не сможете создать файл в каталоге, к которому у вас нет доступа. Вы даже не сможете просмотреть файл, если пользователь, которому этот файл принадлежит, запретил чтение этого файла.

    Копирование файла

    Для копирования файлов в ОС Linux используется команда cp, которая имеет следующий формат вызова:

    $ cp [параметры] источник назначение

    Рассмотрим несколько примеров:

    $ cp file.txt file2.txt

    $ cp file.txt /home/user/text/

    В первом случае выполняется копирование файла file.txt в файл file2.txt. Оба файла находятся в текущем каталоге. Во втором случае — копирование файла file.txt в каталог /home/user/text/.

    Напомню, что вы можете использовать точку ( . ) в качестве ссылки на текущий каталог, символ тильды ( ~ ) — на домашний каталог. Родительский каталог обозначается двумя точками ( .. ). Корневой каталог обозначается символом косой черты ( / ). Параметры команды cp указаны в табл. 4.1.

    Параметры команды cp Таблица 4.1

    Параметр Описание
    При копировании сохраняются атрибуты файлов
    -b Создание копии вместо перезаписи существующего файла
    -d Поддержка символических ссылок. При этом копироваться будут сами символические ссылки без файлов, на которые они указывают
    -i Перед перезаписью существующего файла от пользователя потребуется подтверждение этого
    -l Создание жестких ссылок вместо копирования (при копировании в каталог)
    -r Копирование каталога вместе с подкаталогами
    -s Создание символических ссылок вместо копирования (при копировании в каталог)
    -u Не перезаписывать, если перезаписываемый файл имеет более позднюю дату модификации
    -v Вывод сведений обо всех выполняемых действиях (verbose). Выводит имена всех копируемых файлов
    -x Игнорировать каталоги, расположенные в других файловых системах, по отношению к системе, откуда выполняется копирование
    Переименование и перемещение файлов

    Команда mv перемещает или переименовывает файлы. Например:

    $ mv file.txt file2.txt

    Данная команда переименовывает файл file.txt в файл file2.txt. Можно также перемещать файлы в другой каталог:

    $ mv ~/*.txt /tmp

    Эта команда перемещает все текстовые файлы из домашнего каталога пользователя в каталог /tmp.

    Будьте очень осторожны при использовании команды mv: при перемещении она не предупреждает о существовании файла-назначения и если таковой существует, то он будет перезаписан.

    Удаление файла и каталога

    Для удаления указанного файла используется команда rm. Например:

    $ rm file2.txt

    При этом для удаления файла пользователь должен иметь право на запись в каталог. Права на чтение или запись файла необязательны. Если нет права на запись в файл, то выдается (в восьмеричном виде) режим доступа к файлу и запрашивается подтверждение на удаление. Если стандартный вывод назначен не на терминал, то команда rm будет вести себя так же, как при наличии опции –f. А при указании опции –f не выдается предупреждений, если удаляемый файл не существует, а также не запрашивается подтверждение при удалении файла, на запись в который нет прав. Если нет права и на запись в каталог, то файлы не удаляются. Сообщение об ошибке выдается лишь при попытке удалить каталог, на запись в который нет прав.

    Опция –r предназначена для рекурсивного удаления всех файлов и каталогов, указанных в командной строке. При удалении непустых каталогов команда rm с параметром –r предпочтительнее, чем команда rmdir, поскольку последняя не может удалить непустой каталог.

    Опция –i аналогична одноименной опции команды cp и требует подтверждения от пользователя перед удалением каждого файла.

    Быстрый поиск файла

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

    $ locate passwd

    Поиск программы

    Если вы не знаете, в каком каталоге находится нужная вам команда (программа), введите команду which, указав в качестве параметра нужную вам команду (программу).

    $ which awk

    Данная команда бывает очень полезна в тех случаях, когда вы хотите узнать, установлена ли вообще та или иная программа. Быстрый поиск имени программы можно выполнить прямо из командной строки Linux: для этого введите первые буквы нужной вам команды и нажмите «Tab». Такая функция называется автозаполнением командной строки. Для вывода всех доступных команд нажмите «Tab» дважды. Естественно, что полный список команд на одном экране не поместится. Чтобы «листать» консоль, используйте клавиши «PageUp» и «PageDown».

    4.2.2. Команды для работы с каталогами

    Просмотр содержимого каталога

    Для просмотра содержимого каталога используется команда ls. Закоренелые пользователи DOS могут использовать привычную им команду dir, но команда Is намного удобнее. Программа ls имеет около сорока параметров, о назначении которых вы можете узнать в справочной системе, введя команду man ls.

    Вывод имени текущего каталога

    Команда pwd сообщит вам имя текущего каталога. Эту команду очень удобно использовать при написании сценариев.

    Создание и удаление каталога

    Как и в DOS, для создания каталога используется команда mkdir, а для удаления — rmdir. При удалении каталога нужно учитывать то, что удаляемый каталог должен быть пуст. В противном случае команда заявит о своем бессилии.

    Смена каталога

    Команда cd сменяет текущий каталог на указанный.

    Файловый менеджер Midnight Commander

    Для вызова Midnight Commander введите команду mc. Естественно, пакет mc должен быть предварительно установлен. Midnight Commander очень похож на всем известный Norton Commander, так что я не буду здесь подробно останавливаться на описании данной программы (см. рис. 4.2).

    Рис. 4.2. Midnight Commander

    4.3.Ссылки

    Иногда очень полезно, чтобы в каталоге находился один и тот же файл, но под разными именами. Можно просто скопировать этот файл в другой, но при этом неэффективно используется дисковое пространство. Для этих целей в ОС Linux существует специальный тип файлов — ссылки. Ссылки позволяют хранить один и тот же файл, но под разными именами. Linux поддерживает два типа ссылок: жесткие (прямые) и символические.

    Жесткие ссылки

    Каждый файл в файловой системе Linux имеет свой индекс. Индекс — это уникальный номер файла. Получить информацию обо всех индексах в текущем каталоге можно с помощью команды Is –i. Исходя из принятых положений можно дать более точное определение каталога: каталог — это просто список индексов файлов. Допустим, у нас есть файл text. Просмотрим его индекс:

    ls –i text

    25617 text

    Теперь создадим жесткую ссылку на файл text командой In:

    ln text words

    Обратите внимание, что ссылка words на файл text имеет тот же индекс, что и файл text:

    ls –i words

    25617 words

    Отсюда следует, что жесткие ссылки привязываются к индексу файла. В рамках одной файловой системы вы можете организовывать только жесткие ссылки.

    Командой In можно создать множество ссылок на один файл и все они будут иметь один и тот же индекс.

    Изменяя файл words, вы автоматически измените файл text. Удаляя файл words, вы можете удалить и файл text, но только в том случае, когда на него нет больше ссылок. В противном случае удалению подлежит только ссылка. Количество ссылок отображается по команде Is –l. Число, стоящее слева от имени владельца, и есть количеством ссылок. При этом доступны две ссылки на каталоги: "." – ссылка на текущий каталог, а ".." – на родительский.

    Символические ссылки

    Символические ссылки выполняют ту же функцию, что и жесткие, но несколько иначе. Они не ссылаются на индекс файла. Символическая ссылка представляет собой специальный файл, при обращении к которому система понимает, что на самом деле нужно обратиться к другому файлу и обеспечивает прозрачность операции. Отсюда следует, что операции с символическими ссылками выполняются медленнее, чем с жесткими. Создать символическую ссылку можно командой ln –s, например:

    ln –s text words

    Теперь, введя команду Is –i, вы увидите, что файлы text и words имеют разные индексы. Посмотрим, какую информацию выведет команда ls –l text words:

    ls –l text words

    lrwxrwxrwx 1 den group  3 Dec 5 12:11 words –> text

    -rw-r--r-- 1 den group 12 Dec 5 12:50 words

    Обратите внимание на первый символ строки lrwxrwxrwx — символ «l». Это означает, что данный файл является символической ссылкой на файл text, о чем свидетельствует информация в последней колонке words->text.

    Символическая ссылка не имеет прав доступа — для нее всегда используется набор rwxrwxrwx. Подробнее о наборах прав доступа будет сказано ниже. А на данном этапе хочется отметить следующее: символические ссылки очень полезны, так как они позволяют идентифицировать файл, на который они ссылаются, тогда как для жестких ссылок нет простого способа определить, какие файлы привязаны к одному и тому же индексу. Однако, если вы удалите файл, на который ссылаются символические ссылки, то получите паутину бесполезных ссылок, которые ни на что не ссылаются. При использовании жестких ссылок вы не сможете удалить файл до тех пор, пока на него ссылается хоть одна жесткая ссылка.

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

    echo $cwd

    4.4. Стандартные имена устройств в Linux

    Как уже отмечалось раньше, все устройства в Linux являются файлами. Файлы устройств находятся в специальном каталоге /dev. Для просмотра данного каталога удобнее всего использовать команду mc. Запустите mc и перейдите в каталог /dev. Если возле файла слева вы видите +, то данное устройство подключено и функционирует.

    В этом пункте я вкратце постараюсь объяснить, какие файлы ассоциируются с какими устройствами. Договоримся, что символ N обозначает номер устройства, например, ttyN обозначает устройства /dev/tty1…/dev/ttyN, а x — символ. Наиболее используемые стандартные имена устройств (в соответствии с принятыми обозначениями) приведены в табл. 4.2.

    Наиболее используемые стандартные имена устройств Таблица 4.2

    Файл Устройство
    TtyN Консоль
    mouse Мышь
    audio Звуковая карта
    modem Модем. Обычно файл /dev/modem является ссылкой на один из файлов /dev/ttyS0
    ttySN Последовательный порт. Файл /dev/ttyS0 аналогичен файлу COM1 в DOS
    IpN Параллельный порт
    cuaN Могут обозначать последовательные порты. Используются немного в другом контексте, чем ttySN
    hdxN IDE жесткий диск
    sdxN SCSI жесткий диск
    fd0 Первый дисковод для гибких дисков, то есть А:, для В: используется имя /dev/fd1
    stN Стример с интерфейсом SCSI
    nrtfN Стример с интерфейсом FDC
    mdN Массив RAID
    ethN Сетевая плата
    null Пустое устройство

    На устройствах hdxN и sdxN необходимо остановиться подробнее. Известно, что к (E)IDE (ATA) контроллеру можно подключить четыре IDE-устройства: Primary Master, Primary Slave, Secondary Master, Secondary Slave.

    Этим устройствам соответствуют символы: а, b, с, d. Например, /dev/hda — Primary Master, a /dev/hdd — Secondary Slave. Номер N в обозначении устройства обозначает номер раздела на жестком диске. Первичный раздел DOS на первом жестком диске обозначается так: /dev/hda1.

    4.5. Стандартные каталоги

    В ОС Linux есть каталоги, которые называются стандартными. Иногда их еще называют системными. Эти каталоги присутствуют практически в каждой ОС Linux. В них находятся файлы, необходимые для управления и сопровождения системы, а также стандартные программы. Описание стандартных каталогов сведено в табл. 4.3.

    Стандартные каталоги Таблица 4.3

    Каталог Назначение
    / Корневой каталог
    /bin Содержит стандартные программы
    /home Содержит домашние каталоги пользователей
    /usr Содержит все программы, используемые системой
    /sbin Команды для системного администрирования
    /var Содержит файлы, которые постоянно изменяются, например, спулы для принтеров, а также файлы почтовых ящиков
    /etc Содержит файл настройки системы
    /dev Здесь находятся файлы устройств
    /tmp Каталог для временных файлов
    /mnt Обычно здесь создаются точки монтирования. Тем не менее, подмонтировать файловую систему можно к любому другому каталогу, а использование каталога /mnt не является обязательным

    4.6. Создание файловой системы. Типы файловых систем

    Каждая операционная система имеет основной тип файловой системы, а также дополнительные типы, поддержка которых осуществляется модулями (драйверами), подключаемыми к ядру. В случае с Linux поддержку той или иной файловой системы можно встроить непосредственно в ядро. Основной файловой системой Linux на момент написания этих строк является ext2fs, однако на ее смену сейчас приходит ext3fs и последние версии дистрибутивов Linux используют именно ее. Переход на новую файловую систему обеспечивает более надежную ее работу.

    Кроме основной файловой системы, Linux поддерживает файловые системы, указанные в табл. 4.4.

    В табл. 4.4 рассмотрены базовые типы файловых систем. ОС Linux поддерживает и другие файловые системы, не указанные в таблице. Поддержку нужной вам файловой системы можно включить при перекомпилировании ядра. Подробно этот процесс рассмотрен в гл. 18. Для нормальной работы вам потребуются только файловые системы, отмеченные звездочкой.

    Типы файловых систем Таблица 4.4

    Файловая система Комментарий
    Minix Filesystem (minix) Устаревшая и практически неиспользуемая в наше время файловая система
    Xia Filesystem (xia) Редко используется
    UMSDOS Filesystem (umsdos) Использовалась для установки Linux в раздел MSDOS
    MSDOS Filesystem (msdos) Файловая система msdos
    (*) VFAT Filesystem (vfat) Файловая система Windows
    NT Filesystem (ntfs) Файловая система Windows NT
    HPFS Filesystem (hpfs) High Performance FS. Файловая система OS/2
    (*) ISO 9660 Файловая система, используемая большинством CDROM
    (*) /proc Предоставляет информацию о процессах
    Extended Filesystem (ext) Устаревшая версия основной файловой системы Linux
    (*) Second Extended Filesystem (ext2) или Third Extended Filesystem (ext3) Основная файловая система
    Network Filesystem (nfs) Сетевая файловая система

    Внимание! Старайтесь никогда не использовать файловую систему msdos. Она поддерживает только имена в формате 8+3 (так называемые короткие имена файлов). Вместо нее нужно использовать файловую систему vfat. Она поддерживает «длинные» имена файлов и нормально работает со старыми разделами (дискетами), отформатированными под файловую систему msdos.

    Прежде чем перейти к созданию файловой системы, хочу рассмотреть несколько новых файловых систем, которые, скорее всего, становятся стандартом в настоящее время. Ядро 2.4.8 уже поддерживает файловые системы: Ext3, ReiserFS, XFS.

    Список файловых систем, которые поддерживаются ядром системы, содержится в файле /proc/filesystems. Просмотреть этот список поможет команда

    cat /proc/filesystems

    Файловая система Ext3 (Third Extended Filesystem) представляет собой журналируемую надстройку над ext2, поэтому возможно чтение одной файловой системы как драйвером Ext3, так и драйвером Ext2. Возможно отключение журналирования. Файловую систему ext2 можно конвертировать в ext3, запустив программу создания журнала. После конвертирования новую файловую систему можно использовать и без журнала — для этого достаточно примонтировать ее драйвером для ext2.

    RaiserFS — журналируемая файловая система. Основной ее особенностью является способность хранить несколько мелких файлов в одном блоке.

    XFS — также журналируемая файловая система, первоначально разрабатывалась компанией Silicon Graphics (SGI) для ОС Irix. Особенностью этой файловой системы является устройство журнала: в журнал пишется часть метаданных самой файловой системы таким образом, что весь процесс восстановления после сбоя сводится к копированию этих данных из журнала в файловую систему. Размер журнала задается при создании системы, он должен быть не меньше 32 мегабайт.

    JFS первоначально разрабатывалась компанией IBM для AIX OS, позднее была перенесена на OS/2, а не так давно и под Linux. Размер журнала составляет примерно 40% от размера файловой системы. Максимальный размер равен 32 мегабайтам. Эта файловая система может содержать несколько сегментов, содержащих журнал и данные. Эти сегменты называются агрегатами и могут монтироваться отдельно.

    Все эти файловые системы предназначены для создания высокопроизводительного файлового сервера или рабочей станции, ориентированной на работу с файлами больших размеров. Какая из них лучше — трудно сказать. Нужно исходить из потребностей.

    Производительность JFS ниже, чем у остальных трех файловых систем, но она более предсказуема по своему поведению, то есть можно с большой вероятностью предсказать, когда начнется падение производительности. XFS обладает значительно большими показателями производительности. Особенно хорошо она себя проявляет при работе с файлами больших размеров. Производительность этой файловой системы можно значительно повысить, если создать журнал на отдельном контроллере.

    Файловая система ReiserFS показала еще большую производительность, но трудна в прогнозировании падения производительности. Файловая система ext3 практически по всем параметрам производительности мало чем отличается от ReiserFS.

    Вот тут я слишком часто употребляю слово «журналируемая». Давайте же разберемся, что же собой представляет журналируемая файловая система, и в чем состоят ее преимущества.

    Прежде всего нужно отметить, что журналируемые файловые системы не предназначены для восстановления ваших данных любой ценой после сбоя. Они предназначены для других целей. Например, вы открываете файл, и он успешно открывается — файловая система отмечает операцию открытия в своем журнале записью транзакции. Затем вы начинаете писать в файл. При этом файловая система не запоминает копии этих данных. Затем происходит сбой. Когда происходит восстановление после сбоя, происходит откат до последней успешной транзакции — открытия нового пустого файла. Поэтому, когда вы пишите в файл и происходит сбой, вы получите файл нулевой длины.

    Давайте рассмотрим создание основной файловой системы типа ext2. A создать файловую систему такого типа можно с помощью команды:

    mke2fs -с <устройство>

    Опция –с указывает программе, что нужно сделать проверку устройства на наличие ошибок. В качестве устройства обычно выступает раздел жесткого диска. Некоторые опции команды mke2fs перечислены в табл. 4.5. Полный список опций с описанием вы можете получить, введя команду man mke2fs.

    Естественно, прежде чем создавать файловую систему на жестком диске, необходимо создать на нем разделы с помощью программы fdisk. Linux в качестве устройства может использовать обыкновенный файл. Его можно создать командой dd. Затем файловую систему нужно примонтировать командой mount. Обо всем этом будет сказано немного позднее. Сейчас же рассмотрим, как перейти от обыкновенной файловой системы ext2 к журналируемой системе ext3. Как я уже отмечал, после/конвертирования с файловой системой ext3 можно будет работать в режиме ext2, отключив журналирование. Другими словами, просто нужно будет использовать драйвер ext2.

    Параметры mke2fs Таблица 4.5

    Опция Описание
    -b размер_блока Устанавливает размер блока. Допустимыми являются 1024, 2048 и 4096 байт/блок. Если размер блока не указан, то mke2fs устанавливает его исходя из размера и типа файловой системы (см. опцию –Т)
    -f размер_фрагмента Устанавливает размер фрагмента в байтах
    -l имя_файла Читает список «плохих» блоков из указанного файла
    -Т тип_ФС Устанавливает оптимальные параметры для файловой системы указанного типа
    -m количество_блоков Резервирует указанное количество блоков под суперпользователя. Задается в процентах от общего количества. По умолчанию резервируется 5%
    Перед созданием файловой системы производит проверку устройства на предмет присутствия «плохих» блоков
    -v В процессе работы выдает подробную информацию

    Если вы используете операционную систему Red Hat 7.2 или Mandrake 8.1 и выше, то, скорее всего, у вас уже будет установлена файловая система ext3. Если же вы во время установки не включили поддержку ext3, то сейчас самое время это сделать, хотя переходить на новую файловую систему или нет, решать только вам.

    Прежде чем перейти к практике, прочитаем немного теории о новой файловой системе. Файловая система ext3 имеет два основных преимущества перед ext2. Первое состоит в том, что ext3 записывает изменение данных и метаданных, что позволяет сохранять содержимое файлов. Второе преимущество состоит в том, что разделы ext3 ничем не отличаются от разделов ext2, поэтому всегда можно перейти к старой файловой системе и наоборот. Главным здесь является то, что вы можете спокойно делать резервную копию файловой системы ext3, а потом развернуть ее на ext2-разделе. Позже можно будет включить журналирование.

    Немного определений:

    Метаданные (metadata) — это данные, которые являются описанием других данных (например, схема базы данных по отношению к содержимому базы данных).

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

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

    Теперь перейдем непосредственно к практике. Для того, чтобы наилучшим образом понять этот материал, вам следует прочитать пункт этой главы о монтировании дисков, а также гл. 18. Тем не менее, дальнейший материал изложен таким образом, что перекомпилировать ядро вы сможете и не читая гл. 18, просто на данном этапе вы не все поймете. В этом разделе книги я попытаюсь как можно подробнее описать процесс перехода на новую систему.

    Переход на файловую систему ext3 нужно начинать, собственно, с включения поддержки новой файловой системы. При этом необходимо перекомпилировать ядро. С этой целью перейдите в каталог /usr/src/linux и запустите программу make menuconfig. В разделе Filesystem отметьте файловую систему ехt3. Если эта опция уже включена, то ядро уже поддерживает файловую систему ext3.

    Примечание. Для поддержки ext3 необходимо ядро версии 2.4.7 или выше. В дистрибутиве Linux Red Hat 7.2 используется ядро версии 2.4.7.

    После этого согласитесь сохранить изменения в конфигурации ядра и выполните следующие команды:

    make dep

    make bzImage

    make modules

    make modules_install

    make install

    Некоторые из этих команд, возможно, вам и не понадобятся, а какие именно, вы узнаете в гл. 18. Однако вы уже сейчас можете вводить эти команды — они будут у вас работать, но при этом на их выполнение понадобится гораздо больше времени, так как это общий случай — для всех. Первая команда производит необходимую подготовку к компилированию ядра. В принципе, она необязательна, но относится к категории весьма желательных. Вторая собирает само ядро. Две следующих — собирают и устанавливают модули ядра. Последняя команда устанавливает ядро. После выполнения последней команды желательно ввести команду lilo для перезаписи главной загрузочной записи MBR. Кроме этого, желательно перезагрузить компьютер (не подумайте, что по рекомендациям Microsoft!) для того, чтобы убедиться, что собранное ядро работает. Если же ядро отказалось работать, то загрузитесь с системной дискеты Linux (создается при установке) и повторите процесс сборки ядра.

    Затем нужно создать журнал командой

    tune2fs –i 0 –с 0 –j /dev/hda1

    Эта команда создает и конвертирует корневую файловую систему типа ext2, расположенную на устройстве /dev/hda1, в файловую систему ext3. На этом, собственно, весь процесс конвертирования можно считать завершенным. Остается только сказать системе, что ей нужно использовать драйвер ext3. Для этого откройте в любом текстовом редакторе файл /etc/fstab, в котором вы должны увидеть примерно такую строку:

    /dev/hda1 / ext2 defaults,usrquota,grpquota 1 1

    Обычно она самая первая строка в файле. Эта строка означает, что корневая файловая система (/) расположена на устройстве /dev/hda1 и для нее используется драйвер ext2. Просто замените ext2 на ext3 и сохраните изменения. После этого можно перезагрузить компьютер. Аналогично вы можете конвертировать другие ext2-разделы: выполните команду tune2fs для каждого раздела и измените драйвер в файле /etc/fstab.

    4.7. Использование программы fdisk

    Программа fdisk для Linux используется при создании разделов под Linux. Естественно, ее можно использовать для создания разделов и других типов. Каждая операционная система имеет свою версию fdisk. При этом рекомендуется для создания разделов конкретной операционной системы использовать ее «родную» версию fdisk. Запуск fdisk производится следующим образом:

    fdisk <диск>

    Дальнейшее изложение материала будет построено на примере, в котором я буду издеваться над старым жестким диском, имеющем 683 цилиндра. Честно говоря, это устройство как-то страшно даже назвать жестким диском — скорее устройством, выполняющим его функции.

    Итак, запускаем fdisk, указав параметр /dev/hda. Если этого не сделать, то вам придется созерцать недовольное ворчание программы по этому поводу — это вам не DOS.

    # fdisk /dev/hda

    Command (m for help):

    Для получения справки можно ввести m. На экране вы увидите примерно следующее:

    Command action

    a toggle a bootable flag

    d delete a partition

    l list known partition types

    m print this menu

    n add a new partition

    p print the partition table

    q quit without saving changes

    t change a partition's system id

    u change display/entry units

    v verify the partition table

    w write table to disk and exit

    x extra functionality (experts only)

    Нам потребуются только команды p, n, q и w. Для начала распечатаем таблицу разделов:

    Command (m for help): p

    Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders

    Units = cylinders of 608 * 512 bytes

    Device    Boot Begin Start End Blocks Id System

    /dev/hda1 *    1     1     203 61693  6  DOS 16-bit >=32M

    Здесь видно, что имеется один DOS-раздел приблизительно на 60 Мб (1 блок = 1024 байт). Этот раздел начинается с первого цилиндра и заканчивается на 203-ем. Всего на диске 683 цилиндра, т.е. для создания раздела Linux у нас осталось 480 цилиндров. Создаем новый раздел (команда n):

    Command (m for help) : n

    Command action

    e extended

    p primary partition (1-4)

    p

    Задаем тип создаваемого раздела (первичный или расширенный). Разница между первичным и расширенным разделами состоит в следующем:

    1. Может существовать только 4 первичных раздела.

    2. В первичных разделах могут храниться данные, а расширенный раздел также содержит информацию о разделах, которые находятся в нем.

    В нашем примере будет 2 первичных раздела — один раздел для файловой системы Linux (Linux Native) и один раздел для подкачки (Linux Swap):

    Partition number (1-4) : 2

    First cylinder (204-683) : 204

    Last cylinder or +size or +sizeM or +sizeK (204-683) : +80M

    Номер первичного раздела — 2. Первый цилиндр — 204. Последний цилиндр вычисляется автоматически. Здесь можно ввести непосредственно номер последнего цилиндра, но это неудобно. Проще ввести размер в байтах +размер, в Кб или в Мб ( +размерКили +размер М соответственно).

    Теперь создадим второй раздел для свопинга.

    Command (m for help) : n

    Command action

    e extended

    p primary partition (1-4)

    p

    Partition number (1-4) : 3

    First cylinder (474-683) : 474

    Last cylinder or +size or +sizeM or +sizeK (474-683) : +10M

    По умолчанию fdisk создаст раздел типа Linux Native (81). Нам нужно изменить его на тип Linux Swap (82). Это можно сделать с помощью команды t, а с помощью команды l можно просмотреть доступные типы разделов. Теперь распечатаем таблицу разделов:

    Command (m for help) : p

    Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders

    Units = cylinders of 608 * 512 bytes

    Device    Boot Begin Start End Blocks Id System

    /dev/hda1 *    1     1     203 61693  6  DOS 16-bit >=32M

    /dev/hda2      204   204   473 82080  81 Linux Native

    /dev/hda3      474   474   507 10336  82 Linux Swap

    Номера цилиндров 508…683 не использованы — здесь можно создать дополнительные разделы.

    Далее нужно ввести команду w для того, чтобы записать таблицу разделов на диск:

    Command (m for help) : w

    До тех пор, пока вы не введете эту команду, ни одно из сделанных изменений не даст эффекта. Вы можете в любой момент выйти из программы без сохранения изменений, введя команду q.

    Теперь, согласно традиции, нужно упомянуть о проблеме цилиндра с номером 1024. Старые версии Linux не могут загружаться с разделов на цилиндрах, номера которых превышают 1024. Поэтому раздел для корневой файловой системы нужно стараться разместить до цилиндра №1023. Однако использовать разделы на цилиндрах, номера которых превышают 1024, Linux может.

    4.8. Программа Disk Drake

    Программа Disk Drake обладает понятным графическим интерфейсом и запускается из-под X Window. Эта программа входит в состав инсталлятора Linux Mandrake, и именно ее вы используете, когда формируете разделы на вашем винчестере при установке этого дистрибутива. По своим возможностям она очень напоминает Partition Magic, да и интерфейс мало чем отличается. Вы можете создавать и удалять разделы, изменять размер и тип файловой системы. В состав Red Hat Linux входит всем известный Disk Druid. Программа похожа на Disk Drake, но, на мой взгляд, менее удобна.

    Пусть я рискую показаться читателю аскетом, но я предпочитаю использовать программу fdisk. Что и вам советую, так как fdisk — стандартная программа и, вне зависимости с каким дистрибутивом работаете, вы всегда сможете выполнить любые операцию по переразбиению жесткого диска на разделы, используя fdisk. Согласен, fdisk не умеет изменять размер раздела без потери данных, но лучше уж уметь использовать fdisk, чем пытаться запустить Disk Drake, работая со Slackware…

    4.9. Монтирование дисков. Файл/etc/fstab

    Как уже отмечалось ранее, прежде чем использовать файловую систему, ее нужно примонтировать к основной файловой системе. Определим правила работы со сменными носителями (СН) данных (CDROM, Floppy, Zip) и монтируемыми файловыми системами (ФС):

    1. Прежде чем использовать СН (или ФС), его нужно примонтировать к корневой файловой системе. Каталог, через который будет производиться доступ к файлам СН (ФС), называется точкой монтирования.

    2. Если вы хотите сменить СН, его нужно размонтировать, сменить на новый и смонтировать заново.

    3. Если вы не хотите использовать СН (ФС), его нужно размонтировать. При останове системы размонтирование производится автоматически.

    4. Вы не можете размонтировать СН (ФС), который в данный момент используется.

    Для монтирования ФС предназначена программа mount, для размонтирования — umount. Общий формат вызова (наиболее часто используемый) следующий:

    mount –t fs_type device mount_point

    В качестве параметра fs_type программы mount указывается тип подключаемой файловой системы, некоторые из которых я позволю себе еще раз напомнить в табл. 4.6.

    Основные типы файловых систем Таблица 4.6

    Тип Описание
    ext2 или ext3 Файловая система Linux
    vfat Файловая система Windows 9х
    iso9660 Ее нужно использовать при монтировании CD-ROM
    ntfs Всем известная NT Filesystem

    Следующим параметром является устройство (device). В качестве устройства выступает носитель данных, например /dev/hdd. Далее, наконец, задается сама точка монтирования (mount_point). Примонтировать файловую систему вы можете к любому каталогу корневой файловой системы. Я рекомендую создать подкаталог в каталоге /mnt с осмысленным именем и к нему подмонтировать нужную вам файловую систему. Например, для монтирования дисковода А: вы можете использовать следующую команду:

    mount -t vfat /dev/fd0 /mnt/floppy

    При этом считается, что дискета отформатирована для файловой системы vfat.

    Для монтирования привода CD-ROM вы можете воспользоваться следующей командой:

    mount –t iso9660 /dev/hdd /mnt/cdrom

    Привод CD-ROM подключен ко второй шине IDE как ведомый (Secondary Slave).

    Для размонтирования достаточно указать точку монтирования или устройство в качестве параметра команды umount. Например, команда

    umount /mnt/floppy

    размонтирует диск А:. Информация об устройствах, смонтированных на данный момент, содержится в файле /etc/mtab. Программа mount имеет опции, представленные в табл. 4.7.

    Параметры программы mount Таблица 4.7

    Опция Описание
    Монтирование всех файловых систем, указанных в файле /etc/fstab, кроме тех, для которых указан параметр noauto
    -n Монтирование без записи в файл /etc/mtab. Полезно, если каталог /etc доступен только для чтения
    -r Монтирование в режиме «только чтение»
    -w Монтирование в режиме «чтение/запись» (по умолчанию)
    -t тип_ФС Задает тип файловой системы

    Вы можете комбинировать опции, например, команда

    mount –a –t vfat
    монтирует все ФС типа vfat. Список файловых систем, которые поддерживает ядро вашей системы, находится в файле /etc/filesystems или в файле /proc/filesystems.

    Для того, чтобы файловая система монтировалась автоматически при загрузке системы, нужно внести определенную запись в файл /etc/fstab. Формат записей в этом файле следующий:

    device mount_point f s_type options флаг_резервного_копирования флаг_проверки

    где:

    device — устройство, которое нужно подмонтировать;

    mount_point — точка монтирования;

    fs_type — тип файловой системы;

    options — набор опций монтирования (см. табл. 4.8);

    флаг_резервного_копирования — если установлена (1), то программа dump включит данную ФС в архив при создании резервной копии (дампа). Если установлен (0), то резервная копия ФС создаваться не будет;

    флаг_проверки — этот флаг устанавливает порядок, в котором файловые системы при монтировании будут проверяться на наличие ошибок. Поиск и исправление ошибок при этом осуществляется специальной программой fsck, которая запускается сценарием инициализации системы. Этот флаг означает очередь, в которой будет проверяться данная файловая система. Если для нескольких файловых систем указан один и тот же номер, то эти файловые системы, при подходе очереди, будут проверяться одновременно. Правильная настройка флагов проверки позволяет ускорить загрузку. Корневая файловая система всегда должна иметь значение флага проверки (1), которое означает, что ее необходимо проверять первой. Для всех остальных файловых систем рекомендуется устанавливать значение (2), которое позволит произвести их проверку одновременно, сразу же после проверки корневой файловой системы. Значение (0) указывается для файловых систем, проверку которых производить не нужно. К таким ФС относятся съемные файловые системы (носители Floppy, CD-ROM, и т.д.).

    Опции монтирования ФС в файле /etc/fstab Таблица 4.8

    Опция Описание
    exec Разрешает запуск бинарных (выполняемых) файлов для данной файловой системы. Эта опция используется по умолчанию
    noexec Запрещает запуск бинарных (выполняемых) файлов для данной файловой системы
    noauto Данная файловая система не может быть смонтирована с помощью команды mount –а, то есть не может быть смонтирована при загрузке системы
    auto Данная файловая система будет автоматически смонтирована во время загрузки. Эта опция используется по умолчанию
    ro Монтирование в режиме «только чтение»
    rw Монтирование в режиме «чтение/запись». Эта опция используется по умолчанию
    user Разрешает пользователям монтировать/демонтировать данную файловую систему
    nouser Запрещает пользователям монтировать/демонтировать данную файловую систему. Эта опция используется по умолчанию
    defaults Использовать стандартный набор опций, установленных по умолчанию

    А сейчас я себе позволю несколько небольших комментариев относительно опций монтирования. Опцию noexec полезно устанавливать для файловых систем, в которых вы не предполагаете запускать программы. Ее полезно установить для файловой системы vfat:

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

    Если вы установите опцию noauto, данную систему нельзя будет подмонтировать с помощью опции –а программы mount. Команда mount –а обычно выполняется при запуске системы, а значит, данная файловая система не будет подмонтирована автоматически. Это очень полезно для сменных устройств, например, дискет или магнитооптических дисков, когда нужно просто задать какие-нибудь параметры для данной файловой системы, но не монтировать ее. Ведь при запуске системы в приводе может не оказаться дискеты или магнитооптического диска. Опция user позволяет пользователю монтировать данную файловую систему. Обычно она используется вместе с опцией noauto для сменных дисков. Пример файла конфигурации файловых систем /etc/fstab приведен в листинге 4.1.

    Листинг 4.1. Файл /etc/fstab

    /dev/hda1 / ext2 defaults 1 1

    /dev/hda2 /den ext2 defaults 0 2

    /dev/hda3 /home ext2 defaults 0 2

    /dev/hda4 swap swap defaults 0 0

    /dev/fd0 /mnt/floppy vfat noauto,noexec 0 0

    /dev/hdd /mnt/cdrom iso9660 noauto,ro 0 0

    none /proc proc defaults 0 0

    В первой строке содержится запись, задающая параметры монтирования корневого раздела «/» и указывающая, что устройство /dev/hda1 имеет файловую систему ext2 и должно быть смонтировано со стандартным набором опций defaults, используемых по умолчанию. Кроме этого, в записи сказано, что необходимо создавать резервную копию данной файловой системы, и что устройство должно быть проверено на наличие ошибок при загрузке системы, причем в первую очередь.

    Вторая и третья записи содержат информацию о том, что устройства /dev/hda2 и /dev/hda3 содержат файловую систему ext2 и должны быть смонтированы со стандартными установками в каталоги /den и /home соответственно. Резервные копии данных файловых систем создавать не нужно, а проверку при загрузке ОС необходимо производить во вторую очередь, причем одновременно обеих.

    Четвертая строка содержит запись о параметрах монтирования раздела подкачки (swap). Для этого, а также для всех последующих разделов указано, что не надо ни создавать их резервную копию, ни производить их проверку при загрузке.

    В пятой и шестой строках монтируются устройство чтения дискет (Floppy) и CD-ROM. Последняя строка файла /etc/fstab определяет специальную файловую систему /proc, которой вообще не ставится в соответствие никакое устройство (none). Файловая система /proc предназначена для обеспечения интерфейса взаимодействия с внутренними структурами данных ядра.

    В процессе настройки вы, наверное, заметите, что при монтировании файловой системы vfat вместо русских букв отображается не совсем то, что вам бы хотелось. Например, в лучшем случае вместо имени каталога Мои документы вы увидите ??? ??????????. Для перекодирования русскоязычных (и не только) имен файлов из одной кодировки в другую используются опции монтирования iocharset и codepage. Непосредственно для vfat нужно указать: codepage=866, iocharset=koi8-r

    4.10. Создание раздела (файла) подкачки

    Рано или поздно при работе с Linux вам станет недостаточно оперативной памяти: потребности растут, а возможности (оперативная память) остаются прежними. В этом случае нужно купить дополнительные 128...256 Мб, тем более, что цены на память постоянно снижаются. Временным выходом из данного положения может послужить создание дополнительного файла или раздела подкачки. Еще раз замечу, что для Linux нет разницы, с чем работать: с файлом или с разделом.

    Создайте раздел подкачки с помощью fdisk (тип раздела 82) и используйте команду mkswap, чтобы отформатировать его как раздел подкачки. Формат использования команды mkswap следующий:

    mkswap –с раздел размер

    Например, следующая команда создаст раздел свопинга размером 32 Мб (параметр –с используется для проверки «плохих» блоков):

    mkswap –с /dev/hda3 32768

    Если лишний раз переразбивать жесткий диск вам лень, можно создать не раздел, а файл подкачки, который будет впоследствии использоваться в качестве раздела подкачки. Для этого сначала создайте пустой файл /swap/sw-file (размер 32 Мб) с помощью команды dd:

    dd if=/dev/zero of=/swap/sw-file bs=1k count=32768

    Примечание. Эта команда читает данные с устройства /dev/zero и записывает их в файл /swap/sw-file. В качестве данных будет просто поток нулей, причем не чисел ноль (ASCII-код 48), а неотображаемых символов NULL (ASCII-код 0). Данные читаются и записываются блоками по 1 Kб(bs=1k), и общее количество блоковравно 32768. Таким образом, на выходе будет получен файл размером 32Мб, заполненный символами NULL. Действия по созданию такого файла очень сходны с действиями, производимыми программой fdisk при создании нового раздела.

    После этого отформатируйте данный файл под своп:

    mkswap /swap/sw-file 32768

    Заметьте, что никто вам не мешает создать в этом файле файловую систему и использовать ее, например:

    mke2fs –m 0 /swap/sw-file

    затем:

    mount –t ext2 /mnt/disk1 /sw/sw-file

    Параметр –m задает процент блоков, которые будут зарезервированы для суперпользователя (по умолчанию — 5%).

    После создания раздела (файла) подкачки, его нужно активизировать. Команда swapon –а включает все разделы свопинга (описанные в файле /etc/fstab), а команда swapon <раздел> включает только конкретный раздел. Команда swapon –а обычно помещается в сценарий загрузки системы. Обычно это /etc/re.d/rc.sysinit для систем, использующих инициализацию типа SysV — RedHat, Mandrake, Debian (хотя RedHat и Mandrake используют несколько модифицированную схему инициализации, но суть та же) или /etc/rc/rc.s для BSD-подобных Linux-систем (Slackware).

    В рассматриваемом случае для подключения раздела подкачки нужно выполнить команду swapon /dev/hda3, а для подключения файла подкачки необходимо выполнить команду swapon /swap/sw-file.

    Обратите внимание, что файл подкачки не может быть автоматически активизирован с помощью команды swapon –а, так как он не может быть указан в файле /etc/fstab. Для того, чтобы файл подкачки /swap/sw-file автоматически активизировался при загрузке системы, команду swapon /swap/sw-file нужно включить в сценарий загрузки после команды swapon –а. В противном случае вам придется эту команду вводить каждый раз вручную после загрузки системы. 

    Убедиться, что ваш файл (раздел) подкачки активизирован, можно, выполнив команду free (см. рис. 4.3). Команда free выводит информацию об использовании памяти, в том числе и о виртуальной. В колонке total выводится общий размер памяти и подкачки (Mem и Swap соответственно), в колонке used — размер занятой памяти, a free — свободной.

     Рис. 4.3. Создание и активизирование файла подкачки


    После активизирования файла (раздела) подкачки общий размер свопа (Swap Total) должен увеличиться на размер только что активизированного раздела — в нашем случае на 32 Мб.

    4.11. Использование LILO

    Linux LOader (LILO) — программа, предназначенная для загрузки Linux и других операционных систем.

    Существуют другие загрузчики, например, bootlin, bootact, bootstar, но они постепенно вытесняются LILO. Помимо LILO Linux еще можно загрузить с помощью loadlin, GRUB (загрузчик в Linux Mandrake) или NTLoader. Об использовании NTLoader и программы loadlin уже писалось ранее, во второй главе. Рассмотрим теперь подробнее LILO. Загрузчик LILO состоит из трех частей:

    1. Программа записи начального загрузчика lilo.

    2. Программа конфигурации liloconf.

    3. Файл конфигурации /etc/lilo.conf.

    Программа liloconf создает файл /etc/lilo.conf, который используется программой lilo для записи начального загрузчика. Обычно LILO записывают в MBR (Master Boot Record). Но иногда LILO устанавливают на первый сектор того раздела, где установлен Linux. Второй способ обычно используется, если нужно обеспечить загрузку Linux:

    1. С помощью другого загрузчика, например, NTLoader.

    2. На старых машинах без поддержки LBA.

    При загрузке компьютера LILO выдает подсказку:

    LILO

    или

    LILO boot:

    После чего нужно ввести метку той операционной системы, которую вы хотите загрузить. Для загрузки Linux обычно следует ввести linux. Для просмотра всех доступных меток нажмите «Tab». Современные версии LILO обычно имеют удобное меню. Выбор меток осуществляется с помощью стрелок.

    Иногда на экран только выдается подсказка:

    LILO

    Чтобы выбрать ядро, нужно нажать клавишу «Shift», после чего появится подсказка:

    LILO boot:

    и только теперь можно нажать «Tab». Если вы введете команду help, то получите список всех команд LILO.

    Поведение LILO зависит от его настройки в файле /etc/lilo.conf, который является конфигурационным файлом LILO. При запуске Linux можно передать ядру дополнительные параметры, например mem=1024M устанавливает объем ОЗУ равным 1024 Мб. При этом можно самим сформировать строку параметров и записать ee в lilo.conf — эта строка будет передана ядру при загрузке Linux. С помощью LILO можно организовать загрузку других операционных систем (Windows, FreeBSD, …) и загрузку разных версий ядра одной ОС (имеется в виду Linux). В листинге 4.2 приведен пример файла /etc/lilo.conf.

    Листинг 4.2. Пример конфигурационного файла/etc/lilo.conf

    # Операционная система: Linux Mandrake

    # LILO version: 21.5

    # Глобальные опции

    # Загрузочное устройство (MBR на /dev/hda)

    boot=/dev/hda

    # «Карта» загрузки. Если этот параметр пропущен,

    # используется файл /boot/map

    map=/boot/map

    # Устанавливает заданный файл как новый загрузочный сектор.

    # По умолчанию используется /boot/boot.b

    install=/boot/boot.b

    #  compact — не используйте этот режим. Обычно он

    #  используется при загрузке с дискеты

    #  Режим VGA: normal – 80x25, ext – 80x50

    vga=normal

    #  Образ ядра по умолчанию. Если не задан, то используется

    #  первый в списке

    default=linux

    # Раскладка клавиатуры

    keytable=/boot/ru4.kit

    # Включен режим LBA32. На некоторых дисках может вызвать проблемы

    # Обычно проблемы возникают на старых

    # компьютерах без поддержки трансляции блоков (LBA)

    lbа32

    # Включает ввод приглашения без нажатия на какую-нибудь клавишу.

    # Автоматическая загрузка невозможна, если prompt установлен, а

    # timeout — нет

    prompt

    # Задержка 5 секунд (в некоторых версиях используется delay)

    timeout=50

    # Подсказка, которая выдается при загрузке

    message=/boot/message

    # Цветовая схема

    menu-scheme=wb:bw:wb:bw

    # Пароль (ко всем образам)

    # password = 54321

    #   

    # Пароль нужен для загрузки образа, если параметры задаются

    # в командной строке (для всех образов)

    # restricted

    # Список образов. Максимум 16 вариантов

    image=/boot/vmlinuz # ядро

    label=linux # метка (метки должны быть разными)

    root=/dev/hda5 # корневая файловая система

     append=" mem=64M" # объявление параметров ядра

     vga=788

     read-only # монтирование корневой

    # файловой системы в режиме «только чтение»

    # Параметры vga, password, restricted могут быть как глобальными,

    # так и отдельными для каждого образа.

    # Т.е. вы можете закрыть паролем определенный образ

    image=/boot/vmlinuz # image — для Linux-систем

      label=linux-nonfb

      root=/dev/hda5

      append=" mem=64M"

      read-only

    image=/boot/vmlinuz

      label=failsafe

      root=/dev/hda5

      append=" mem=64M failsafe"

      read-only

    other=/dev/hda1 # other — какая-нибудь другая система

      label=windows # для не Linux-систем параметр root не указывается

      table=/dev/hda # определяет устройство, содержащее таблицу разделов

    other=/dev/fd0

      label=floppy

      unsafe # не давать доступ к boot-сектору во время создания

    # карты диска. Запрещает проверку таблицы разделов

    # Параметры table и unsafe несовместимы.

    Внимание! Для того, чтобы изменения вступили в силу (если вы изменили файл конфигурации), нужно выполнить команду lilo.

    При конфигурировании LILO вы можете дополнительно использовать следующие опции:

    disk=параметры определяет нестандартные параметры для заданного диска.
    disktab=файл_таблицы задает имя таблицы параметров диска. По умолчанию это /etc/disktab и менять его не рекомендуется
    ignore-table игнорирование ошибочных таблиц разделов.
    nowarn запрещает сообщения о возможных неприятностях.
    serial=параметры разрешает управление с последовательной линии. Загрузчик берет ввод из заданного последовательного порта и из клавиатуры. Клавиша «break» по последовательной линии аналогична «Shift» на клавиатуре.

    Параметры: <port> [,bps[parity [bits]] ]

    port=0..3 соответствует /dev/ttyS0 — /dev/ttyS3. Могут быть за действованы все 4 порта.
    bps скорость порта в бодах. По умолчанию 2400. Поддерживаются значения: 110, 150, 300, 600, 1200, 2400, 4800, 9600.
    parity контроль по четности, n — без четности, е — по четности, о — по нечетности.
    bits число битов в символе — 7 или 8. По умолчанию 8, если нет контроля четности.

    Параметры по умолчанию: 0,2400n8.

    Опции append, ramdisk, read-only, read-write, root, vga могут быть заданы в разделе глобальных параметров. Они будут использованы, если они не заданы в конфигурационных секциях.

    Программу LILO можно использовать вместе с параметрами, указанными в табл. 4.9. Эти параметры указываются в командной строке.

    Параметры программы LILO Таблица 4.9

    Параметр Описание
    -V Выводит номер версии LILO
    -q Карта загрузки
    -С имя_файла Задает конфигурационный файл, который должен использоваться вместо стандартного файла
    -r файловая_система Устанавливает указанную файловую систему в качестве корневой (выполнит команду enroot перед выполнением каких-нибудь действий)
    -u Удаляет LILO
    -l Запрашивает полное имя файла ядра операционной системы Linux
    -R Устанавливает командную строку ядра Linux по умолчанию

    Два небольших замечания:

    1. Программа chroot, как вы уже заметили, используется для изменения корневой файловой системы.

    2. Удалить LILO можно и с помощью команды DOS fdisk /mbr.

    Параметр –q загрузчика LILO выводит карту загрузки системы. Обычно карта загрузки отображается при записи загрузчика LILO, например: linux * windows

    Если вам нужно просмотреть текущую карту загрузки без записи загрузчика, выполните команду lilo –q.

    Кроме LILO сейчас популярен загрузчик GRUB. В Linux Mandrake этот загрузчик используется по умолчанию, хотя я рекомендую вам сменить его на стандартный загрузчик Linux — LILO. GRUB «видит» такие файловые системы: ext2, ext3, ReiserFS, vfat и еще несколько других. Одной из особенностей загрузчика GRUB является возможность загружать операционную систему, которая не присутствует в меню.

    Следует также упомянуть такие загрузчики:

    Xboot крошечный и безопасный загрузчик. Xboot просто меняет активный раздел при загрузке. Обязательным требованием является установка всех загружаемых систем в первичный раздел (а не в расширенный). Это ограничивает число возможных установленных операционных систем до 4 (4 первичных раздела).
    Symon бесплатный загрузчик. Имеет несколько недостатков, но работает вполне стабильно. Под недостатками следует понимать невозможность установить пароль на загружаемый раздел (как в LILO), a также некорректная работа с некоторыми версиями OS/2.
    BootStar коммерческий бутменеджер. Имеются версии инсталляторов для DOS и Windows. В его состав входят средства для переразбиения разделов, подобные Partition Magic. Несмотря на свое коммерческое происхождение, довольно нестабильно работает, и я не рекомендовал бы его вам использовать.
    vpart загрузчик, корректно работающий с LVM OS/2 (LVM появился в версии OS/2 4.5).
    xosl (Extended Operating System Loader) загрузчик, разработанный Гертом Восом (Geurt Vos), распространяется по лицензии GPL. Ознакомиться с xosl вы можете по адресу http://home.wanadoo.nl/geurt/ download.html.
    gag (GRAPHICAL BOOT MANAGER) еще один загрузчик, распространяемый по лицензии GPL. Загрузить его вы можете по адресу http://www.rastersoft.com/programas/gag/downeng.html.

    4.12. Права доступа

    Для каждого файла и каталога в ОС Linux задаются права доступа. Права доступа определяют, кто имеет доступ к объекту и какие операции над объектом он может выполнять. Под объектом следует понимать файл или каталог. Выполнять можно три основных операции: чтение, запись и выполнение.

    Право на чтение файла означает, что его можно просматривать и печатать, а для каталога — что может отображаться список содержащихся в нем файлов. Право на запись для файла означает возможность его редактирования, а для каталога — возможность создания и удаления в нем файлов.

    Если для файла установлено право выполнения, то его можно запускать как программу. Данная возможность используется при написании сценариев командных интерпретаторов. Право выполнения для каталога означает право доступа к каталогу, но не право на выполнение расположенных в нем файлов, как это может показаться исходя из названия режима доступа. Чтобы разобраться с правом выполнения для каталогов, проведите небольшой эксперимент, выполнив несколько описанных далее действий. Все действия нужно проводить от имени обыкновенного пользователя, а не от имени суперпользователя root.

    Создайте каталог:

    mkdir dir1

    Затем создайте в нем файл script:

    #!/bin/sh echo "Hello"

    Измените права на чтение и выполнения для файла:

    chmod 500 dir1/script

    Попробуйте просмотреть содержимое каталога dir1:

    ls –l dir1

    А теперь измените права доступа к каталогу и повторите предыдущий шаг:

    chmod 600 dir1

    ls –l dir1

    Как результат установленных прав на чтение и запись для каталога вы получите сообщение:

    Permission denied

    Теперь попробуйте записать что-нибудь в каталог (мы же установили право на запись):

    cat >> dir1/script

    Получите то же сообщение:

    Permission denied

    В общем случае существует три категории пользователей: владелец, группа и прочие.

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

    Пользователи объединяются в группы, например, для работы над одним проектом. Владелец может разрешить или запретить доступ к файлам для членов группы.

    Прочие — это все остальные пользователи.

    Для каждой категории имеется свой набор прав доступа, просмотреть который вы можете с помощью команды ls –l:

    ls –l file.txt

    -rw-r----- 1 den group 300 Feb 10 12:00 file.txt

    Строка –rw-r–---- характеризует набор прав доступа к файлу file.txt.

    Владельцем файла является пользователь den, который входит в группу group. Первый символ — это тип файла. «-» означает файл, a «d» — каталог. Следующие три символа «rw-» задают права доступа для владельца файла. Символ «r» — это право на чтение, «w» — на запись, а «х» — на выполнение. Права задаются именно в таком порядке: чтение, запись, выполнение. Если право на какой-нибудь вид доступа отсутствует, то ставится «-». В данном случае отсутствует право на выполнение.

    Второй трёхсимвольный набор задает права доступа для группы, а третий — для прочих пользователей. В нашем примере (r--) члены группы имеют право только на чтение, а другие пользователи вообще не имеют никакого доступа к файлу (---).

    Для изменения прав доступа используется программа chmod. При этом права доступа можно задавать двумя способами: символьным и абсолютным. Рассмотрим сначала символьный метод, а потом — абсолютный.

    В рамках символьного способа изменения прав вызов программы chmod имеет следующий вид:

    chmod права <файл|каталог>

    Параметры программы chmod указаны в табл. 4.10.

    Права доступа (символьный метод) Таблица 4.10

    Опция Описание
    + Устанавливает право доступа
    - Отменяет право доступа
    = Присваивает набор прав доступа
    r Право на чтение файла или каталога
    w Право на запись файла или каталога
    x Право на выполнение
    u Устанавливает право доступа для пользователя, который создал файл и является его владельцем
    g Устанавливает права доступа для группы
    о Устанавливает права доступа для прочих пользователей
    а Устанавливает права доступа для владельца, группы и прочих пользователей
    s Устанавливает бит смены идентификатора пользователя или группы
    t Устанавливает sticky-бит

    Бит смены идентификатора пользователя или группы является вариантом права выполнения х. Право на чтение, запись и выполнение обозначается в этом случае не rwx, a rws. Так называемый sticky-бит позволяет оставить программу в памяти после ее выполнения. Устанавливать этот бит полезно для маленьких и часто используемых программ, чтобы ускорить их запуск.

    Программа chmod никогда не изменяет права символических ссылок, но это не является особой проблемой, так как права ссылок никогда не используются. Изменить группу файла можно командой chgrp, а владельца — chown.

    Теперь перейдем к абсолютному методу указания прав доступа, который, как мне кажется, несколько удобнее, чем символьный, поскольку не нужно помнить символику прав доступа. Этот метод еще называют методом двоичных масок.

    Для изменения прав доступа абсолютным методом используется та же команда chmod:

    chmod число <файл|каталог>

    Число называется маской прав доступа и представляет собой число в восьмеричной системе, задающее наборы прав доступа. Напомню, что восьмеричная система — это система с основанием 8 (см. табл. 4.11). Не спешите переворачивать страницу, услышав слово «восьмеричная», все на самом деле намного проще, чем звучит.

    Каждое число, задающее права доступа, состоит из трех разрядов, например, 760:

    7 — первый разряд;

    6 — второй разряд;

    0 — третий разряд.

    Первый разряд задает права доступа для владельца файла, второй — для группы, третий — для остальных пользователей. Одному разряду восьмеричной системы соответствует три разряда в двоичной.

    Соответствие разрядов восьмеричной системы разрядам в двоичной системе Таблица 4.11

    Восьмеричный формат  Двоичный формат
    0 000
    1 001
    2 010
    3 011
    4 100
    5 101
    6 110
    7 111

    Каждый двоичный разряд задает соответствующий ему тип доступа: первый — чтение, второй — запись, третий — выполнение. Будем считать, что разряды нумеруются слева направо. 0 — если данная операция запрещена, а 1 — если разрешена. Теперь все становится на свои места, например, право доступа, задаваемое числом 777 (111111111) означает право на чтение, запись и выполнение для всех пользователей.

    Наиболее часто используется маска 644, разрешающая чтение и модификацию файла для владельца, и только чтение — для других пользователей. Иногда используется набор прав доступа, состоящий из четырех цифр. Старшая цифра обозначает флаги SETUID (4), SETGID (2), sticky-бит (1).

    Какие же права доступа будут у только что созданного каталога командой mkdir? Обычно маска прав доступа равна 0777 минус значение, выводимое командой umask. Значение, выводимое командой umask, обычно равно 022. Следовательно, маска прав доступа будет равна 0777 – 0022 = 0755. И действительно, создайте каталог и введите команду ls –l:

    mkdir new

    ls –l

    drwxr-xr-x 2 den den 4096 Янв 14 14:30 new/

    Набор rwx (111) равен семи, а набор r-x (101) равен пяти в восьмеричной системе. Получается, что маска доступа к новому каталогу = 755. Установить значение umask можно с помощью самой этой команды. Просто выполните команду umask 000 от имени суперпользователя и вы установите новое значение, равное нулю. Обратите внимание, команда mkdir автоматически устанавливает право выполнения (доступа) для каталога, иначе к каталогу нельзя будет получить доступ.

     Кроме рассмотренных выше прав доступа в системе Linux имеются еще два специальных права доступа — SUID (Set User ID root) и SGID (Set Group ID root). Их существование связано с тем, что некоторые программы (pppd, smbmount, SVGA-программы) требуют для своей работы привилегий пользователя root.

    Допустим, что вы хотите, чтобы другие пользователи могли устанавливать РРР-соединение, для этого нужно установить право доступа SUID для программы-демона /usr/sbin/pppd. Делается это так:

    chmod u+s /usr/sbin/pppd

    После этого демон pppd будет запускаться с привилегиями root, даже если он запущен самым обыкновенным пользователем. Запуск pppd в таком режиме необходим для того, чтобы обыкновенный пользователь смог настроить необходимые интерфейсы и таблицу маршрутизации ядра, то есть подготовить систему для РРР-соединения. Обычно на такие изменения (изменение таблицы маршрутизации ядра, конфигурирование интерфейсов) есть право только у пользователя root.

    То же самое можно сказать и о программе smbmount — для ее работы тоже нужно установить право доступа SUID.

    Казалось бы, все хорошо: и пользователи довольны, и вам не нужно каждый раз подходить к серверу, если нужно установить коммутируемое соединение или примонтировать общий ресурс. Однако следует учитывать, что программы, требующие установления SUID (или SGID) для своей работы являются потенциальными дырами в системе безопасности. Представьте такую ситуацию: у вас в системе установлена программа superformat, которая предназначена для форматирования дисков. Создание файловой системы, пусть даже на дискете, — это привилегированная операция, требующая права доступа root. При установке этой программы для нее сразу устанавливается право SUID, чтобы разрешить пользователям форматировать дискеты. Пользователь запускает ее для форматирования диска. Программа запускается, получает права root, форматирует дискету и нормально завершает работу. А теперь представим, что программа некорректно завершает свою работу — по ошибке, например, произошло переполнение стека (такие случаи известны при работе с этой программой). Что же при этом произошло: программа supermount получила права root и некорректно завершила работу. В результате чего обыкновенный пользователь получил права root! Неквалифицированный пользователь с правами root — это намного хуже, чем просто крах системы. Нельзя с уверенностью сказать что произойдет, если пользователь получит права root. Выходит, что не нужно быть профессиональным хакером — достаточно просто уметь форматировать дискеты.

    Помните о потенциальной опасности при работе с такими программами и, по возможности, избегайте использования прав SUID и SGID.

    Ради справедливости нужно заметить, что ряд системных программ (в частности pppd) разрабатывался с учетом прав SUID и SGID, и эти программы являются максимально защищенными, хотя полной уверенности в этом нет. Поэтому использовать право SUID нужно только в самых крайних случаях.

     Я позволю себе сделать еще несколько замечаний относительно прав доступа SUID и SGID:

    1. Лучше не использовать программы, требующие привилегированные права доступа, на сервере, точнее, не разрешать обыкновенным пользователям их использовать. Использование права доступа SUID вы можете себе позволить только на своей домашней машине, например, для установления того же коммутируемого соединения, чтобы каждый раз при подключении к Интернет не вводить команду su.

    2. Если все-таки нужны привилегированные права, используйте программу sudo (или su). Конечно, это не так удобно, но зато гораздо безопаснее.

    3. Перед использованием программ, требующих права доступа root, убедитесь в их надежности. Если программа получена из ненадежного источника, лучше ее не использовать. Под надежным источником подразумеваются сайты или FTP-серверы разработчиков дистрибутивов Linux. Желательно получить исходный код такой программы, чтобы убедиться, что она не производит каких-либо несанкционированных действий.

    4. Нет ни одной причины, по какой нужно было бы разрешить использование SUID-программ в домашних каталогах пользователей. Для разделов, в которые разрешена запись обыкновенным пользователям, установите опцию nosuid в файле /etc/fstab.

    4.13. Обслуживание файловой системы

    Обслуживание файловой системы в ОС Linux сводится к двум операциям:

    1. Проверка.

    2. Дефрагментация.

    Проверка и восстановление файловой системы Linux выполняется программой fsck. Перед проверкой файловая система должна быть смонтирована в режиме «только чтение».

    Программа fsck умеет проверять и другие типы файловых систем, но для исправления ошибок лучше использовать родные для этой файловой системы программы, предназначенные для проверки и исправления ошибок. Программа fsck автоматически проверяет файловые системы при загрузке Linux в соответствии с указаниями, содержащимися в файле etc/fstab. Для программы fsck можно использовать опции, указанные в табл. 4.12.

    Параметры программы fsck Таблица 4.12

    Опция Описание
    Проверка всех файловых систем, указанных в файле /etc/fstab. Корневая файловая система будет проверена первой
    Показывать индикатор выполнения проверки (только для файловой системы ext2)
    Используется вместе с опцией –А. Проверять корневую файловую систему параллельно вместе с другими файловыми системами, а не перед ними. Не очень безопасный вариант проверки, поэтому лучше его не использовать
    -R Используется вместе с опцией –А. При этом проверяться будут все файловые системы, кроме корневой
    -t тип_ФС Используется с опцией –А. Указывает только какого типа файловые системы следует проверять. В поле <тип_ФС> указывается тип файловой системы. Если перед типом файловой системы поставить префикс, то проверяться будут ФС всех типов, кроме указанного
    -s Производить проверку файловых систем последовательно, а не параллельно, как это делается по умолчанию (за исключением корневой ФС)
    Дефрагментация

    Для повышения производительности файловой системы я использую программу defrag, написанную Полем Харгровом (Paul H. Hargrove, hargrove@sccm.Stanford.edu). Программа умеет проверять файловые системы типов ext2, minix, xia.

    4.14. Подключение магнитооптического диска

    Я решил написать этот раздел в силу большой распространенности магнитооптических дисков. Первые магнитооптические диски подключались к контроллеру SCSI, что не способствовало их широкому распространению из-за довольно высокой стоимости. После выпуска первых устройств с интерфейсом IDE цены на магнитооптические устройства значительно снизились.

    Подключение магнитооптического привода подобно подключению жесткого диска. При этом следует помнить простое правило: не нужно подключать к одной шине магнитооптический привод и жесткий диск. Логика проста: магнитооптические диски обладают довольно низкой производительностью по сравнению с жестким диском, и использование двух этих устройств на одной шине снизит общую производительность дисковой подсистемы.

    После подключения не забудьте выполнить процедуру AUTODETECT для данного устройства. ОС Linux определит магнитооптический привод как обыкновенный жесткий диск с интерфейсом IDE. Если вы поспешили и, запустив Windows, чтобы полюбоваться новой буквой в списке доступных дисков, отформатировали ваш магнитооптический диск, то, скорее всего, в Linux он будет работать некорректно. Для обеспечения нормальной работы магнитооптического привода в Linux запустите fdisk для linux и удалите все разделы, которые создала Windows. Затем создайте один первичный раздел и командой t измените его тип на FAT32.

    Хочу отметить, что FAT32 может работать довольно медленно, но позволит сэкономить около 80 Мб дискового пространства при использовании магнитооптического диска размером 640 Мб.

    4.15. Использование стримера

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

    1. Работать с жестким диском или магнитооптическим диском намного удобнее, чем со стримером.

    2. Медленная скорость передачи данных.

    Хотя второе никак не относится к более дорогим стримерам с интерфейсом SCSI.

    Здесь следует упомянуть о типах стримеров относительно их интерфейса. Существует два типа стримеров: стримеры, использующие интерфейс SCSI, и стримеры, использующие интерфейс FDC. Первые из них довольно дорогие. Это объясняется дороговизной самого контроллера SCSI. Хотя в последнее время наблюдается снижение цен на контроллеры и устройства SCSI. Эти стримеры подключаются к шине SCSI.

    Второй тип, использующий интерфейс FDC, подключается к контроллеру гибких дисков. Это более дешевый и медленный вариант и поэтому, если вы собираетесь использовать стример в профессиональных целях, лучше приобрести стример с интерфейсом SCSI. Второй тип более подходит для домашнего применения.

    4.15.1. Подключение стримера с интерфейсом SCSI

    ОС Linux поддерживает все возможные стримеры с интерфейсом SCSI. Это объясняется интеллектуальностью контроллера SCSI. Вы также можете использовать интерфейс LUN (Logical Unit Number), который является расширением интерфейса SCSI, для подключения стримера с автоматической заменой ленты.

    Для подключения стримера вам потребуется перекомпилировать ядро системы, включив опцию SCSI Tape Support. Также вам нужно установить тип контроллера SCSI в подразделе SCSI Low-Level drivers. Возможно, нужно будет включить режим Probe all LUNs on each device. После перезагрузки в вашей системе появится устройство /dev/st0.

    4.15.2. Подключение стримера с интерфейсомFDC

    В зависимости от типа вашего стримера вам нудно включить опцию QIC-02 tape support или Ftape (QIC-80/Trawan) support. О том, какую из этих опций нужно использовать, вы можете прочитать в документации, поставляемой со стримером. Данные опции находятся в разделе Character devices. После перезагрузки должно появиться устройство /dev/nrtf0.

    4.15.3. Управление стримером

    Управление стримером выполняет программа int. Она входит в состав пакета mt-st, который обычно входит в состав дистрибутива. Эта программа точно есть в дистрибутивах Red Hat и Mandrake Linux. Программа mt использует устройство /dev/nftape, которое является ссылкой на /dev/ nrft0. Если вы используете стример с интерфейсом SCSI, вам нужно изменить ссылку на /dev/st0.

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

    mt-st –f /dev/nftape retension

    А вот форматирование вам придется выполнять с помощью программы для DOS, которая поставляется со стримером. Можно, конечно, использовать и другие программы. Стабильно работают Conner Backup Basics, Norton Backup, а также QICstream. По завершении этого процесса требуется инициализировать ленту:

    mt-st –f /dev/nftape erase

    Вот теперь можно приступать к резервированию данных. Например, если вы хотите записать на ленту содержимое своего домашнего каталога, вы можете использовать следующую команду:

    tar cfz /dev/nftape /home/den

    Здесь я использовал команду tar, которая и предназначена, по правде говоря, для работы с лентой (это видно из ее названия — Таре Archive). Опция z указывает программе tar о необходимости сжать данные. Для записи без сжатия достаточно опций cf. Для восстановления архива с ленты вы можете использовать команду:

    tar xzf /dev/nftape

    Если вы не использовали сжатие данных, то вам нужно применить команду xf.

    Проверить целостность архива на ленте можно с помощью команды:

    tar df /dev/nftape

    Для того, чтобы поместить на ленту два или более архивов tar, вы должны использовать программу mt-st для позиционирования головки и перемотки ленты. Вам нужно будет использовать tar вместе с mt-st. Например, чтобы перейти на две отметки начала файла формата tar на ленте, можно использовать команду:

    mt-st –f /dev/nftape fsf 2

    Для возврата назад необходимо использовать операцию bsf вместо fsf. При работе с mt-st доступны операции, описание которых приведено в табл. 4.13.

    Операции программы mt-st Таблица 4.13

    Операция Описание
    eof Поместить маркер конца файла в текущую позицию ленты
    asf n Перейти к файлу с номером n
    fsf n Перемотка ленты вперед на n файлов
    bsf n Перемотка ленты назад на n файлов
    fsr n Перейти на n записей вперед
    bsr Перейти на n записей назад
    seek n Поиск блока с заданным номером n
    eom Переход к концу записей на ленте. Используется для дописывания файлов на ленту
    rewind Перемотка ленты в начало
    offline Перемотка пленки в начало и извлечение ленты из накопителя
    retension Перетяжка ленты для снятия статических зарядов с поверхности пленки
    erase Стирание содержимого ленты

    4.16. Стратегия резервного копирования

    Успешно, во всяком случае, я на это надеюсь, разобравшись с технической стороной создания резервных копий, переходим к организационным вопросам. А именно, вам нужно определиться с ответами на следующие вопросы:

    1. Какая информация будет резервироваться (архивироваться)?

    2. Когда будет происходить создание резервных копий?

    3. Кто этим будет заниматься?

    4. Как часто будет производиться архивирование?

    Какая информация будет резервироваться (архивироваться)?

    В первую очередь вам нужно архивировать данные пользователей, то есть каталог /home. Эти данные относятся к наиболее критичной категории данных. Восстановить систему вы сможете в течение максимум двух-трех часов, а вот данные пользователей уже не восстановишь…

    На втором месте — это файлы настройки системы, находящиеся в каталоге /etc. Архивирование этих данных позволит существенно сэкономить время, которое вам потребуется на восстановление системы после сбоя.

    И, наконец, на третьем месте — это дистрибутивы программ, которые не входят в состав дистрибутива Linux. Эти данные, как правило, не нуждаются в частом обновлении.

    Конечно, можно создать полную копию всей корневой файловой системы, но в результате вы получите один большой архив, на обновление которого будет затрачена уйма времени.

    Когда будет происходить создание резервных копий?

    Самое удачное время для этого мероприятия — ночь. Почему именно ночь?

    1. Систему можно настроить на автоматическое обновление архива.

    2. Операция архивирования, как правило, не требует вмешательства оператора.

    3. Вряд ли пользователи будут довольны дополнительной нагрузкой на систему в рабочее время.

    4. Существует вероятность того, что в конце дня данные на жестком диске изменятся, а так как копия создавалась днем или утром, то новые данные не попадут в архив.

    Еще следует учитывать, что если вы используете стример с интерфейсом FDC, средняя скорость архивирования которого составляет 4 Мб/мин, то для архивирования 1 Гб вам потребуется около 4 часов. Для использования сжатия данных потребуется дополнительное время. Также нужно помнить о необходимости смены кассет с лентой, но при использовании стримера с интерфейсом FDC и лентой на 1 Гб об этой проблеме можно забыть: при использовании сжатия вы сможете поместить на ленту около 2 Гб, а весь процесс займет около 6 часов. А в случае со стримером SCSI процесс архивирования займет не более часа и его можно выполнить в конце рабочего дня.

    Кто этим будет заниматься?

    В случае, если процессу архивации подлежит ваш домашний компьютер, то этой ответственной задачей будете заниматься вы сами. На предприятии (особенно большом) необходимо определить, кто будет архивировать данные с каждого сервера сети: не будете же вы бегать по зданию со стримером, контролируя процесс создания резервных копий? В идеале, за каждым сервером должен быть закреплен человек, ответственный за процесс создания архива и поддержанию его в должном состоянии.

    Как часто будет производиться архивирование?

    Для ответа на этот вопрос я предлагаю к вашему рассмотрению шестидневную схему архивации. Для этого вам потребуется шесть кассет (или шесть магнитооптических дисков, но помните о максимальной емкости магнитооптического диска). На этих кассетах сделайте надписи: Пт1, Пт2, Пн., Вт., Ср., Чт. Начните создание копий в пятницу вечером и придерживайтесь расписания, приведенного в табл. 4.14.

    Расписание резервного копирования Таблица 4.14

    День Кассета Операция
    Пятница Пт1 Создание резервной копии всего диска
    Понедельник Пн. Создание копии новых и обновленных данных
    Вторник Вт. Создание копии новых и обновленных данных
    Среда Ср. Создание копии новых и обновленных данных
    Четверг Чт. Создание копии новых и обновленных данных
    Пятница Пт2 Создание резервной копии всего диска

    4.17. Использование программы cpio

    Для создания архивов на магнитной ленте или жестком диске, а также для извлечения файлов из архивов используется программа cpio.

    Программа cpio может работать в трех оперативных режимах. При этом режим работы задается указанной опцией. Помимо опций могут использоваться параметры, которые управляют работой cpio в заданном режиме. Формат вызова программы cpio зависит от режима, в котором она должна работать. Опции программы и соответствующий им формат вызова представлены в табл. 4.15, а параметры — в табл. 4.16.

    Опции программы cpio Таблица 4.15

    Опция Формат вызова Описание
    cpio –о[параметры] список_файлов [имя_архива]
    Копирование в архив всех файлов, которые указаны. Файлы в списке указываются по одному в строке
    -i
    cpio –i параметры] [шаблоны] имя_архива
    В режиме, задаваемом этой опцией, программа cpio будет извлекать файлы из архива. При этом извлекаться будут только те файлы, чьи имена совпадут с одним из указанных шаблонов. Если ни одного шаблона не указано, то из архива будут извлекаться все файлы. Шаблон также может включать в себя символы подстановки
    -p
    cpio –р[параметры] каталог
    Копирование будет производиться в указанный каталог

    Параметры программы cpio Таблица 4.16

    Параметр Описание
    -0 Этот параметр позволяет включить в архив файлы, имена которых содержат символ новой строки. Используется вместе с опциями –о и –р
    Устанавливает текущее время в качестве времени последнего доступа к файлу
    Присоединение файлов к существующему архиву на диске
    -b Заменяет местами байты и полуслова
    Устанавливает размер блока в 5120 байт. По умолчанию используется 512 байт
    Чтение и запись заголовка как текста ASCII
    -С n Устанавливает размер блока в n байтов
    -d Предварительно создает каталоги в случае необходимости
    -Е файл Используется вместе с опцией –i. При этом в качестве шаблонов, по которым отбираются файлы для извлечения, будут использоваться строки, содержащиеся в указанном файле. Таким образом, указываемый файл есть файл списка шаблонов
    -F файл Использует указанный файл в качестве архива
    -Н тип Устанавливает тип формата архива: bin — устаревший двоичный формат; crc — формат Unix SysV Release 4, использующий подсчет контрольных сумм (CRC); hpodc формат Hewlett-Packard; newc — формат Unix SysV Release 4, может использоваться для файловых систем, количество дескрипторов в которых превышает 65536; ode — формат POSIX.1; tar формат tar; ustar — формат POSIX.1 tar
    -I файл Указанный файл будет использоваться в качестве исходного архива. Используется вместе с опциями –i и –р
    -l Создает ссылки вместо копирования файлов в каталог при использовании опции –р
    -L При встрече символической ссылки копироваться будет не сама ссылка, а файл, на который она указывает. Используется совместно с опциями –о и –р
    -m Сохраняет время последнего изменения файла
    -М строка Выводит указанную строку при смене носителя
    -n Выводит GID (идентификатор группы)
    файл Вывод в указанный файл
    -r Переименование файлов, новые имена будут запрошены у пользователя
    -s Замена байтов местами. Используется с опцией –i
    -S Замена полуслов местами. Используется с опцией –i
    -t Режим тестирования. Выводит содержимое архива, который должен быть создан, но сам архив при этом не создается
    -u Перезапись файлов без подтверждения
    -v Вывод имени всех файлов
    -V Выводит точку вместо имени файла

    Давайте рассмотрим несколько примеров использования программы cpio. Создать архив можно с помощью опции –о программы cpio. Программа cpio будет читать имена файлов, которые следует поместить в архив со стандартного ввода. По умолчанию используется бинарный формат архива, поэтому формат архива нужно задать опцией –Н. Будем использовать формат tar. Введите команду:

    cpio –о –Н tar –О arc.tar

    Затем введите имена файлов, которые вы хотите добавить в архив, например:

    /opt/ctrl/ctrl.с

    /opt/ctrl/ctrl.html

    По окончании ввода будет создан архивный файл arc. tar. Программа cpio создаст архив с сохранением структуры каталогов. Чтобы убедиться в этом, запустите файловый менеджер mc и просмотрите содержимое архива arc.tar.

    Конечно, вводить имена файлов вручную не совсем приятное занятие. Для автоматизации ввода можно использовать средства перенаправления ввода/вывода. Например, для архивирования текущего каталога введите команду:

    ls | cpio –о –Н tar –О current_dir.tar

    Для извлечения файлов из архива введите команду:

    cpio –i –H tar < current_dir.tar

    В режиме извлечения файлов программа cpio читает со стандартного ввода имя архива.

    4.18. Повышение производительности жесткого диска

    Существенно повысить производительность жесткого диска поможет программа hdparm. Я увеличил скорость операции чтения своего жесткого диска Quantum Fireball ATA66 с 3,75 Мб/с до 14 Мб/с, а жесткий диск IBM АТА100 (модель точно не помню) удалось «разогнать» до 30,1 Мб/с!

    Рассмотрим использование программы hdparm на примере. Для начала запустим ее в режиме теста, зарегистрировавшись в системе как root:

    # hdparm –t /dev/hda

    Timing buffered disk reads: 64 MB in 17.08 seconds = 3.75 MB/sec

    Взглянув на отображенную информацию, можно заметить: «Маловато, однако». Чтобы понять, почему так получается, введем команду:

    # hdparm /dev/hda

    и получим в ответ

    /dev/hda:

    multcount = 0 (off)

    I/O support = 0 (default 16-bit)

    unmaskirq =0 (off)

    using_dma = 0 (off)

    keepsettings = 0 (off)

    nowerr = 0 (off)

    readonly = 0 (off)

    readahead = 8 (on)

    Из этого можно сделать вывод, что все параметры выключены и используется шестнадцатиразрядный доступ к диску. Давайте попробуем немного «разогнать» наш жесткий диск.

    # hdparm –dlm2c3ul /dev/hda

    Теперь разберемся, что же мы сделали этой командой. Во-первых, мы включили DMA, затем разрешили передавать более одного слова за такт, а также включили тридцатидвухбитный доступ к диску (команда с). Кстати, параметр ul полезен и в тех случаях, когда у вас начинает «заикаться» xmms во время прослушивания музыки.

    Вот теперь опять запустим hdparm в режиме теста. В зависимости от жесткого диска у нас должно получиться не менее 14 Мб/с. Думаю, по сравнению с предыдущим показателем разница существенна.

    Можно использовать параметры Х33 и Х66 для включения режимов передачи данных UDMA33 и UDMA66 соответственно. Если при использовании режимов Х33 и Х66 производительность снизилась, используйте режим Х68. Для сохранения параметров контроллера IDE используйте команду:

    # hdparm –k 1 /dev/hda

    При перезагрузке системы параметры IDE теряются, поэтому команду «разгона» винчестера нужно поместить в сценарий запуска системы. Сценарии загрузки рассматриваются в следующей главе. Сейчас просто добавьте команду вызова hdparm в файл /etc/rc.d/rc.local. Этот способ является наиболее универсальным, поскольку он позволяет установить отдельные параметры для разных жестких дисков, если у вас их несколько. Второй, менее универсальный, способ заключается в редактировании файла /etc/sysconfig /harddisks, в котором можно задать общие параметры для всех жестких дисков.

    Есть еще один «подводный камень», который состоит в следующем: при пробуждении системы в нормальное состояние после «сна» параметры контроллера также сбрасываются. Этого можно избежать, если подправить файл конфигурации демона apmd, который отвечает за управление питанием. Параметры контроллера IDE, которые устанавливаются при переходе системы в «спящий» режим и выходе из него, задаются строками HDPARM_AT_SUSPEND и HDPARM_AT_RESUME в файле конфигурации /etc/sysconfig/apmd.

    Файлы конфигурации, расположенные в каталоге /etc/sysconfig, имеются только в системах, подобных Red Hat — это Red Hat Linux, Mandrake Linux, SuSE Linux, ASP Linux, Back Cat Linux, ABI Linux и другие.

    С помощью команды hdparm можно не только повысить скорость обмена данными, но, как вы заметили, и снизить ее. Особенно это полезно при прослушивании аудио компакт-дисков. В самом деле, зачем прослушивать аудио компакты на приводе 52х? К тому же высокоскоростной CDROM слушком шумит. «Притормозить» привод можно такой командой:

    # hdparm –Е 2 /dev/hdd

    В данном примере мы устанавливаем вторую скорость, то есть 300 Кб/с.

    4.19. Создание массивов RAID

    Идея надежности хранения данных волновала, волнует и будет волновать не одно поколение системных администраторов и пользователей. Используемые в ОС Linux файловые системы ext2 и ext3 обладают достаточной степенью надежности, но зачастую этого мало.

    Если существует вероятность потерять данные в результате выхода из строя жесткого диска, то единственным выходом из данной ситуации является использование массивов жестких дисков RAID. RAID (Redundant Array of Independent Disk или Redundant Array of Expensive Disk) — матрица независимых дисков с избыточностью. Под избыточностью подразумевается резервирование и дублирование данных. В зависимости от уровня RAID, предоставляются различные способы объединения дисков в массив (см. табл. 4.17).

    Наиболее часто используются массивы уровней 0,1 и 5. Иногда встречаются комбинированные способы объединения данных в массив, например, 5+1.

    Уровни RAID Таблица 4.17

    Уровень RAID Описание
    0 Обеспечивает распределение блоков данных по нескольким дискам. Предназначен для хранения больших объемов данных, не умещающихся на одном диске. Этот уровень не обеспечивает избыточности, при использовании этого массива диски просто объединяются в цепочку. Емкость массива равна суммарной емкости всех дисков, образующих массив
    1 Обеспечивает технологию зеркального копирования. Диски дублируют друг друга. Емкость массива равна емкости самого меньшего из дисков
    2 Запись на разные диски производится методом битового чередования малых блоков данных с добавлением кодов исправления ошибок
    3 То же, что и уровень RAID 2, но контрольные коды записываются на отдельный диск
    4 Представляет собой совокупность взаимосвязанных данных, которые записываются на один диск, а контрольные коды — на другой
    5 На этом уровне используются контрольные суммы и данные записываются «вперемешку» на все диски. При выходе из строя одного из дисков потерянные данные восстанавливаются с помощью контрольной суммы. Общая емкость массива вычисляется по формуле min_size*(n-1), где min_size — объем наименьшего из дисков, an— количество дисков в массиве. Минимальное количество дисков равно трем

    Организация массива RAID доступна не каждому из-за все еще высокой стоимости на контроллеры RAID. Хотя производители материнских плат пытаются поправить это, выпуская материнские платы со встроенными контроллерами RAID, но такие контроллеры довольно неуниверсальны и обладают слабыми возможностями.

    ОС Linux поддерживает программные контроллеры RAID. Применение программных контроллеров имеет как свои преимущества, так и недостатки. К достоинствам относится возможность использования дисков с различными интерфейсами, например, SCSI и IDE, для организации массива — программному контроллеру все равно, с чем работать. Недостатком является дополнительная нагрузка на центральный процессор — он выполняет всю работу по обеспечению функционирования массива RAID.

    Итак, приступим к созданию массива RAID. Вам потребуется любой дистрибутив с поддержкой программного контроллера RAID (Software RAID). Такой возможностью обладают практически все современные дистрибутивы. Для включения поддержки RAID вам нужно перекомпилировать ядро. Если ваше ядро поддерживает RAID, при загрузке системы вы должны увидеть примерно следующее:

    md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12

    raid5 : measuring checksumming speed

    raid5: MMX detected, trying high-speed MMX checksum routines

     pII_mmx : 980.694 MB/sec

     p5_mmx : 999.744 MB/sec

     8regs : 753.237 MB/sec

     32regs : 444.246 MB/sec

    using fastest function: p5_mmx (999.744 MB/sec)

    md.c: sizeof(mdp_super_t) = 4096

    Partition check:

    hda: hda1 hda2 < hda5 hda6 hda7 hda8 >

    autodetecting RAID arrays

    autorun . ..

    . . . autorun DONE.

    Если перезагружать систему вам не хочется, проверить поддержку RAID вы можете с помощью команды:

    dmesg | less

    Программа dmesg выводит на стандартный вывод сообщения ядра во время загрузки системы.

    Включить поддержку RAID можно в разделе Block device конфигуратора ядра (make menuconfig). Данная опция называется RAID n support, где n — это номер уровня массива RAID. После этого нужно установить пакет raidtools, в состав которого входят программы raidhotadd, raidhotremove, mkraid и другие.

    Для организации массива уровня RAID 1 нужно выделить два раздела и изменить тип этих разделов на Linux raid autodetect. Обратите внимание, я написал «два раздела», а не «два диска», так как конфигурируется программный контроллер. Конечно, лучше, чтобы эти разделы располагались на разных дисках, в противном случае от нашего массива будет мало толку.

    Теперь отредактируйте файл /etc/raidtab (см. листинг 4.3).

    Листинг 4.3. Файл/etc/raidtab (уровень 1)

    # Имя устройства RAID

    raiddev /dev/md0

    # Уровень

    raid-level 1 chunk-size 8 persistent-superblock 1

    # Число дисков в массиве

    nr-raid-disk 2

    # Число дисков, которые будут использоваться в качестве замены, если

    # один из дисков выйдет из строя

    nr-spare-disk 0

    # Определяем первый диск RAID

    device /dev/hdb1

    raid-disk 0

    # Определяем второй диск RAID

    device /dev/hdc1

    raid-disk 1

    После этого нужно создать устройство /dev/md0, для чего выполните следующую команду:

    mkraid /dev/md0

    В некоторых случаях нужно будет использовать дополнительные параметры, о которых вы можете прочитать в справочной системе (man mkraid). В случае, если инициализация прошла успешно, в файле /proc/mdstat вы увидите примерно следующее:

    Personalities: [raid1]

    read_ahead 1024 sectors

    md0: active raid1 hdc1[1] hdb1[0]

    Теперь рассмотрим, как создать массив уровня RAID 5. Для этого используйте конфигурационный файл, текст которого приведен в листинге 4.4.

    Листинг 4.4. Файл/etc/raidtab (уровень 5)

    raiddev /dev/md0

    raid-level 5

    nr-raid-disk 3

    nr-spare-disk 0

    persistent-superblock 1

    parity-algorithm left-symmetric

    chunk-size 64

    device /dev/hdb1

    raid-disk 0

    device /dev/hdc1

    raid-disk 1

    device /dev/hdd1

    raid-disk 2

    После успешной инициализации вы можете использовать массив как один самый обыкновенный диск, то есть создавать и удалять разделы, монтировать эти разделы к корневой файловой системе.

    Для извлечения диска из массива используется команда raidhotremove. Извлечение может понадобиться, если один из дисков вышел из строя. В этом случае я рекомендую использовать диски с возможностью «горячей» замены. В противном случае вам придется останавливать машину для замены диска. После замены на новом диске следует создать разделы так же как и на диске, который вышел из строя, и только после этого выполнить команду raidhotadd. В качестве параметров программы raidhotremove и raidhotadd используют имя массива (/dev/md0) и номер диска, извлекаемого из массива.

    4.20. Форматирование дискет в Linux

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

    Я использую программу kfloppy, которая входит в состав KDE и в особых комментариях не нуждается. В качестве альтернативы вы можете использовать программы fdformat и superformat. Первая из них (fdformat) форматирует дискеты только в Linux-формате (ext2fs). Вызов программы осуществляется следующим образом:

    fdformat [-n] device

    Опция –n запрещает проверку дискеты при форматировании.

    device — это или /dev/fd0 (А:) или /dev/fd1 (В:).

    Более гибкой является программа superformat. Она может форматировать дискету как в Linux-формате, так и создавать файловую систему DOS. На самом деле она вызывает mformat из mtools для создания файловой системы msdos. Параметры программы superformat указаны в табл. 4.18. Формат использования программы superformat следующий:

    superformat параметры

    Параметры программы superformat Таблица 4.18

    Параметр Описание
    -2 Форматирование дисков большой емкости для работы с программой 2mf
    -B Проверка диска с помощью программы mbadblocks
    -d устройство Форматирование диска в указанном устройстве. По умолчанию используется /dev/fd0
    -dd Форматирование дисков двойной плотности (Double Density)
    -D устройство Указание устройства в формате DOS для передачи программе mformat (а: или b:)
    -f Запрет проверки диска
    -Н n Установка количества головок (по умолчанию 2)
    -hd Форматирование дисков высокой плотности (High Density)
    -l Не использовать 2m
    -no2m Не использовать 2m
    -s n Установка количества секторов. Аргумент n обозначает не количество физических секторов, а количество логических 512-байтных секторов
    -t n Установка количества дорожек. Значение по умолчанию — 40 или 80 в зависимости от устройства и плотности диска
    -v n Установка уровня отладки. Допустимые значения 1, 2, 3, 6 и 9
    -V Проверка диска после завершения форматирования всего диска. По умолчанию после форматирования каждой дорожки производится ее проверка

    С помощью этой программы можно увеличить емкость дискет, используя нестандартные форматы (см. табл. 4.19). Однако за качество работы этих дискет я не ручаюсь. К тому же я очень не рекомендую использовать дискеты нестандартных форматов в качестве загрузочных.

    Нестандартные форматы дискет Таблица 4.19

    Размер дискеты Емкость устройства Стандартная емкость дискеты Число дорожек Число секторов Емкость дискеты, байт
    5.25" 360 Кб 360 Кб 41 10 409.088
    5.25" 1.2 Мб 360 Кб 81 10 816.640
    5.25" 1.2 Мб 1.2 Мб 81 18 1.476.096 (1.45 Мб)
    3.5" 720 Кб 720 Кб 81 10 816.640
    3.5" 1.44 Мб 720 Кб 81 10 816.640
    3.5" 1.44 Мб 1.44 Мб 81 21 1.723.904

    Пример:

    superformat –d /dev/fd0 –t 81 –s 21

    Если дискета работает крайне нестабильно, попробуйте уменьшить число секторов до 20.








    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх