Ubuntu Server. Руководство (2012 год) - часть 1

 

  Главная      Книги - Разные     Ubuntu Server. Руководство (2012 год)

 

поиск по сайту            правообладателям  

    

 

   

 

   

 

содержание      ..      1       2         ..

 

 

 

Ubuntu Server. Руководство (2012 год) - часть 1

 

 

Содержание
1. Введение
1
1. Поддержка
2
2. Установка
3
1. Подготовка к установке
4
2. Установка с CD
6
3. Обновление
10
4. Расширенная установка
11
5. Отчёт о падении ядра
20
3. Управление пакетами
24
1. Введение
25
2. dpkg
26
3. Apt-Get
28
4. Aptitude
30
5. Автоматические обновления
33
6. Конфигурация
35
7. Ссылки
37
4. Работа в сети
38
1. Настройка сети
39
2. TCP/IP
49
3. Протокол динамической настройки хостов (Dynamic Host
Configuration Protocol, DHCP)
54
4. Синхронизация времени с NTP
57
5. Множественное связывание устройств (DM-Multipath)
59
1. Множественное связывание устройств (Device Mapper
Multipathing)
60
2. Множественные устройства
64
3. Обзор установки DM-Multipath
68
4. Конфигурационный файл DM-Multipath
72
5. Администрирование DM-Multipath и устранение проблем
87
6. Удалённое администрирование
93
1. Сервер OpenSSH
94
2. Puppet
98
3. Zentyal
101
7. Сетевая аутентификация
106
1. Сервер OpenLDAP
107
2. Samba и LDAP
135
3. Kerberos
142
4. Kerberos и LDAP
151
8. Служба доменных имён (DNS)
158
1. Установка
159
iii
Руководство по Ubuntu Server
2. Конфигурация
160
3. Устранение проблем
166
4. Ссылки
170
9. Защита
171
1. Управление пользователями
172
2. Безопасность консоли
179
3. Брандмауэр
180
4. AppArmor
189
5. Сертификаты
194
6. eCryptfs
200
10. Мониторинг
203
1. Обзор
204
2. Nagios
205
3. Munin
210
11. Веб-серверы
212
1. HTTPD - веб сервер Apache2
213
2. PHP5 - язык сценариев
223
3. Прокси-сервер Squid
226
4. Ruby on Rails
229
5. Apache Tomcat
231
12. Базы данных
236
1. MySQL
237
2. PostgreSQL
243
13. Приложения LAMP
246
1. Обзор
247
2. Moin Moin
249
3. MediaWiki
251
4. phpMyAdmin
253
14. Файл-серверы
255
1. FTP-сервер
256
2. Сетевая файловая система (NFS)
261
3. iSCSI-инициатор
263
4. CUPS - сервер печати
266
15. Сервисы электронной почты
270
1. Postfix
271
2. Exim4
279
3. Dovecot Server
283
4. Mailman
286
5. Фильтрация почты
293
16. Приложения для чата
301
1. Обзор
302
2. IRC-сервер
303
iv
Руководство по Ubuntu Server
3. Сервер мгновенных сообщений Jabber
305
17. Система контроля версий
307
1. Bazaar
308
2. Subversion
310
3. Сервер CVS
316
4. Ссылки
319
18. Сетевое окружение Windows
320
1. Введение
321
2. Файловый сервер Samba
322
3. Сервер печати Samba
325
4. Защита файлового сервера и сервера печати на Samba
327
5. Samba в качестве контроллера домена
333
6. Интеграция Samba с Active Directory
338
19. Резервное копирование
341
1. Сценарии Shell
342
2. Ротация архивов
347
3. Bacula
351
20. Виртуализация
357
1. Виртуальная библиотека
358
2. JeOS и vmbuilder
364
3. UEC
374
4. Облако Ubuntu
387
5. LXC
395
21. Кластеризация
420
1. DRBD
421
22. VPN
424
1. OpenVPN
425
23. Другие полезные приложения
439
1. pam_motd
440
2. etckeeper
442
3. Byobu
444
4. Ссылки
446
A. Дополнение
447
1. Уведомление об ошибках в Ubuntu Server Edition
448
v
Список таблиц
2.1. Рекомендованные минимальные требования
4
5.1. Преобразование модулей проверки приоритета
60
5.2. Компоненты DM-Multipath
62
5.3. Настройки Multipath по умолчанию
76
5.4. Атрибуты множественности
81
5.5. Атрибуты устройств
84
5.6. Полезные опции команды multipath
90
17.1. Методы доступа
311
20.1. Требования к внешнему интерфейсу UEC
375
20.2. Требования к узлу UEC
375
20.3. Команды для работы с контейнером
409
vi
Глава 1. Введение
Добро пожаловать в Руководство по Ubuntu Server!
Здесь вы найдете информацию о том, как устанавливать и настраивать
различные серверные приложения. Это пошаговое, ориентированное на
конкретные задачи руководство по конфигурации и настройке вашей
системы.
Данное руководство предполагает наличие базовых знаний об
операционной системе Ubuntu. Процесс установки описан в Глава 2,
Установка [3], но если вам нужна более детальная инструкция по
установке Ubuntu рекомендуется прочитать Руководство по установке
Ubuntu1.
HTML-версия руководства доступна в Интернете на сайте документации
Ubuntu2.
1
Введение
1. Поддержка
Существует два варианта поддержки Ubuntu Server Edition: коммерческая
поддержка и поддержка сообщества. Основную коммерческую поддержку
(и финансирование разработки) осуществляет Canonical Ltd. За умеренную
плату она предоставляет поддержку по договорам на каждую настольную
систему или на сервер. Подробную информацию смотрите на странице
Canonical Services3.
Поддержка со стороны сообщества означает, что поддержку осуществляют
специалисты и компании, которые хотят сделать Ubuntu лучшим
дистрибутивом. Поддержка предоставляется через почтовые рассылки, IRC-
каналы, форумы, блоги, вики, и т.д. Очень много информации можно найти
в поисковиках. Для получения дополнительной информации смотрите
страницу Ubuntu Support4
2
Глава 2. Установка
В этой главе представлены краткий обзор основных моментов, касающихся
установки Ubuntu 12.04 LTS Server Edition. Для получения более подробных
инструкций, пожалуйста, обратитесь к Руководству по установке Ubuntu1.
3
Установка
1. Подготовка к установке
В данном разделе рассмотрены некоторые аспекты, которые необходимо
чётко понимать до начала установки.
1.1. Системные требования
Ubuntu 12.04 LTS Server Edition поддерживает три (3) основные
архитектуры: Intel x86, AMD64 и ARM. В таблице ниже перечислены
рекомендуемые технические характеристики оборудования. В зависимости
от ваших потребностей, возможно, вы сможете использовать оборудование
и с более низкими техническими характеристиками. Однако, большинство
пользователей рискуют оказаться расстроенными, если проигнорируют эти
советы.
Таблица 2.1. Рекомендованные минимальные требования
Место на жёстком диске
Тип
Процессор
ОЗУ
Базовая
Установлены
установки
система
все задачи
Сервер
300 МГц
128 МБ
500 МБ
1 ГБ
Server Edition предоставляет основу для всех видов серверных приложений.
В платформу уже включены такие сервисы, как: файловый и почтовый
серверы, веб-хостинг, сервер электронной почты и т.д.
Требования для Ubuntu Enterprise Cloud (UEC) немного отличаются. О
требованиях для интерфейсной части смотрите Раздел 3.2.1, «Требования
к интерфейсной части» [374], а о требованиях для узла UEC смотрите
Раздел 3.2.2, «Требования к узлу» [375].
1.2. Различия между серверной и настольной редакциями
Есть несколько различий между Ubuntu Server Edition и Ubuntu Desktop
Edition. Следует отметить, что обе редакции используют одни и те же
репозитории apt, что дает возможность так же легко установить серверные
приложения на Desktop Edition, как и на Server Edition.
Различия между редакциями заключаются в отсутствии оконного
интерфейса (X window environment) в Server Edition, в процессе установки
системы и в опциях ядра (Kernel).
4
Установка
1.2.1. Различия ядер:
В Ubuntu 10.10 и более ранних версиях использовались два различных ядра
для серверной версии и версии для настольных компьютеров. Теперь в
Ubuntu нет отдельных вариантов ядра -server и -generic. Они объединены
в один вариант ядра -generic, чтобы снизить расходы на обслуживание в
течение жизненного цикла выпуска.
При работе в 64-разрядной версии Ubuntu на 64-битных процессорах
вы не ограничены по адресному пространству памяти.
Чтобы увидеть все параметры конфигурации ядра, вы можете посмотреть /
boot/config-3.2.0-server. Также, Linux Kernel in a Nutshell2 - отличный ресурс
по имеющимся вариантам.
1.3. Создание резервной копии
• Перед установкой Ubuntu Server Edition следует убедиться, что
сделана резервная копия всех файлов системы. О способах резервного
копирования читайте Глава 19, Резервное копирование [341].
Если на вашем компьютере уже установлена какая-то другая
операционная система, то скорее всего вам нужно будет переразметить
ваш диск, чтобы освободить место для Ubuntu.
Каждый раз при разметке диска, вы должны быть готовы потерять
всё на диске, если вы сделаете ошибку или что-то пойдет не так во
время разметки. Программы, используемые в установке, достаточно
надежны, большинство из них работают не первый год, но они также
могут выполнить деструктивные действия.
5
Установка
2. Установка с CD
Основные этапы установки Ubuntu Server Edition с CD такие же, как и при
установке любой операционной системы с компакт-диска. В отличие от
Desktop Edition, Server Edition не включает в себя графическую программу
установки. Server Edition использует вместо неё консольное меню.
• Прежде всего, скачайте и запишите на диск соответствующий файл ISO с
веб-сайта Ubuntu3.
• Загрузите систему с компакт-диска.
• В приглашении загрузчика вам будет предложено выбрать язык.
• В главном меню загрузки есть некоторые дополнительные опции
для установки Ubuntu Server Edition. Вы можете установить базовую
комплектацию Ubuntu Server, проверить компакт-диск на наличие
дефектов, проверить оперативную память системы, загрузиться с
первого жёсткого диска, или восстановить повреждённую систему.
• Программа установки спросит, какой язык она должна в дальнейшем
использовать. После этого вам будет предложено выбрать ваше
местоположение.
• Процесс установки начинается с выбора раскладки клавиатуры. Вы
можете разрешить программе установки попытаться автоматически
определить раскладку или же можете выбрать необходимую раскладку
вручную из списка.
• Затем программа установки определяет вашу аппаратную конфигурацию
и настраивает параметры сети с помощью DHCP. Если вы не хотите
использовать DHCP, на следующем экране выберите "Назад", и у вас
будет возможность "настроить сеть вручную".
• Далее, программа установки спросит имя компьютера (hostname) и
часовой пояс системы.
• Затем вы сможете выбрать один из нескольких вариантов настройки
структуры разделов жёсткого диска. После этого вас спросят, какой диск
использовать для установки. В зависимости от разбивки диска, прежде
чем будет перезаписана таблицы разделов или настроена LVM, вы можете
получить запрос на подтверждение данной операции. Если вы выбираете
LVM, вам будет предложено ввести размер корневого логического тома.
Для продвинутых вариантов установки смотрите Раздел 4, «Расширенная
установка» [11].
• После этого будет установлена базовая система Ubuntu.
6
Установка
• Будет создан новый пользователь; этот пользователь будет иметь root
доступ через утилиту sudo.
• После того, как настройки пользователя будут завершены, вам будет
предложено зашифровать свой каталог (home).
• Следующий шаг в процессе установки - это решить, как вы хотите
обновить систему. Есть три варианта:
Нет автоматического обновления: администратору будет необходимо
войти в систему и вручную установить обновления.
Установка обновлений безопасности автоматически: это позволит
установить пакет unattended-upgrades, который будет устанавливать
обновления безопасности без вмешательства администратора.
Для получения дополнительной информации смотрите Раздел 5,
«Автоматические обновления» [33].
Управление системой с Landscape: Landscape - это платный сервис,
предоставляемый компанией Canonical, чтобы помочь в управлении
вашими компьютерами с Ubuntu. Подробности смотрите на сайте
Landscape4.
• Теперь у вас есть возможность установить, или не устанавливать,
несколько пакетов задач. Смотрите Раздел 2.1, «Наборы пакетов
(задачи)» [8] для более подробной информации. Также, есть опция
для запуска aptitude, чтобы выбрать отдельные пакеты для установки.
Для получения дополнительной информации смотрите Раздел 4,
«Aptitude» [30].
• И, наконец, последний шаг перед перезагрузкой - это установить часы
относительно UTC.
Если на каком-то этапе установки вас не устроят настройки по
умолчанию, используйте функцию «Назад» на любом экране для
перехода к меню детальных настроек, которое позволит вам
изменить настройки по умолчанию.
В какой-то момент в процессе установки вы можете захотеть получить
помощь, предоставляемую системой установки. Вы можете вызвать ее
нажатием F1.
И, опять таки, для более подробных инструкций смотрите Руководство по
установке Ubuntu5.
7
Установка
2.1. Наборы пакетов (задачи)
Во время установки Server Edition у вас будет возможность выбрать
установку дополнительных пакетов с установочного CD. Эти пакеты
сгруппированы по типам предоставляемых ими сервисов.
• DNS сервер: Выбирает DNS-сервер BIND и документацию по нему.
• LAMP сервер: Выбирает установку готового к работе сервера Linux/
Apache/MySQL/PHP.
• Почтовый сервер: Этот набор выбирает множество пакетов, требующихся
для типичного почтового сервера.
• OpenSSH сервер: Выбирает пакеты, необходимые для установки сервера
OpenSSH.
• База данных PostgreSQL: Этот набор включает клиентские и серверные
пакеты для установки системы управления базами данных PostgreSQL.
• Сервер печати: Этот набор делает вашу систему сервером печати.
• Файловый сервер Samba: Этот набор настроит вашу систему, как
файловый сервер Samba, который особенно подходит для сетей, где
присутствуют как Windows, так и Linux системы.
• Tomcat Java сервер: Установит Apache Tomcat и необходимые зависимости.
• Virtual Machine host: Добавит пакеты, требующиеся для запуска
виртуальных машин KVM.
• Выбор пакетов вручную: Запускает aptitude, позволяющий вам выбирать
пакеты индивидуально.
Установка групп пакетов (задач) выполняется с помощью утилиты tasksel.
Одним из важнейших отличий Ubuntu (или Debian) от других дистрибутивов
на основе GNU/Linux является то, что будучи установленным, пакет
также получает разумные настройки по умолчанию, запрашивая у вас по
необходимости дополнительную информацию. Подобным образом, когда
устанавливается группа пакетов, пакеты не только устанавливаются, но и
настраиваются для предоставления полностью связанного сервиса.
Когда процесс установки завершится, вы сможете увидеть список
доступных задач, введя следующую команду в терминале:
tasksel --list-tasks
В выводе будут показаны задачи, относящиеся и к другим
дистрибутивам на базе Ubuntu, таким как Kubuntu и Edubuntu.
Заметьте, что если вы выполните команду tasksel без ключей, она
покажет меню со всеми доступными задачами.
8
Установка
Вы можете увидеть список устанавливаемых пакетов для каждой задачи,
используя опцию --task-packages. Например, для вывода списка пакетов,
устанавливаемых задачей «DNS сервер», введите следующее:
tasksel --task-packages dns-server
Результатом выполнения команды будет следующее:
bind9-doc
bind9utils
bind9
Если вы не установили какую-либо задачу в процессе установки, но,
например, решили сделать ваш новый сервер LAMP ещё и DNS-сервером,
просто вставьте установочный CD и введите в терминале:
sudo tasksel install dns-server
9
Установка
3. Обновление
Существует несколько путей обновления выпусков Ubuntu с одного
на другой. Этот раздел представляет обзор рекомендуемых методов
обновления.
3.1. do-release-upgrade
Рекомендуемый вариант обновления установленного Server Edition
заключается в использовании утилиты do-release-upgrade. Являясь частью
пакета update-manager-core, она не имеет графического интерфейса и
устанавливается по умолчанию.
Системы, основанные на дистрибутиве Debian, могут также обновляться
с использованием команды apt-get dist-upgrade. Однако использование
do-release-upgrade предпочтительней, поскольку позволяет отслеживать
изменения в конфигурациях систем при переходе от выпуска к выпуску.
Для обновления до нового выпуска введите в терминале команду:
do-release-upgrade
Также существует возможность обновления с помощью do-release-upgrade
до разрабатываемой версии Ubuntu. Для этого дополните команду опцией -
d:
do-release-upgrade -d
Обновление до выпуска, находящегося в разработке, не
рекомендуется для работающих «боевых» систем.
10
Установка
4. Расширенная установка
4.1. Программный RAID
Избыточный массив независимых дисков (Redundant Array of Independent
Disks, RAID) - это метод использования нескольких дисков для
различных сочетаний увеличения надёжности хранения данных
и/или увеличения производительности операций чтения/записи в
зависимости от используемого уровня RAID. RAID реализуется либо на
программном уровне (когда операционная система знает про оба носителя
и активно их обслуживает), либо на аппаратном (когда специальный
контроллер заставляет ОС думать, что существует только один носитель и
обслуживает носители незаметно для системы).
Программное обеспечение для работы с RAID, включенное в текущие
версии Linux (и Ubuntu), основано на драйвере 'mdadm' и работает очень
хорошо, даже лучше чем многие, так называемые, «аппаратные» RAID-
контроллеры. Этот раздел руководства поможет вам установить Ubuntu
Server Edition, используя два раздела RAID первого уровня (RAID 1),
находящиеся на двух физических жёстких дисках, один для / (корневого
раздела), а другой для раздела подкачки swap.
4.1.1. Разметка дисков
Следуйте инструкциям по установке, пока вы не достигнете этапа
разметки дисков, а затем:
1. Выберите метод разметки Вручную.
2. Выберите первый жёсткий диск и согласитесь с предложением
"Создать новую пустую таблицу разделов на этом устройстве?".
Повторите этот шаг для каждого диска, который вы собираетесь
включить в RAID массив.
3. Выберите "СВОБОДНОЕ МЕСТО"на первом носителе и выберите
"Создать новый раздел".
4. Далее, выберите размер раздела. Этот раздел будет разделом
подкачки, а общее правило для определения размера раздела подкачки
- сделать его равным двойному объёму RAM. Введите размер, далее
выберите Первичный, затем Начало.
Двойной размер раздела подкачки по отношению к оперативной
памяти (RAM) не всегда желателен, особенно на системах с
большим объемом RAM. Расчёт размера раздела подкачки в
11
Установка
значительной степени зависит от того, как будет использоваться
система.
5. Выберите строку "Использовать как:" вверху. По умолчанию там
установлено "Журналируемая файловая система Ext4", измените её
на "физический том для RAID" затем выберите "Настройка раздела
закончена".
6. Для раздела / снова выберите "СВОБОДНОЕ МЕСТО" на первом носителе
и нажмите "Создать новый раздел".
7. Используйте оставшееся свободное на носителе место и выберите
Далее, а затем Первичный.
8. Так же, как и для раздела подкачки, выберите строку "Использовать
как:" вверху и измените её значение на "физический том для RAID".
Также поставьте отметку на строке "Загрузочный флаг:" "on". После
этого выберите "Настройка раздела закончена".
9. Повторите шаги с третьего по восьмой для всех остальных дисков и
разделов.
4.1.2. Настройка RAID
После разметки разделов массив готов к настройке:
1. Вернитесь на основную страницу "Разметка дисков", выберите
"Настройка программного RAID" сверху.
2. Выберите "да" для записи изменений на диск.
3. Выберите "Создать MD устройство".
4. Для этого примера выберите "RAID1", но если вы используете другую
конфигурацию, выберите соответствующий тип (RAID0 RAID1 RAID5).
Для использования RAID5 нужно по крайней мере три диска.
Использование RAID0 или RAID1 потребует лишь двух дисков.
5. Введите количество активных устройств равное "2", или же количество
жёстких дисков, которые у вас выделены под массив. После этого
нажмите "Далее".
6. Далее, введите число резервных устройств "0" по умолчанию, после
чего нажмите "Далее".
7. Выберите используемые разделы. Как правило это будут sda1, sdb1,
sdc1, и т.д. Цифры обычно совпадают, а разные буквы соответствуют
разным жестким дискам.
Для раздела подкачки выберите sda1 и sdb1. Нажмите "Далее" для
перехода к следующему шагу.
12
Установка
8. Повторите шаги с третьего по седьмой для раздела /, выбрав sda2 и
sdb2.
9. По окончании выберите "Завершить".
4.1.3. Форматирование
Теперь должен появиться список жёстких дисков и RAID-устройств.
Следующим шагом является форматирование и установка точек
монтирования для RAID-устройств. Относитесь к RAID-устройствам
как к локальным жёстким дискам, отформатируйте и выберите точки
монтирования соответственно.
1. Выберите "#1" под разделом "RAID1 устройство #0".
2. Выберите "Использовать как:". Далее выберите "раздел подкачки",
затем "Настройка раздела выполнена".
3. Следующим выберите "#1" под разделом "RAID1 устройство #1".
4. Выберите "Использовать как:". Далее выберите "Журналируемая
файловая система Ext4".
5. Затем выберите "Точка подключения" и выберите "/ - корневая
файловая система". Измените все необходимые опции и выберите
"Настройка раздела выполнена".
6. Ну и наконец, выберите "Завершить разметку и записать изменения на
диск".
Если вы разместили корневой раздел на RAID-массиве, установщик
спросит, хотите ли вы загружать систему в состоянии пониженной
работоспособности. Более подробную информацию читайте в разделе
Раздел 4.1.4, «Повреждённый RAID» [13] .
Далее процесс установки продолжится как обычно.
4.1.4. Повреждённый RAID
В определенный момент работы компьютера вы можете столкнуться с
отказом диска. Когда это случится, при использовании программного
RAID, операционная система переведет массив в режим пониженной
работоспособности (degraded state).
Если массив повреждён, в связи с возможностью потери данных, по
умолчанию Ubuntu Server Edition запустит начальный загрузчик через 30
секунд. Как только загрузчик стартует, появится предупреждение на 50
секунд с выбором либо продолжить и загрузить систему, либо сделать
попытку восстановления вручную. Запуск загрузчика с предупреждением
может быть как желательным, так и нет, особенно если это удалённый
13
Установка
компьютер. Загрузка с повреждённым массивом может быть настроена по-
разному:
• Утилита dpkg-reconfigure может быть использована для настройки
желательного варианта по умолчанию, и в процессе у вас будет
возможность задать дополнительные настройки, связанные с массивом.
Такие как слежение, почтовые предупреждения и пр. Для перенастройки
mdadm введите следующее:
sudo dpkg-reconfigure mdadm
• Команда dpkg-reconfigure mdadm изменит конфигурационный
файл /etc/initramfs-tools/conf.d/mdadm. У этого файла есть возможность
предварительной настройки желаемого поведения системы и он может
быть отредактирован вручную:
BOOT_DEGRADED=true
Конфигурационный файл может быть проигнорирован при
использовании параметров ядра
• Использование параметра ядра также позволит загрузиться системе с
повреждённым массивом:
• В процессе загрузки сервера нажмите Shift для входа в меню Grub.
• Нажмите e для редактирования опций загрузки ядра.
• Клавишей стрелка вниз подсветите строку ядра.
• Добавьте "bootdegraded=true" (без кавычек) в конец строки.
• Нажмите Ctrl+x для загрузки системы.
Как только система загружена, вы можете как восстановить массив
(смотрите Раздел 4.1.5, «Обслуживание RAID» [14]), так и скопировать
важные данные на другую машину в случае сильных повреждений
устройства.
4.1.5. Обслуживание RAID
Утилита mdadm может быть использована для просмотра статуса массива,
добавления дисков в массив, удаления дисков и пр.:
• Для просмотра статуса массива введите в терминале:
sudo mdadm -D /dev/md0
Опция -D указывает mdadm выводить детальную информацию об
устройстве /dev/md0. Замените /dev/md0 на соответствующее RAID
устройство.
14
Установка
• Для просмотра статуса диска в массиве:
sudo mdadm -E /dev/sda1
Вывод очень похож на команду mdadm -D, относительно /dev/sda1 для
каждого диска.
• Если диск вышел из строя и должен быть удален:
sudo mdadm --remove /dev/md0 /dev/sda1
Замените /dev/md0 и /dev/sda1 на необходимые RAID устройство и диск.
• Аналогичным образом можно добавить диск:
sudo mdadm --add /dev/md0 /dev/sda1
Иногда диск может перейти в неработоспособное состояние, даже когда
нет никаких повреждений устройства. Обычно достаточно удалить
устройство из массива и затем повторно его добавить. В этом случае диск
повторно синхронизируется с массивом. Если диск не синхронизируется с
массивом, это означает действительное повреждение устройства.
Файл /proc/mdstat также содержит полезную информацию по RAID
устройствам в системе:
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
10016384 blocks [2/2] [UU]
unused devices: <none>
Следующая команда лучше всего подходит для просмотра статуса
синхронизации устройства:
watch -n1 cat /proc/mdstat
Нажмите Ctrl+c для окончания просмотра.
Если вам действительно потребовалось заменить повреждённый диск,
после его замены и синхронизации будет необходимо установить grub. Для
установки grub на новое устройство введите следующее:
sudo grub-install /dev/md0
Замените /dev/md0 на имя соответствующего устройства.
15
Установка
4.1.6. Ресурсы
Тема массивов RAID обширна из-за изобилия вариантов настройки
RAID. Пожалуйста посмотрите следующие ссылки для дополнительной
информации:
Ubuntu Wiki Articles on RAID6.
Software RAID HOWTO7
Managing RAID on Linux8
4.2. Менеджер логических томов (LVM)
Менеджер логических томов, или LVM,позволяет администраторам
создавать логические тома на одном и нескольких жёстких дисках. LVM
тома могут быть созданы как на разделах программного RAID, так и на
стандартных разделах единичного диска. Тома также могут расширяться,
предоставляя большую гибкость системам по изменению предоставляемых
ресурсов.
4.2.1. Обзор
Побочным эффектом от мощи и гибкости LVM является большая степень
сложности. Перед тем, как погружаться в установочный процесс LVM, было
бы неплохо ознакомиться с некоторыми терминами.
Физический том (Physical Volume - PV): физический жёсткий диск, раздел
диска или раздел программного RAID, отформатированный как LVM PV.
Группа томов (Volume Group - VG): строится из одного или нескольких
физических томов. VG могут быть расширены добавлением PV. VG похожи
на виртуальные дисковые устройства, которые можно разделять на
логические тома.
Логический том (Logical Volume - LV): аналогичен разделу на диске
без использования LVM. LV, отформатированный в желаемую файловую
систему (EXT3, XFS, JFS и др.) доступен для монтирования и хранения
данных.
4.2.2. Установка
Пример в данной секции показывает установку Ubuntu Server Edition с
монтированием /srv на том LVM. В процессе начальной установки только
один физический том (PV) может стать частью группы томов (VG). Другой
16
Установка
PV будет добавлен после установки для демонстрации того, как VG может
быть расширен.
Существует несколько вариантов установки LVM, "Управляемый -
использовать весь диск и настроить LVM" который также позволит вам
выделить часть доступного пространства под LVM, "Управляемый -
использовать целиком и настроить шифрованный LVM", или установить
и настроить LVM вручную. На данный момент единственный вариант
настроить систему с использованием как LVM, так и стандартных разделов
в процессе установки - это использование ручной настройки.
1.
Следуйте инструкциям по установке, пока вы не достигнете этапа
разметки дисков, а затем:
2.
На экране "Дисковые разделы" выберите "Вручную".
3.
Выделите жёсткий диск и на следующем экране выберите "да" в ответ
на предложение "Создать новую таблицу разделов устройства".
4.
Далее создайте стандартные разделы для /boot, swap, и / с той
файловой системой, которую вы предпочитаете.
5.
Для размещения /srv на LVM, создайте новый логический раздел. Затем
замените "Использовать как" на "физический том LVM", после чего
нажмите "Настройка разделов завершена".
6.
Теперь выделите "Настроить менеджер логических томов" вверху и
выберите "Да" для сохранения изменений на диск.
7.
В качестве "Действия по настройке LVM"на следующем экране выберите
"Создать группу томов". Введите имя для VG типа vg01, или что-то
более наглядное. После ввода имени выберите раздел, выделенный под
LVM, и нажмите "Continue".
8.
Вернитесь на экран "Действие по настройке LVM" выберите "Создать
логический том". Выделите недавно созданную группу томов и введите
имя для LV, например, srv, раз уж она предназначена для этой точки
монтирования. Затем выберите размер, который может быть на
весь раздел, поскольку его всегда можно будет расширить позднее.
Нажмите "Finish" и вы вернётесь обратно на основную страницу
"Дисковые разделы".
9.
Теперь добавьте файловую систему для нового LVM. Выделите раздел
под названием "LVM VG vg01, LV srv" или тем именем, которое вы
выбрали и нажмите Использовать как. Настройте файловую систему
как обычно, выбрав /srvв качестве точки монтирования. По окончании
нажмите "Выполнить настройку разделов".
10. Наконец нажмите "Завершить разбиение и сохранить изменения на
диск". Затем подтвердите изменения и продолжите обычную установку.
17
Установка
Есть несколько полезных утилит для просмотра информации по LVM:
pvdisplay: показывает информацию по физическим томам.
vgdisplay: показывает информацию по группам томов.
lvdisplay: показывает информацию по логическим томам.
4.2.3. Расширение групп томов
Продолжая с srv, как примером тома LVM, в данной секции рассматривается
добавление второго жёсткого диска, создание физического тома (PV),
добавление его в группу томов (VG), расширение логического тома srv
и в конце расширение файловой системы. Этот пример подразумевает,
что в систему был добавлен второй жёсткий диск. В данном примере этот
жёсткий диск получит имя /dev/sdb, и мы будем использовать весь диск под
физический том (вы можете выбрать создание разделов и использовать их
как другие физические тома).
Убедитесь, что у вас ещё нет /dev/sdb перед тем, как выполнять
приведенные ниже команды. Вы можете потерять некоторые
данные, если выполните эти команды на использующемся диске.
1.
Сначала создадим физический том, выполнив в терминале:
sudo pvcreate /dev/sdb
2.
Теперь расширим группу томов (VG):
sudo vgextend vg01 /dev/sdb
3.
Используйте vgdisplay для поиска свободных физических экстентов
(PE) - Free PE / size (размер, который вы можете занять). Предположим,
что свободно 511 PE (эквивалентно 2 ГБ при размере PE в 4 МБ) и
мы используем всё доступное свободное место. Используйте ваши
собственные PE и/или свободное место.
Логический том (LV) теперь может быть увеличен различными
методами, мы будем рассматривать только как использовать PE для
расширения LV:
sudo lvextend /dev/vg01/srv -l +511
Опция -l позволяет расширять LV, используя PE. Опция -L позволит
задавать увеличение LV в МБ, ГБ, ТБ и т.п.
4.
Даже если вы считаете, что можете увеличить файловую систему ext3
или ext4 без предварительного отключения, будет хорошей практикой
18
Установка
в любом случае отмонтировать её и проверить на целостность, что
позволит избежать суматошного дня по уменьшению логического тома
(в этом случае ее придется отключить обязательно).
Следующая команда только для файловой системы EXT3 или EXT4.
Если вы используете другую файловую систему, возможно, придётся
использовать другие утилиты.
sudo umount /srv
sudo e2fsck -f /dev/vg01/srv
Опция -f для e2fsck заставляет принудительно сделать проверку на
целостность системы.
5. Наконец, изменяем размер файловой системы:
sudo resize2fs /dev/vg01/srv
6. Теперь монтируем раздел и проверяем его размер:
mount /dev/vg01/srv /srv && df -h /srv
4.2.4. Ресурсы
• Смотрите статьи Ubuntu Wiki LVM9.
• Смотрите LVM HOWTO10 для дополнительной информации.
• Ещё одна хорошая статья - Managing Disk Space with LVM11 на сайте
O'Reilly's linuxdevcenter.com.
• Для дополнительной информации по fdisk смотрите fdisk man page12.
10
11
12
19
Установка
5. Отчёт о падении ядра
5.1. Введение
Отчёт о падении ядра (Kernel Crash Dump) является частью содержимого
оперативной памяти (RAM), которая копируется на диск всякий раз, когда
выполнение ядра прерывается. Следующие события могут стать причиной
остановки ядра:
• Критическая ошибка ядра (Kernel Panic)
• Незамаскированное прерывание (NMI)
• Фатальная ошибка проверки машины (MCE)
• Ошибка аппаратного обеспечения
• Ручное вмешательство
Некоторые из этих событий (Kernel Panic, NMI) ядро обрабатывает
автоматически и запускает механизм сохранения отчета через kexec. В
других случаях требуется ручное вмешательство для захвата памяти.
Всякий раз, как что-то из перечисленного происходит, важно найти
основную причину с целью предотвращения такого события снова. Причина
может быть определена с помощью инспектирования содержимого памяти.
5.2. Механизм отчёта о падении ядра
Когда происходит критическая ошибка ядра, ядро полагается на механизм
kexec для быстрой перезагрузки новой копии ядра в предварительно
зарезервированную секцию памяти, которая выделяется при загрузке
системы. Это позволяет существующей памяти остаться нетронутой с
целью безопасного копирования её содержимого в файл.
5.3. Установка
Утилита сохранения отчёта о падении ядра устанавливается следующей
командой:
sudo apt-get install linux-crashdump
После этого потребуется перезагрузка.
5.4. Конфигурация
Никакой дальнейшей настройки не требуется, чтобы разрешить механизм
отчёта о падении ядра.
20
Установка
5.5. Проверка
Для подтверждения, что механизм отчёта о падении ядра доступен, надо
проверить несколько вещей. Во-первых, убедитесь, что указан загрузочный
параметр crashkernel (заметьте, что строка внизу разделена на две, чтобы
уместить её в формат документа):
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.2.0-17-server root=/dev/mapper/PreciseS-root ro
crashkernel=384M-2G:64M,2G-:128M
Параметр crashkernel имеет следующий синтаксис:
crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
range=start-[end] 'start' is inclusive and 'end' is exclusive.
Таким образом с параметром crashkernel, найденным в файле /proc/cmdline
мы имеем:
crashkernel=384M-2G:64M,2G-:128M
Значение выше означает:
• если оперативная память меньше 384МБ, то ничего не резервировать (это
вариант «спасения»)
• если оперативная память между 384МБ и 2ГБ (привилегированная), то
зарезервировать 64МБ
• если оперативная память больше 2ГБ, то зарезервировать 128МБ
Во-вторых, убедитесь, что ядро зарезервировало требуемую память для
kdump ядра, выполнив:
dmesg | grep -i crash
[
0.000000] Reserving 64MB of memory at 800MB for crashkernel (System RAM: 1023MB)
5.6. Проверка механизма отчёта о падении ядра
Проверка механизма отчёта о падении ядра вызовет перезагрузку
системы. В определенных ситуациях это может привести к потере
21
Установка
данных, если система будет сильно загружена. Если вы хотите
проверить этот механизм, убедитесь, что система простаивает или
загружена очень слабо.
Убедитесь, что механизм SysRQ включен, посмотрев значение параметра
ядра/proc/sys/kernel/sysrq:
cat /proc/sys/kernel/sysrq
Если возвращается значение 0, свойство отключено. Включите его
следующей командой:
sudo sysctl -w kernel.sysrq=1
Как только закончите с этим, вам придётся стать суперпользователем
(root), поскольку будет недостаточно использовать только sudo. От имени
пользователя root вам нужно выполнить команду echo c > /proc/sysrq-
trigger. Если вы используете сетевое соединение, вы потеряете связь с
системой. Именно поэтому лучше проводить тест с системной консоли. Это
позволит сделать процесс отчёта о падении ядра видимым.
Типичный вывод теста будет выглядеть следующим образом:
sudo -s
[sudo] password for ubuntu:
# echo c > /proc/sysrq-trigger
[
31.659002] SysRq : Trigger a crash
[
31.659749] BUG: unable to handle kernel NULL pointer dereference at
(null)
[
31.662668] IP: [<ffffffff8139f166>] sysrq_handle_crash+0x16/0x20
[
31.662668] PGD 3bfb9067 PUD 368a7067 PMD 0
[
31.662668] Oops: 0002 [#1] SMP
[
31.662668] CPU 1
Дальнейший вывод отрезан, но вы можете посмотреть перезагрузку
системы и где-нибудь в журнале вы сможете найти следующую строчку:
Begin: Saving vmcore from kernel crash ...
После завершения система перезагрузится в нормальный рабочий режим.
После чего вы сможете найти файл отчёта о падении ядра в каталоге /var/
crash:
ls /var/crash
linux-image-3.0.0-12-server.0.crash
22
Установка
5.7. Ресурсы
Отчёт о падении ядра - обширная тема, требующая хорошего знания ядра
Linux. Вы сможете найти больше информации по следующим ссылкам:
Документация по kdump13.
Утилита crash14
Анализ падений ядра Linux15 (Основано на дистрибутиве Fedora, однако
предоставляет хороший критический анализ исследований отчетов
падения ядра)
13
14
15
23
Глава 3. Управление пакетами
Ubuntu содержит всеобъемлющую систему управления пакетами для
установки, обновления, настройки и удаления программ. Помимо
обеспечения доступа к упорядоченной базе из более 35000 пакетов
программного обеспечения для Ubuntu, система управления пакетами
также содержит средства разрешения зависимостей и проверки наличия
обновлений программ.
Есть несколько программ для работы с системой управления пакетами
Ubuntu, начиная с простых консольных утилит, использование которых
может быть легко автоматизировано администраторами системы, до
простых в использовании программ с графическим интерфейсом, более
подходящих для новичков в Ubuntu.
24
Управление пакетами
1. Введение
Система управления пакетами создана на основе подобной системы,
используемой в дистрибутиве Debian GNU/Linux. Файлы пакетов содержат
все необходимые файлы, метаданные и инструкции, чтобы обеспечить
использование специфических функций или программного приложения на
вашем компьютере под управлением Ubuntu.
Файлы пакетов Debian обычно имеют расширение '.deb' и, как правило,
содержатся в репозиториях - коллекциях пакетов, которые можно найти
на различных носителях, таких как диски CD-ROM, или в Интернете.
Пакеты обычно заранее скомпилированы в двоичный формат, поэтому
устанавливаются быстро и не требуют выполнения компиляции.
Многие сложные пакеты используют концепцию зависимостей.
Зависимости - это дополнительные пакеты, необходимые основному
пакету для нормальной работы. Например, пакет синтезатора речи festival
зависит от пакета libasound2, предоставляющего звуковую библиотеку
ALSA, необходимую для воспроизведения звука. Чтобы festival заработал,
необходимо установить его и все его зависимости. Средства управления
программами в Ubuntu делают это автоматически.
25
Управление пакетами
2. dpkg
dpkg - это менеджер пакетов для систем, основанных на Debian. Он может
устанавливать, удалять и собирать пакеты, но в отличие от других систем
управления пакетами, не может автоматически скачивать и устанавливать
пакеты или их зависимости. В этом разделе рассматривается применение
dpkg для управления локально установленными пакетами:
• Чтобы увидеть список всех установленных в системе пакетов, наберите в
приглашении терминала:
dpkg -l
• В зависимости от количества пакетов в вашей системе, вывод данных
может быть очень большим. Перенаправьте вывод через grep, чтобы
узнать, установлен ли определённый пакет:
dpkg -l | grep apache2
Замените apache2 на любое имя пакета, часть имени пакета или любое
допустимое выражение.
• Для получения списка файлов, установленных пакетом, в данном случае
ufw, введите:
dpkg -L ufw
• Если вы не уверены, какой пакет установил файл, dpkg -S поможет вам
узнать это. Например:
dpkg -S /etc/host.conf
base-files: /etc/host.conf
Вывод покажет вам, что /etc/host.conf принадлежит пакету base-files.
Многие файлы генерируются автоматически в процессе установки
пакета и, хотя они находятся в файловой системе, dpkg -S может
не знать, какому пакету они принадлежат.
• Вы можете установить локальный .deb-файл, введя:
sudo dpkg -i zip_3.0-4_i386.deb
Замените zip_3.0-4_i386.deb на реальное имя локального .deb-файла,
который вы хотите установить.
• Удаление пакета может быть выполнено так:
26
Управление пакетами
sudo dpkg -r zip
Устанавливать пакеты с помощью dpkg в большинстве случаев
НЕ РЕКОМЕНДУЕТСЯ. Лучше воспользоваться менеджером
пакетов, который обрабатывает зависимости, чтобы исключить
возможность возникновения несогласованностей в системе.
Например, dpkg -r zip удалит пакет zip, но все пакеты, от которых
он зависит, останутся установленными и могут в дальнейшем
функционировать неправильно.
О других опциях dpkg смотрите руководство: man dpkg.
27
Управление пакетами
3. Apt-Get
Команда apt-get - это мощный инструмент командной строки, который
работает с Ubuntu Advanced Packaging Tool (APT), выполняя такие действия,
как установка новых пакетов программ, обновление существующих
пакетов, обновление индекса списка пакетов и даже полное обновление
всей системы Ubuntu.
Являясь простым инструментом командной строки, apt-get имеет
множество преимуществ над другими инструментами управления пакетами
в Ubuntu для администраторов серверов. Некоторыми из этих преимуществ
являются простота работы через SSH и возможность использования в
сценариях администрирования системы, которые, в свою очередь, можно
автоматизировать с помощью утилиты планировщика cron.
Несколько примеров использования apt-get:
Установка пакета: устанавливать пакеты с помощью apt-get очень
просто. Например, чтобы установить сетевой сканер nmap, наберите:
sudo apt-get install nmap
Удаление пакета: удалить пакет (или несколько пакетов) тоже просто.
Чтобы удалить пакет, установленный в предыдущем примере, наберите:
sudo apt-get remove nmap
Несколько пакетов: Вы можете указать сразу несколько пакетов
для установки или удаления, разделив их названия пробелами.
При добавлении опции --purge к apt-get remove будут также удалены
конфигурационные файлы пакета. Это может быть, а может и не быть
нужным вам эффектом, так что используйте эту опцию с осторожностью.
Обновление индекса пакетов: индекс пакетов APT - это база
данных пакетов, доступных из репозиториев, указанных в файле /
etc/apt/sources.list и каталоге /etc/apt/sources.list.d. Чтобы обновить
локальный индекс пакетов, согласовав его с последними изменениями в
репозиториях, наберите следующее:
sudo apt-get update
Обновление пакетов: через какое-то время в репозиториях могут стать
доступными обновлённые версии установленных на вашем компьютере
пакетов (например, обновления, связанные с безопасностью). Чтобы
28
Управление пакетами
обновить систему, в первую очередь обновите индекс пакетов, как
показано выше, и после этого наберите:
sudo apt-get upgrade
Информацию по переходу на новый релиз Ubuntu смотрите в Раздел 3,
«Обновление» [10].
Действия команды apt-get, такие как установка и удаление пакетов,
сохраняются в файле журнала /var/log/dpkg.log
Для дополнительной информации об использовании APT прочтите
подробное Руководство пользователя Debian APT1 или наберите в
терминале:
apt-get help
29
Управление пакетами
4. Aptitude
Запуск Aptitude без параметров предоставит вам текстовый интерфейс
с меню для доступа к системе Advanced Packaging Tool (APT). Множество
общих функций управления пакетами, такие как установка, удаление и
обновление, могут быть выполнены в Aptitude однобуквенной командой,
набранной обычно в нижнем регистре.
Aptitude лучше всего подходит для терминального окружения без графики,
чтобы убедиться в правильном функционировании ключевых команд. Вы
можете запустить интерфейс Aptitude с меню под обычным пользователем,
введя следующую команду в терминале:
sudo aptitude
Когда Aptitude запускается, вы можете видеть строку меню вверху экрана
и две панели под ней. Верхняя панель содержит категории пакетов, такие
как Новые пакеты и Неустановленные пакеты. Нижняя панель содержит
информацию, касающуюся пакетов и категорий пакетов.
Использование Aptitude для управления пакетами является достаточно
прямолинейным, а пользовательский интерфейс делает повседневные
задачи простыми в выполнении. Вот примеры стандартных функций по
управлению пакетами в том виде, в каком они выполняются в Aptitude:
Установка пакетов: Для установки пакета определите его
местонахождение в категории Неустановленные Пакеты с
использованием клавиш перемещения курсора и клавиши ENTER.
Подсветите желаемый пакет и затем нажмите клавишу +. Название
пакета выделится зелёным цветом, означающим, что пакет выбран
для установки. Далее нажмите g для получения списка действий над
пакетами. Нажмите g еще раз, и вас предупредят о необходимости
получения прав суперпользователя. Нажмите ENTER для запроса
пароля. Введите ваш пользовательский пароль для получения прав
суперпользователя. Наконец, нажмите g ещё раз и вас предупредят
о загрузке пакета. Нажмите ENTER в ответ на запрос Продолжить и
начнутся загрузка и установка.
Удаление пакетов: Для удаления пакета определите его
местонахождение в категории Установленные Пакеты с использованием
клавиш перемещения курсора и клавиши ENTER. Подсветите пакет,
который вы хотите удалить и затем нажмите клавишу -. Название пакета
выделится розовым цветом, означающим, что он выделен для удаления.
Теперь нажмите g для получения списка действий над пакетами.
30
Управление пакетами
Нажмите g ещё раз, и вас предупредят о необходимости получения
прав суперпользователя. Нажмите ENTER для запроса пароля. Введите
ваш пользовательский пароль для получения прав суперпользователя.
Наконец, нажмите g ещё раз, а затем ENTER для продолжения, и
начнётся удаление пакета.
Обновление индекса пакетов: Для обновления индекса пакетов
просто нажмите клавишу u, и вас предупредят о необходимости
получения прав суперпользователя. Нажмите ENTER для запроса
пароля. Введите ваш пользовательский пароль для получения прав
суперпользователя. Начнётся обновление индекса пакетов. Нажмите
ENTER, когда завершится процесс загрузки.
Обновление пакетов: Для обновления пакетов выполните обновление
индекса пакетов, как показано выше, и затем нажмите клавишу U,
чтобы отметить все пакеты к обновлению. Теперь нажмите g для
просмотра действий над пакетами. Нажмите g снова и вас предупредят о
необходимости получения прав суперпользователя. Нажмите ENTER для
запроса пароля. Введите ваш пользовательский пароль для получения
прав суперпользователя. Наконец, нажмите g ещё раз и вас предупредят
о загружаемых пакетах. Нажмите ENTER для продолжения и начнется
обновление пакетов.
Первая колонка, отображаемая в списке пакетов в верхней панели, при
непосредственном просмотре пакетов, отображает текущее состояние
пакета и использует следующие символы для индикации этого состояния:
i: Установленный пакет
c: Пакет не установлен, но настройки пакета остались в системе
p: Удалён из системы
v: Виртуальный пакет
B: Испорченный пакет
u: Файлы распакованы, однако настройка пакета не закончена
C: Частично настроенные - настройка завершилась неудачей и требует
исправления
H: Частично установленные - удаление завершилось неудачей и требует
исправления
Чтобы выйти из Aptitude, просто нажмите клавишу q и подтвердите
свой выход. Многие другие функции доступны из меню Aptitude, которое
доступно по нажатию клавиши F10.
31
Управление пакетами
4.1. Aptitude в командной строке
Aptitude можно использовать и как инструмент командной строки, подобно
apt-get. Чтобы установить пакет nmap со всеми зависимостями, как в
примере apt-get, нужно ввести следующую команду:
sudo aptitude install nmap
Чтобы удалить тот же пакет, нужно использовать команду:
sudo aptitude remove nmap
Смотрите в man-страницах дополнительные сведения об опциях командной
строки Aptitude.
32
Управление пакетами
5. Автоматические обновления
Пакет unattended-upgrades может использоваться для автоматической
установки обновлённых пакетов и может быть сконфигурирован
на обновление всех пакетов или установку только изменений для
безопасности системы. Во-первых, установите пакет, введя в командной
строке:
sudo apt-get install unattended-upgrades
Чтобы настроить unattended-upgrades, отредактируйте /etc/apt/
apt.conf.d/50unattended-upgrades изменив следующие строки так, как вам это
необходимо:
Unattended-Upgrade::Allowed-Origins {
"Ubuntu precise-security";
//
"Ubuntu precise-updates";
};
Некоторые пакеты могут быть указаны в "чёрном" списке что означает, что
они не будут обновляться. Чтобы поместить пакет в "чёрный" список:
Unattended-Upgrade::Package-Blacklist {
//
"vim";
//
"libc6";
//
"libc6-dev";
//
"libc6-i686";
};
Двойная косая черта «//» означает комментарий, то есть всё, что
находится после "//", не будет обрабатываться.
Чтобы включить автоматические обновления, отредактируйте /etc/apt/
apt.conf.d/10periodic и задайте соответствующие конфигурационные
параметры apt:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Приведённая выше конфигурация обновляет список пакетов, скачивает
и устанавливает доступные обновления каждый день. Локальный архив
загрузок очищается каждую неделю.
Вы можете почитать больше о настройках периодичности apt в
заголовке сценария //etc/cron.daily/apt.
33
Управление пакетами
Результаты unattended-upgrades будут занесены в /var/log/unattended-
upgrades.
5.1. Уведомления
Настройка Unattended-Upgrade::Mail в /etc/apt/apt.conf.d/50unattended-upgrades
позволит unattended-upgrades сообщать администратору по электронной
почте подробности о любых пакетах, нуждающихся в обновлении или
имеющих проблемы.
Ещё один полезный пакет - apticron. apticron настраивает задание cron
для отправки электронны писем администратору с информацией о любых
пакетах в системе, для которых доступны обновления, а также отчётом об
изменениях в каждом пакете.
Для установки пакета apticron в терминале введите:
sudo apt-get install apticron
После установки пакета отредактируйте /etc/apticron/apticron.conf, чтобы
установить адрес электронной почты и другие опции:
EMAIL="root@example.com"
34
Управление пакетами
6. Конфигурация
Настройка системных репозиториев Advanced Packaging Tool (APT)
сохраняется в файле /etc/apt/sources.list и каталоге /etc/apt/sources.list.d.
Пример такого файла приведен здесь вместе с информацией по
добавлению или удалению ссылок на репозитории в этом файле.
Здесь2 вы можете найти простой пример типичного файла /etc/apt/
sources.list.
Вы можете изменять файл для подключения и отключения репозиториев.
Например, для отключения требования вставить диск Ubuntu во время
выполнения операций с пакетами просто закомментируйте строки с
соответствующим диском, которые находятся в начале файла:
# no more prompting for CD-ROM please
# deb cdrom:[Ubuntu 12.04 _Precise Pangolin_ - Release i386 (20111013.1)]/ precise main restricted
6.1. Дополнительные репозитории
В дополнение к официально поддерживаемым репозиториям пакетов
для Ubuntu существуют дополнительные, поддерживаемые сообществом,
репозитории, которые обеспечивают возможность установки ещё
нескольких тысяч пакетов. Два наиболее популярных - это репозитории
Universe и Multiverse. Эти репозитории официально не поддерживаются
Ubuntu, но, поскольку они поддерживаются сообществом, обычно можно
без опасений использовать входящие в них пакеты на компьютере с
Ubuntu.
Пакеты в репозитории Multiverse часто имеют нюансы с лицензиями,
которые не позволяют им распространяться вместе со свободной
операционной системой, и их использование может быть
незаконным там, где вы находитесь.
Обращаем ваше внимание, что указанные репозитории, Universe
и Multiverse, не содержат официально поддерживаемых пакетов.
В частности, может не существовать необходимых обновлений
безопасности для этих пакетов.
Доступно большое количество других источников пакетов, иногда
предоставляющих доступ лишь к одному пакету (например, в случае
пакета с исходными кодами, предоставляемого разработчиком отдельного
приложения). Вы должны быть очень осторожны и внимательны при
2 ../sample/sources.list
35
Управление пакетами
использовании нестандартных источников пакетов. Внимательно изучите
как источник, так и пакет перед установкой, так как некоторые источники,
и пакеты, предоставляемые ими, могут вызвать нестабильную работу
вашей системы или даже полную её неработоспособность.
По умолчанию, репозитории Universe и Multiverse доступны, но если вы
хотите отключить их, измените /etc/apt/sources.list и закомментируйте
следующие строки:
deb http://archive.ubuntu.com/ubuntu precise universe multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ precise universe
deb http://us.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ precise multiverse
deb http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu precise-security multiverse
36
Управление пакетами
7. Ссылки
Большинство материалов, имеющихся в этой главе, также доступны в
помощи man, многие из которых также доступны в интернете.
Wiki-страница установки Ubuntu3 содержит дополнительную
информацию.
• Для дополнительной информации по dpkg смотрите страницу
документации man по dpkg4.
APT HOWTO5 и страница документации man по apt-get 6 содержит
полезную информацию по использованию apt-get.
• Смотрите страницу документации man по aptitude7 для информации о
дополнительных опциях.
HOWTO по добавлению репозиториев (Ubuntu Wiki)8 содержат
дополнительную информацию по добавлению репозиториев.
37
Глава 4. Работа в сети
Сети состоят из двух и более устройств, таких, как компьютерные системы,
принтеры и сопутствующее оборудование, которые соединены при помощи
физического кабеля или беспроводными каналами с той целью, чтобы
делать общей информацию и распространять её между соединёнными
устройствами.
Этот раздел содержит общую и специфическую информацию относительно
сетевого взаимодействия, включая обзор концепций сети и детальное
обсуждение популярных сетевых протоколов.
38
Работа в сети
1. Настройка сети
Ubuntu поставляется с несколькими графическими инструментами для
настройки сетевых устройств. Этот документ рассчитан на продвинутых
пользователей и фокусируется на управлении сетью с помощью командной
строки.
1.1. Интерфейсы Ethernet
Интерфейсы Ethernet обозначаются в системе как ethX, где X является
числом. Первый интерфейс Ethernet обычно обозначается eth0, второй eth1,
и так далее в порядке возрастания чисел.
1.1.1. Определение Ethernet интерфейсов
Для быстрого определения всех доступных сетевых интерфейсов вы
можете использовать команду ifconfig, как показано ниже.
ifconfig -a | grep eth
eth0
Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a
Другое приложение, которое может помочь идентифицировать все
доступные вашей системе сетевые интерфейсы - это команда lshw . В
приведённом ниже примере lshw показывает один Ethernet интерфейс с
логическим именем eth0 вместе с информацией по шине, сведениями о
драйвере и всеми поддерживаемыми возможностями.
sudo lshw -class network
*-network
description: Ethernet interface
product: BCM4401-B0 100Base-TX
vendor: Broadcom Corporation
physical id: 0
bus info: pci@0000:03:00.0
logical name: eth0
version: 02
serial: 00:15:c5:4a:16:5a
size: 10MB/s
capacity: 100MB/s
width: 32 bits
clock: 33MHz
capabilities: (snipped for brevity)
configuration: (snipped for brevity)
resources: irq:17 memory:ef9fe000-ef9fffff
39
Работа в сети
1.1.2. Логические имена интерфейсов Ethernet
Логические имена интерфейсов настраиваются в файле /etc/udev/rules.d/70-
persistent-net.rules. Если вы захотите определить, какой интерфейс
получит определённое логическое имя, найдите строку, соответствующую
физическому MAC-адресу интерфейса, и измените значение NAME=ethX
на желаемое логическое имя. Перегрузите систему для применения
изменений.
1.1.3. Настройки интерфейса Ethernet
ethtool - это программа, которая показывает и изменяет настройки
сетевых карт, такие как автосогласование (auto-negotiation), скорость
порта, режим дуплекса и функция Wake-on-LAN (пробуждение системы
через сеть). Эта программа не устанавливается по умолчанию, но доступна
к установке из репозиториев.
sudo apt-get install ethtool
Ниже приведён пример того, как посмотреть возможности карты и
настроить параметры интерфейса Ethernet.
sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes:
10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:
10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: yes
Изменения, сделанные с использованием команды ethtool, временные и
будут утеряны после перезагрузки. Если вы хотите сохранить настройки,
просто добавьте требуемую команду ethtool в строку pre-up в файле /etc/
network/interfaces.
40
Работа в сети
Ниже приведен пример того, как интерфейс, определённый как eth0,
может быть постоянно настроен на скорость порта 1000 Мб/с в режиме
полного дуплекса.
auto eth0
iface eth0 inet static
pre-up /sbin/ethtool -s eth0 speed 1000 duplex full
Несмотря на то, что пример выше показывает интерфейс,
настроенный статично, это работает и с другими методами, такими
как DHCP. Этот пример призван просто продемонстрировать
правильное размещение строки pre-up по отношению к остальной
части конфигурационного файла интерфейса.
1.2. Адресация IP
Следующий раздел описывает процесс настройки IP-адреса вашего
компьютера и шлюза по умолчанию, необходимых для подключения к
локальной сети и интернету.
1.2.1. Временное назначение IP-адреса
Для временной настройки сети вы можете использовать стандартные
команды, такие как ip, ifconfig и route, которые присутствуют также и
в других системах на базе GNU/Linux. Эти команды позволят изменить
настройки, которые будут применены мгновенно, но они не будут
постоянными и будут утеряны после перезагрузки.
Для временной настройки IP-адреса вы можете использовать команду
ifconfig следующим образом. Только замените IP-адрес и маску подсети на
соответствующие требованиям вашей сети.
sudo ifconfig eth0 10.0.0.100 netmask 255.255.255.0
Для проверки настройки IP-адреса eth0 вы можете использовать команду
ifconfig таким образом:
ifconfig eth0
eth0
Link encap:Ethernet HWaddr 00:15:c5:4a:16:5a
inet addr:10.0.0.100 Bcast:10.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::215:c5ff:fe4a:165a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:466475604 errors:0 dropped:0 overruns:0 frame:0
TX packets:403172654 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2574778386 (2.5 GB) TX bytes:1618367329 (1.6 GB)
41
Работа в сети
Interrupt:16
Для настройки шлюза по умолчанию вы можете использовать команду route
следующим образом. Измените адрес шлюза по умолчанию на требуемый
для вашей сети.
sudo route add default gw 10.0.0.1 eth0
Для проверки настройки шлюза по умолчанию используйте команду route
таким образом:
route -n
Kernel IP routing table
Destination
Gateway
Genmask
Flags Metric Ref
Use Iface
10.0.0.0
0.0.0.0
255.255.255.0
U
1
0
0 eth0
0.0.0.0
10.0.0.1
0.0.0.0
UG
0
0
0 eth0
Если вам требуется DNS для временной настройки сети, вы можете
добавить IP-адреса DNS-серверов в файл /etc/resolv.conf. Пример ниже
показывает как указать два DNS-сервера в /etc/resolv.conf, которые
могут быть заменены на сервера использующиеся в вашей сети. Более
пространное описание настройки клиента DNS приведено в следующей
секции.
nameserver 8.8.8.8
nameserver 8.8.4.4
Если вам больше не требуется эта конфигурация и вы хотите отменить все
IP настройки интерфейса, вы можете использовать команду ip с опцией
flush как показано ниже:
ip addr flush eth0
Сброс IP настроек с использованием команды ip не очистит
содержимое /etc/resolv.conf. Вам придётся удалять или менять эти
значения вручную.
1.2.2. Динамическое назначение IP-адреса (клиент DHCP)
Чтобы настроить ваш сервера на использование DHCP для динамического
присвоения адреса, добавьте dhcp метод в адресную секцию inet для
соответствующего интерфейса в файле /etc/network/interfaces. Пример
ниже предполагает, что вы настраиваете ваш первый интерфейс Ethernet,
обозначенный как eth0.
42
Работа в сети
auto eth0
iface eth0 inet dhcp
Добавив настройку интерфейса как показано выше, вы можете вручную
включить интерфейс командой ifup, которая активизирует процесс DHCP
через dhclient.
sudo ifup eth0
Для отключения интерфейса вручную вы можете воспользоваться
командой ifdown, которая запустит процесс освобождения DHCP и
остановки интерфейса.
sudo ifdown eth0
1.2.3. Статическое назначение IP-адреса
Для настройки вашей системы под использование статического присвоения
IP-адреса добавьте метод static в секцию inet для соответствующего
интерфейса в файле /etc/network/interfaces. Пример ниже предполагает,
что вы настраиваете ваш первый интерфейс Ethernet, обозначенный как
eth0. Измените значения адреса, маски сети, и шлюза для соответствия
требованиям вашей сети.
auto eth0
iface eth0 inet static
address 10.0.0.100
netmask 255.255.255.0
gateway 10.0.0.1
Добавив настройку интерфейса как показано выше, вы можете вручную
включить интерфейс командой ifup.
sudo ifup eth0
Для отключения интерфейса вручную вы можете воспользоваться
командой ifdown.
sudo ifdown eth0
1.2.4. Интерфейс Loopback (обратной петли)
Интерфейс loopback определяется системой как lo и по умолчанию задает
адрес 127.0.0.1. Он может быть выведен командой ifconfig.
ifconfig lo
43
Работа в сети
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2718 errors:0 dropped:0 overruns:0 frame:0
TX packets:2718 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:183308 (183.3 KB) TX bytes:183308 (183.3 KB)
По умолчанию в /etc/network/interfaces должны присутствовать две
строки, отвечающих за автоматическую настройку интерфейса loopback.
Рекомендуется оставить эти настройки по умолчанию, пока не возникнет
специфической причины для их изменения. Пример этих двух строк
приведён ниже.
auto lo
iface lo inet loopback
1.3. Разрешение имён
Под разрешением имени по отношению к IP-сетям подразумевается процесс
определения IP-адреса по имени хоста, упрощающий идентификацию
ресурса в сети. В следующем разделе показано, как правильно настроить
вашу систему для разрешения имён с помощью DNS и статических записей
имен хостов.
1.3.1. Настройка клиента DNS
Традиционно файл /etc/resolv.conf был статическим файлом настроек,
который очень редко требовалось изменять или он менялся автоматически
по запросам DHCP клиента. В настоящее время компьютер может
переключаться с одной сети на другу слишком часто и структура resolvconf
теперь используется для отслеживания этих изменений и автоматического
обновления настроек разрешений. Это выглядит как промежуточный
слой между программами, которые предоставляют информацию от
серверов имён, и приложениями, которым она требуется. Resolvconf
делает доступной информацию через подключение сценариев, связанных
с настройкой сетевых интерфейсов. Наиболее значимое отличие для
пользователя в том, что любые ручные изменения /etc/resolv.conf будут
потеряны при перезаписи по каждому срабатыванию триггеров resolveconf.
Вместо этого resolveconf использует ловушки клиента DHCP и /etc/network/
interfaces для генерации списка серверов имен и доменов, чтобы положить
в /etc/resolv.conf, который теперь является символьной ссылкой:
/etc/resolv.conf -> ../run/resolvconf/resolv.conf
44
Работа в сети
Для настройки разрешений добавьте IP-адреса серверов имён,
соответствующие вашей сети, в файл /etc/network/interfaces. Вы также
можете добавить необязательный список подбора DNS суффиксов для
получения доменных имен. Для каждой другой разрешенной опции
настройки resolv.conf вы можете добавить внутри абзаца по отдельной
строке с этой опцией с префиксом имени dns-. Результирующий файл
может выглядеть так:
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
В опции search можно также указать несколько доменных имён, в этом
случае DNS-запросы будут добавляться в том порядке, в котором они
введены. Например, в вашей сети может быть несколько поддоменов
для поиска: родительский домен example.com и два поддомена,
sales.example.com и dev.example.com.
Если у вас несколько доменов, в которых должен выполняться поиск, ваша
конфигурация может выглядеть так:
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com sales.example.com dev.example.com
dns-nameservers 192.168.3.45 192.168.8.10
Если вы попытаетесь проверить командой ping хост с именем server1, ваша
система автоматически запросит DNS по их полным доменным именам
(FQDN) в следующем порядке:
1. server1.example.com
2. server1.sales.example.com
3. server1.dev.example.com
Если совпадений не будет, DNS сервер предоставит результат notfound и
запрос DNS потерпит неудачу.
1.3.2. Статические имена хостов
Статические имена хостов - это локально определённые соотношения
«имя хоста - IP», находящиеся в файле /etc/hosts. Значения, определённые
45
Работа в сети
в файле hosts, по умолчанию превалируют над DNS. Это означает, что
если система пытается разрешить имя и находит его в /etc/hosts, она
не будет пытаться смотреть записи в DNS. В некоторых конфигурациях,
особенно когда доступ в интернет не требуется, сервера, соединённые
с ограниченным количеством ресурсов, могут просто использовать
статический список имён вместо DNS.
Далее приведен пример файла hosts, где ряд локальных серверов
определены обычными именами хостов, алиасами и их эквивалентами
полных имен (FQDN).
127.0.0.1 localhost
127.0.1.1 ubuntu-server
10.0.0.11 server1 vpn server1.example.com
10.0.0.12 server2 mail server2.example.com
10.0.0.13 server3 www server3.example.com
10.0.0.14 server4 file server4.example.com
В примере выше обратите внимание, что каждый сервер имеет
алиас вдобавок к их правильным коротким и полным именам.
Server1 соотносится с именем vpn, server2 определен как mail,
server3 как www, and server4 как file.
1.3.3. Настройка переключения сервиса имён
Последовательность, в которой ваша система выбирает метод
разрешения имен по IP адресам управляется конфигурационным файлом
переключателя сервиса имён (NSS) /etc/nsswitch.conf. Как отмечено в
предыдущей секции, обычно статические имена хостов, определенные в
системном файле /etc/hosts, имеют приоритет перед разрешением имён
через DNS. Далее следует пример строки, отвечающей за этот порядок
перебора имён хостов в файле /etc/hosts.
hosts:
files mdns4_minimal [NOTFOUND=return] dns mdns4
files сперва пытается разрешить статическое имя хоста в /etc/hosts.
mdns4_minimal пытается разрешить имя с использованием
параллельного (multicast) DNS.
[NOTFOUND=return] означает, что любой ответ notfound,
предшествующий процессу mdns4_minimal должен считаться значимым
(авторитетным), и что система не будет пытаться продолжать искать
ответ.
dns представляет собой наследуемый последовательный (legacy unicast)
DNS-запрос.
46
Работа в сети
mdns4 представляет параллельный (multicast) DNS-запрос.
Для изменения последовательности вышеупомянутых методов разрешения
имен вы можете просто заменить строку hosts: на значение по вашему
выбору. Например, если вы предпочитаете использовать последовательный
DNS до параллельного DNS, вы можете изменить строку в /etc/nsswitch.conf
как показано ниже:
hosts:
files dns [NOTFOUND=return] mdns4_minimal mdns4
1.4. Использование моста
Соединение нескольких интерфейсов - наиболее продвинутая настройка,
но очень полезная во множестве сценариев. Один вариант - установка
взаимодействия между несколькими сетевыми интерфейсами и затем
использование защитного экрана (firewall) для фильтрования трафика
между двумя сегментами сети. Другой сценарий - использование
связывания на системе с одним интерфейсом для разрешения виртуальным
машинам иметь прямой доступ во внешнюю сеть. Следующий пример
раскрывает последний сценарий.
Перед настойкой взаимодействия вам потребуется установить пакет bridge-
utils. Для установки пакета введите в терминале:
sudo apt-get install bridge-utils
Далее настройте взаимодействие, отредактировав /etc/network/interfaces:
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
Введите соответствующие значения для вашего физического
интерфейса и сети.
47
Работа в сети
Теперь перезапустите сеть для разрешения взаимодействия интерфейсов:
sudo /etc/init.d/networking restart
Теперь новый мост между интерфейсами поднят и работает. Утилита
application>brctl
1.5. Ресурсы
Страница Ubuntu Wiki Network1 содержит ссылки на заметки по более
продвинутым настройкам сети.
man-страница resolvconf2 содержит больше информации по resolvconf.
man-страница interfaces3 содержит подробности по дополнительным
опциям для /etc/network/interfaces.
man-страница dhclient4 содержит подробности по большему количеству
опций для настройки клиента DHCP.
• Для дополнительной информации по настройке DNS-клиента смотрите
resolver man page5. Глава 6 руководства O'Reilly Администрирования
сетей Linux6 также является хорошим источником по разрешению имён и
настройке сервиса имён.
• Для дополнительной информации по сетевому связыванию смотрите man-
страницу brctl7 и страницу Net:Bridge8 от Linux Foundation.
48
Работа в сети
2. TCP/IP
Протокол управления передачей и межсетевой протокол (TCP/IP)
- это стандартный набор протоколов, разработанных в конце 70-х
годов управлением перспективного планирования оборонных научно-
исследовательских работ (DARPA) в качестве средства коммуникации
между различными типами компьютеров и компьютерных сетей. Так как
сеть Интернет построена на стеке протоколов TCP/IP, они представляют
самый популярный набор сетевых протоколов на Земле.
2.1. Введение в TCP/IP
Два компонента протокола TCP/IP представляют разные аспекты
компьютерного взаимодействия. Межсетевой протокол "IP" в стеке TCP/IP -
это протокол без установления соединения, который предоставляет только
маршрутизацию пакетов, используя IP-пакет (датаграмму) как основной
блок сетевой информации. IP-пакет содержит заголовок с последующим
сообщением. Протокол управления передачей "TCP" в TCP/IP позволяет
сетевым хостам устанавливать соединения, которые могут использоваться
для передачи потоков данных. TCP также гарантирует, что данные между
подключениями будут доставлены, и что они придут на сетевой хост в том
же порядке, в каком они были посланы с другого.
2.2. Настройка TCP/IP
Настройка протокола TCP/IP состоит из нескольких элементов, которые
должны быть указаны в соответствующих файлах конфигураций, или
получены с помощью дополнительных служб таких как сервер протокола
динамической настройки хостов (Dynamic Host Configuration Protocol, DHCP),
который, в свою очередь, может быть настроен для автоматического
предоставления правильных настроек TCP/IP клиентам сети. Следующим
параметрам настройки должны быть указаны правильные значения, чтобы
обеспечить нормальную работу вашей системы Ubuntu в сети.
Обычные элементы настроек TCP/IP и их назначение таковы:
IP адрес. IP адрес - это уникальная идентификационная строка,
представленная в виде четырёх десятичных чисел в диапазоне от нуля
(0) до двухсот пятидесяти пяти (255), разделённых точками; каждое
из четырёх чисел представляет восемь (8) бит адреса, полная длина
которого тридцать два (32) бита. Этот формат называют dotted quad
notation (четырёхкомпонентная система обозначений адресов с точками).
Маска сети (Netmask). Маска подсети (или просто, netmask) - это
локальная битовая маска, или наборы флагов, отделяющая часть IP-
49
Работа в сети
адреса, значимую для сети, от битов, значимых для подсети (subnetwork).
Например, в сети класса C, стандартная маска сети определена как
255.255.255.0, она маскирует первые три байта IP-адреса и позволяет
последнему байту IP-адреса оставаться доступным для обозначения
хостов в подсети.
Сетевой адрес (Номер сети). Сетевой адрес (номер сети) представляет
собой набор байт, заключающий в себе сетевую часть IP-адреса.
Например, хост 12.128.1.2 в сети класса A будет использовать 12.0.0.0
в качестве сетевого адреса, здесь число 12 представляет первый
байт IP-адреса (сетевая часть), а нули (0) во всех оставшихся трех
байтах представляют потенциальные значения для хоста. Хост в сети,
использующий частный IP-адрес 192.168.1.100, будет, в свою очередь,
использовать номер сети 192.168.1.0, который определяет первые три
байта сети 192.168.1 класса C и ноль (0) для всех возможных хостов в
сети.
Широковещательный адрес. Широковещательный адрес - это IP-
адрес, который позволяет отправлять данные одновременно всем хостам
в данной подсети вместо конкретного хоста. Стандартный основной
широковещательный адрес для всех IP-сетей - 255.255.255.255, но этот
адрес не может использоваться для отправки широковещательного
сообщения каждому хосту в Интернете, потому что его заблокируют
маршрутизаторы. Более подходящий широковещательный адрес -
это тот, который устанавливается для конкретной подсети. Например,
в частной сети 192.168.1.0 класса C, широковещательным адресом
является 192.168.1.255. Широковещательные сообщения обычно
производятся сетевыми протоколами, такими как ARP (Address Resolution
Protocol - протокол разрешения адресов) и RIP (Routing Information
Protocol - протокол маршрутизационной информации).
Адрес шлюза (Gateway Address). Адрес шлюза - это IP-адрес, через
который некоторая сеть, или хост в сети, могут быть доступны. Пусть
один сетевой хост желает организовать соединение с другим сетевым
хостом, но они расположены в разных сетях, в таких случаях должен
использоваться шлюз (gateway). Во многих случаях адрес шлюза будет
совпадать с адресом маршрутизатора той же сети, который, в свою
очередь, будет перенаправлять трафик в другие сети или на другие
хосты, такие как хосты Интернет. Адресу шлюза должно быть присвоено
правильное значение, в противном случае ваша система не сможет
связаться ни с одним хостом, находящимся за пределами вашей сети.
Адрес сервера имён. Адрес сервера имён - это IP-адрес сервера
службы доменных имён (DNS), который разрешает сетевые имена хостов
в IP-адреса. Существует три уровня адресов серверов имён, которые
50
Работа в сети
могут быть определены в порядке старшинства: первичный сервер имён,
вторичный сервер имён и третичный сервер имён. Чтобы у вашей системы
была возможность разрешения сетевых имён хостов в соответствующие
им IP-адреса, вы должны определить правильные адреса серверов имён,
которые вам разрешено использовать в настройках TCP/IP вашей системы.
В большинстве случаев эти адреса предоставляются вашим сетевым
провайдером, но есть много свободных и публично доступных серверов
имён, которые можно использовать - например, сервера Level3 (Verizon)
с адресами от 4.2.2.1 до 4.2.2.6.
IP-адрес, маска сети, адрес сети, широковещательный адрес
и адрес шлюза обычно определяются с помощью подходящих
инструкций в файле /etc/network/interfaces. Адреса серверов имен
обычно задаются с помощью директивы nameserver в файле /etc/
resolv.conf. Для получения более полной информации смотрите
страницы системного руководства для interfaces или resolv.conf,
соответственно, введя следующие команды в терминале:
Обратитесь к соответствующей странице системного руководства о
interfaces с помощью комманды:
man interfaces
Обратитесь к соответствующей странице системного руководства о
resolv.conf с помощью комманды:
man resolv.conf
2.3. IP-маршрутизация
Маршрутизация IP - это способ задания и определения маршрутов в
сети TCP/IP, через которые могут передаваться данные. Маршрутизация
использует набор таблиц маршрутизации для управления переадресацией
сетевых пакетов с данными от их источника к месту назначения,
часто через множество промежуточных сетевых узлов, называемых
маршрутизаторами. Есть две основных разновидности IP-маршрутизации:
статическая маршрутизация и динамическая маршрутизация.
Статическая маршрутизация настраивается путём добавления вручную
IP-маршрутов в системную таблицу маршрутизации. Обычно это делается
с помощью команды route. Статическая маршрутизация имеет много
преимуществ по сравнению с динамической маршрутизацией, таких как
простота реализации на небольших сетях, предсказуемость (таблица
51
Работа в сети
маршрутизации всегда просчитана заранее и, таким образом, маршруты
строго постоянны при каждом использовании), меньшие накладные
расходы по сравнению с протоколом динамической маршрутизации. Тем
не менее, у статической маршрутизации также есть свои недостатки.
Например, статическая маршрутизация ограничена малыми сетями и плохо
масштабируема. Статическая маршрутизация также неустойчива к сбоям
в работе сети или сбоям по пути маршрута, что связано с фиксированной
природой её маршрутов.
Динамическая маршрутизация меняется в зависимости от состояния
больших сетей с множеством возможных IP-маршрутов от источника к
приемнику. Она использует специальные протоколы маршрутизации,
такие как RIP (Router Information Protocol - протокол маршрутизационной
информации), которые осуществляют автоматическую корректировку
маршрутизационных таблиц, делающую динамическую маршрутизацию
возможной. Динамическая маршрутизация имеет ряд преимуществ
перед статической. Например, лучшую масштабируемость и возможность
адаптироваться к сбоям в маршрутах и выходам их из строя. Помимо
этого, требуется меньше ручной настройки таблиц маршрутизации,
так как маршрутизаторы узнают друг у друга про своё существование
и доступные маршруты. Эта черта также сводит на нет возможность
внесения некорректных записей в таблицы маршрутизации из-за
простой человеческой ошибки. Динамическая маршрутизация, тем
не менее, не идеальна, и имеет неудобства, такие как повышенная
сложность и дополнительная нагрузка на сеть за счёт взаимодействия
маршрутизаторов, которая не приносит мгновенной выгоды конечным
пользователям, но при этом занимает сетевой трафик.
2.4. TCP и UDP
TCP - протокол с установлением соединения, предоставляющий коррекцию
ошибок и гарантированную доставку данных через так называемое
управление передачей (flow control). Управление передачей определяет,
когда поток данных необходимо остановить и заново отправить
предыдущие пакеты данных вследствие таких проблем, как коллизии
(collisions). TCP обычно используется при обмене важной информацией,
такой как транзакции баз данных.
Протокол пользовательских датаграмм (UDP - User Datagram
Protocol), с другой стороны, является протоколом без установления
соединения, который редко используется для передачи важных
данных, поскольку в нём отсутствует управление передачей или другие
способы гарантированной доставки данных. UDP обычно используется
52
Работа в сети
в приложениях для передачи потокового аудио или видео, в которых он
работает быстрее TCP из-за отсутствия коррекции ошибок и управления
передачей, и где потеря нескольких пакетов не является катастрофичной.
2.5. ICMP
Протокол управляющих сообщений сети Интернет (Internet Control
Messaging Protocol, ICMP) - это расширение Интернет-протокола
(IP), определённое в документе RFC#792 (Request For Comments),
поддерживающее сетевые пакеты, содержащие управляющие и
информационные сообщения, а также сообщения об ошибках. ICMP
используется сетевыми приложениями, например, утилитой ping, с
помощью которой можно определить доступность сетевого хоста
или устройства. Например, сообщения об ошибках, возвращаемых
ICMP, которые полезны как хостам в сети, так и устройствам типа
маршрутизаторов, включают в себя «адресат недоступен» (Destination
Unreachable) и «превышено время ожидания» (Time Exceeded).
2.6. Демоны
Демоны - это специальные системные программы, которые, как правило,
выполняются постоянно в фоновом режиме и ожидают запросов на
функции, которые они предоставляют для других программ. Многие
демоны направлены на работу с сетью; то есть, большое число демонов,
выполняющихся в фоновом режиме в системе Ubuntu, могут предоставлять
сетевую функциональность. В качестве примера таких сетевых демонов
можно привести Hyper Text Transport Protocol Daemon (httpd), который
предоставляет функции веб-сервера, Secure SHell Daemon (sshd), который
предоставляет безопасный удалённый доступ к консоли и возможность
передачи файлов и Internet Message Access Protocol Daemon (imapd),
который предоставляет службы электронной почты.
2.7. Ресурсы
• Существуют страницы руководств по TCP9 и IP10, которые содержат
больше полезной информации.
• Также посмотрите TCP/IP Tutorial and Technical Overview11 из «красной
книги» IBM.
• Ещё один ресурс - это книга издательства O'Reilly TCP/IP Network
Administration12.
10
11
12
53
Работа в сети
3. Протокол динамической настройки хостов
(Dynamic Host Configuration Protocol, DHCP)
DHCP (протокол динамической конфигурации узла) - это сетевой сервис,
позволяющий компьютерам автоматически получать настройки от сервера
в отличие от ручной настройки каждого компьютера в сети. Компьютеры,
настроенные в качестве DHCP клиентов, не контролируют параметры,
которые они получают от DHCP сервера, а сама настройка прозрачна для
пользователя компьютера.
В самом общем случае, настройки, предоставляемые сервером DHCP его
клиентам, включают в себя:
• IP-адрес и маску подсети
• IP-адрес шлюза по умолчанию
• IP-адрес серверов DNS
Кроме того, сервер DHCP может дополнительно предоставить такие
параметры настроек, как:
• Имя хоста
• Имя домена
• Сервер синхронизации времени
• Сервер печати
Преимущество использования DHCP-сервера в сети состоит в том, что
изменения настроек сети, например, изменение адреса DNS-сервера,
должны выполняться только на DHCP-сервере. Все остальные компьютеры
в сети будут автоматически перенастроены DHCP-клиентами во время
следующего опроса ими DHCP-сервера. Дополнительное преимущество
состоит в том, что становится проще подключать в сеть новые компьютеры,
так как отпадает необходимость проверять доступность IP-адреса. Также
сокращается количество конфликтов при назначении IP-адресов.
Сервер DHCP может предоставлять настройки, используя следующие
методы:
Выделение вручную (по MAC-адресу)
Этот метод подразумевает использование DHCP для определения
уникального аппаратного адреса каждой сетевой карты, подключенной
к сети, и затем продолжительного предоставления неизменной
конфигурации каждый раз, когда DHCP-клиент делает запрос на
DHCP-сервер, используя это сетевое устройство. Это гарантирует, что
определённый адрес будет автоматически присваиваться этой сетевой
карте на основе её MAC-адреса.
54
Работа в сети
Динамическое выделение (пул адресов)
При этом методе сервер DHCP будет выделять IP-адрес из пула адресов
(иногда называемым диапазоном или областью) на период времени
(или в аренду), который настраивается на сервере, или пока клиент
не проинформирует сервер, что он больше не нуждается в адресе.
Таким образом, клиенты получают свои настройки динамически по
принципу «первый пришёл - первый обслужился». Когда клиент
DHCP отсутствует в сети определённое время, настройка считается
просроченной и возвращается в пул адресов для использования другими
DHCP-клиентами. Это означает, что адрес арендуется или выдаётся на
определенный период времени. По истечении этого периода клиент
должен повторно договариваться об использовании адреса с сервером.
Автоматическое выделение
Использую этот метод, DHCP автоматически присваивает устройству
постоянный IP-адрес, выбранный из пула доступных адресов. Обычно
DHCP используется для выдачи временного адреса, но сервер DHCP
может использовать бесконечное время аренды.
Два последних метода можно рассматривать как автоматические
поскольку DHCP-сервер выдаёт адреса без дополнительного
вмешательства. Единственная разница заключается в том, насколько
арендуется адрес, другими словами, когда истечёт время использования
адреса клиентом. Ubuntu поставляется вместе с DHCP-сервером и клиентом.
Сервером является dhcpd (сервис протокола динамического выделения
адресов). Клиент, поставляемый с Ubuntu - это dhclient, и он может быть
установлен на все компьютеры, требующие автоматических настроек. Обе
программы просты в установке и настройке и автоматически запускаются
при загрузке системы.
3.1. Установка
Для установки dhcpd введите следующую команду в терминале:
sudo apt-get install isc-dhcp-server
Возможно, вам потребуется изменить настройку по умолчанию
редактированием /etc/dhcp/dhcpd.conf для удовлетворения вашим
потребностям и специфическим настройкам.
Вы также можете исправить /etc/default/isc-dhcp-server для определения
интерфейсов, которые должен слушать dhcpd.
ПРИМЕЧАНИЕ: сообщения демона dhcpd пересылаются в syslog.
Обращайтесь туда для ознакомления с диагностическими сообщениями.
55
Работа в сети
3.2. Конфигурация
Сообщение об ошибке, с которым заканчивается процесс установки,
может быть немного непонятным, но приведённые ниже шаги помогут вам
настроить службу:
Наиболее вероятно, вы захотите установить случайную раздачу IP-адресов.
Это может быть выполнено сдледующим образом:
# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.150 192.168.1.200;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";
}
В результате DHCP-сервер будет выдавать клиентам IP-адреса из диапазона
192.168.1.150-192.168.1.200. IP-адрес будет выдаваться в аренду на 600
секунд, если клиент не запросит какой-то другой период времени. В любом
случае максимальный (допустимый) срок аренды будет 7200 секунд. Кроме
того, сервер будет «советовать» клиенту использовать 192.168.1.254
в качестве шлюза по умолчанию и 192.168.1.1 и 192.168.1.2 в качестве
серверов DNS.
После изменения конфигурационного файла необходимо перезапустить
dhcpd:
sudo /etc/init.d/isc-dhcp-server restart
3.3. Ссылки
dhcp3-server Ubuntu Wiki13 содержит дополнительную информацию.
• Для дополнительных опций /etc/dhcp/dhcpd.conf смотрите man-страницу
dhcpd.conf14.
ISC dhcp-server15
13
14
15
56
Работа в сети
4. Синхронизация времени с NTP
NTP - это протокол TCP/IP для синхронизации времени через сеть. По
существу, клиент запрашивает текущее время на сервере и использует
результат для установки своего собственного времени.
За этим простым описанием скрывается много сложностей - существуют
уровни NTP-серверов, где первый уровень подключен к атомным часам,
а второй и третий уровни серверов распределяют на себя нагрузку по
актуальным запросам из интернета. Кроме того, клиентское приложение
сложнее, чем вы можете подумать - оно компенсирует задержки
соединения и регулирует время таким образом, чтобы не навредить другим
процессам, запущенным на сервере. Но, к счастью, вся эта сложность
скрыта от вас!
Ubuntu использует ntpdate и ntpd.
4.1. ntpdate
Ubuntu в качестве стандарта использует ntpdate, запуская эту программу
один раз во время загрузки, чтобы настроить время в соответствии с NTP-
сервером Ubuntu.
ntpdate -s ntp.ubuntu.com
4.2. ntpd
Демон ntpd вычисляет смещение системных часов и постоянно
подстраивает их, чтобы не было больших изменений, которые могут
привести, например, к противоречивым записям в журналах. Платой за это
является некоторое потребление вычислительной мощности и памяти, но
на современных серверах это несущественно.
4.3. Установка
Чтобы установить ntpd, введите в терминале:
sudo apt-get install ntp
4.4. Конфигурация
Отредактируйте /etc/ntp.conf, чтобы добавить или удалить серверы. По
умолчанию используются следующие серверы:
57
Работа в сети
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
После изменения конфигурационного файла необходимо перезагрузить
ntpd:
sudo /etc/init.d/ntp reload
4.5. Просмотр статуса
Используйте ntpq, чтобы увидеть больше информации:
# sudo ntpq -p
remote
refid
st t when poll reach
delay
offset jitter
==============================================================================
+stratum2-2.NTP. 129.70.130.70
2 u
5
64
377
68.461
-44.274 110.334
+ntp2.m-online.n 212.18.1.106
2 u
5
64
377
54.629
-27.318
78.882
*145.253.66.170 .DCFa.
1 u
10
64
377
83.607
-30.159
68.343
+stratum2-3.NTP. 129.70.130.70
2 u
5
64
357
68.795
-68.168 104.612
+europium.canoni 193.79.237.14
2 u
63
64
337
81.534
-67.968
92.792
4.6. Ссылки
• Дополнительную информацию смотрите на вики-странице Ubuntu Time16.
ntp.org, домашняя страница проекта Network Time Protocol17
16
17
58
Глава 5. Множественное
связывание устройств (DM-
Multipath)
59
Множественное связывание
устройств (DM-Multipath)
1. Множественное связывание устройств
(Device Mapper Multipathing)
Множественное связывание устройств (DM-Multipath) позволяет вам
настроить несколько путей ввода/вывода между серверным узлом и
массивом накопителей как одно устройство. Эти пути ввода/вывода
являются физическими соединениями сети хранения данных (SAN),
которые могут включать различные кабели, переключатели и контроллеры.
Множественное связывание объединяет пути ввода/вывода, создавая
новое устройство, которое состоит из этих объединяемых путей. Эта глава
представляет краткое изложение возможностей DM-Multipath, которые
впервые появились в редакции Ubuntu Server 12.04. Затем в этой главе
приведен обзор верхнего уровня DM-Multipath и его компонентов, а также
описание процесса установки DM-Multipath.
1.1. Новые и изменённые возможности в Ubuntu Server
12.04
Произведён переход с multipath-0.4.8 к multipath-0.4.9.
1.1.1. Переход с 0.4.8
Модули проверки приоритета теперь запускаются не как отдельные
программы, а как разделяемые библиотеки. Ключевая часть имён для
функций также несколько изменена. Скопируйте атрибут с именем
prio_callout как prio, также измените аргумент имени модуля проверки
приоритета, системный путь теперь необязателен. Пример изменений:
device {
vendor "NEC"
product "DISK ARRAY"
prio_callout mpath_prio_alua /dev/%n
prio
alua
}
См. таблицу Преобразование модулей проверки приоритета [60], в
которой приведён полный список изменений.
Таблица 5.1. Преобразование модулей проверки
приоритета
v0.4.8
v0.4.9
prio_callout mpath_prio_emc /dev/%n
prio emc
60
Множественное связывание
устройств (DM-Multipath)
v0.4.8
v0.4.9
prio_callout mpath_prio_alua /dev/%n
prio alua
prio_callout mpath_prio_netapp /dev/%n
prio netapp
prio_callout mpath_prio_rdac /dev/%n
prio rdac
prio_callout mpath_prio_hp_sw /dev/%n
prio hp_sw
prio_callout mpath_prio_hds_modular %b
prio hds
Поскольку разборщик файла настройки множественного связывания
разбирает все пары ключ/значение, которые находит и затем использует,
безопасно совместное использование prio_callout с prio, и рекомендуется
вставлять атрибуты prio до начала миграции. После этого вы можете
безопасно удалить унаследованные атрибуты prio_calliout без прерывания
работы сервиса.
1.2. Обзор
DM-Multipath может быть использован для обеспечения:
Избыточности. DM-Multipath может предоставлять обход отказа в
активной/пассивной настройке. В активной/пассивной настройке только
половина путей используется в определённые моменты времени для
ввода/вывода. Если какой-то элемент пути ввода/вывода (кабель,
переключатель или контроллер) повреждён, DM-Multipath переключается
на альтернативный маршрут.
Улучшенной производительности. Работа DM-Multipath может быть
настроена в активно/активном режиме, где ввод/вывод распределяется
между путями в циклическом режиме. При некоторых конфигурациях DM-
Multipath может определять загрузку путей ввода/вывода и динамически
её балансировать.
1.3. Обзор массивов носителей
По умолчанию DM-Multipath содержит поддержку большинства массивов
носителей, которые поддерживают DM-Multipath. Поддерживаемые
устройства могут быть найдены в файле multipath.conf.defaults. Если ваш
массив носителей поддерживает DM-Multipath и не настроен по умолчанию
в этом файле, вам может понадобиться добавить его в файл настройки
DM-Multipath multipath.conf. Для информации по конфигурационному
файлу DM-Multipath смотрите раздел The DM-Multipath Configuration
File. Некоторые массивы носителей требуют специального управления
ошибками ввода/вывода и переключением маршрутов. Они требуют
отдельных обработчиков оборудования модулей ядра.
61
Множественное связывание
устройств (DM-Multipath)
1.4. Компоненты DM-Multipath
Таблица Компоненты DM-Multipath описывает компоненты пакета DM-
Multipath.
Таблица 5.2. Компоненты DM-Multipath
Компонент
Описание
модуль ядра
Перенаправляет ввод/вывод и поддерживает обход
dm_multipath
failover для маршрута и группы маршрутов.
команда
Перечисляет и настраивает устройства multipath.
multipath
Обычно стартует с /etc/rc.sysinit, но может также
подниматься программой udev всякий раз, когда
добавляется блоковое устройство, или она может быть
запущена файловой системой initramfs.
сервис multipathd
Отслеживает маршруты; когда маршрут повреждается
и восстанавливается, он может инициировать
переключатели групповых путей. Обеспечивает
интерактивные изменения устройств multipath.
Этот сервис должен быть перезапущен после любых
изменений файла /etc/multipath.conf для применения.
команда kpartx
Создаёт устройство переопределения устройств для
разделов на устройстве. Необходимо использовать
эту команду для DOS-совместимых разделов с DM-
Multipath. Команда kpartx поставляется в своем
собственном пакете, но пакет multipath-tools имеет
на него зависимость.
1.5. Настройка DM-Multipath
DM-Multipath содержит встроенные настройки по умолчанию, которые
подходят для общих конфигураций множественного связывания. Установка
DM-Multipath - обычно достаточно простая процедура. Основная процедура
по настройке вашей системы с использованием DM-Multipath следующая:
1. Установите пакеты multipath-tools и multipath-tools-boot.
2. Создайте пустой настроечный файл /etc/multipath.conf, который
переопределит следующее
3. Если необходимо, отредактируйте конфигурационный файл
multipath.conf для изменения значений по умолчанию и сохраните его.
4. Запустите сервис multipath
5. Обновите изначальный ramdisk
62
Множественное связывание
устройств (DM-Multipath)
Для детальных инструкций по настройке multipath смотрите раздел Setting
Up DM-Multipath.
63
Множественное связывание
устройств (DM-Multipath)
2. Множественные устройства
Без DM-Multipath каждый канал от серверного узла к контроллеру
накопителя рассматривается системой как отдельное устройство, даже
когда канал ввода/вывода соединяет тот же сервер с тем же контроллером
накопителя. DM-Multipath предоставляет возможность организации
каналов ввода/вывода локально через создание единого устройства
множественного связывания поверх основных устройств.
2.1. Идентификаторы устройств множественного
связывания
Каждое устройство множественного связывания имеет международный
идентификатор (WWID), который гарантирует глобальную уникальность
и неизменность. По умолчанию в имя устройства множественного
связывания вставляется его WWID. В качестве альтернативы вы можете
установить опцию user_friendly_names в конфигурационном файле,
который предписывает DM-Multipath использовать алиас node-unique формы
mpathn в качестве имени. Например, узел с двумя адаптерами шины (HBA),
подключенными к контроллеру накопителя с двумя портами через единый
беззоновый волоконный канал (FC), увидит четыре устройства: /dev/sda,
/dev/sdb, /dev/sdc и /dev/sdd. DM-Multipath создаёт единое устройство
с уникальным WWID, которое перенаправляет ввод/вывод на эти четыре
зависимых устройства в зависимости от конфигурации. Когда настроечная
опция user_friendly_names установлена в yes, имя множественного
устройства устанавливается в mpathn. Когда новые устройства попадают
под управление DM-Multipath, их можно увидеть в двух разных местах в
каталоге /dev: /dev/mapper/mpathn и /dev/dm-n.
• Устройства в /dev/mapper создаются раньше в процессе загрузки.
Используйте эти имена для доступа к множественным устройствам,
например, при создании логических томов.
• Устройства в виде /dev/dm-n только для внутреннего использования и
никогда не должны использоваться.
Для информации о настройках по умолчанию для множественных
устройств, включая опцию настройки user_friendly_names, смотрите
раздел “Конфигурационный файл DM-Multipath”. Кроме того, вы можете
назначить имя устройства multipath таким, какое вы выбрали с помощью
параметра alias в разделе multipaths конфигурационного файла
multipath. Для получения более полной информации о разделе multipaths
конфигурационного файла multipath см. раздел “Атрибуты множественных
устройств”.
64
Множественное связывание
устройств (DM-Multipath)
2.2. Согласованные имена множественных устройств в
кластере
Когда опция user_friendly_names установлена в yes, имя множественного
устройства уникально для узла, но не гарантируется то же самое на всех
узлах, использующих это устройство. Также, если вы установили опцию
alias для устройства в секции multipaths конфигурационного файла
multipath.conf, имя не будет автоматически согласовано со всеми узлами
кластера. Это не вызовет сложностей при использовании LVM для создания
логических устройств на множественном устройстве, но если вам требуется
согласовать имена множественных устройств на всех узлах, рекомендуется
оставить user_friendly_names значение no и не настраивать алиасы для
устройств. По умолчанию, если у вас не установлено user_friendly_names
в yes и не настроен алиас для устройства, имя для этого устройства
будет совпадать с WWID, которое всегда одно и то же. Если же вы хотите
согласованные дружественные имена, определяемые системой для всех
узлов в кластере, следуйте данной процедуре:
1. Установите все множественные устройства на одной машине.
2. Заблокируйте все ваши множественные устройства на других машинах,
выполнив команды:
# service multipath-tools stop
# multipath -F
3. Скопируйте файл /etc/multipath/bindings с первой машины на все
остальные в кластере.
4. Восстановите работу сервиса multipathd на всех остальных машинах
командой:
# service multipath-tools start
Если вы добавляете новое устройство, вам потребуется повторить этот
процесс.
Таким же образом, если вы настроили алиас для устройства, который
хотите согласовать на всех узлах в кластере, вам надо убедиться, что файл
/etc/multipath.conf один и тот же на всех узлах кластера, следуя такой же
процедуре:
1. Настройте алиасы для множественных устройств в файле multipath.conf на
одной машине.
2. Заблокируйте все ваши множественные устройства на других машинах,
выполнив команды:
# service multipath-tools stop
# multipath -F
65
Множественное связывание
устройств (DM-Multipath)
3. Скопируйте файл multipath.conf с первой машины на все остальные в
кластере.
4. Восстановите работу сервиса multipathd на всех остальных машинах
командой:
# service multipath-tools start
Если вы добавляете новое устройство, вам потребуется повторить процесс.
2.3. Атрибуты множественных устройств
В дополнение к опциям user_friendly_names и alias, множественные
устройства имеют ряд атрибутов. Вы можете изменить эти атрибуты
для определённых multipaths, создавая секции этих устройств в секции
multipath конфигурационного файла. Для информации по секции
multipaths конфигурационного файла смотрите раздел "Атрибуты
множественности в файле конфигурации".
2.4. Множественные устройства в логических томах
После создания множественных устройств вы можете использовать их
имена так же, как и имя физического устройства при создании физических
томов LVM. Например, если имя множественного устройства /dev/mapper/
mpatha, следующая команда пометит /dev/mapper/mpatha как физический
том:
# pvcreate /dev/mapper/mpatha
Вы можете использовать полученный физический том LVM при создании
группы томов LVM так же, как вы использовали бы другое физическое
устройство.
Если вы пытаетесь создать физический том LVM на всё устройство,
на котором у вас сконфигурированы разделы, команда pvcreate
приведёт к ошибке.
Когда вы создаёте логический том LVM, который использует массив
носителей как активно/пассивное множественное устройство в качестве
зависимых физических устройств, вы должны включить фильтры в
lvm.conf для исключения дисков, на которых основано множественное
устройство. Это нужно для ситуации, когда массив автоматически меняет
активный маршрут на пассивный при получении [ошибки] ввода/вывода и
множественное устройство будет обходить ошибку и восстанавливаться
после сбоя всякий раз, как LVM сканирует пассивный маршрут, если
устройство не отфильтровано. Для активно/пассивных массивов, которые
требуют команду для перевода пассивного маршрута в активное
66
Множественное связывание
устройств (DM-Multipath)
состояние, LVM каждый раз выводит предупреждение. Для фильтрования
всех SCSI устройств в конфигурационном файле LVM (lvm.conf), включите
следующий фильтр в секцию devices файла:
filter = [ "r/block/", "r/disk/", "r/sd.*/", "a/.*/" ]
После изменений в /etc/lvm.conf, необходимо обновить initrd так, чтобы этот
файл был скопирован туда, где фильтры имеют максимальную важность,
во время загрузки. Выполните:
update-initramfs -u -k all
Каждый раз, когда меняется /etc/lvm.conf или /etc/multipath.conf, initrd
должен быть создан заново для отражения этих изменений. Это
обязательно, когда «чёрные списки» и фильтры необходимы для
поддержания стабильной настройки хранилища.
67
Множественное связывание
устройств (DM-Multipath)
3. Обзор установки DM-Multipath
Эта секция предоставляет пример пошаговых процедур для настройки DM-
Multipath. Она включает следующие процедуры:
• Общая настройка DM-Multipath
• Игнорирование локальных дисков
• Добавление дополнительных устройств в конфигурационный файл
3.1. Настройка DM-Multipath
До проведения настройки DM-Multipath на вашей системе убедитесь,
что система обновлена и содержит пакет multipath-tools. Если
предусматривается загрузка с внешнего хранилища (SAN), также
потребуется пакет multipath-tools-boot.
Наличие файла /etc/multipath.conf не является обязательным. Когда
multpath запускается без /etc/multipath.conf, он ищет в своей внутренней
базе подходящую конфигурацию, а также копирует данные из внутреннего
«черного списка». Если после запуска multipath -ll без конфигурационного
файла не будет обнаружено ни одного множественного устройства
(multipaths), то необходимо провести расширенный анализ для
определения причин, из-за которых множественные устройства не были
созданы. Есть смысл изучить документацию производителей внешних
хранилищ (SAN), примеры конфигурационных файлов для multipath,
которые находятся в /usr/share/doc/multipath-tools/examples, а также
проанализировать используемую база multipathd:
# echo 'show config' | multipathd -k > multipath.conf-live
В случае причудливой работы multipathd, без создания /etc/
multipath.conf, предыдущая команда ничего не вернёт, поскольку это
будет результатом объединения /etc/multipath.conf с базой в памяти.
Для исправления этого либо создайте пустой /etc/multipath.conf,
используя touch, либо создайте его, переопределив значения по
умолчанию:
defaults {
user_friendly_names no
}
и перезапустив multipathd:
# service multipath-tools restart
Теперь "show config" будет возвращать актуальную базу.
68
Множественное связывание
устройств (DM-Multipath)
3.2. Установка с поддержкой множественных устройств
Для включения поддержки множественных устройств в процессе
установки1 используйте
install disk-detect/multipath/enable=true
по запросу установщика. Если множественные устройства найдутся, во
время установки они будут показаны как /dev/mapper/mpath<X>.
3.3. Игнорирование локальных дисков при создании
множественных устройств
Некоторые машины имеют локальные SCSI карты для своих внутренних
дисков. DM-Multipath не рекомендуется для таких устройств. Следующая
процедура покажет как изменить настройку multipath для игнорирования
локальных дисков.
1. Определите, какие диски являются внутренними, и отметьте их в
«чёрном списке». В этом примере /dev/sda является внутренним диском.
Обратите внимание, что в соответствии с изначальной настройкой в
конфигурационном файле multipath, выполнение multipath -v2 покажет
локальный диск /dev/sda в списке множественных устройств. Для
дополнительной информации по выводу команды multipath смотрите
раздел “Multipath Command Output”.
# multipath -v2
create: SIBM-ESXSST336732LC____
F3ET0EP0Q000072428BX1 undef WINSYS,SF2372
size=33 GB features="0" hwhandler="0" wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 0:0:0:0 sda 8:0
[---------
device-mapper ioctl cmd 9 failed: Invalid argument
device-mapper ioctl cmd 14 failed: No such device or address
create: 3600a0b80001327d80000006d43621677 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running
create: 3600a0b80001327510000009a436215ec undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running
69
Множественное связывание
устройств (DM-Multipath)
create: 3600a0b80001327d800000070436216b3 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running
create: 3600a0b80001327510000009b4362163e undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:3 sdd 8:64 undef ready running
`- 3:0:0:3 sdg 8:128 undef ready running
2. Для исключения из списка устройства /dev/sda при использовании
multipath, отредактируйте секцию blacklist файла /etc/multipath.conf
для включения в неё этого устройства. Вы можете заблокировать
устройство sda используя тип devnode, что не является безопасной
процедурой, поскольку с этого момента не гарантируется, что /dev/sda
будет тем же после перезагрузки. Для блокирования индивидуальных
устройств, лучше использовать их WWID. Обратите внимание, что в
выводе команды multipath -v2 WWID устройства /dev/sda указан как
SIBM-ESXSST336732LC____
F3ET0EP0Q000072428BX1. Для блокирования
этого устройства, включите следующее в файл /etc/multipath.conf.
blacklist {
wwid SIBM-ESXSST336732LC____
F3ET0EP0Q000072428BX1
}
3. После изменений файла /etc/multipath.conf, вы должны вручную дать
команду сервису multipathd перечитать конфигурационный файл.
Следующая команда применит настройки из изменённого /etc/
multipath.conf.
# service multipath-tools reload
4. Запустите следующую команду для удаления множественного
устройства:
# multipath -f SIBM-ESXSST336732LC____
F3ET0EP0Q000072428BX1
5. Чтобы проверить, что удаление устройства сработало, вы можете
запустить команду multipath -ll для просмотра текущей конфигурации
multipath. Для информации по команде multipath -ll смотрите раздел
“Multipath Queries with multipath Command”. Чтобы проверить, что
устройства из «чёрного списка» не добавлены снова, вы можете
выполнить команду multipath, как в приведённом примере. Команда
multipath по умолчанию использует уровень пояснений v2, если не
используется опция -v.
70
Множественное связывание
устройств (DM-Multipath)
# multipath
create: 3600a0b80001327d80000006d43621677 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:0 sdb 8:16 undef ready running
`- 3:0:0:0 sdf 8:80 undef ready running
create: 3600a0b80001327510000009a436215ec undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:1 sdc 8:32 undef ready running
`- 3:0:0:1 sdg 8:96 undef ready running
create: 3600a0b80001327d800000070436216b3 undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:2 sdd 8:48 undef ready running
`- 3:0:0:2 sdg 8:112 undef ready running
create: 3600a0b80001327510000009b4362163e undef WINSYS,SF2372
size=12G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
|- 2:0:0:3 sdd 8:64 undef ready running
`- 3:0:0:3 sdg 8:128 undef ready running
3.4. Настройка устройств массивов хранения
По умолчанию DM-Multipath включает поддержку большинства массивов
хранения, которые поддерживают работу с DM-Multipath. Значения
конфигурационных параметров по умолчанию, включая поддерживаемые
устройства, могут быть найдены в файле multipath.conf.defaults.
Если вам нужно добавить устройство, не поддерживаемое по умолчанию,
отредактируйте файл /etc/multipath.conf для добавления информации о
требуемом устройстве.
Например, при добавлении информации о HP Open-V series запись будет
выглядеть так, где %n - имя устройства:
devices {
device {
vendor "HP"
product "OPEN-V."
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
}
}
Для дополнительной информации смотрите раздел Устройства в файле
конфигурации [83].
71
Множественное связывание
устройств (DM-Multipath)
4. Конфигурационный файл DM-Multipath
По умолчанию DM-Multipath предоставляет конфигурации для большинства
множественных устройств. В дополнение к этому DM-Multipath включает
поддержку большинства массивов хранения, которые поддерживают
DM-Multipath. Значения конфигураций по умолчанию и поддерживаемые
устройства можно найти в файле multipath.conf.defaults.
Вы можете переопределить настроенные значения по умолчанию для
DM-Multipath, изменив конфигурационный файл /etc/multipath.conf. Если
необходимо, вы можете также добавить массив хранения, который не
поддерживается по умолчанию, в конфигурационный файл. Эта глава
предоставляет информацию по разбору и изменению файла multipath.conf.
Она содержит следующие разделы:
Обзор файла конфигурации [72]
"Чёрный список" в файле конфигурации [73]
Значения по умолчанию в файле конфигурации [75]
Атрибуты множественности в файле конфигурации [81]
Устройства в файле конфигурации [83]
В файле конфигурации multipath вам нужно определить только те
секции, которые вам потребуются для ваших настроек или те, для
которых вы захотите изменить значения по умолчанию, определённые в
multipath.conf.defaults. Если в файле присутствуют секции, не относящиеся
к вашему оборудованию, или для которых вы не хотите менять значения
по умолчанию, вы можете оставить их закомментированными, как в
изначальном файле.
Файл конфигурации допускает синтаксис регулярных выражений.
Версию конфигурационного файла с комментариями можно найти в архиве
/usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz.
4.1. Обзор файла конфигурации
Конфигурационный файл multipath разделяется на следующие секции:
blacklist
Перечисляет специфические устройства, которые не принимаются во
внимание multipath.
blacklist_exceptions
Перечисляет кандидатов в множественные устройства, которые иначе
будут блокироваться согласно параметрам секции blacklist.
72
Множественное связывание
устройств (DM-Multipath)
defaults
Общие настройки по умолчанию для DM-Multipath.
multipath
Параметры настроек по характеристикам отдельных множественных
устройств. Эти значения переопределяют те, что определены в секциях
defaults и devices.
devices
Параметры настроек для отдельных контроллеров хранилищ. Эти
значения переопределяют те, что определены в секции defaults. Если
вы используете дисковый массив, который не поддерживается по
умолчанию, вам может потребоваться создать для него подсекцию в
разделе devices.
Когда система определяет атрибут множественного устройства, сначала
она ищет совпадения в секции multipath, потом в devices, и только затем
использует значения по умолчанию.
4.2. "Чёрный список" в файле конфигурации
Секция blacklist конфигурационного файла multipath определяет
устройства, которые не будут использоваться, когда система настраивает
множественные устройства. Устройства, внесённые в список блокировки,
не будут группироваться в множественные устройства.
• Если вам действительно нужно заблокировать устройства, вы можете
сделать это, используя следующие критерии:
• По WWID, как описано в разделе Блокировка по WWID [73]
• По имени устройства, как описано в разделе Блокировка по имени
устройства [74]
• По типу устройства, как описано в разделе Блокировка по типу
устройства [74]
По умолчанию множество типов устройств блокируются даже если вы
комментируете изначальную секцию blacklist конфигурационного файла.
Для информации смотрите Блокировка по имени устройства [74]
4.2.1. Блокировка по WWID
Вы можете задать определённые устройства для блокирования по их
международному идентификатору (WWID) с использованием метки wwid в
секции blacklist конфигурационного файла.
Следующий пример показывает строки конфигурационного файла, которые
будут блокировать устройство с WWID 26353900f02796769.
73
Множественное связывание
устройств (DM-Multipath)
blacklist {
wwid 26353900f02796769
}
4.2.2. Блокировка по имени устройства
Вы можете заблокировать типы устройств по их именам так, что они не
будут использоваться для группировки в множественные устройства, задав
метку devnode в секции blacklist.
Следующий пример показывает строки конфигурационного файла, которые
заблокируют все SCSI устройства, поскольку они блокируют все устройства
sd*.
blacklist {
devnode "^sd[a-z]"
}
Вы можете использовать метку devnode в секции blacklist для
определения отдельных блокируемых устройств вместо всех устройств
определенного типа. Тем не менее, это не рекомендуется, поскольку,
несмотря на то, что они статично определены в правилах udev, нет
гарантии что определённое устройство будет иметь то же имя после
перезагрузки. Например, после перезагрузки имя устройства может
поменяться с /dev/sda на /dev/sdb.
По умолчанию следующие метки devnode включены в список
blacklist. Устройства, определяемые в этой секции, как правило не
поддерживают DM-Multipath. Чтобы разрешить любое из перечисленного
при создании множественных устройств, вы можете определить их
в секции blacklist_exceptions как показано в разделе Исключения
блокировки [75]
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
4.2.3. Блокировка по типу устройства
Вы можете определить отдельные типы устройств в секцию blacklist
файла конфигурации с помощью секций device. Следующий пример
блокирует все устройства IBM DS4200 и любые производства HP.
blacklist {
device {
74
Множественное связывание
устройств (DM-Multipath)
vendor "IBM"
product "3S42"
#DS4200 Product 10
}
device {
vendor "HP"
product "*"
}
}
4.2.4. Исключения блокировки
Вы можете использовать секцию blacklist_exceptions конфигурационного
файла для разрешения множественных устройств, заблокированных по
умолчанию.
Например, если у вас множество устройств и вы хотите разрешить только
одно из них (с WWID 3600d0230000000000e13955cc3757803), вместо того,
чтобы блокировать каждое из них отдельно за исключением требуемого,
можно заблокировать все и затем разрешить только одно, добавив
следующие строки в файл /etc/multipath.conf.
blacklist {
wwid "*"
}
blacklist_exceptions {
wwid "3600d0230000000000e13955cc3757803"
}
Когда добавляете устройства в секцию blacklist_exceptions
конфигурационного файла, вы должны указывать исключения тем же
способом, что и в секции blacklist. Например, исключение по WWID не
сработает для устройств, определённых в blacklist с помощью devnode,
даже если заблокированное устройство ассоциируется с данным WWID.
Точно так же исключения по devnode применимы только к меткам devnode,
а исключения по device - к меткам device.
4.3. Значения по умолчанию в файле конфигурации
Файл конфигурации /etc/multipath.conf включает секцию defaults, которая
устанавливает параметр user_friendly_names в yes, как показано ниже:
defaults {
user_friendly_names yes
}
Это переопределяет значение параметра user_friendly_names по
умолчанию.
75
Множественное связывание
устройств (DM-Multipath)
Конфигурационный файл содержит шаблоны настроек по умолчанию. Эта
секция комментируется как показано ниже:
#defaults {
#
udev_dir
/dev
#
polling_interval
5
#
selector
"round-robin 0"
#
path_grouping_policy
failover
#
getuid_callout
"/lib/dev/scsi_id --whitelisted --device=/dev/%n"
# prio
const
# path_checker directio
# rr_min_io
1000
# rr_weight
uniform
# failback manual
# no_path_retry fail
# user_friendly_names no
#}
Для переопределения значения по умолчанию любого настраиваемого
параметра вы можете скопировать соответствующую строку из этого
шаблона в секцию defaults и снять комментарий. Например, чтобы
переустановить параметр path_grouping_policy в multibus вместо
определённого по умолчанию failover, скопируйте соответствующую
строку из шаблона и раскомментируйте ее, как показано ниже:
defaults {
user_friendly_names
yes
path_grouping_policy
multibus
}
Таблица Настройки Multipath по умолчанию [76] определяет атрибуты,
которые устанавливаются в секции defaults файла multipath.conf. Эти
значения используются DM-Multipath, если они не переопределены
атрибутами, заданными в секциях devices и multipaths в файле
multipath.conf.
Таблица 5.3. Настройки Multipath по умолчанию
Атрибут
Описание
polling_interval
Определяет интервал между двумя проверками
маршрутов в секундах. Для правильной работы
маршрутов, проверки постепенно увеличиваются
до значения (4 * polling_interval). Значение по
умолчанию 5.
udev_dir
Каталог, где создаются узлы устройств udev. По
умолчанию /dev.
76
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
multipath_dir
Каталог, где сохраняются динамические объекты
общего доступа. Значение по умолчанию зависит от
системы, обычно /lib/multipath.
verbosity
Значение уровня комментариев по умолчанию.
Большее значение увеличивает количество
комментариев. Допустимые значения от 0 до 6.
Значение по умолчанию 2.
path_selector
Определяет алгоритм определения следующего
маршрута ввода/вывода по умолчанию. Возможные
значения:
round-robin 0: Цикл по всем маршрутам в группе
маршрутов, посылая одинаковый поток в каждый.
queue-length 0: Посылать следующую порцию
данных по маршруту с наименьшим количеством
невыполненных запросов.
service-time 0: Посылать следующую порцию
данных по маршруту с наименьшими задержками,
которые определяются делением общего объема
невыполненного ввода/вывода на каждом маршруте
на их относительную пропускную способность.
Значение по умолчанию round-robin 0.
path_grouping_poli
Оyпределяет политику группирования маршрутов
по умолчанию для заранее неопределенных
множественных устройств. Допустимые значения:
failover = 1 маршрут на приоритетную группу
multibus = 1 все доступные маршруты на
приоритетную группу
group_by_serial = 1 приоритетная группа на
обнаруженный серийный номер
group_by_prio = 1 приоритетная группа на значение
приоритета маршрута
group_by_node_name = 1 приоритетная группа на
целевое имя узла
Значение по умолчанию failover.
77
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
getuid_callout
Определяет программу и аргументы для получения
уникального идентификатора маршрута. Требуется
абсолютный адрес маршрута.
Значение по умолчанию /lib/udev/scsi_id --whitelisted
--device=/dev/%n.
prio
Определяет функцию вызова для определения
значения приоритета маршрута. Например, биты ALUA
в спецификации SPC-3 обеспечивают приемлемое
значение prio. Возможные значения:
const: Устанавливает приоритет 1 для всех
маршрутов.
emc: Генерирует приоритет маршрута для массивов
EMC.
alua: Генерирует приоритет маршрута на основе
установок ALUA для SCSI-3.
netapp: Генерирует приоритет маршрута для
массивов NetApp.
rdac: Генерирует приоритет маршрута для
контроллеров LSI/Engenio RDAC.
hp_sw: Генерирует приоритет маршрута для
контроллеров Compaq/HP в активно/резервном
режиме.
hds: Генерирует приоритет маршрута для дисковых
массивов Hitachi HDS Modular.
Значение по умолчанию const.
prio_args
Строка аргументов, передаваемая в функцию prio.
Большинство функций prio не требуют аргументов.
Установщик приоритетов datacore требует один.
Например, "timeout=1000 preferredsds=foo".
Значение по умолчанию (null) "".
features
Дополнительные особенности множественных
устройств. Единственная существующая опция
- это queue_if_no_path, аналогичная установке
no_path_retry для queue. Для дополнительной
информации по проблемам, которые могут возникнуть
при использовании этой опции, смотрите секцию
"Issues with queue_if_no_path feature".
78
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
path_checker
Определяет метод по умолчанию для получения
статуса маршрута. Возможные значения:
readsector0: Читает первый сектор устройства.
tur: Передает TEST UNIT READY устройству.
emc_clariion: Запрашивает у EMC Clariion
специфическую страницу EVPD 0xC0.
hp_sw: Определяет статус маршрута массива
носителей HP с использованием микропрограммного
статуса Активный/Резервный.
rdac: Определяет статус маршрута для контроллера
хранилища.
directio: Использует прямое чтение первого сектора.
Значение по умолчанию directio.
failback
Управляет восстановлением после сбоя на группе
маршрутов.
• Значение immediate определяет немедленное
восстановление приоритета до высшего у группы
маршрутов, которая содержит активные маршруты.
manual предписывает, что не нужно немедленно
восстанавливаться после сбоя и что восстановление
может произойти только при вмешательстве
оператора.
• Числовое значение больше 0 определяет
восстановление после указанного количества
секунд.
Значение по умолчанию manual.
rr_min_io
Определяет количество запросов ввода/вывода для
переключения маршрута на другой в текущей группе
маршрутов.
Значение по умолчанию 1000.
rr_weight
Если указано priorities, то вместо отправки rr_min_io
запросов до переключения маршрута, количество
запросов определяется path_selector, умноженное
на приоритет маршрута, определяемый функцией
rr_min_io. Если указано uniform, то все маршруты
имеют одинаковый вес.
79
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
Значение по умолчанию uniform.
no_path_retry
Числовое значение для этого атрибута определяет
количество попыток системы использовать
поврежденный маршрут до отключения. Значение
immediate указывает на немедленное отключение,
без запросов. Значение queue указывает
на безостановочный опрос маршрута до его
восстановления.
Значение по умолчанию 0.
user_friendly_name
Если установлено yes, означает, что система
использует файл /etc/multipath/bindings для назначения
постоянного и уникального псевдонима alias для
множественного устройства multipath в виде mpathn.
Если указано no, система будет использовать WWID в
качестве alias для multipath. В обоих случаях то, что
указано здесь может быть переопределено в секции
multipaths конфигурационного файла.
Значение по умолчанию no.
queue_without_dae
сли установлено no, сервис multipathd отключит
опрос всех устройств, когда они выключены.
Значение по умолчанию yes.
flush_on_last_del
Если установлено yes, то multipath отключит опрос
устройства, когда последний маршрут к нему будет
удален.
Значение по умолчанию no.
max_fds
Устанавливает максимальное количество
дескрипторов, которое может быть открыто multipath
и сервисом multipathd. Это эквивалент команде
ulimit -n. Значение максимума установится в качестве
системного ограничения в файле /proc/sys/fs/nr_open.
Если значение не установлено, максимальное
количество дескрипторов открытых файлов берется
из вызывающего процесса, обычно значение равно
1024. Для безопасности, стоит установить значение
по максимальному количеству путей + 32, если это
значение больше 1024.
80
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
checker_timer
Ограничение по времени для проверок маршрутов,
которое выдают SCSI команды с заданным таймаутом,
в секундах.
Значение по умолчанию берется из /sys/block/sdx/
device/timeout, которое установлено в 30 сек. для
выпуска Ubuntu 12.04 LTS.
fast_io_fail_tmo
Количество секунд, которое интерфейс SCSI будет
ждать после обнаружения проблемы на удаленном
порту оптического канала (FC) до установки состояния
падения устройства ввода/вывода по этому порту.
Это значение должно быть меньше, чем значение
dev_loss_tmo. Установка значения off выключает
ограничение по времени.
Значение по умолчанию зависит от операционной
системы.
dev_loss_tmo
Количество секунд, которое интерфейс SCSI будет
ждать после обнаружения проблемы на удаленном
порту оптического канала (FC) до удаления его
из системы. При установке значения infinity будет
использован интервал в 2147483647 сек. (68 лет).
Значение по умолчанию зависит от операционной
системы.
4.4. Атрибуты множественности в файле конфигурации
Таблица Атрибуты множественности [81] содержит перечень атрибутов,
которые вы можете установить для каждого отдельного множественного
устройства в секции multipaths конфигурационного файла multipath.conf.
Эти атрибуты применяются только к одному конкретному множественному
устройству. Эти значения по умолчанию используются DM-Multipath и
переопределяют атрибуты, установленные в секциях defaults и devices
файла multipath.conf.
Таблица 5.4. Атрибуты множественности
Атрибут
Описание
wwid
Указывает WWID устройства multipath, для которого
применяется атрибут multipath. Этот параметр
обязательный для этой секции файла multipath.conf.
81
Множественное связывание
устройств (DM-Multipath)
Атрибут
Описание
alias
Определяет символическое имя для устройства
multipath, для которого применяется атрибут
multipath. Если вы используете user_friendly_names,
не устанавливайте это значение в mpathn. Это
может привести к конфликту с автоматически
присвоенным дружественным именем и предоставить
вам некорректные имена устройств.
В дополнение следующие параметры могут быть переопределены в секции
multipath section
path_grouping_policy
path_selector
failback
prio
prio_args
no_path_retry
rr_min_io
rr_weight
flush_on_last_del
Следующий пример показывает множественные атрибуты, определённые в
конфигурационном файле для двух отдельных множественных устройств.
Первое устройство имеет WWID 3600508b4000156d70001200000b0000 и
символическое имя yellow.
Второе устройство в примере имеет WWID of 1DEC_____
321816758474 и
символическое имя red. В этом примере атрибут rr_weight установлен в
значение priorities.
multipaths {
multipath {
wwid
3600508b4000156d70001200000b0000
alias
yellow
path_grouping_policy multibus
path_selector
"round-robin 0"
failback
manual
rr_weight
priorities
no_path_retry
5
}
multipath {
wwid
1DEC_____
321816758474
alias
red
rr_weight
priorities
82
Множественное связывание
устройств (DM-Multipath)
}
}
4.5. Устройства в файле конфигурации
Таблица Атрибуты устройств [84] показывает атрибуты, которые
вы можете поставить для каждого отдельного дискового массива в
секции devices конфигурационного файла multipath.conf. Эти атрибуты
используются DM-Multipath пока не будут переопределены в секции
multipaths файла multipath.conf для маршрутов, которые включают это
устройство. Эти атрибуты переопределяют наборы атрибутов в секции
defaults файла multipath.conf.
Многие устройства, поддерживающие множественные маршруты,
включены по умолчанию в настройки multipath. Значения для
устройств, поддерживаемых по умолчанию, перечислены в файле
multipath.conf.defaults. Возможно, вам не потребуется изменять значения для
этих устройств, но если потребуется, вы можете переопределить значения
по умолчанию, включив метки в файл конфигурации для устройства,
которые переопределят эти значения. Вы можете скопировать значения по
умолчанию из multipath.conf.annotated.gz или, если предпочитаете короткий
конфигурационный файл, из файла multipath.conf.synthetic для нужного
устройства и перезаписать значения, которые вы хотите изменить.
Для добавления в эту секцию конфигурационного файла устройства,
которое не настроилось автоматически по умолчанию, вы должны
установить параметры vendor и product. Вы можете найти эти значения,
просматривая /sys/block/device_name/device/vendor и /sys/block/
device_name/device/model, где device_name - это устройство, требующее
настройки множественности, как в следующем примере:
# cat /sys/block/sda/device/vendor
WINSYS
# cat /sys/block/sda/device/model
SF2372
Дополнительные параметры для определения зависят от специфических
устройств. Если устройство активно/активное, вам, как правило, не
требуется устанавливать дополнительные параметры. Возможно вы
захотите установить path_grouping_policy в multibus. Другие параметры,
которые вы, возможно, захотите определить - это no_path_retry and
rr_min_io, как описано в таблице Атрибуты множественности [81].
Если устройство активно/пассивное, но автоматически переключает
маршруты ввода/вывода на пассивный маршрут, вам потребуется изменить
83
Множественное связывание
устройств (DM-Multipath)
функцию проверки на ту, которая не посылает поток ввода/вывода для
проверки работоспособности (иначе ваше устройство будет постоянно
находиться в состоянии сбоя). Это также всегда подразумевает, что вы
установили path_checker в tur; это работает для всех SCSI устройств,
которые поддерживают команду Test Unit Ready, а таких большинство.
Если устройство требует специальной команды для переключения
маршрутов, то настройка этого устройства требует модуля ядра для
управления оборудованием. Доступный в данное время обработчик - это
emc. Если это не подходит для вашего устройства, то, возможно, у вас не
получится настроить устройство для multipath.
Таблица 5.5. Атрибуты устройств
Атрибут
Описание
vendor
Указывает название производителя устройства
хранения информации, к которому применяются
атрибуты устройства, например, COMPAQ.
product
Определяет имя производителя устройства хранения,
для которого применяют атрибуты, например, HSV110
(C)COMPAQ.
revision
Определяет идентификатор версии устройства
хранения.
product_blacklist
Определяет регулярное выражение для блокировки
устройства по его названию.
hardware_handler
Определяет модуль, который будет использован
для выполнения специфических действий,
когда переключается группа маршрутов или
обнаруживается ошибка ввода/вывода. Возможные
значения включают:
1 emc: обработчик для массивов хранения EMC.
1 alua: обработчик для SCSI-3 массивов ALUA.
1 hp_sw: обработчик для контроллеров Compaq/HP.
1 rdac: обработчик для контроллеров LSI/Engenio
RDAC.
В дополнение следующие параметры могут быть переопределены в секции
device
path_grouping_policy
getuid_callout
path_selector
84
Множественное связывание
устройств (DM-Multipath)
path_checker
features
failback
prio
prio_args
no_path_retry
rr_min_io
rr_weight
fast_io_fail_tmo
dev_loss_tmo
flush_on_last_del
Whenever a hardware_handler is specified, it is your responsibility to
ensure that the appropriate kernel module is loaded to support the
specified interface. These modules can be found in /lib/modules/`uname -
r`/kernel/drivers/scsi/device_handler/ . The requisite module should be
integrated into the initrd to ensure the necessary discovery and failover-
failback capacity is available during boot time. Example,
# cat scsi_dh_alua >> /etc/initramfs-tools/modules
## append module to file
# update-initramfs -u -k all
Следующий пример показывает метку device в конфигурационном файле
multipath:
#devices {
# device {
# vendor
"COMPAQ "
# product
"MSA1000
"
# path_grouping_policy multibus
# path_checker tur
# rr_weight priorities
# }
#}
Пробелы, оставленные в полях vendor, product, и revision имеют
значение, поскольку multipath выполняет прямое сравнение этих
атрибутов, чей формат определён в спецификациях SCSI, особенно команда
Standard INQUIRY2. Когда используются кавычки, поля vendor, product и
revision будут интерпретироваться строго по спецификации. Регулярные
выражения могут интегрироваться в закавыченные строки. Поля, будучи
объявлены без требуемых пробелов, будут скопированы multipath в буфер
85
Множественное связывание
устройств (DM-Multipath)
правильного размера и дополнены требуемым количеством пробелов.
Спецификация ожидает, что всё поле будет заполнено печатаемыми
символами или пробелами, как видно в примере выше:
• vendor: 8 символов
• product: 16 символов
• revision: 4 имвола
Для создания более надёжного файла конфигурации могут быть также
использованы регулярные выражения. Операторы включают ^ $ [ ] . * ?
+. Примеры работающих регулярных выражений могут быть найдены
при исследовании примеров живой базы multipath и файла multipath.conf ,
которые находятся в /usr/share/doc/multipath-tools/examples:
# echo 'show config' | multipathd -k
86
Множественное связывание
устройств (DM-Multipath)
5. Администрирование DM-Multipath и
устранение проблем
5.1. Изменение размера работающего множественного
устройства
Если вам требуется изменить размер работающего множественного
устройства, используйте следующую процедуру:
1. Измените размер вашего физического устройства. Эта операция
зависит от платформы хранилища.
2. Используйте следующую команду для поиска маршрутов для
логического номера узла (LUN):
# multipath -l
3. Измените размер маршрутов. Для SCSI устройств запись 1 в файл rescan
этого устройства заставляет SCSI драйвер обновить информацию, как в
следующей команде:
# echo 1 > /sys/block/device_name/device/rescan
4. Измените размер множественного устройства запуском команды
multipathd:
# multipathd -k 'resize map mpatha'
5. Измените размер файловой системы (предполагается, что не
используется LVM и DOS разделы):
# resize2fs /dev/mapper/mpatha
5.2. Перенос корневой файловой системы с одиночного
устройства на множественное
Это значительно упрощено за счёт использования UUID для идентификации
устройств в качестве естественной метки. Просто установите multipath-
tools-boot и перегрузитесь. Это перестроит изначальный ramdisk и
предоставит multipath возможность построить маршруты до того как
корневая система будет смонтирована по UUID.
Каждое обновление multipath.conf вынуждает initrd запустить
update-initramfs -u -k all. Следствием этого является копирование
multipath.conf на ramdisk и внедрение его для определения
доступных устройств для группирования через их секции blacklist и
device.
87
Множественное связывание
устройств (DM-Multipath)
5.3. Перенос файловой системы подкачки с одиночного
устройства на множественное
Процедура в точности такая же, как приведена в предыдущем разделе
Перенос корневой файловой системы с одиночного устройства на
множественное.
5.4. Сервис Multipath
Если вы испытываете трудности в настройке multipath, вам надо убедиться,
что сервис multipath запущен, как описано в "Настройка DM-Multipath".
Сервис multipathd должен быть запущен для того, чтобы использовать
multipathd устройства. Также смотрите раздел Решение проблем с
помощью интерактивной консоли multipathd касательно взаимодействия с
multipathd, как со средством отладки.
5.5. Проблемы с queue_if_no_path
Если установлены свойства features "1 queue_if_no_path" в файле /
etc/multipath.conf, то любой процесс, использующий ввод-вывод, будет
сбрасываться, пока восстанавливаются один или несколько маршрутов.
Для предотвращения этого установите параметр no_path_retry N в /etc/
multipath.conf.
Когда вы установите параметр no_path_retry, удалите также опции
features "1 queue_if_no_path" из файла /etc/multipath.conf. Однако
если вы используете множественное устройство, для которого опция
features "1 queue_if_no_path" скомпилирована по умолчанию, как для
множества устройств SAN, вам придётся добавить значение features "0" для
переопределения этого умолчания. Вы можете это сделать копированием
существующей секции devices и только этой секции (а не всего файла),
из /usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz в /etc/
multipath.conf и редактированием её по вашим потребностям.
Если вам требуется использовать опцию features "1 queue_if_no_path" и вы
испытываете отмеченные здесь проблемы, используйте команду для
редактирования политики в процессе работы с определенным LUN (т.е.
для каждого недоступного маршрута). Например, если вы хотите изменить
политику для множественного устройства mpathc с "queue_if_no_path" на
"fail_if_no_path" выполните следующую команду:
# dmsetup message mpathc 0 "fail_if_no_path"
Вы должны использовать псевдоним mpathN вместо пути.
88
Множественное связывание
устройств (DM-Multipath)
5.6. Вывод команды multipath
Когда вы создаёте, изменяете или просматриваете множественные
устройства, вы получаете вывод текущих настроек устройства. Формат
показан ниже. Для каждого множественного устройства:
action_if_any: alias (wwid_if_different_from_alias) dm_device_name_if_known vendor,product
size=size features='features' hwhandler='hardware_handler' wp=write_permission_if_known
Для каждой группы маршрутов:
-+- policy='scheduling_policy' prio=prio_if_known
status=path_group_status_if_known
Для каждого маршрута:
`- host:channel:id:lun devnode major:minor dm_status_if_known path_status
online_status
Например, вывод команды multipath может выглядеть следующим образом:
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running
Если маршрут поднят и готов к вводу-выводу, статус маршрута ready
(готов) или ghost (скрытый). Если маршрут погашен, статус faulty
(дефектный) или shaky (шаткий). Статус маршрута обновляется
периодически сервисом multipathd на основе интервала опросов,
определённом в файле /etc/multipath.conf.
Статус dm аналогичен статусу маршрута, но только с точки зрения ядра.
Статус dm имеет два состояния: failed, который аналогичен faulty, и
active, который определяет все остальные состояния. Изредка статусы
маршрута и dm бывают временно несогласованны.
Возможные значения online_status - running и offline. Статус offline
означает, что SCSI устройство отключено.
Когда множественное устройство создаётся или изменяется, статус
группы маршрутов, имя dm устройства, права на запись и dm статус
неизвестны. Также значения бывают не всегда корректны.
5.7. Получение информации через команду multipath
Вы можете использовать опции -l и -ll команды multipath для просмотра
текущей конфигурации multipath. Опция -l показывает топологию multipath,
собранную из информации в sysfs и маршрутизаторе устройств. Опция -ll
89
Множественное связывание
устройств (DM-Multipath)
показывает ту же информацию, что и опция -l, а также дополнительную
информацию по всем остальным доступным компонентам системы.
При выводе конфигурации multipath существуют три уровня детализации,
которые вы можете задавать опцией -v команды multipath. Указание -
v0 приводит к отсутствию вывода. Указание -v1 выводит только имена
созданных или обновлённых множественных устройств, которые вы
можете затем использовать в других утилитах, таких как kpartx. Указание
-v2 печатает все обнаруженные пути, множественные маршруты и
маршрутизаторы устройств.
Уровень verbosity multipath по умолчанию равен 2 и может быть
изменён глобально установкой атрибута verbosity в секции defaults
файла multipath.conf.
Следующий пример показывает пример вывода команды multipath -l.
# multipath -l
3600d0230000000000e13955cc3757800 dm-1 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 6:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 7:0:0:0 sdf 8:80 active ready running
А данный пример показывает вывод команды multipath -ll.
# multipath -ll
3600d0230000000000e13955cc3757801 dm-10 WINSYS,SF2372
size=269G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 19:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 18:0:0:1 sdh 8:112 active ready running
3600d0230000000000e13955cc3757803 dm-2 WINSYS,SF2372
size=125G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 19:0:0:3 sde 8:64 active ready running
`- 18:0:0:3 sdj 8:144 active ready running
5.8. Опции команды multipath
В таблице Полезные опции команды multipath [90] описаны несколько
параметров команды multipath, которые могут быть вам полезны.
Таблица 5.6. Полезные опции команды multipath
Опция
Описание
-l
Показывает текущую настройку multipath,
собранную из sysfs и маршрутизатора устройств.
90

 

 

 

 

 

 

 

 

содержание      ..      1       2         ..

 

//////////////////////////////////////////