|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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. Команды для работы с файлами и каталогами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
Команда 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
На устройствах 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
4.6. Создание файловой системы. Типы файловых системКаждая операционная система имеет основной тип файловой системы, а также дополнительные типы, поддержка которых осуществляется модулями (драйверами), подключаемыми к ядру. В случае с Linux поддержку той или иной файловой системы можно встроить непосредственно в ядро. Основной файловой системой Linux на момент написания этих строк является ext2fs, однако на ее смену сейчас приходит ext3fs и последние версии дистрибутивов Linux используют именно ее. Переход на новую файловую систему обеспечивает более надежную ее работу. Кроме основной файловой системы, Linux поддерживает файловые системы, указанные в табл. 4.4. В табл. 4.4 рассмотрены базовые типы файловых систем. ОС Linux поддерживает и другие файловые системы, не указанные в таблице. Поддержку нужной вам файловой системы можно включить при перекомпилировании ядра. Подробно этот процесс рассмотрен в гл. 18. Для нормальной работы вам потребуются только файловые системы, отмеченные звездочкой. Типы файловых систем Таблица 4.4
Прежде чем перейти к созданию файловой системы, хочу рассмотреть несколько новых файловых систем, которые, скорее всего, становятся стандартом в настоящее время. Ядро 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
Если вы используете операционную систему 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.
После этого согласитесь сохранить изменения в конфигурации ядра и выполните следующие команды: 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
Следующим параметром является устройство (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
Вы можете комбинировать опции, например, команда 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
А сейчас я себе позволю несколько небольших комментариев относительно опций монтирования. Опцию 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
После этого отформатируйте данный файл под своп: 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. Использование LILOLinux 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 вы можете дополнительно использовать следующие опции:
Параметры: <port> [,bps[parity [bits]] ]
Параметры по умолчанию: 0,2400n8. Опции append, ramdisk, read-only, read-write, root, vga могут быть заданы в разделе глобальных параметров. Они будут использованы, если они не заданы в конфигурационных секциях. Программу LILO можно использовать вместе с параметрами, указанными в табл. 4.9. Эти параметры указываются в командной строке. Параметры программы LILO Таблица 4.9
Два небольших замечания: 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 является возможность загружать операционную систему, которая не присутствует в меню. Следует также упомянуть такие загрузчики:
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
Бит смены идентификатора пользователя или группы является вариантом права выполнения х. Право на чтение, запись и выполнение обозначается в этом случае не rwx, a rws. Так называемый sticky-бит позволяет оставить программу в памяти после ее выполнения. Устанавливать этот бит полезно для маленьких и часто используемых программ, чтобы ускорить их запуск. Программа chmod никогда не изменяет права символических ссылок, но это не является особой проблемой, так как права ссылок никогда не используются. Изменить группу файла можно командой chgrp, а владельца — chown. Теперь перейдем к абсолютному методу указания прав доступа, который, как мне кажется, несколько удобнее, чем символьный, поскольку не нужно помнить символику прав доступа. Этот метод еще называют методом двоичных масок. Для изменения прав доступа абсолютным методом используется та же команда chmod: chmod число <файл|каталог> Число называется маской прав доступа и представляет собой число в восьмеричной системе, задающее наборы прав доступа. Напомню, что восьмеричная система — это система с основанием 8 (см. табл. 4.11). Не спешите переворачивать страницу, услышав слово «восьмеричная», все на самом деле намного проще, чем звучит. Каждое число, задающее права доступа, состоит из трех разрядов, например, 760: 7 — первый разряд; 6 — второй разряд; 0 — третий разряд. Первый разряд задает права доступа для владельца файла, второй — для группы, третий — для остальных пользователей. Одному разряду восьмеричной системы соответствует три разряда в двоичной. Соответствие разрядов восьмеричной системы разрядам в двоичной системе Таблица 4.11
Каждый двоичный разряд задает соответствующий ему тип доступа: первый — чтение, второй — запись, третий — выполнение. Будем считать, что разряды нумеруются слева направо. 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
Для повышения производительности файловой системы я использую программу 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
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
4.17. Использование программы cpioДля создания архивов на магнитной ленте или жестком диске, а также для извлечения файлов из архивов используется программа cpio. Программа cpio может работать в трех оперативных режимах. При этом режим работы задается указанной опцией. Помимо опций могут использоваться параметры, которые управляют работой cpio в заданном режиме. Формат вызова программы cpio зависит от режима, в котором она должна работать. Опции программы и соответствующий им формат вызова представлены в табл. 4.15, а параметры — в табл. 4.16. Опции программы cpio Таблица 4.15
Параметры программы cpio Таблица 4.16
Давайте рассмотрим несколько примеров использования программы 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 доступна не каждому из-за все еще высокой стоимости на контроллеры 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
С помощью этой программы можно увеличить емкость дискет, используя нестандартные форматы (см. табл. 4.19). Однако за качество работы этих дискет я не ручаюсь. К тому же я очень не рекомендую использовать дискеты нестандартных форматов в качестве загрузочных. Нестандартные форматы дискет Таблица 4.19
Пример: superformat –d /dev/fd0 –t 81 –s 21 Если дискета работает крайне нестабильно, попробуйте уменьшить число секторов до 20. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|