Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 2:

Использование ОС Linux в качестве сервера электронной почты

Аннотация: В данной лекции рассматриваются: ядро и библиотеки ОС Linux; проект GNU, распространители ОС Linux.
Ключевые слова: Windows, сервер, операционная система, системный администратор, представление, программное обеспечение, ядро, ПО, GNU, NOT, Unix, открытая среда, minix, управление памятью, память, пространство, обмен данными, страница памяти, доступ, программа, команда, формат команды, диск, ESDI, SCSI, информация, сценарий, сегменты, процесс ядра, файл, консоль, forest, управляющий терминал, identifier, PID, идентификатор, пользователь, сеанс, производительность, Oracle, драйвер, двусторонний обмен, встраивания, COM, младший номер устройства, права, имя файла, параметр, опция, поддержка, список, операции, HPFS, ISO 9660, FAT16, VFAT, форматирование, MS-DOS, виртуальная файловая система, virtual, system, интерфейс, параметры командной строки, модуль, DEP, pre-install, post-install, релиз, поле, префикс, Internet, компиляция, DLL, механизмы, таблица, стандартная библиотека, library, AND, linking, format, ELF, project, communicator, star, division, оболочка, компилятор, утилита, shell, сеанс работы, запуск, ksh, запись, пароль, конфигурирование, функция, параметр сеанса, mail, администратор, переменная, путь, группа, объединение, файлы заголовки, алгоритм, параметр команды, лицензия, rpm, RED, hat, дистрибутив, файловая система

В этой лекции

  • Ядро ОС Linux
  • Библиотеки ОС Linux
  • Проект GNU
  • Распространители ОС Linux

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

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

Вообще, термин операционная система Linux не вполне корректен. Стандартную ОС Linux составляют несколько различных модулей и частей. Сердцем операционной системы является ядро. Ядро для ОС Linux создано и поддерживается по сей день Линусом Торвальдсом (Linus Torvalds). Само по себе ядро не может быть сколько-нибудь полезным. Чтобы операционная система нормально функционировала, в ней должны быть приложения и возможность их запуска. К счастью для Линуса, проект GNU в то время уже существовал.

Цель проекта GNU (аббревиатура GNU раскрывается рекурсивно "GNU's Not Unix") — создание открытой среды UNIX, свободной от "лицензионных войн" за текущие версии UNIX. Как оказалось, проект GNU на тот момент имел открытый исходный код многих UNIX-утилит и остро нуждался в ядре операционной системы, на базе которого их можно было бы реализовать (проект GNU работает над созданием собственной версии UNIX и по сей день). С другой стороны, Линус имел UNIX-подобное ядро операционной системы без утилит, которые делали бы его функциональным. Стечение этих двух обстоятельств и сделало возможным создание операционной системы Linux. Комбинация ядра Linux с утилитами UNIX проекта GNU сделала возможным создание новой полнофункциональной UNIX-подобной операционной системы. Ниже более детально рассмотрены аспекты функционирования ядра ОС Linux, а также некоторых основных UNIX-утилит проекта GNU. Дается также краткий обзор компаний, распространяющих свои версии ОС Linux.

Ядро ОС Linux

Ядро операционной системы — это ее сердце. Ядро должно управлять всеми устройствами и программами в системе, распределяя аппаратные ресурсы и запуская программы по мере надобности. В ядро Linux перешли многие идеи и функциональность системы UNIX. Линус Торвальдс отмечает, что к созданию ядра Linux его привело изучение операционной системы MINIX, которая являлась попыткой реализации ОС UNIX для IBM-совместимых ПК, предпринятой Эндрю Таненбаумом (Andrew Tanenbaum).

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

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

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

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

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

fdisk [option] [device],

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

Таблица 2.1. Жесткие диски в ОС Linux
Устройство Описание
/dev/hd [a-h] дисковые устройства IDE
/dev/sd [a-p] дисковые устройства SCSI
/dev/ed [a--d] дисковые устройства ESDI
/dev/xd [ab] дисковые устройства XT

Первый доступный диск определенного типа обозначается как диск a, второй — b и так далее. В листинге 2.1 показан пример организации разделов в ОС Linux.

1 [root@shadrach root]# /sbin/fdisk /dev/sda
2
3 Command (m for help): p
4
5 Disk /dev/sda: 64 heads, 32 sectors, 521 cylinders
6 Units = cylinders of 2048 * 512 bytes
7
8 Device Boot Start End Blocks Id System
9 /dev/sda1 460 471024 83 Linux native
10 /dev/sda2 461 521 62464 5 Extended
11 /dev/sda5 461 521 62448 82 Linux swap
12
13 Command (m for help): q
14 (root@shadrach root]#
Листинг 2.1. Пример организации разделов с помощью команды fdisk

В строке 1 запущена команда fdisk для первого SCSI-диска в системе: /dev/sda. Программа fdisk является интерактивным средством, которое позволяет системному администратору управлять таблицей разметки жесткого диска. В строке 3 показана команда, применяемая для отображения текущей таблицы разметки разделов жесткого диска. С 5-й по 11-ю строки показана информация, содержащаяся в самой таблице разделов жесткого диска. В строке 11 показан размер раздела подкачки в Linux.

После того как область подкачки на жестком диске была создана, ядро Linux должно "узнать" о ее существовании и активировать ее. Для активизации процесса подкачки страниц памяти применяется программа swapon. Командой swapon устанавливаются параметры виртуальной памяти в ядре. Однако вся эта информация теряется при перезагрузке Linux-сервера. Это означает, что команду swapon следует выполнять каждый раз при загрузке системы. В большинстве версий Linux команда swapon включена в сценарий начальной загрузки и выполняется автоматически при загрузке системы.

Текущая информация о состоянии виртуальной памяти в системе Linux может быть получена из файла /proc/meminfo. В листинге 2.2 показан пример содержимого файла /proc/meminfo.

1 [root@shadrach /proc]# cat meminfo
2 total: used: free: shared: buffers: cached:
3 Mem:31535104 29708288 1826816 31817728 3051520 15773696
4 Swap: 63942656 2838528 61104128
5 MemTotal: 30796 kB
6 MemFree: 1784 kB
7 MemShared: 31072 kB
8 Buffers: 2980 kB
9 Cached: 15404 kB
10 SwapTotal: 62444 kB
11 SwapFree: 59672 kB
12 [root@shadrach /proc]#
Листинг 2.2. Пример файла /proc/meminfo

В строке 1 показана команда для просмотра файла /proc/meminfo. Строки со 2-й по 11-ю отображают содержимое файла meminfo. Из строки 3 можно сделать заключение о том, что данный сервер имеет 32 Мбайт физической памяти. Также, как мы видим, примерно 18 Мбайт из нее в настоящий момент не используется. Из строки 4 видно, что в системе имеется 64 Мбайт доступного для подкачки пространства. Это подтверждает показания 11-й строки листинга 2.1, которая также указывает на наличие раздела размером 64 Мбайт для подкачки (свопинга) на диске /dev/sda.

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

В листинге 2.3 показаны результаты работы команды ipcs.

1 [root@shadrach /proc]# ipcs -m
2
3 ------ Shared Memory Segments -------
4 key shmid owner perms bytes nattch status
5 0x00000000 0 rich 600 52228 6 dest
6 0x395ec51c 1 oracle 640 5787648 6
7
8[root@shadrach /proc]#
Листинг 2.3. Пример работы команды ipcs

В строке 1 вводится команда ipcs с параметром -m для отображения только совместно используемых сегментов. В строках 3–6 показаны результаты выполнения этой команды. Каждый совместно используемый сегмент памяти имеет своего владельца. Кроме того, каждый сегмент имеет также стандартное для UNIX разграничение прав доступа, которое определяет его взаимоотношения с другими пользователями. Ключевым параметром при этом выступает разрешение другим пользователям на доступ к совместно используемому сегменту памяти.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно