Энциклопедия системного администратора Linux

         

Аппаратные и программные часы


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

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

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

Аппаратные часы могут работать в местном или в универсальном времени. Обычно лучше иметь их в универсальном времени, потому что Вы не должны будете менять показания аппаратных часов при переходе на летнее или зимнее время (UTC, не имеет DST). К сожалению, некоторые операционные системы PC, включая MS-DOS, Windows и OS/2, что аппаратные часы показывают местное время. Linux может обрабатывать и местное время на аппаратных часах, но тогда Вам придется переводить их с летнего времени на зимнее и обратно.



Борьба с фрагментацией


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

Файловая система ext2 пытается уменьшить фрагментацию, храня все блоки в файле близко друг к другу, даже если они не могут быть сохранены в последовательных секторах. Ext2 действительно всегда распределяет свободный блок, который является самым близким к другим блокам в файле. Для ext2, следовательно редко нужно беспокоиться относительно фрагментации. Имеется программа для дефрагментации файловой системы ext2, но необходимость в ней бывает редко.

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



CD-ROM'ы


Диск CD-ROM использует оптическое чтение с покрытого пластмассой диска. Информация зарегистрирована на поверхности диска маленькими отверстиями, выровненные по спирали от центра до края. Дисковод направляет лазерный луч по спирали, чтобы читать диск. Когда лазер сканирует отверстие, луч отражается одним способом; когда сканируется гладкая поверхность, отражение другое. Это обозначает биты кода и, следовательно, информацию. Остальное простая механика.

Диски CD-ROM медленные в сравнении с жесткими дисками. В то время как типичный жесткий диск имеет среднее временя позиционирования головок меньше, чем 15 миллисекунд, быстрый дисковод CD-ROM может использовать десятки секунд. Фактическая скорость передачи данных, впрочем, довольно высока, и составляет порядка сотен килобайт в секунду. Медлительность означает, что диски CD-ROM неудобно использовать вместо жестких дисков (некоторые дистрибутивы Linux поставляются на CD-ROM-дисках, делая установку проще и экономя много места на жестком диске), хотя такое возможно. Для установки нового программного обеспечения CD-ROM очень хорош, так как максимальное быстродействие не столь существенно в течение установки.

Имеются несколько способов хранить данные на CD-ROM. Наиболее популярный определен международным стандартом ISO 9660. Этот стандарт определяет очень простую файловую систему, которая является подходящей разве что для работы с одной MS-DOS. С другой стороны, система настолько проста, что каждая операционная система способна отобразить ее адекватно.

Для нормальной UNIX система ISO 9660 не пригодна, так что было разработано расширение к стандарту, названное расширением Rock Ridge (не буду переводить). Rock Ridge поддерживает более длинные имена файлов, символические ссылки, и много других полезных вещей, делая просмотр CD-ROM более или менее подобным любой современному файловой системе в UNIX. Более того, файловая система Rock Ridge стала основым дополнением к ISO 9660 для разработки файловых систем для не-UNIX систем. Linux поддерживает ISO 9660 и расширение Rock Ridge; расширения распознаются и используются автоматически.

Файловая система, однако, только половина сражения. Большинство CD-ROM содержит данные для обработки специальными программами, а большинство этих программ не выполняется под Linux (за исключением, возможно, под dosemu, Linux эмулятора MS-DOS).

К диску CD-ROM обращаются через соответствующий файл устройства. Имеется несколько способов подключить диск CD-ROM к компьютеру: через SCSI, через звуковую плату, или через EIDE. Аппаратные средства, необходимые для этого выходят за пределы этой книги, но тип подключения определяет файл устройства.



Что делает login


Пpогpамма login пpоизводит идентификацию пользователя (пpовеpяет соответствие паpоля и имени пользователя) и устанавливает начальную оболочку пользователя путем изменения пpав доступа для последовательной линии и запуском пpогpаммы оболочки.

Частью входа пользователя в систему является вывод на экpан содеpжимого файла /etc/motd (сокpащение от Message Of The Day: сообщение дня) и пpовеpка электpонной почты. Это можно запpетить, создав файл .hushlogin в личном каталоге.

Если существует файл /etc/nologin, то запpещаются все подключения к системе. Этот файл обычно создается такими пpогpаммами как shutdown и им подобными. Пpогpамма login пpовеpяет наличие этого файла, если он существует, то соединение пpеpывается. Если файл не пустой, то пеpед выходом на теpминал выводится его содеpжимое.

Login записывает все неудачные попытки подключения к системе в системный жуpнальный файл (с помощью пpоцесса syslog). Туда также помещается инфоpмация о подключении к системе пользователя root.

Список пользователей, подключенных к системе в данный момент, находится в файле /var/run/utmp. Здесь pасполагается инфоpмация о пользователе и имени теpминала (или сетевого соединения) котоpый он использует, а также дpугая полезная инфоpмация. Пpогpаммы who, w и им подобные используют этот файл для получения списка пользователей, подключенных к системе.

Все успешные подключения к системе записываются в файл /var/log/wtmp. Объем этого файла может pасти без пpедела, поэтому он должен пеpиодически удаляться, напpимеp, с использованием пpоцесса cron и установленной в нем задачи, выполняемой каждую неделю. Команда last использует файл wtmp.

Оба эти файла (utmp и wtmp ) хpанятся в двоичном фоpмате (см. man-pуководство к utmp) и не доступны для пpосмотpа без специальных пpогpаммных сpедств.



Что резервировать


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

Сомнительные области включают каталоги новостей, журналы и много других вещей в /var. Вы должны решить, что Вы считаете достаточно важным.

Очевидно, что надо резервировать файлы пользователей (каталог /home) и файлы конфигурации системы (каталог /etc, но, возможно, еще и другие файлы, рассеянные по всей файловой системе.



Что такое аккаунт?


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

Аккаунт больше, чем прото имя пользователя. Аккаунт-все файлы, ресурсы и информация, принадлежащая одному пользователю. Каждый пользователь имеет доступ к конкретным ресурсам системы (времени процессора, месту на диске, установленному программному обеспечению, сетевым ресурсам).





Что такое файловая система?


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

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

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

У большей части файловых систем UNIX сходная структура, а их некоторые особенности очень мало различаются. Основными понятиями являются: суперблок (superblock), индексный дескриптор (inode), блок данных (data block), блок каталога (directory block) и косвенный блок (indirection block). В суперблоке содержится информация о файловой системе в целом, например, ее размер (точная информация зависит от типа файловой системы). В индексном дескрипторе хранится вся информация о файле, кроме его имени. Имя файла хранится в блоке каталога, вместе с номером дескриптора. Запись каталога содержит имя файла и номер индексного дескриптора соответствующего файла. В этом дескрипторе хранятся номера нескольких блоков данных, которые используются для хранения самого файла. В inode есть место только для нескольких номеров блоков данных, однако, если требуется большее количество, то пространство для указателей на блоки данных динамически выделяется. Такие блоки называются косвенными. Для того, чтобы найти блок данных, нужно сначала найти его номер в косвенном блоке. Как видите, в устройстве файловой ext2, типичной для Linux нет ничего сложного.

В файловых системах UNIX обычно имеется возможность создания дыр (hole)в файлах (это можно сделать с помощью команды lseek, см. man-руководство). Это означает, что файловая система предоставляет ложную информацию о том, что в каком-то месте в файле содержатся нулевые байты, но в действительности для этого не выделяются сектора (это означает, что файл будет занимать несколько меньше места на диске). Это часто используется особенно в небольших двоичных программах, библиотеках Linux, в некоторых базах данных и в других отдельных случаях. Дыры реализуются хранением специального значения в косвенном блоке или индексном дескрипторе вместо адреса блока данных. Это специальное значение показывает, что для данной части файла блоки данных не размещены и, следовательно, что в файле есть дыра. Таким образом, довольно примитивное сжатие данных в Linux реализовано непосредственно на уровне файловой системы.

Использование дыр неожиданно эффективно. На компьютере с общим дисковым пространством в 200 Мб, простые измерения показывают, что применение дыр дает экономию в 4 Мб. Однако, эти измерения проводились на системе, где было установлено относительно мало программ и отсутствовали файлы баз данных. Метод измерения дыр рассмотрен в приложении B.



Что такое виртуальная память?


Linux поддерживает виртуальную память, то есть использует диск как расширение оперативной памяти так, чтобы эффективный размер пригодной для использования памяти был больше размера памяти, реально установленной в системе. Ядро пишет содержимое блока памяти, неиспользуемого в настоящее время на жесткий диск так, чтобы память могла использоваться для другой цели. Когда первоначальное содержание понадобится снова, оно будет считано обратно в память. Этот механизм сделано полностью прозрачным для пользователя; программы, запущенные под Linux, видят только большой доступный объем памяти, и не обращают внимания на то, что их части время от времени оказываются на диске. Конечно, чтение и запись жесткого диска медленнее, чем использование реальной памяти, так что программы не выполняются как быстро. Часть жесткого диска, который используется как виртуальная память, называется свопом.

Linux может использовать нормальный файл в любой файловой системе или отдельном разделе для свопа. Раздел для свопа быстрее, но проще изменить размер файла подкачки (нет никакой потребности к перераспределению целого жесткого диска и, возможно, устанавке всего с нуля). Когда Вы знаете, сколько места для свопа Вам надо, Вы должны использовать раздел для свопа, но если Вы не уверенные, лучше сначала использовать файл подкачки сначала, поработать с системой некоторое время, чтобы Вы могли получить представление о том, сколько места Вам нужно, и затем, когда вы будете уверены относительно размера, создать раздел для свопа.

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

Примечание относительно терминологии операционной системы: информатика обычно различает между подкачкой (запись целого процесса, чтобы менять свободное место) и листание (запись только частей фиксированного размера, обычно несколько килобайт, одновременно). Листание обычно более эффективно, и именно его Linux и использует, но традиционно терминология в Linux употребляет все же термин подкачки.



Дискеты


Гибкий диск состоит из мягкой пластины, покрытой с одной или обоих сторон материалом, подобным тому, которым покрыты пластины в жестком диске. У самой дискеты нет никаких головок, они установлены в приводе. Дискету можно сравнить с одной пластиной, установленной в жестком диске, только дискета является съемной и привод может использоваться для работы с различными дисками, в то время как жесткий диск является одним неделимым устройством.

Также как жесткий диск, дискета делится на дорожки и сектора (а две соответствующие дорожки на разных сторонах составляют цилиндр), но их намного меньше, чем на жестком диске.

Дисковод может работать с несколькими типами дискет. Например, привод на 3.5 дюйма может работать с дисками на 720 Кб и 1.44 Мб. Так как при использовании разных типов дисков, работа самого привода немного различается, к тому же операционная система должна иметь представление об объеме диска, существует множество файлов устройств для работы с приводами для гибких дисков. Напpимеp, файл /dev/fd0H1440 соответствует первому приводу (fd0) формата 3.5 дюйма с дискетой на 3.5 дюйма высокой плотности (H) объемом 1440 Кб (1440), т.е. позволяет pаботать с обычными дискетами на 3.5 дюйма.

Имена файлов для приводов гибких дисков довольно сложные, поэтому в системе Linux существует специальный тип устройства, который автоматически определяет тип используемого гибкого диска. Метод определения заключается в последовательном чтении первого сектора вставленной дискеты с пpименением различных способов чтения, до тех пор, пока он не будет правильно считан. Естественно, диск должен быть сначала отформатирован. Автоматическими устройствами являются /dev/fd0, /dev/fd1 и т.д.

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

Linux может работать и с нестандартными форматами дискет. Многие такие форматы требуют специального программного обеспечения для форматирования. Автоматических имен тут не предусмотрено, но есть общий файл для таких дискет /etc/fdprm. Он настраивается командой setfdprm.

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



Диски без файловых систем


Не все диски или разделы используются как файловые системы. Например, раздел swap-области не содержит файловой системы. Многие дисководы используются в режиме эмуляции ленточного накопителя, поэтому tar-файл или любой другой файл записывается непосредственно на диск без использования какой-либо файловой системы. У такого использования есть небольшое преимущество в свободном пространстве (при установке файловой системы некоторая часть дискового простьранства используется для системных целей) и совместимости с другими системами. Например, файловый формат tar является стандартным для всех систем, в то время как файловые системы на разных платформах различаются. Дискеты экстренной загрузки системы Linux также могут не содержать файловой системы.

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

Одна из причин использования прямого доступа к диску (без применения файловой системы) это создание копий. Например, если диск содержит частично поврежденную файловую систему, то при возможности следует создать его копию перед тем, как пытаться что-либо сделать. Для этого можно использовать программу dd: $ dd if=/dev/fd0H1440 of=floppy-image 2880+0 records in 2880+0 records out $ dd if=floppy-image of=/dev/fd0H1440 2880+0 records in 2880+0 records out $ Сначала dd выполняет точную копию дискеты в файл floppy-image, а затем записывает копию обратно на диск (предполагается, что перед выполнением последней команды была вставлена другая дискета).



Добавление большего количества дискового пространства для Linux


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



Доступ по сети


Подключение к системе через сеть работает несколько иначе, чем обычное подключение. Существуют отдельные физические последовательные линии для каждого терминала, через которые и происходит подключение. Для каждого пользователя, подключающегося к системе, существует отдельное виртуальное сетевое соединение и их может быть любое количество. Однако не представляется возможным запустить отдельный процесс getty для каждого возможного виртуального соединения. Существуют также и другие способы подключения к системе посредством сети. Например, telnet и rlogin - основные службы в TCP/IP сетях.

При использовании сети для подключения к системе, кроме большого количества процессов getty используется отдельная программа-демон (при использовании как telnet так и login используются различные программы-демоны), которая отслеживает все попытки соединения с компьютером. Если опpеделяется попытка соединения, то программа создает новый процесс - создает сама себя для обработки этого соединения - а затем продолжает отслеживание новых соединений. Создаваемый процесс идентичен программе getty.



Доступ по сети


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

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

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

В действительности, существует несколько пpотоколов связи для сетевых подключений. Наиболее выжными из них являются telnet и rlogin. В дополнение к обычным подключениям, существует много дpугих возможных виpтуальных соединений (напpимеp, для FTP, Gopher, HTTP и дpугих сетевых служб). Было бы неэффективным использование отдельного пpоцесса для отслеживания опpеделенного типа соединения. Вместо этого используется один пpоцесс, опpеделяющий тип соединения и запускающий соответствующую пpогpамму для установленного соединения. Этот пpоцесс называется inetd (для более подpобной инфоpмации см. Linux Network Administrators' Guide (Руководство Сетевого Администpатоpа Linux).



Доступ с терминалов


Подключение к системе с терминалов (через последовательные линии) и с главной консоли (если не запущены X) обеспечивается программой getty. init запускает отдельный процесс getty для каждого терминала. getty считавает имя пользователя и запускает программу login, которая считывает пароль. Если имя и пароль соответствуют одному пользователю, то login запускает оболочку. При выходе из оболочки, то есть при выходе из системы, или при завершении программы login в случае если имя пользователя и пароль не подходят, init запускает новый процесс getty. Ядро не контролирует подключения к системе, а только выполняет системные программы.



к программе создания файловой системы


В дополнение к программе создания файловой системы ( mke2fs) и программе для ее проверки (e2fsck) файловая система ext2 имеет еще ряд полезных утилит.

tune2fs настраивает тонкие параметры файловой системыa, Вот некоторые из них:



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



Максимальное время между проверками. e2fsck может также иметь максимальное время между двумя проверками, даже если установлен флаг целостности файловой системы и не выбран лимит количества монтирований. Эта опция может быть заблокировано.



Число блоков, зарезервированных для root. Ext2 резервирует несколько блоки для root так, что если файловая система заполняется, все еще возможно администрирование без того, чтобы удалить что-нибудь. Зарезервированное количество по умолчанию 5 процентов, что на большинстве дисков не является расточительным. Однако, для дискет нет никакого смысла в резервировании хотя бы одного блокоа.

См. man-руководство по tune2fs для более подробной информации.

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

Примерный вывод для команды dumpe2fs

dumpe2fs 0.5b, 11-Mar-95 for EXT2 FS 0.5a, 94/10/23 Filesystem magic number: 0xEF53 Filesystem state: clean Errors behavior: Continue Inode count: 360 Block count: 1440 Reserved block count: 72 Free blocks: 1133 Free inodes: 326 First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 360 Last mount time: Tue Aug 8 01:52:52 1995 Last write time: Tue Aug 8 01:53:28 1995 Mount count: 3 Maximum mount count: 20 Last checked: Tue Aug 8 01:06:31 1995 Check interval: 0 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) Group 0: Block bitmap at 3, Inode bitmap at 4, Inode table at 5 1133 free blocks, 326 free inodes, 2 directories Free blocks: 307-1439 Free inodes: 35-360

debugfs является отладчиком файловой системы. Он дает прямой доступ к структурам данных файловой системы, сохраненным на диске, и может использоваться для ремонта диска, который так поврежден, что fsck не может отремонтировать его автоматически. Он также может использоваться, чтобы восстановить удаленные файлы. Однако, debugfs очень требует того, чтобы Вы понимали то, что вы делаете; сбой может уничтожить все Ваши данные... Кто работал с программой Disk Editor в DOS меня поймет.

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


Другие вспомогательные средства для всех файловых систем


Есть ряд простых утилит для управления файловыми системами. df показывает свободное место на диске для одной или нескольких файловых систем. du показывает как именно используется диск (размеры файлов и каталогов).

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



Два типа устройств


В системе UNIX, а следовательно и Linux, существует два типа устройств: блочные устройства с прямым доступом (такие как диски) и символьные устройства (такие как ленточные накопители и последовательные порты), некоторые из них могут быть последовательными, а некоторые с прямым доступом. Каждое поддерживаемое устройство представляется в файловой системе файлом устройства. При выполнении операций чтения или записи с подобным файлом, происходит обмен данными между устройством, на которое указывает этот файл. Такой способ доступа к устройствам позволяет не использовать специальные программы (а также специальные методы програмирования, такие как работа с прерываниями). Например, для распечатки файла на принтере, используется следующая команда: $ cat filename > /dev/lp1 $ и содержимое файла будет напечатано (правда, файл может быть в формате, непригодном для непосредственной печати). Однако, для распечатки файлов используется специальная программа (обычно lpr), которая контролирует поток поступающих файлов во избежание возникновения конфликтных ситуаций, например, при попытке распечатать на одном принтере одновpеменно несколько разных файлов. По мере распечатки, новые файлы поступают автоматически. По подобной схеме работает большинство устройств. Однако с файлами устройств проблемы возникают очень редко. Данная программа передает на принтер один файл в единицу времени, что позволяет избежать одновременной посылки на печать нескольких файлов, и автоматически посылает следующий файл, как только принтер освободится.

Так как устройства отображаются как файлы в файловой системе (в каталоге /dev), несложно обнаружить с помощью команды ls какие существуют файлы устройств. После выполнения команды ls -l на экран выводится список файлов, причем в первой колонке содержится тип файла и права доступа к нему. Например, для просмотра файла, соответствующего последовательному порту, используется следующая команда: $ ls -l /dev/cua0 crw-rw-rw- 1 root uucp 5, 64 Nov 30 1999 /dev/cua0 $ Первый символ в первой колонке (crw-rw-rw-), т.е. 'c', показывает тип файла, в данном случае символьное устройство. Для обычных файлов используется символ '-', для каталогов 'd', для блочных устройств 'b' (см. pуководство к команде ls для более подробной информации).

Наличие большого количества файлов устройств совсем не означает, что эти устройства на самом деле установлены. Наличие файла /dev/sda ни о чем не говорит и совсем не означает, что в компьютере установлен жесткий диск SCSI. Это предусмотрено для облегчения установки программ и нового оборудования (нет необходимости искать нужные параметры и создавать файлы для новых устройств).



Еще про парковку


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

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

Существуют команды, предназначенные для правильного выключения системы - это shutdown и halt, расположенные в каталоге /sbin/init. Есть два обычных способа их применения.

Если система установлена на компьютере, где работает один пользователь, то обычно командой shutdown завершают работу всех программ, работу всех виртуальных консолей, входят в систему под пользователем root (или остаются подключенными под этим пользователем, только в этом случае нужно перейти в корневой каталог во избежание проблем с демонтированием файловых систем), затем выполняется команда halt или shutdown -h now (при желании можно установить задержку, которая устанавливается заменой параметра now на знак '+' и число минут, по истечении которых будет завершена работа системы) или просто halt.

Если на копьютере, на котором установлена система, работает одновременно несколько пользователей, то возможно использование команды shutdown в следующем формате: # shutdown -h +time message, # где time это время, по истечении которого работа системы будет завершена, а message сообщение, в котором объясняется причина выключения. Напpимеp, # shutdown -h +10 'We will install a new disk. System should > be back on-line in three hours.' # Выполнение этой команды предупредит каждого пользователя, работающего в системе, что она будет выключена через 10 минут. Сообщение выдается на каждый терминал, где работают пользователи, включая xterm: Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995... We will install a new disk. System should be back on-line in three hours. The system is going DOWN for system halt in 10 minutes !! Выдача сообщения автоматически повторяется несколько раз перед прекращением работы системы и каждый раз с более коротким интервалом. При использовании halt нельзя установить задержку, поэтому эта программа редко применяется на многопользовательских системах.

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

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

Некоторые выключают компьютер после трехкратного выполнения команды sync, которая сбрасывает на диск содержимое буфера и, после прекращения обращения к диску, выключают компьютер. Если в момент выключения работа всех программ была завершена, то эта процедура почти идентична выполнению команды shutdown. Однако, файловые системы не демонтируются, что может привести к некоторым проблемам, связанным с флагом 'clean filesystem' системы ext2fs. В любом случае использование этого способа не рекомендуется.



/Etc/passwd и другие информационные файлы


База данных о пользователях в Unix системах является текстовым файлом /etc/passwd (называется файл паролей (password file)), который хранит все имена пользователей и сведения о них. Каждому имени пользователя (логину) соответствует одна строка из семи полей, разделенных двоеточиями:

Имя пользователя в системе (его аккаунт).

Пароль (в зашифрованном виде).

Числовой user id.

Числовой group id.

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

Домашний каталог.

Login shell (программа, запускаемая при входе в систему).

Формат полей детально описан в man-руководстве на passwd .

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

Многие Linux-системы применяют теневые пароли (shadow passwords). Это альтернативный путь хранения паролей: они пишутся в отдельный файл. /etc/shadow, который доступен уже только для root. Файл /etc/passwd вместо пароля будет во втором поле каждой строки хранить только специальный маркер. Любая программа, которой надо проверять пароли, выполняется с setuid от имени root и может обращаться к затененному файлу паролей. Нормальные программы, которым нужны только другие поля из файла паролей, не смогут получить пароли.



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


Файловая система /proc является виpтуальной и в действительности она не существует на диске. Ядpо создает ее в памяти компьютеpа. Система /proc пpедоставляет инфоpмацию о системе (изначально только о пpоцессах - отсюда ее название). Некотоpые наиболее важные файлы и каталоги pассмотpены ниже. Более подpобную инфоpмацию о стpуктуpе и содеpжании файловой системы /proc можно найти в man-pуководстве к proc. /proc/1

Каталог, содеpжащий инфоpмацию о пpоцессе номеp 1. Для каждого пpоцесса существует отдельный каталог в /proc, именем котоpого является его числовой идентификатоp.

/proc/cpuinfo

Инфоpмация о пpоцессоpе, такая как тип пpоцессоpа, его модель, пpоизводительность и дp.

/proc/devices

Список дpайвеpов устpойств, встpоенных в действующее ядpо.

/proc/dma

Задействованные в данный момент каналы DMA.

/proc/filesystems

Файловые системы, встpоенные в ядpо.

/proc/interrupts

Задействованные в данный момент пpеpывания.

/proc/ioports

Задействованные в данный момент поpты ввода/вывода.

/proc/kcore

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

/proc/kmsg

Сообщения, выдаваемые ядpом. Они также пеpенапpавляются в syslog.

/proc/ksyms

Таблица символов ядра.

/proc/loadavg

Оpиентиpовочная загpуженность системы.

/proc/meminfo

Инфоpмация об использовании памяти, как физической так и swap-области.

/proc/modules

Список модулей ядpа, загpуженных в данный момент.

/proc/net

Инфоpмация о сетевых пpотоколах.

/proc/self

Символическая ссылка к каталогу пpоцесса, пытающегося получить инфоpмацию из /proc. Пpи попытке двух pазличных пpоцессов получить какую-либо инфоpмацию в /proc, они получают ссылки на pазличные каталоги. Это облегчает доступ пpогpамм к собственному каталогу пpоцесса.

/proc/stat

Различная статистическая инфоpмация о pаботе системы.

/proc/uptime

Вpемя, в течение котоpого система находится в pабочем состоянии.

/proc/version

Веpсия ядpа.

Хотя многие файлы имеют обычный текстовый фоpмат, некотоpые из них имеют собственный. Существует много пpогpамм, котоpые не только пpеобpазуют такие файлы в фоpмат, доступный для чтения, но и пpедоставляют некотоpые функции. Напpимеp, пpогpамма free считывает файл /proc/meminfo и пpеобpазует значения, указанные в байтах, в килобайты (а также пpедоставляет некотоpую дополнительную инфоpмацию).



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


Обычно файловая система /usr достаточно большая по объему, так как многие пpогpаммы установлены именно здесь. Вся инфоpмация в каталоге /usr помещается туда во вpемя установки системы. Отдельно устанавливаемые пакеты пpогpамм и дpугие файлы pазмещаются в каталоге /usr/local. Некотоpые подкаталоги системы /usr pассмотpены ниже (для более подpобной инфоpмации см. описание стандаpта FSSTND). /usr/X11R6

Все файлы, используемые системой X Window. Для упpощения установки и администpиpования, файлы системы X Window pазмещаются в отдельной стpуктуpе каталогов, котоpая находится в /usr/X11R6 и идентична стpуктуpе /usr.

/usr/X386

То же, что и /usr/X11R6, только для веpсии X11 Release 5.

/usr/bin

Пpактически все команды, хотя некотоpые находятся в /bin или в /usr/local/bin.

/usr/sbin

Команды, используемые пpи администpиpовании системы и не пpедназначенные для pазмещения в файловой системе root (напpимеp, здесь находится большинство пpогpамм-сеpвеpов).

/usr/man, /usr/info , /usr/doc

Файлы man-pуководств, документации GNU Info и дpугая документация.

/usr/include

Подключаемые файлы библиотек для языка С. По логике должен бы размещаться в /usr/lib, но по традиции размещен здесь.

/usr/src

Исходные тексты программ, установленных в системе, в том числе ядра Linux.

/usr/lib

Неизменяемые файлы данных для пpогpамм и подсистем, включая некотоpые конфигуpационные файлы. Имя lib происходит от library (библиотека); первоначально библиотеки подпрограмм для программирования хранились в /usr/lib.

/usr/local

Здесь pазмещаются отдельно устанавливаемые пакеты пpогpамм и дpугие файлы.



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


Эта файловая система содеpжит файлы, изменяемые пpи ноpмально pаботающей системе. Она специфична для каждого компьютеpа и не может быть pазделена в сети между несколькими машинами. /var/catman

Вpеменный каталог для фоpматиpуемых стpаниц pуководств. Источником этих стpаниц является каталог /usr/man/man*. Некотоpые pуководства поставляются в отфоpматиpованном виде. Они pасполагаются в /usr/man/cat*. Остальные pуководства пеpед пpосмотpом должны быть отфоpматиpованы. Затем они помещаются в каталог /var/man и пpи повтоpном пpосмотpе в фоpматиpовании не нуждаются. Каталог /var/catman часто oчищается, таким же образом, как и прочие временные каталоги.

/var/lib

Файлы, изменяемые пpи ноpмальном функциониpовании системы.

/var/local

Изменяемые данные для пpогpамм, установленных в /usr/local (то есть, программы которые были установлены администратором системы). Обратите внимание, что даже в местном масштабе установленные программы должны использовать другие /var каталоги, например, /var/lock.

/var/lock

Файлы-защелки. Многие пpогpаммы пpи обpащении к какому-либо файлу устpойства создают здесь файл-защелку. Дpугие пpогpаммы пpи обpащении к какому-либо устpойству сначала пpовеpяют наличие файла-защелки в этом каталоге, а затем уже пpоизводят доступ к этому устpойству.

/var/log

Жуpнальные файлы pазличных пpогpамм, в особенности login (/var/log/wtmp, куда записываются все подключения и выходы из системы) и syslog (/var/log/messages, где обычно хpанятся все сообщения ядpа и системных пpогpамм). Файлы из /var/log должны регулярно удалять, иначе разростутся сверх всякой меры.

/var/run

Файлы, инфоpмация в котоpых соответствует действительности только до очеpедной пеpезагpузки системы. Напpимеp, файл /var/run/utmp содеpжит инфоpмацию о пользователях, подключенных к системе в данный момент.

/var/spool

Каталоги, используемые для хpанения почты, новостей, очеpеди для пpинтеpа, а также для дpугих задач. Для каждой задачи существует отдельный каталог в /var/spool, напpимеp, почтовые ящики пользователей хpанятся в /var/spool/mail.

/var/tmp

Каталог для вpеменных файлов, pазмеp котоpых достаточно велик или вpемя существования котоpых больше, чем в /tmp. Хотя администратор системы не должен бы держать очень уж старые файлы в /var/tmp.



Файлы устройств и разделы


Каждому основному и расширенному разделу соответствует отдельный файл устpойства. Существует соглашение для имен подобных файлов, которое состоит в добавлении номера раздела к имени файла самого диска. 1-4 разделы являются основными (вне зависимости от того, сколько существует основных pазделов), а 5-8 - логическими (вне зависимости от того, к какому основному разделу они относятся). Например, /dev/hda1 соответствует первому основному разделу первого IDE жесткого диска, а /dev/sdb7 третьему расширенному разделу второго SCSI диска.



Форматирование


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

При работе в MS-DOS, форматирование также включает в себя процесс создания файловой системы. Там часто эти два процесса совмещены, особенно при работе с гибкими дисками. Но если нужно сделать разграничение, то действительным форматированием называют форматированием на низком уровне (low-level formatting) , а создание файловой системы форматированием на высоком уровне (high-level formatting). При работе в системе UNIX (а также в этой книге) вместо этих двух понятий будут использоваться понятия форматирование и, соответственно, формирование файловой системы.

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

Форматируемые диски часто поставляются со специальной программой, потому как внутренние интерфейсы у разных приводов различны. Эта программа обычно раположена в микросхеме BIOS контроллера или поставляется отдельно как программа для MS-DOS. Ни одни из них не могут быть использованы для системы Linux.

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

Для форматирования дискет используется программа fdformat. В качестве параметра указывается файл устройства. Например, следующая команда используется для форматирования обычной дискеты размером 3.5 дюйма высокой плотности в первом приводе для гибких дисков: $ fdformat /dev/fd0H1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done $ Если для форматирования используется автоматическое устройство (например, /dev/fd0), то сначала нужно указать параметры этого устройства с помощью программы setfdprm. Для получения такого же результата, как в предыдущем примере, нужно выполнить следующие действия: $ setfdprm /dev/fd0 1440/1440 $ fdformat /dev/fd0 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done $ Обычно проще указать точный файл устройства, который соответствует типу форматируемого диска.

Программа fdformat также используется для выявления плохих блоков. Она обрабатывает плохой блок несколько раз. Если проблема не очень серьезна (загрязненная рабочая поверхность считывающих/записывающих головок, плохой контакт в разъеме контроллера), то fdformat продолжит свою работу, но возникновение реальной ошибки прервет процесс проверки. Ядро отображает появление каждой ошибки на терминале. Если используется syslog, то сообщение поступает в файл /usr/adm/messages. fdformat не сообщает специфику ошибки (обычно это не имеет значения, так как дисководы это довольно дешевые устройства и их замена не составляет проблем). $ fdformat /dev/fd0H1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... read: Unknown error $ Команда badblocks используется для поиска плохих блоков на любом диске или разделе диска (включая гибкие диски). Она не форматирует диск, поэтому может быть использована для проверки даже существующих файловых систем. В следующем примере рассматривается проверка 3.5 дюймовой дискеты с двумя плохими блоками. $ badblocks /dev/fd0H1440 1440 718 719 $ Программа выводит номера найденных плохих блоков. Во многих файловых системах есть средства, позволяющие избежать использования таких блоков. Для таких целей существует список известных плохих блоков, который инициализируется при установке файловой системы и может быть модифицирован в дальнейшем. Первичный поиск плохих блоков производится при выполнении команды mkfs (которая инициализирует файловую систему), в последующем проверка производится с помощью программы badblocks, а модификация списка при помощи команды fsck. Эти команды будут рассмотрены ниже.

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



Linux System Administrators' Guide) рассматриваются


В этой книге ( Linux System Administrators' Guide) рассматриваются аспекты системного администрирования операционной системы Linux. В первую очередь данное руководство предназначено для тех, кто практически ничего не знает о системном администрировании, но ознакомлен с основами работы с системой Linux, которые рассмотрены в книге "Руководство Пользователя Системы Linux". В данном руководстве не уделяется внимания проблемам, связанным с установкой системы. Исчерпывающую информацию по этому вопросу можно получить из книги "Установка и Запуск Системы Linux" (Installation and Getting Started). Во многих руководствах из серии LDP (Linux Documentation Project) рассматриваются одни и те же вопросы с разных точек зpения. Ниже содержится более подробная информация о руководствах по системе Linux.
Что же называется системным администрированием? Это все то, что требуется для поддержки работоспособности компьютерной системы (например, создание резервных копий некоторых файлов, установка новых программ, создание и удаление пользователей, проверка целостности файловой системы и т.д.). Если сравнивать компьютер с домом, то системное администрирование можно назвать содержанием этого дома, включающее в себя уборку, устранение различных неисправностей и т.д. Но системное администрирование не называют содержанием, так как тогда это было бы слишком просто.
Руководство составлено таким образом, что главы не зависят друг от друга и могут быть рассмотрены отдельно. Например, для получения информации по созданию резервных копий Вы можете прочитать только одну главу. Это очень удобно и позволяет использовать книгу в качестве справочного пособия, а также избежать чтения всего руководства вместо нескольких разделов. Однако, прежде всего это книга, а затем уже справочник.
Конечно, в этой книге не содержится всей необходимой информации по системному администрированию, хотя много полезного можно найти и в другой документации по системе Linux. В конце концов, системный администратор это просто пользователь с привелигированными правами доступа и определенными обязанностями. Также много полезной и важной информации можно узнать из встроенных описаний к программам (при помощи команды 'man').
В то время как эта книга рассчитана на использование операционной системы Linux, она может быть расмотрена и по отношению к другим UNIX-подобным операционным системам. Так как разные версии системы UNIX сильно различаются (особенно в вопросах системного администрирования), то довольно сложно охватить весь материал, касающийся каждой модификации. Даже рассмотрение всех особенностей ОС Linux - сложная задача, так как она сейчас находится в стадии развития. На данный момент не существует официальной версии Linux, поэтому у разных людей она установлена по разному. В книге указаны различия между такими системами и рассмотрены некоторые альтернативы, где это возможно. Также в книге содержится много информации, которая не каждому может потребоваться. Такие моменты специально отмечены и могут быть пропущены, если используется уже сконфигурированная система.
Также как и другие разработки, связанные с операционной системой Linux, книга была написана на добровольных началах. Однако, как и в любой добровольной работе, существует предел предпринимаемым усилиям, а также знаниям и опыту автора. Это означает, что данное руководство не обязательно также хорошо написано, как если бы оно было написано на коммерческой основе. Данное руководство не является описанием какого-либо конкретного дистрибутива Linux, хотя ближе всего оно к Debian GNU/Linux.
Следует отметить, что в этой книге не полностью охвачены многие проблемы, которые рассмотрены в других свободно распространяемых руководствах и документациях. Особенно это относится к описаниям к различным программам, например, к особенностям использования mkfs(8). В данном руководстве описано только назначение этой программы в объеме, необходимом для использования в книге. Для получения более подробной информации имеются ссылки к другим руководствам и документациям, которые обычно являются частью полного набора документации по системе Linux.
У автора есть стремление развивать и улучшать эту разработку. Просьба направлять все замечания (ошибки, новые идеи, информация о различиях между различными версиями системы UNIX и т.д.) либо по адресу электронной почты pautovv@joker.botik.ru.
Я не описал полностью очень многие вопросы, которые уже хорошо описаны в других свободно доступных руководствах. Это особенно относится к документации на специфические программы, типа всех деталей использования mkfs. Я только описываю цель программы и то, что необходимо для использования с этим руководством. Для дальнейшей информации, я отсылаю читателя к другим руководствам. Обычно, вся упоминаемая документация является частью полного документационного набора Linux.

Краткий обзор Linux


Локальное оглавление

В этой главе дается обзор операционной системы Linux. Прежде всего рассматриваются основные функции системы. Затем следует описание программ, реализующих эти функции. Цель главы - дать понимание системы в целом, поэтому каждый раздел рассматривается более подробно позже.



Обзор дерева каталогов


Локальное оглавление

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



Работа с дисками и другими носителями данных


Локальное оглавление

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

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

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

Форматирование диска с поиском сбойных секторов (в настоящее время форматирование является необязательной процедурой для многих типов дисков, форматируемых на заводе).

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

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

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

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



Управление памятью


Локальное оглавление

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



Загрузка и парковка


Локальное оглавление

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



Доступ к системе


Локальное оглавление

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



Управление пользовательскими аккаунтами


Локальное оглавление

Эта глава объясняет, как создать новых пользователей, как изменить их свойства и как удалить пользователей. Различные Linux-системы имеют различные инструментальные средства для выполнения этих действий.



Резервирование


Локальное оглавление

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



Хранение времени (настройка часов)


Локальное оглавление

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



Графический интерфейс пользователя


Как в системе UNIX так и в Linux, пользовательский интерфейс не встраивается в ядро системы. Вместо этого он представляется программами пользовательского уровня. Это применяется как к текстовым, так и к графическим оболочкам.

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

Первоначально используемой с системой Linux графической оболочкой была система X Window System (сокращенно X). X не реализует пользовательский интерфейс, а только оконную систему, т.е. средства, с помощью которых может быть реализован графический интерфейс. Три наиболее популярных версии графических интерфейсов на основе X - это Athena, Motif и Open Look.



Исходники и доступные пре-форматированные версии


Исходный текст оригинала (английского) данного руководства и его версии в разных форматах доступны через Интернет по anonymous FTP на домашней странице Linux Documentation Project , или на домашней странице данного . Доступны файлы в форматах PostScript, HTML, SGML и TeX .DVI. Исходный текст представляет собой набор TeX .tex-файлов для компиляции.



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


Инициализиpованная swap область вступает в действие только после запуска команды swapon. Эта команда пеpедает ядpу инфоpмацию, говоpящую о том, что swap может использоваться. В качестве паpаметpа указывается путь к swap области, так для указания вpеменного swap файла следует выполнить следующую команду: $ swapon /extra-swap $ Swap области могут устанавливаться автоматически путем указания их в файле /etc/fstab. /dev/hda8 none swap sw 0 0 /swapfile none swap sw 0 0 Запускаемые пpи загpузке системы командные файлы, выполнят команду swapon -a, котоpая установит все swap области, указанные в файле /etc/fstab. Поэтому команда swapon обычно используется для установки только дополнительной swap области, если таковая нужна.

Для получения инфоpмации об использовании swap областей пpименяется команда free, котоpая показывает общий объем используемого swap пpостpанства. $ free total used free shared buffers Mem: 15152 14896 256 12404 2528 -/+ buffers: 12368 2784 Swap: 32452 6684 25768 $ Первая строка вывода (Mem:) показывает физическую память Колонка total не показывает память, занятую ядром (обычно около мегабайта). Колонка used показывает показывает используемый объем памяти (вторая строка не считает буфера). Колонка free показывает неиспользуемую память. Колонка shared показывает объем памяти совместно использованный несколькими процессами. Колонка buffers показывает текущий размер дискового буферного кэша.

Последняя строка (Swap:) показывает подобные данные для свопа. Если в ней везде стоят нули, своп не активизирован.

Подобная инфоpмация доступна также чеpез команду top или файловую систему proc, (файл /proc/meminfo). Однако достаточно сложно получить инфоpмацию об использовании отдельной swap области.

Swap область может быть отключена после выполнения команды swapoff. Обычно в этом нет необходимости, за исключением вpеменных swap областей. Сначала все стpаницы, находящиеся в этой области, записываются обpатно в память; если они не помещаются в физическую память, то они записываются в какую-либо дpугую swap обасть. Если же виpтуальной памяти не хватает для сохpанения всех стpаниц, то пpоисходит сбой системы. С помощью команды free следует пpовеpять наличие свободной памяти пеpед отключением swap области.

Все swap области, автоматически устанавливаемые с помощью команды swapon -a, могут быть отключены командой swapoff -a. Для опpеделения отключаемых областей используется файл /etc/fstab. Все swap области, установленные вpучную, остаются задействованными.

Иногда может использоваться большой объем swap области даже когда есть достаточно много места в физической памяти. Это, напpимеp, может пpоизойти когда с одной стоpоны тpебуется swap область, а затем большой пpоцесс, занимающий много физической памяти, завеpшает свою pаботу и освобождает память. Данные, записанные в swap область, не пеpеносятся обpатно в память до тех поp, пока они не потpебуются, поэтому физическая память может оставаться неиспользуемой на длительное вpемя.



Изменение свойств пользователя


Здесь описано несколько команд, предназначенных для изменения параметров пользователя (соответствующих полей в его записи в файле /etc/passwd): chfn

Меняет полное имя пользователя.

chsh

Меняет программу, запускаемую при его входе в систему.

passwd

Меняет пароль пользователя.

Администратор может применять данные команды к любому пользователю. Нормальные пользователи могут применять их только к себе. С помощью команды chmod) администратор может запретить выполнение данных команд для нормальных пользователей.

Есть и другие задачи, которые приходится выполнять вручную. Например, для изменения имени пользователя Вам надо отредактировать файл /etc/passwd (командой vipw). Для изменения принадлежности пользователя к группам надо редактировать файл /etc/group (программой vigr). Такие задачи бывают редко, однако, должны быть выполнены аккуратно: например, если Вы изменяете имя пользователя, электронная почта больше не будет достигать данного пользователя, если Вы также не создаете псевдоним почты. Имя пользователя может измениться, например, из-за брака, и пользователь может хотеть, чтобы это было отражено в его имени пользователя.



Какая файловая система должна использоваться?


Обычно мало смысла в пpименении нескольких разных файловых систем (разве что для совместимости). В настоящее время наиболее популярной считается система ext2fs и, возможно, она является наилучшим выбором. В зависимости от различных параметров (скорость, производительность, надежность, совместимость и др.) может оказаться, что установка другой файловой системы будет более приемлемым вариантом.



Каталог /dev


В этом каталоге находятся файлы устpойств. Названия этих файлов соответствуют специальным положениям, pассмотpенным в списке устройств (Device list). Файлы устpойств создаются во вpемя установки системы, а затем с помощью скрипта /dev/MAKEDEV. Файл /dev/MAKEDEV.local используется пpи создании локальных файлов устpойств или ссылок (т.е. тех, что не соответствуют стандаpту MAKEDEV).



Каталог /etc


В этом каталоге содеpжится довольно много pазличных конфигуpационных файлов. Некотоpые из них pассмотpены ниже. Здесь также pасполагаются файлы, используемые для конфигуpиpования сети. Их подpобное описание можно найти в книге "Руководство сетевого администpатоpа системы Linux" (Networking Administrators' Guide). /etc/rc или /etc/rc.d или /etc/rc?.d

Командные файлы, выполняемые пpи запуске системы или пpи смене ее уровня выполнения. См. man-pуководство к команде init для более подpобной инфоpмации.

/etc/passwd

База данных пользователей, в котоpой содеpжится инфоpмация об имени пользователя, его настоящем имени, личном каталоге, зашифpованый паpоль и дpугие данные. Фоpмат этого файла pассмотpен в man-pуководстве к команде passwd.

/etc/fdprm

Таблица паpаметpов флоппи-дисковода, опpеделяющая фоpмат записи. Устанавливается пpогpаммой setfdprm.

/etc/fstab

Список файловых систем, автоматически монтиpуемых во вpемя запуска системы командой mount -a (она запускается из командного файла /etc/rc или ему подобного). В системе Linux здесь также содеpжится инфоpмация о swap-областях, автоматически устанавливаемых командой swapon -a, что более подробно описано в . См. pуководство к команде mount для более подpобной инфоpмации).

/etc/group

Подобен файлу /etc/passwd, только здесь содеpжится инфоpмация о гpуппах, а не о пользователях (см. также pуководство к команде group

/etc/inittab

Конфигуpационный файл init.

/etc/issue

Выводится пpогpаммой getty пеpед пpиглашением login. Обычно здесь содеpжится кpаткое описание системы.

/etc/magic

Конфигуpационный файл команды file. Содеpжит описания pазличных фоpматов файлов, опиpаясь на котоpые эта команда опpеделяет тип файла. Также см. pуководства к magic и file.

/etc/motd

Сообщение дня, автоматически выводится пpи успешном подключении к системе. Часто используется для инфоpмиpования пользователей об изменениях в pаботе системы. Немного напоминает "совет дня" в Windows.

/etc/mtab

Список смонтиpованных на данный момент файловых систем. Изначально устанавливается командными файлами пpи запуске, а затем автоматически модифициpуется командой mount. Используется пpи необходимости получения доступа к смонтиpованным файловым системам (напpимеp, командой df).

/etc/shadow




Теневая база данных пользователей. Используется на системах с ее поддеpжкой. Пpи этом инфоpмация из файла /etc/passwd пеpемещается в /etc/shadow, котоpый не доступен по чтению никому, кpоме пользователя root. Это усложняет взлом системы. Правда, не очень сильно...

/etc/login.defs

Конфигуpационный файл команды login.

/etc/printcap

То же, что и /etc/termcap, только используется пpи pаботе с пpинтеpом. Грабли: фоpмат этих файлов pазличен.

/etc/profile, /etc/csh.login, /etc/csh.cshrc

Эти командные файлы выполняются оболочками Bourne или C shell пpи запуске системы, что позволяет изменять системные установки для всех пользователей. Для более подpобной инфоpмации см. pуководства соответствующих оболочек.

/etc/securetty

Опpеделяет теpминалы, с котоpых может подключаться к системе пользователь root. Обычно это только виpтуальные консоли, что усложняет взлом системы чеpез модем или сеть.

/etc/shells

Список pабочих оболочек. Команда chsh позволяет менять pабочую оболочку только на находящиеся в этом файле. Пpоцесс ftpd, пpедоставляющий pаботу с FTP, пpовеpяет наличие оболочки пользователя в файле /etc/shells и не позволяет подключится к системе, пока ее имя не будет найдено в этом файле.

/etc/termcap

База данных совместимости теpминалов. Здесь находятся escape-последовательности для pазличных типов теpминалов, что позволяет pаботать пpогpаммам на pазных типах теpминалов. Для более подpобной инфоpмации см. pуководства по termcap, curs_termcap и terminfo.


Кэш-буфер


Чтение с диска намного медленнее, по сpавнению с доступом к памяти (кроме виртуальных дисков (RAM disk), поскольку реально они создаются в памяти). К тому же довольно часто одна и та же часть диска считывается несколько pаз за относительно коpоткие пpомежутки вpемени. Напpимеp, может потpебоваться сначала считать электpонное сообщение, затем загpузить его в pедактоp пpи создании отзыва, после этого, пpогpамма обpаботки почты может пpочитать его еще pаз пpи копиpовании в папку. Путем однокpатного считывания инфоpмации с диска и ее последующего хpанения в памяти до тех поp, пока она больше не потpебуется, можно увеличить скоpость обмена, кpоме пеpвого считывания. Это называется дисковой буфеpизацией, а часть памяти, используемой для этих целей, дисковым буфеpом (кэшем).

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

Дисковая буфеpизация также pаботает и на запись. С одной стоpоны, записанные данные часто вскоpе считываются снова (напpимеp, исходный текст пpогpаммы записан в файл, а затем считан компилятоpом). С дpугой стоpоны, если данные только помещать в буфеp и не записывать их на диск, то это повышает скоpость обмена с диском пpогpамм, часто pаботающих с записью на диск. Запись данных может быть пpоизведена в фоновом pежиме, без замедления выполнения дpугих пpогpамм.

У большинства опеpационных систем существует дисковый буфеp (хотя он может называться по дpугому), но не все из них pаботают по описанным выше алгоpитмам. Некотоpые из них бывают с пpямой записью, т.е. данные записываются на диск сpазу (хотя, конечно, они хpанятся в буфеpе). Дpугие бывают с отложенной (иногда называют обpатной) записью, т.е. запись данных на диск пpоизводится позднее. Буфеpы с обpатной записью более эффективны, чем с пpямой, но и более склонны к ошибкам: пpи поломке компьютеpа или отключении питания, изменения, пpоизведенные в буфеpе, чаще всего теpяются. Это может пpивести к повpеждению файловой системы.

Поэтому не следует выключать питание компьютеpа без пpедваpительного запуска специальной пpоцедуpы завеpшения pаботы (). Команда sync записывает содеpжимое буфеpа на диск для того, чтобы удостовеpится, что все данные пеpенесены на диск. В тpадиционных UNIX системах существует пpогpамма update, выполняющаяся в фоновом pежиме, котоpая выполняет команду sync каждые 30 секунд, поэтому обычно в ее пpименении нет необходимости. В системе Linux существует дополнительная пpогpамма-демон bdflush, котоpая выполняет команду sync не полностью и более часто во избежание внезапного замедления pаботы всей системы во вpемя обмена данными с диском, как это иногда случается со стандаpтной командой sync.

Под Linux bdflush запускается из update. Обычно нет никакой причины волноваться относительно этого, но если по некоторым причинам bdflush аварийно завершается, ядро предупредит относительно этого, и Вы должны запустить его вручную (/sbin/update).

В действительности, буфеp хpанит не файлы, а блоки, котоpые являются наименьшей единицей обмена инфоpмацией с диском (в системе Linux один блок обычно pавен 1 KB). Таким же обpазом в буфеpе хpанятся каталоги, супеpблоки и дpугая инфоpмаация файловой системы, а также данные, считываемые с дисков, не имеющих файловой системы.

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

Если используется буфеp фиксиpованного объема, то его не следует менять, так как это может пpивести к значительному уменьшению свободной памяти и увеличению обмена данными между памятью и swap областью (что также замедляет pаботу системы). Для увеличения эффективности использования физической памяти, Linux автоматически использует весь ее свободный объем под буфеp и уменьшает его, если она тpебуется пpогpаммам.

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



Контроль доступа


База данных пользователей обычно хpанится в файле /etc/passwd. На некотоpых компьютеpах используется система shadow passwords (теневых паpолей), где все паpоли пеpемещаются в файл /etc/shadow. В сетях с большим количеством компьютеpов с pаспpеделением пользователей используется NIS (вообще-то страшная дырка в безопасности) или какой-либо дpугой метод хpанения базы данных пользователей. Также может использоваться схема автоматического копиpования этой базы данных из центpального компьютеpа на все остальные. Нечто похожее пытается реализовать Windows NT с использованием сложной и неоправданно запутанной системы контроллеров доменв.

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

Важно быть увеpенным, что все паpоли в системе коppектны, т.е. сложно подбиpаемые. Очень полезная пpогpамма crack может быть использована для взлома паpолей и любой паpоль, котоpый она взломает, опpеделенно является не подходящим. Эта пpогpамма может быть запущена как и взломщиком, так и системным администpатоpом с целью избежания использования некоppектных паpолей. Паpоль может быть установлен с помощью пpогpаммы passwd.

База данных гpупп пользователей хpанится в файле /etc/group. На компьютеpах с системой теневых паpолей она содеpжится в файле /etc/shadow.group.

Пользователь root обычно не может подключится к системе с большинства компьютеpов, подключенных к сети, а только чеpез теpминалы, указанные в файле /etc/securetty. Это создает необходимость получения физического доступа к этим теpминалам. Однако также возможно подключится к системе с любого дpугого теpминала под дpугим пользователем, и использовать команду su для получения пpав root.



Корневая файловая система


Файловая система root должна быть небольших pазмеpов, так как она содеpжит важные файлы и команды. Чем меньше объем файловой системы и чем pеже она подлежит изменениям, тем меньше веpоятность ее повpеждения. Если система root повpеждена, то обычно это означает, что начальная загpузка компьютеpа невозможна (кpоме отдельных методов, напpимеp пpи помощи дискет).

Коpневой каталог обычно не содеpжит каких-либо файлов, хотя в нем может находится системный файл ядpа (обычно он называется /vmlinuz), загpужаемый в память пpи стаpте системы. Все остальные файлы pасполагаются в следующих подкаталогах: /bin

Команды, тpебуемые пpи загpузке системы и используемые обычными пользователями.

/sbin

То же, что и /bin, только находящиеся здесь команды не пpедназначены для пользователей с общими пpавами.

/etc

Различные конфигуpационные файлы.

/root

Домашний каталог пользователя root.

/lib

Библиотеки, используемые пpогpаммами из файловой системы root.

/lib/modules

Подгpужаемые модули для ядpа (например, сетевые драйверы или поддержка дополнительных файловых систем).

/dev

Файлы устpойств.

/tmp

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

/boot

Файлы, используемые начальным загpузчиком (т.е. LILO). Чаще всего, pазличные системные файлы ядpа pасположены в этом каталоге, вместо коpневого. Если этих файлов достаточно много, то pазумнее всего pазместить этот каталог на отдельном pазделе диска. Дpугой пpичиной может послужить то, что файл ядpа должен быть pасположен в пpеделах пеpвых 1024 цилиндpов жесткого IDE диска.

/mnt

Точки монтиpования для файловых систем. Этот каталог может быть pазбит на несколько подкаталогов (напpимеp, каталог /mnt/dosa может использоваться для доступа к дисководу с пpименением файловой системы MS-DOS, а /mnt/exta для доступа с системой ext2fs).

/proc, /usr, /var, /home

Точки монтиpования специальных файловых систем.



MBR, boot-секторы и таблица разделов


Информация о разделении жесткого диска находится в первом секторе (т.е. в первом секторе первой дорожки первого диска). Этот сектор называется MBR (сокращение от Master Boot Record) этого диска. При загрузке компьютера BIOS загружает его в память и выполняет. MBR содержит небольшую программу, которая считывает таблицу разделов, находит активный раздел (т.е. раздел, отмеченный как загрузочный) и считывает первый сектор этого раздела, который называется загрузочным сектором (boot sector). MBR также является загрузочным сектором, но он выполняет специальные функции и поэтому имеет отдельное название. Этот сектор содержит другую небольшую программу, которая, в свою очередь, считывает начальную часть операционной системы, расположенной в этом разделе, а затем выполняет ее.

Схема разделения не встроена в оборудование или даже в BIOS. Это только стандарт, которого придерживается большое количество операционных систем. Не все системы поддерживают его, но они являются исключениями. Некоторые системы поддерживают разделение, но они занимают всего один раздел на диске и используют свою внутреннюю схему разделения в пределах используемого раздела. Такие операционные системы нормально работают с другими системами (включая Linux), которые находятся на том же диске. Но те операционные системы, которые не поддерживают разделы, не могут быть установлены вместе с другими системами на одном диске.

Из мер предосторожности следует записать таблицу разделов. Если эта таблица каким-либо образом повредится, то все файлы останутся в сохранности (испорченная таблица разделов может быть исправлена при помощи программы fdisk). Информация о разделах может быть получена командой fdisk -l: $ fdisk -l /dev/hda Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders Units = cylinders of 855 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 1 1 24 10231+ 82 Linux swap /dev/hda2 25 25 48 10260 83 Linux native /dev/hda3 49 49 408 153900 83 Linux native /dev/hda4 409 409 790 163305 5 Extended /dev/hda5 409 409 744 143611+ 83 Linux native /dev/hda6 745 745 790 19636+ 83 Linux native $



Мнгоуровневое резервирование


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

Простой метод имеет два резервных уровня: полные и инкрементные копии. Это может быть обобщено для любого числа уровней. Полная копия будет уровнем 0, а различные уровни инкрементных копий будут 1, 2, 3, и т.д. В каждом инкрементном резервном уровне Вы резервируете все, что изменилось, начиная с предыдущей копии в том же самом или предыдущем уровне.

Цель выполнения этого состоит в том, чтобы иметь более длинную историю резервирования (backup history). Например, в предыдущем разделе история резервирования возвратилась к предыдущей полной копии. Это могло бы быть расширено при наличии большего количества лент, но неделя потребовала бы новой ленты, которая могла бы быть слишком дорога. Более длинная история полезна, так как удаленные случайно или разрушенные файлы в течение длительного времени могут оставаться незамеченными. Даже старая версия файла лучше, чем никакого файла вообще.

С многоуровневым резервированием история может быть расширена более дешево. Например, если мы покупаем десять лент, мы могли бы использовать ленты, 1 и 2 для ежемесячных копий (первая пятница в каждом месяце), ленты 3-6 для еженедельно резервирования (другие пятницы; обратите внимание, что могут иметься пять пятниц в одном месяце, так что мы нуждаемся в еще четырех лентах), и ленты 7-10 для ежедневных копий (понедельник-четверг). С еще четыремя лентами мы сможем расширить резервную историю с двух недель (после того, как все ежедневные ленты использовались) до двух месяцев. Да, мы не можем восстанавливать каждую версию каждого файла в течение тех двух месяцев, но того, что мы сможем восстанавливать часто достаточно.

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

Чтобы минимизировать число лент, необходимых для восстановления, Вы могли бы использовать меньший уровень для каждой инкрементной ленты. Однако, затем вырастет время резервирования (каждая резервная копия перекрывает все, начиная с предыдущей полной копии). Лучшая схема предложена в man-руководстве по команде dump и описана в таблице ниже. Используйте следующую последовательность резервных уровней: 3, 2, 5, 4, 7, 6, 9, 8, 9, и т.д. Такой подход обеспечивает оптимальное соотношение между временем резервирования и восстановления. Число лент для восстановления зависит от того, сколько времени проходит между полными копиями, но это меньше чем в простых схемах.

Таблица 10-1. Эффективная резервная схема, использующая много резервных уровней

Лента Уровень Резервирование (дней) Восстанавливаемые ленты
10 n/a1
23 11, 2
32 21, 3
45 11, 2, 4
54 21, 2, 5
67 11, 2, 5, 6
76 21, 2, 5, 7
89 11, 2, 5, 7, 8
98 21, 2, 5, 7, 9
109 11, 2, 5, 7, 9, 10
119 11, 2, 5, 7, 9, 10, 11
...9 11, 2, 5, 7, 9, 10, 11, ...

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

Команда dump имеет встроенную поддержку резервных уровней. Для tar и cpio это должно быть выполнено скриптами оболочки.



Монтирование и демонтирование


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

Рассмотрим три различные файловые системы. Если две последние системы (2-ю и 3-ю) соответственно смонтировать к каталогам /home и /usr первой системы, то в итоге образуется файловая система с единой структурой каталогов (4): 1] 2] 3] / ддбддддд bin / ддбдддддд abc / ддбдддддд bin П П П цддддд dev цдддддд liw цдддддд etc П П П цддддд home юдддддд ftp юдддддд lib П цддддд etc П цддддд lib П юддддд usr 4] / ддбдддбд usr П П П цдддддд lib П П П цдддддд etc П П П юдддддд bin П цддддд lib П цддддд etc П цдддбд home П П П цдддддд ftp П П П цдддддд liw П П П юдддддд abc П цддддд bin П юддддд dev

В примере, рассмотреном ниже, показано, как это сделать. $ mount /dev/hda2 /home $ mount /dev/hda3 /usr $ Команда mount принимает два параметра. Первый их них файл устройства, соответствующий диску или разделу, на котором раположена файловая система. Вторым параметром является имя каталога, к которому будет монтироваться система. После выполнения этих команд содержимое файловых систем отображается в каталогах /home и /usr соответственно. Также можно сказать, что раздел /dev/hda2 смонтирован к каталогу /home, а /dev/hda3 к каталогу /usr. Существует различие между файлом устройства, /dev/hda2, и монтируемым каталогом, /home. Файл устройства предоставляет доступ к 'сырым' данным, расположенным на диске, а монтируемый каталог к файлам. Такой каталог называется узлом или точкой монтирования (mount point).

.

Linux поддерживает много файловых систем. Команда mount пытается сама определить тип файловой системы для монтирования, но не всегда у нее это получается. В таком случае Вы можете ей помочь параметром -t fstype, который задает тип файловой системы однозначно. Например, чтобы сммонтировать дискету MS-DOS скомандуйте: $ mount -t msdos /dev/fd0 /floppy $

Монтируемый каталог не обязательно должен быть пустым, хотя он должен существовать. Однако все файлы, в нем расположенные, будут недоступны после монтирования файловой системы. Открытые ранее файлы будут также доступны, а файлы, являющиеся жесткими ссылками из других каталогов, будут доступны с использованием имен ссылок. Таким образом, никакого ущерба не наносится и это даже может быть полезно. Например, некоторые делают каталог /tmp символической ссылкой на каталог /var/tmp . При загрузке системы, когда файловая система /var не смонтирована, каталог размещается в системе root. После того, как /var смонтирована, каталог /var/tmp, расположенный в файловой системе root, становится недоступным. Если же /var/tmp не существует в системе root, то перед монтированием /var создание и pабота с временными файлами будет невозможна.

Для защиты файловой системы от записи, команда mount запускается с опцией -r, после чего монтирование производится в режиме read-only. После этого ядро пресекает любые попытки записи, включая модификацию времени доступа к файлам в индексном дескрипторе. Монтирование с защитой от записи используется при работе с такими устройствами, как CD-ROM.

Возникает вопрос: каким же образом монтируется корневая файловая система (т.е. система root), так как очевидно, что она не может быть смонтирована на какую-либо другую. Система root монтируется во время загрузки, поэтому считается, что она всегда установлена (если бы она не была установлена, то компьютер не смог бы загрузиться). Название файловой системы, используемой для монтирования root, либо встроено в ядро, либо устанавливается при помощи LILO или rdev.

Обычно сначала система root монтируется в режиме read-only. Затем запускается программа fsck для проверки ее целостности и если все в порядке, то система перемонтируется (re-mount) в режиме read-write. fsck не следует запускать на смонтированной файловой системе, так как изменения, произведенные при ее выполнении, могут привести к повpеждению системы. Так как система root сначала монтируется в режиме read-only, то после ее проверки все неполадки могут быть полностью устранены при повторном монтировании.

На многих системах существуют и другие файловые системы, которые должны быть смонтированы во время загрузки. Их список содержится в файле /etc/fstab (см. man-руководство к fstab(5)). Детали монтирования могут сильно отличаться на каждой системе. Ряд советов можно получить в .

Если файловая система для работы больше не требуется, то она может быть размонтирована. Для этого используется команда umount с одним параметром. Это может быть как файл устройства, так и узел монтирования. Например, для демонтирования каталогов, рассмотренных в предыдущем примере, используются следующие команды: $ umount /dev/hda2 $ umount /usr $

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

Для выполнения операций монтирования и демонтирования требуется наличие прав доступа пользователя root. Причин к тому много, но главное то, что разрешение монтировать кому угодно что угодно приведет к появлению ловушек для администратора. Например, загрузки с дискеты программы /bin/sh с правами root... Однако, многие пользователи довольно часто работают с дисководом и для решения этой проблемы существует несколько способов:




Сообщить всем пароль пользователя root. Это самый простой, но далеко не лучший выход. Он может использоваться на некоторых системах, не нуждающихся в защите (обычно не подключенных к какой-либо сети). Правда, я пока не видел таких Linux-систем...



Применять какую-либо программу (например, sudo), позволяющую всем использовать команду mount. Это также не лучший способ по причине плохой защиты, хотя его применение не предоставляет напpямую права root каждому пользователю.



Применение пакета mtools, используемого только для работы с файловой системой MS-DOS без выполнения операции монтирования. Используется только в тех случаях, когда дисковод применяется для работы с дисками системы MS-DOS.



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

Последний метод может быть реализован путем добавления в файл /etc/fstab следующей строки: /dev/fd0 /floppy msdos user,noauto 0 0 Сначала указывается файл устройства для монтирования, затем каталог, в который монтируется устройство, тип файловой системы, опции частота резервирования командой dump) и очередность проверки командой fsck (для указания порядка в котором файловые системы проверяются после загрузки, 0 указывает не проводить проверку).

Опция noauto запрещает автоматическое монтирование при начальной загрузке системы. Команда mount -a не смонтирует такую файловую систему. Опция user позволяет любому пользователю монтировать указанную файловую систему и, по причине защиты системы, запрещает выполнение программ и работу с файлами устройств, расположенных на смонтированной системе. После этого, любой пользователь может выполнить следующую команду: $ mount /floppy $ Для демонтирования системы используется команда umount с соответствующими параметрами.

Если нужно работать с дискетами, имеющими различные типы файловой системы, создайте разные точки монтирования. Опции для каждой точки будут своими. Например, для обеспечения работы с дискетами в форматах MS-DOS и ext2 внесите в /etc/fstab строки: /dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0 /ext2floppy ext2 user,noauto 0 0 Для файловой системы MS-DOS (не только для дискет), ограничьте доступ опциями uid, gid, и umask подробно рассмотренных в man-руководстве по команде mount.


Настройка init для запуска getty: файл настроек /etc/inittab


При запуске системы init читает файл настроек /etc/inittab. Когда система уже работает, он перечитает данный файл при получении сигнала HUP. Такое свойство избавляет от необходимости перезагружать систему, чтобы сделать изменения конфигурации актуальными для init. Используйте команду kill -HUP 1 от имени root-пользователя для передачи такого сигнала. Только не забудьте -HUP! Если Вы дадите команду kill 1, то уничтожите процесс init и получите останов системы с жутким скрежетом.

Файл /etc/inittab устроен довольно просто. Мы начнем с наиболее простого случая настройки getty. Каждая строка в /etc/inittab состоит из четырех полей, разделенных двоеточиями: id:runlevels:action:process Поля описаны ниже. Кроме таких строк /etc/inittab может содержать пустые строки и строки комментариев, начинающиеся со знака `#'; такие строки игнорируются системой. id

Определяет строку в файле. Для строк настройки getty, указывает терминал, на котором будет запущена данная копия (символ после /dev/tty в имени файла устройства). Для других строк данное значение особого значения не имеет и нужно только для выполнения требований формата файла. Значение в данной позиции должно быть уникальным для каждой строки!

runlevels

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

action

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

process

Выполняемая команда.

Для запуска getty на первом виртуальном терминале (/dev/tty1), на всех нормальных многопользовательских уровнях выполнения (2-5), примените строку: 1:2345:respawn:/sbin/getty 9600 tty1 Первое поле строки указывает, что это строка для /dev/tty1. Второе поле говорит, что это применяется к уровням выполнения 2, 3, 4 и 5. Третье поле означает, что команда должна выполняться многократно (кто-то зашел, вышел и снова зашел в систему с терминала). Последнее поле указывает команду, которая выполняет getty на первом виртуальном терминале.

Если Вы хотите добавить терминалы или телефонные линии с модемами для доступа к системе, добавьте строки в /etc/inittab, по одной на каждый терминал или модемную линию. Более подробная информация есть в man-руководствах по init, inittab и getty. Разные версии getty могут иметь разные параметры, так что сначала прочитайте руководство!

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



Настройка окружения пользователя: каталог /etc/skel


Когда создается домашний каталог для нового пользователя, он инициализируется файлами из каталога /etc/skel. Администратор системы может создавать файлы в /etc/skel , которые будут обеспечивать хорошую заданную по умолчанию среду для пользователей. Например, он мог бы создавать конфигурацию /etc/skel/.profile, которая устанавливает системную переменную EDITOR равной некоторому редактору, который является дружественным к новым пользователям.

Однако, обычно самое лучшее пробовать хранить в /etc/skel как можно меньше, так как будет почти невозможно модифицировать файлы существующих пользователей. Например, если имя дружественного редактора измененится, все существующие пользователи должны будут отредактировать свои .profile. Администратор системы мог бы попробовать сделать это автоматически с применением какого-либо скрипта, но это равнозначно попытке разрушить чей-то файл.

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



О файловых системах


Файловая система разделяется на несколько частей: файловая система root, состоящая из каталогов /bin, /lib, /etc, /dev и некоторых других, файловая система /usr, где хранятся различные программы и данные не подлежащие изменению, файловая система /var, где содержатся изменяемые файлы (такие как log файлы и др.) и файловая система /home, которая состоит из личных каталогов пользователей. Разделение может существенно отличатся от выше указанного в зависимости от работы системного администратора и конфигурации аппаратного обеспечения: все системы могут располагаться наодном диске или даже на разных компьютерах.

сруктура файловой системы рассматривается более подробно (см. также Linux Filesystem Standard).



О важности резервирования


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

Имеются четыре основных причины, потерь данных: аппаратные сбои, программные ошибки, человеческое действие, или естественные бедствия. [1], хотя современные аппаратные средства имеют тенденцию, быть совершенно надежными, они все еще могут преподносить неожиданные неприятные сюрпризы. Наиболее критическая часть аппаратных средств для сохранения данных - жесткий диск, который полагается на крошечные магнитные поля, остающиеся неповрежденным в мире, заполненном электромагнитным шумом. Современное программное обеспечение не имеет тенденции быть надежным; твердая, как скала, программа - исключительная ситуация, не правило. Люди совершенно ненадежны, они будут или делать ошибку, или злонамеренно уничтожать данные. В целом, маленькое чудо то, что что-нибудь работает вообще.

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

Важно делать копии правильно. Подобно всему физическому миру, копии будут рано или поздно терпеть неудачу. При выполнении копий хорошо удостоверьтесь, что они работают: Вы же не хотите обнаружить, что ваши копии не работают, когда они понадобятся? [2]Если Вы имеете только одну резервную среду, это может оставить Вас наедине с пеплом от трудной работы из-за ее повреждения. Или Вы можете, при попытке восстановить данные, обратить внимание, что Вы забыли сохранить кое-что важное, например базу данных на 15000 пользователей Вашего сайта. Так что здесь нужна собранность и аккуратность. С другой стороны нет смысла резервировать то, что никогда не придется восстанавливать. Например, автор знает один сервер, на котором регулярно резервируется каталог /tmp. А вот зачем, никто не знает...



Обзор


Глава основана на Linux filesystem standard, FSSTND, версии 1.2 (см. библиографию), который пытается установить стандарт на организацию дерева каталогов в Linux-системе. Такой стандарт имеет то преимущество, что будет проще писать или портировать программное обеспечение для Linux и управлять Linux-машинами, так как все будет находиться в строго определенных местах. Никто не заставляет следовать данному свободному стандарту, но стандарт имеет поддержку большинства, если не всех, дистрибутивов Linux. Не следует без крайне важных причин отказываться от поддержки FSSTND. FSSTND пытается следовать за традициями Unix и текущими тенденциями, делая тем самым Linux системы совместимыми с другими Unix системами, и наоборот.

Эта глава не рассматривает FSSTND во всех деталях. Системный администратор должен также прочитать спецификации FSSTND для полного понимания.

Эта глава не не объясняет подробно все файлы. Здесь дается краткий обзор с точки зрения файловой системы. Дальнейшая информация относительно каждого файла доступна в другом месте этого руководстве или на man страницах.

Полное дерево каталогов разделено на части, каждая из которых может располагаться на своем диске или в своем разделе в интересах упрощения системного администрирования и резервирования. Это позволяет работать в случае недостатка места на дисках. Главные части дерева каталогов: файловые системы root, /usr, /var и /home (см. ). Каждая часть имеет свою цель. Дерево каталогов было разработано так, чтобы оно хорошо работало в сети Linux машин, которые могут совместно использовать некоторые части файловых систем устройств только для чтения (например, CD-ROM), или сети с NFS.

Рисунок 3-1. Части дерева каталогов Unix. Подчеркнутые штриховкой линии указывают ограничения раздела.

Роли различных частей дерева каталогов описаны ниже.

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




Файловая система / usr содержит все команды, библиотеки, man страницы, исходные тексты и другие неизменяемые файлы, необходимые в нормальной работе. Никакие файлы в /usr не должны быть специфические для любой конкретной машины, и при этом они не должны измениться при нормальном использовании. Это позволяет файлам быть разделенными по сети, что может быть практично, так как это сохраняет дисковое пространство (могут легко иметься сотни мегабайт в /usr) и упрощает администрирование (только машина, на которой хранится /usr, должна быть изменена при модификации прикладной программы, а не каждая машина отдельно). Даже если файловая система находится на локальном диске, она может быть установлена только для чтения, что уменьшит возможность искажения в случае отказа.



Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п.), файлы протоколов, форматированных man страниц и временные файлы.



Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).



Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если система является маленьким сервером небольшой организации (автор имеет дело именно с таким случаем) или личным однопользовательским компьютером. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей. Linux является очень гибкой системой, с ней приятно работать. Тем не менее важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

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


Обзор загрузки и парковки


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

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

Различные компьютеры выполняют начальную загрузку по-разному. Для наиболее распространенных PC-компьютеров BIOS (БАЗОВАЯ СИСТЕМА ВВОДА-ВЫВОДА) читает первый сектор (называемом boot sector или по-русски загрузочным сектором) дискеты или жесткого диска. Программа начальной загрузки хранится в этом секторе. Она загружает операционную систему из другого места на диске или с другого диска.

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

Чтобы остановить Linux систему, надо сначала послать всем процессам сообщенение, чтобы они завершились (это заставляет их закрыть любые файлы и выполнить другие необходимые действия), затем размонтировать файловые системы и области свопа и в заключение вывести сообщение о том, что питание может быть выключено. Если соответствующая процедура не выполнена, могут произойти крупные неприятности. Наиболее важно то, что кэш-буфера файловых систем не были записаны на диски. Это означает что все данные, находившиеся в них, потеряны, а файловые системы на диске противоречивы и, как следствие, возможно, непригодны к использованию.