-e ssh – этим ключем мы показываем что будем использовать ssh, то есть наш трафик будет шифроваться; -a – работа в режиме архивирования, сохраняются права доступа и информация о владельц
Trang 1Модуль 1 Резервное копирование.
Копирование данных с продакшен-сервера на backup-сервер 7
Перекрестное копирование данных 7
Системы хранения данных 8
Другие носители данных 9
Виды бекапа 9
Схемы ротации бекапов 10
Методы резервирования баз данных 10
RAID – Redundant Array of Independent Disks 11
Типы RAID-массивов 11
Уровни RAID-массивов 12
RAID 0 (Striped Disk Array without Fault Tolerance) 12
RAID 1 (Mirroring & Duplexing) 12
RAID 5 (Independent Data Disks with Distributed Parity Blocks) 13
RAID 1+0 (Very High Reliability with High Performance) 13
RAID 5+0 (High I/O Rates & Data Transfer Performance) 14
Storage Area Network 14
Network Attached Storage 15
Direct Attached Storage 16
Самописный скрипт использующий атрибут mtime файлов 17
Rsync 19
Зеркалируем разделы 21
Amanda 22
Модуль 2 Сетевой интерфейс Linux. Какие файлы влияют на работу сетевого интерфейса 30
DHCP iface 31
Loopback iface 32
Custom iface 32
Практика 33
Маршрутизация 35
Прописываем маршруты 36
Про шлюз 38
Полезные ключи netstat 38
NMAP 40
tcpdump 41
СОДЕРЖАНИЕ Модуль 1 Резервное копирование ду р р Копирование данных с продакшен-сервера на backup-сервер 7
Перекрестное копирование данных 7
Системы хранения данных 8
Другие носители данных 9
Виды бекапа 9
Схемы ротации бекапов 10
Методы резервирования баз данных 10
RAID – Redundant Array of Independent Disks 11
Типы RAID-массивов 11
Уровни RAID-массивов 12
RAID 0 (Striped Disk Array without Fault Tolerance) 12
RAID 1 (Mirroring & Duplexing) 12
RAID 5 (Independent Data Disks with Distributed Parity Blocks) 13
RAID 1+0 (Very High Reliability with High Performance) 13
RAID 5+0 (High I/O Rates & Data Transfer Performance) 14
Storage Area Network k 14 Network Attached Storage 15
Direct Attached Storage 16
Самописный скрипт использующий атрибут mtime файлов 17
Rsync 19
Зеркалируем разделы 21
Amanda 22
Модуль 2 Сетевой интерфейс Linux ду рф Какие файлы влияют на работу сетевого интерфейса 30
DHCP iface 31
Loopback iface 32
Custom iface 32
Практика 33
Маршрутизация 35
Прописываем маршруты 36
Про шлюз 38
Полезные ключи netstat 38
NMAP 40
tcpdump 41
СОДЕРЖАНИЕ
Trang 2Модуль 3 TFTP.
Установка 42
Работа с TFTP 42
Типы пакета 43
Режимы передачи 43
Коды ошибок 43
Клиент tftp 44
Модуль 4 NFS. Установка 45
Настройка 46
Опции конфигурационного файла 47
Дополнительная информация 48
Модуль 5 Install-сервер. Принцип работы 49
DHCP 50
TFTP 51
Syslinux 51
NFS 51
Создаем структуру tftp-сервера добавляем контент на сервер .52
Устанавливаем ОС по сети 52
Автоматизация установки с помощью Kickstart 53
Диагностика 55
Модуль 6 Виртуализация Xen. Что это такое ? 56
Зачем это нужно ? 56
Типы виртуализации 56
Архитектура Xen 58
Причины по которым стоит использовать виртуализацию .58
Настраиваем сервер виртуализации 58
Установка Xen 59
Создание новых виртуальных машин в Xen .60
Работа с виртуальными машинами 61
Производительность виртуальных машин 62
Модуль 3 TFTP ду Установка 42
Работа с TFTP 42
Типы пакета 43
Режимы передачи 43
Коды ошибок 43
Клиент tftp 44
Модуль 4 NFS ду Установка 45
Настройка 46
Опции конфигурационного файла 47
Дополнительная информация 48
Модуль 5 Install-сервер ду р р Принцип работы 49
DHCP 50
TFTP 51
Syslinux 51
NFS 51
Создаем структуру tftp-сервера добавляем контент на сервер .52
Устанавливаем ОС по сети 52
Автоматизация установки с помощью Kickstart 53
Диагностика 55
Модуль 6 Виртуализация Xen ду р у ц Что это такое ? 56
Зачем это нужно ? 56
Типы виртуализации 56
Архитектура Xen 58
Причины по которым стоит использовать виртуализацию .58
Настраиваем сервер виртуализации 58
Установка Xen 59
Создание новых виртуальных машин в Xen .60
Работа с виртуальными машинами 61
Производительность виртуальных машин 62
Trang 3Модуль 7 Subversion.
Архитектура Subversion 63
Протоколы работы с SVN 64
Способы хранения данных 64
Компоненты Subversion 64
Проблема одновременной работы с файлами 64
Рабочий цикл 66
Установка 66
Работаем с репозиторием 66
Получение копии репозитария с удаленного сервера где у вас есть аккаунт 68
Ограничение доступа 69
Работа через Proxy 72
Модуль 8 Apache. Об Apache 73
Установка 73
Настройка 74
Добавляем виртуальный хост 82
Возможные опции в директиве Options 84
Определение возможных директив в htaccess 85
Аутентификация на сайте 86
Включение SSL 87
Server-status и server-info 90
SSI 91
Использование mod_rewrite 91
Регулярные выражения mod_rewrite и флаги 93
Коды веб-сервера 94
Модуль 9 SAMBA. Что такое SAMBA и зачем она нужна ? 104
Возможности SAMBA 104
Установка 104
Типы аутентификации 104
Ключевые файлы 105
Структура конфигурационного файла 106
Пример конфигурационного файла 106
Описание конфигурационного файла 107
SWAT – веб-интерфейс к SAMBA 111
Модуль 7 Subversion ду Архитектура Subversion 63
Протоколы работы с SVN 64
Способы хранения данных 64
Компоненты Subversion 64
Проблема одновременной работы с файлами 64
Рабочий цикл 66
Установка 66
Работаем с репозиторием 66
Получение копии репозитария с удаленного сервера где у вас есть аккаунт 68
Ограничение доступа 69
Работа через Proxy 72
Модуль 8 Apache ду p Об Apache 73
Установка 73
Настройка 74
Добавляем виртуальный хост 82
Возможные опции в директиве Options 84
Определение возможных директив в htaccess 85
Аутентификация на сайте 86
Включение SSL 87
Server-status и server-info 90
SSI 91
Использование mod_rewrite 91
Регулярные выражения mod_rewrite и флаги 93
Коды веб-сервера 94
Модуль 9 SAMBA ду Что такое SAMBA и зачем она нужна ? 104
Возможности SAMBA 104
Установка 104
Типы аутентификации 104
Ключевые файлы 105
Структура конфигурационного файла 106
Пример конфигурационного файла 106
Описание конфигурационного файла 107
SWAT – веб-интерфейс к SAMBA 111
Trang 4Модуль 10 DHCPD
Принцип работы 112
Установка DHCPD 113
Настройка DHCPD 113
Описание опций из dhcpd.conf 114
Секции-объявления 116
Типы пакетов протокола DHCP 119
Используемые порты 119
DHCP-клиент 119
Модуль 11 MySQL. Принцип работы 121
Пример роли MySQL в информационном пространстве 122
Типы данных 122
Сколько нужно места под хранение типа данных ? 124
Практика 125
Файл как источник запросов 130
Пользователи и привелегии 132
Саммари по командам и принципу работы 133
Конфигурационный файл my.cnf 134
Забытый пароль администратора 136
Резервное копирование 136
Проверка целостности таблиц с помощью myisamchk 137
Саммари по myisamchk 138
Модуль 12 Мониторинг. О Nagios 139
Установка и настройка Nagios 140
Добавление хостов и сервисов на мониторинг 166
Мониторинг различных параметров сервера 167
Мониторинг свободного места 167
Защита системы от пользовательских процессов 168
Мониторинг S.M.A.R.T - параметров жесткого диска 168
Мониторинг сетевых портов в Linux 169
Мониторинг открытых файлов и сокетов 169
Мониторинг запущенных процессов 170
Мониторинг системных ресурсов 170
Мониторинг свободного места в разделах 170
Мониторинг сетевой подсистемы в реальном времени 171
Мониторинг работы DNS-сервера в реальном времени 171
Модуль 10 DHCPD ду Принцип работы 112
Установка DHCPD 113
Настройка DHCPD 113
Описание опций из dhcpd.conf f 114 Секции-объявления 116
Типы пакетов протокола DHCP 119
Используемые порты 119
DHCP-клиент 119
Модуль 11 MySQL ду y Q Принцип работы 121
Пример роли MySQL в информационном пространстве 122
Типы данных 122
Сколько нужно места под хранение типа данных ? 124
Практика 125
Файл как источник запросов 130
Пользователи и привелегии 132
Саммари по командам и принципу работы 133
Конфигурационный файл my.cnf 134
Забытый пароль администратора 136
Резервное копирование 136
Проверка целостности таблиц с помощью myisamchk k 137 Саммари по myisamchk k 138 Модуль 12 Мониторинг ду р О Nagios 139
Установка и настройка Nagios 140
Добавление хостов и сервисов на мониторинг 166
Мониторинг различных параметров сервера 167
Мониторинг свободного места 167
Защита системы от пользовательских процессов 168
Мониторинг S.M.A.R.T - параметров жесткого диска 168
Мониторинг сетевых портов в Linux 169
Мониторинг открытых файлов и сокетов 169
Мониторинг запущенных процессов 170
Мониторинг системных ресурсов 170
Мониторинг свободного места в разделах 170
Мониторинг сетевой подсистемы в реальном времени 171
Мониторинг работы DNS-сервера в реальном времени 171
Trang 5Мониторинг соединений proftpd в реальном времени 172
Статистика по виртуальной памяти 172
Статистика по процессору и устройствам ввода-вывода 172
Модуль 13 DNS. Установка 173
Инструменты 173
Базовые понятия 174
Правила построения DNS-системы 174
Режимы работы ДНС-серверов 175
Типы ответов DNS-серверов 177
Виды запросов к DNS-серверу 177
Способы копирования зоны с master-сервера 177
Виды записей 179
Структура конфигурационного файла 181
Настройка 182
Опции конфигурационного файла 186
Slave-сервер 187
Записи в /etc/resolv.conf 190
Статистика работы 190
Модуль 14 Nginx. Что такое Nginx ? 192
Преимущества Nginx 192
Варианты использования Nginx 192
Установка EPEL 193
Ставим EPEL-пакет 193
Установка Nginx с поддержкой PHP Настраиваем связку Nginx + FastCGI 194
Конфигурирование Nginx + FastCGI 195
Понижаем нагрузку на основной веб-сервер Установка Nginx как Frontend к Apache 198
Установка mod_rpaf 201
Включение SSL 202
Использование двух версий PHP в Nginx одновременно 203
Примеры производительности с Nginx и без него 204
Описание директив конфигурационного файла 205
Модуль 15 Postfi x. Установка и настройка 210
Postfi x 210
Мониторинг соединений proftpd в реальном времени 172
Статистика по виртуальной памяти 172
Статистика по процессору и устройствам ввода-вывода 172
Модуль 13 DNS ду Установка 173
Инструменты 173
Базовые понятия 174
Правила построения DNS-системы 174
Режимы работы ДНС-серверов 175
Типы ответов DNS-серверов 177
Виды запросов к DNS-серверу 177
Способы копирования зоны с master-сервера 177
Виды записей 179
Структура конфигурационного файла 181
Настройка 182
Опции конфигурационного файла 186
Slave-сервер 187
Записи в /etc/resolv.conf f 190 Статистика работы 190
Модуль 14 Nginx ду g Что такое Nginx ? 192
Преимущества Nginx 192
Варианты использования Nginx 192
Установка EPEL 193
Ставим EPEL-пакет 193
Установка Nginx с поддержкой PHP Настраиваем связку Nginx + FastCGI 194
Конфигурирование Nginx + FastCGI 195
Понижаем нагрузку на основной веб-сервер Установка Nginx как Frontend к Apache 198
Установка mod_rpaf f 201 Включение SSL 202
Использование двух версий PHP в Nginx одновременно 203
Примеры производительности с Nginx и без него 204
Описание директив конфигурационного файла 205
Модуль 15 Postfi x ду Установка и настройка 210
Postfi x 210
Trang 6MySQL 216
Dovecot 217
Clamd 220
ClamSMTP 221
Spamassassin 221
Postfi xadmin 224
Squirrelmail 225
Описание конфигурационных файлов 226
Postfi x 226
Dovecot 229
Clamd 230
Clamsmtp 231
Spamassassin 232
Модуль 16 OpenVPN. Об OpenVPN 234
Установка Linux VPN-сервера 234
Настройка Linux VPN-сервера 235
Linux VPN-клиент 240
Windows VPN-клиент 242
Добавление клиентов 243
Таблица предназначения ключей и сертификатов 243
Конфигурационный файл openvpn.conf на Linux VPN-сервере 243
Конфигурационный файл client.conf на Linux-клиентах 246
Конфигурационный файл client.ovpn на Windows-клиенте 247
Модуль 17 Отказоустойчивый кластер. Что такое кластер ? 248
Принцип работы нашего кластера 248
DRBD 249
Программы входщие в состав пакета DRBD 250
Heartbeat 251
Именование серверов 251
Установка ПО 251
Настройка DRBD 252
Настройка Heartbeat 257
Установка Apache 259
MySQL 216
Dovecot 217
Clamd 220
ClamSMTP 221
Spamassassin 221
Postfi xadmin 224
Squirrelmail 225
Описание конфигурационных файлов 226
Postfi x 226
Dovecot 229
Clamd 230
Clamsmtp 231
Spamassassin 232
Модуль 16 OpenVPN ду p Об OpenVPN 234
Установка Linux VPN-сервера 234
Настройка Linux VPN-сервера 235
Linux VPN-клиент 240
Windows VPN-клиент 242
Добавление клиентов 243
Таблица предназначения ключей и сертификатов 243
Конфигурационный файл openvpn.conf на Linux VPN-сервере 243
Конфигурационный файл client.conf на Linux-клиентах 246
Конфигурационный файл client.ovpn на Windows-клиенте 247
Модуль 17 Отказоустойчивый кластер ду у р Что такое кластер ? 248
Принцип работы нашего кластера 248
DRBD 249
Программы входщие в состав пакета DRBD 250
Heartbeat 251
Именование серверов 251
Установка ПО 251
Настройка DRBD 252
Настройка Heartbeat 257
Установка Apache 259
Trang 7Модуль 1 Резервное копирование
Процедура бекапа или резервного копирования очень проста, но может стать большой головной болью если её не делать Бизнес многих компаний напрямую зависит от манипуляций с информацией которая хранится на серверах Базы данных, репозитории исходных кодов, веб-проекты и т.д Все это нужно ежедневно сохранять на резервные носители информации
В случае потери информации и её невозможности восстановить компания может понести большие убытки
В этом модуле мы рассмотрим несколько вариантов резервного копирования, от самописных скриптов до промышленных решений и получим необходимую теорию
Во первых, есть несколько схем резервного копирования
Копирование данных с продакшен-сервера на backup-сервер
Продакшен-сервер – это рабочий сервер, который выполняет какие либо сервисы для пользователей
backup-сервер – это сервер на который копируется контент с сервера Единственное предназначение такого сервера – хранить данные
продакшен-с других продакшен-серверов Обычно продакшен-сам он никаких продакшен-сервипродакшен-сов не выполняет Главное требование – большое дисковое пространство Скорость дисковых накопителей особого значения не имеет, так как доступ к данным не частый – записать бекап на диск и считать его в случае необходимости
Минус этого решения – необходимость в отдельном сервере под backup`ы
а это дополнительные затраты Маленькие и средние компании обычно пытаются сэкономить деньги на покупке вспомогательного оборудования
Перекрестное копирование данных
Когда два или более продакшен серверов копируют друг на друга свои данные В случае когда на продакшен серверах есть достаточное количество дискового пространства для хранение данных с других серверов, их можно использовать как backup-серверы Мы копируем данные с сервера server1
на server2 а данные с server2 на server1
Плюс – экономим деньги на оборудование Как я писал выше маленькие
и средние организации могут не выделить деньги на вспомогательное оборудование, даже если это необходимо под резервные копии В таком случае вам может помочь такой способ бекапа
Модуль 1 Резервное копирование
Процедура бекапа или резервного копирования очень проста, но может стать большой головной болью если её не делать Бизнес многих компаний напрямую зависит от манипуляций с информацией которая хранится на серверах Базы данных, репозитории исходных кодов, веб-проекты и т.д Все это нужно ежедневно сохранять на резервные носители информации
В случае потери информации и её невозможности восстановить компания может понести большие убытки
В этом модуле мы рассмотрим несколько вариантов резервного копирования, от самописных скриптов до промышленных решений и получим необходимую теорию
Во первых, есть несколько схем резервного копирования
Копирование данных с продакшен-сервера на backup-сервер
Продакшен-сервер – это рабочий сервер, который выполняет какие либо сервисы для пользователей
backup-сервер – это сервер на который копируется контент с сервера Единственное предназначение такого сервера – хранить данные
продакшен-с других продакшен-серверов Обычно продакшен-сам он никаких продакшен-сервипродакшен-сов не выполняет Главное требование – большое дисковое пространство Скорость дисковых накопителей особого значения не имеет, так как доступ к данным не частый – записать бекап на диск и считать его в случае необходимости
Минус этого решения – необходимость в отдельном сервере под backup`ы
а это дополнительные затраты Маленькие и средние компании обычно пытаются сэкономить деньги на покупке вспомогательного оборудования
Перекрестное копирование данных
Когда два или более продакшен серверов копируют друг на друга свои данные В случае когда на продакшен серверах есть достаточное количество дискового пространства для хранение данных с других серверов, их можно использовать как backup-серверы Мы копируем данные с сервера server1
на server2 а данные с server2 на server1
Плюс – экономим деньги на оборудование Как я писал выше маленькие
и средние организации могут не выделить деньги на вспомогательное оборудование, даже если это необходимо под резервные копии В таком случае вам может помочь такой способ бекапа
Trang 8Системы хранения данных
“Классические” сервера для хранения бекапов хороши при относительно небольших объемах Сейчас это несколько сотен гигабайт Когда же объемы гораздо больше на помощь приходят СХД, Системы Хранения Данных
Дисковые массивы
По сути такой же сервер, но спроектирован специально под хранение данных Имеет много HDD большего размера
Дисковый массив Sun Storage J4500 Масштабируемость – от 24 до 192 Тб
Поддерживаемые ОС: Solaris, RedHat, Suse, Windows
Ленточные накопители
Они же стримеры Данные как и в случае с ленточными библиотеками записываются на специальные картриджи Как правило, картридж – это магнитная лента в пластиковом корпусе
Ленточный накопитель HP StorageWorks DAT 160 SAS.
Картридж для HP StorageWorks DAT 160 SAS 160 Гб.
Системы хранения данных
“Классические” сервера для хранения бекапов хороши при относительно небольших объемах Сейчас это несколько сотен гигабайт Когда же объемы гораздо больше на помощь приходят СХД, Системы Хранения Данных
Дисковые массивы
Д
По сути такой же сервер, но спроектирован специально под хранение данных Имеет много HDD большего размера
Дисковый массив Sun Storage J4500 Масштабируемость – от 24 до 192 Тб
Поддерживаемые ОС: Solaris, RedHat, Suse, Windows
Ленточные накопители
Они же стримеры Данные как и в случае с ленточными библиотеками записываются на специальные картриджи Как правило, картридж – это магнитная лента в пластиковом корпусе
Ленточный накопитель HP StorageWorks DAT 160 SAS.
Картридж для HP StorageWorks DAT 160 SAS 160 Гб.
Trang 9Ленточные библиотеки
Предназначены для автоматизированного резервного копирования данных Одновременное использование нескольких лентопротяжных механизмов увеличивает производительность библиотеки и сокращает время, необходимое для записи и чтения резервных копий
Одно из самых серьезных решений SUN Ленточная библиотека Sun StorageTek SL8500 До 56 петабайт данных До 70 тысяч картриджей.
Инкрементальное – копируем только то, что изменилось с момента последнего резервного копирования Полного или инкрементального.Дифференциальное – копируем только то, что изменялось с момента последнего ПОЛНОГО бекапа
Пофайловый метод – копируем нужные файлы в индивидуальном порядке.Дублирование диска – метод при котором мы делаем полный снимок диска Например утилитой dd
Ленточные библиотеки
Предназначены для автоматизированного резервного копирования данных Одновременное использование нескольких лентопротяжных механизмов увеличивает производительность библиотеки и сокращает время, необходимое для записи и чтения резервных копий
Одно из самых серьезных решений SUN Ленточная библиотека Sun StorageTek SL8500 До 56 петабайт данных До 70 тысяч картриджей.
Инкрементальное – копируем только то, что изменилось с момента последнего резервного копирования Полного или инкрементального.Дифференциальное – копируем только то, что изменялось с момента последнего ПОЛНОГО бекапа
Пофайловый метод – копируем нужные файлы в индивидуальном порядке.Дублирование диска – метод при котором мы делаем полный снимок диска Например утилитой dd
Trang 10Схемы ротации бекапов
Ротация – это политика по которой делается резервное копирование Как часто мы будем делать бекап, как долго мы будем хранить резервные копии Все это описывается политикой ротации
Одноразовое копирование – администратор делает копирование вручную Обычно делается полный бекап данных
Простая ротация – подразумевается, что некий набор носителей используется циклически К примеру 5 ленточных носителей на каждый день недели В пятницу
мы делаем полный бекап данных а в остальные дни недели инкрементальный
“Дед, отец, сын” (GFS) – имеет иерархическую структуру ротации Используется три набора носителей Раз в неделю делается полной бекап данных В остальные дни недели – инкрементальный Раз в месяц делается еще один полный бекап системы Набор носителей для ежедневного инкрементального копирования – сын, набор для еженедельного полного бекапа – отец, набор для ежемесячного полного бекапа – дед
“Ханойская башня” – название пошло от древней китайской игры Смысл игры заключается в следующем Есть три стержня и какой-то набор дисков Диски нужно перемещать со стержня на стержень, но так, чтобы каждый новый диск ложился на диск большего диаметра
Такой метод бекапа достаточно сложен и практически не применяется в настоящее время
“10 наборов” – метод рассчитан на 10 наборов носителей Период из 40 недель делится на десять циклов В течение цикла за каждым набором закреплен один день недели По прошествии четырехнедельного цикла осуществляется сдвиг номера набора То есть в первом цикле за понедельник отвечал набор N1, за вторник N2, за среду N3 и т.д Во втором цикле за понедельник будет отвечать набор N2, за вторник N3, за среду N4 и т.д Такая схема позволяет равномерно распределить нагрузку между носителями но из-за своей сложности практически не используется
Методы резервирования баз данных
hot backup – горячий бекап базы данных Это когда резервная копия делается при включенном сервере БД
cold backup – холодный бекап базы данных Это когда сервер БД нужно выключить чтобы сделать резервную копию
Схемы ротации бекапов
Ротация – это политика по которой делается резервное копирование Как часто мы будем делать бекап, как долго мы будем хранить резервные копии Все это описывается политикой ротации
Одноразовое копирование – администратор делает копирование вручную Обычно делается полный бекап данных
Простая ротация – подразумевается, что некий набор носителей используется циклически К примеру 5 ленточных носителей на каждый день недели В пятницу
мы делаем полный бекап данных а в остальные дни недели инкрементальный
“Дед, отец, сын” (GFS) – имеет иерархическую структуру ротации Используется три набора носителей Раз в неделю делается полной бекап данных В остальные дни недели – инкрементальный Раз в месяц делается еще один полный бекап системы Набор носителей для ежедневного инкрементального копирования – сын, набор для еженедельного полного бекапа – отец, набор для ежемесячного полного бекапа – дед
“Ханойская башня” – название пошло от древней китайской игры Смысл игры заключается в следующем Есть три стержня и какой-то набор дисков Диски нужно перемещать со стержня на стержень, но так, чтобы каждый новый диск ложился на диск большего диаметра
Такой метод бекапа достаточно сложен и практически не применяется в настоящее время
“10 наборов” – метод рассчитан на 10 наборов носителей Период из 40 недель делится на десять циклов В течение цикла за каждым набором закреплен один день недели По прошествии четырехнедельного цикла осуществляется сдвиг номера набора То есть в первом цикле за понедельник отвечал набор N1, за вторник N2, за среду N3 и т.д Во втором цикле за понедельник будет отвечать набор N2, за вторник N3, за среду N4 и т.д Такая схема позволяет равномерно распределить нагрузку между носителями но из-за своей сложности практически не используется
Методы резервирования баз данных
hot backup – горячий бекап базы данных Это когда резервная копия делается при включенном сервере БД
cold backup – холодный бекап базы данных Это когда сервер БД нужно выключить чтобы сделать резервную копию
Trang 11RAID – Redundant Array of Independent Disks
Избыточный массив независимых дисков Это когда несколько физических дисков объединяются вместе в один логический чтобы решать какие либо задачи Скорее всего вы его будете использовать для отказоустойчивости При выходе из строя одного из дисков система будет продолжать работать
В операционной системе массив будет выглядеть как обычный HDD RAID – массивы зародились в сегменте серверных решений, но сейчас получили широкое распространение и уже используются дома Для управления RAID-ом используется специальная микросхема с интеллектом , которая называется RAID-контроллер Это либо чипсет на материнской плате, либо отдельная внешняя плата
Типы RAID-массивов
Есть два типа RAID-массивов
RAID-контроллер - LSI LOGIC MegaRAID SCSI 320-1
Аппаратный – это когда состоянием массива управляет специальная микросхема На микросхеме есть свой CPU и все вычисления ложатся на него, освобождая CPU сервера от лишней нагрузки
Программный – это когда состоянием массива управляет специальная программа в ОС В этом случае будет создаваться дополнительная нагрузка
на CPU сервера Ведь все вычисления ложатся именно на него
Однозначно сказать какой тип рейда лучше – нельзя В случае программного рейда нам не нужно покупать дорогостоящий рейд-контроллер Который обычно стоит от 250 у.е (можно найти и за 70 у.е но я бы не стал рисковать данными) Но все вычисления ложатся на CPU сервера Программная реализация хорошо подходит для рейдов 0 и 1 Они достаточно просты
и для их работы не нужны большие вычисления Поэтому программные рейды чаще используют в решениях начального уровня Аппаратный рейд в своей работе использует рейд-контроллер Рейд-контроллер имеет свой процессор для вычислений и именно он производит операции ввода/вывода
RAID – Redundant Array of Independent Disks
Избыточный массив независимых дисков Это когда несколько физических дисков объединяются вместе в один логический чтобы решать какие либо задачи Скорее всего вы его будете использовать для отказоустойчивости При выходе из строя одного из дисков система будет продолжать работать
В операционной системе массив будет выглядеть как обычный HDD RAID – массивы зародились в сегменте серверных решений, но сейчас получили широкое распространение и уже используются дома Для управления RAID-ом используется специальная микросхема с интеллектом , которая называется RAID-контроллер Это либо чипсет на материнской плате, либо отдельная внешняя плата
Типы RAID-массивов
Есть два типа RAID-массивов
RAID-контроллер - LSI LOGIC MegaRAID SCSI 320-1
Аппаратный – это когда состоянием массива управляет специальная микросхема На микросхеме есть свой CPU и все вычисления ложатся на него, освобождая CPU сервера от лишней нагрузки
Программный – это когда состоянием массива управляет специальная программа в ОС В этом случае будет создаваться дополнительная нагрузка
на CPU сервера Ведь все вычисления ложатся именно на него
Однозначно сказать какой тип рейда лучше – нельзя В случае программного рейда нам не нужно покупать дорогостоящий рейд-контроллер Который обычно стоит от 250 у.е (можно найти и за 70 у.е но я бы не стал рисковать данными) Но все вычисления ложатся на CPU сервера Программная реализация хорошо подходит для рейдов 0 и 1 Они достаточно просты
и для их работы не нужны большие вычисления Поэтому программные рейды чаще используют в решениях начального уровня Аппаратный рейд в своей работе использует рейд-контроллер Рейд-контроллер имеет свой процессор для вычислений и именно он производит операции ввода/вывода
Trang 12Уровни RAID-массивов
Их достаточно много Это основные – 0, 1, 2, 3, 4, 5, 6, 7 и комбинированные –
10, 30, 50, 53
Мы рассмотрим только самые ходовые, которые используются в современной инфраструктуре предприятия Буква D в схемах означает Data (данные), или блок данных
RAID 0 (Striped Disk Array without Fault Tolerance)
Он же stripe Это когда два или более физических дисков объединяются в один логический с целью объединения места То есть берем два диска по
500 Гб, объединяем их в RAID 0 и в системе видим 1 HDD объемом в 1 Тб Информация распределяется по всем дискам рейда равномерно в виде небольших блоков (страйпов)
Плюсы – Высокая производительность, простота реализации
Минусы – отсутствие отказоустойчивости При использование этого рейда надежность системы понижается в два раза (если используем два диска) Ведь при выходе из строя хотя бы одного диска вы теряете все данные
RAID 1 (Mirroring & Duplexing)
Он же mirror Это когда два или более физических дисков объединяются в один логический диск с целью повышения отказоустойчивости Информация пишется сразу на оба диска массива и при выходе одного из них информация сохраняется на другом
Плюсы – высокая скорость чтения/записи, простота реализации
Минусы – высокая избыточность В случае использования 2-х дисков это 100%
Уровни RAID-массивов
Их достаточно много Это основные – 0, 1, 2, 3, 4, 5, 6, 7 и комбинированные –
10, 30, 50, 53
Мы рассмотрим только самые ходовые, которые используются в современной инфраструктуре предприятия Буква D в схемах означает Data (данные), или блок данных
RAID 0 (Striped Disk Array without Fault Tolerance) ( p y )
Он же stripe Это когда два или более физических дисков объединяются в один логический с целью объединения места То есть берем два диска по
500 Гб, объединяем их в RAID 0 и в системе видим 1 HDD объемом в 1 Тб Информация распределяется по всем дискам рейда равномерно в виде небольших блоков (страйпов)
Плюсы – Высокая производительность, простота реализации
Минусы – отсутствие отказоустойчивости При использование этого рейда надежность системы понижается в два раза (если используем два диска) Ведь при выходе из строя хотя бы одного диска вы теряете все данные
RAID 1 (Mirroring & Duplexing) ( g p g)
Он же mirror Это когда два или более физических дисков объединяются в один логический диск с целью повышения отказоустойчивости Информация пишется сразу на оба диска массива и при выходе одного из них информация сохраняется на другом
Плюсы – высокая скорость чтения/записи, простота реализации
Минусы – высокая избыточность В случае использования 2-х дисков это 100%
Trang 13RAID 5 (Independent Data Disks with Distributed Parity Blocks)
Самый популярный вид рейд-массива, в целом благодаря экономичности использования носителей данных Блоки данных и контрольные суммы циклически записываются на все диски массива При выходе из строя одного
из дисков будет заметно снижена производительность, так как придется совершать дополнительные манипуляции для функционирования массива Сам по себе рейд имеет достаточно хорошую скорость чтения/записи но немного уступает RAID 1 Нужно не менее трех дисков чтобы организовать RAID 5
Плюсы – экономичное использование носителей, хорошая скорость чтения/записи Разница в производительности по сравнению с RAID 1 не так сильно видна как экономия дискового пространства В случае использования трех HDD избыточность составляет всего 33%
Минусы – сложное восстановление данных и реализация
RAID 1+0 (Very High Reliability with High Performance)
Он же RAID 10 Сочетание зеркального рейда и рейда с чередованием дисков
В работе этого вида рейда диски объединяются парами в зеркальные рейды (RAID 1) а затем все эти зеркальные пары объединяются в массив с чередованием (RAID 0) В рейд можно объединить только четное количество дисков, минимум – 4, максимум – 16 От RAID 1 мы наследуем надежность, от RAID 0 - скорость
Плюсы – высокая отказоустойчивость и производительность
Минусы – высокая стоимость
RAID 5 (Independent Data Disks with Distributed Parity Blocks) ( p y )
Самый популярный вид рейд-массива, в целом благодаря экономичности использования носителей данных Блоки данных и контрольные суммы циклически записываются на все диски массива При выходе из строя одного
из дисков будет заметно снижена производительность, так как придется совершать дополнительные манипуляции для функционирования массива Сам по себе рейд имеет достаточно хорошую скорость чтения/записи но немного уступает RAID 1 Нужно не менее трех дисков чтобы организовать RAID 5
Плюсы – экономичное использование носителей, хорошая скорость чтения/записи Разница в производительности по сравнению с RAID 1 не так сильно видна как экономия дискового пространства В случае использования трех HDD избыточность составляет всего 33%
Минусы – сложное восстановление данных и реализация
RAID 1+0 (Very High Reliability with High Performance) ( y g y g )
Он же RAID 10 Сочетание зеркального рейда и рейда с чередованием дисков
В работе этого вида рейда диски объединяются парами в зеркальные рейды (RAID 1) а затем все эти зеркальные пары объединяются в массив с чередованием (RAID 0) В рейд можно объединить только четное количество дисков, минимум – 4, максимум – 16 От RAID 1 мы наследуем надежность, от RAID 0 - скорость
Плюсы – высокая отказоустойчивость и производительность
Минусы – высокая стоимость
Trang 14RAID 5+0 (High I/O Rates & Data Transfer Performance)
Он же RAID 50, это сочетание RAID 5 и RAID 0 Массив объединяет в себе высокую производительность и отказоустойчивость
Плюсы – высокая отказоустойчивость, скорость передачи данных и выполнение запросов
Еще главнее вывод – рейд не гарантирует целостности ваших данных То есть если кто-то удалит файл или он будет поврежден каким либо процессом, рейд нам не поможет Поэтому рейд не освобождает нас от необходимости делать бекапы Но помогает, когда возникают проблемы с дисками на физическом уровне
Storage Area Network
Архитектурное решение SAN представляет собой сеть, как правило на базе
RAID 5+0 (High I/O Rates & Data Transfer Performance) ( g )
Он же RAID 50, это сочетание RAID 5 и RAID 0 Массив объединяет в себе высокую производительность и отказоустойчивость
Плюсы – высокая отказоустойчивость, скорость передачи данных и выполнение запросов
Еще главнее вывод – рейд не гарантирует целостности ваших данных То есть если кто-то удалит файл или он будет поврежден каким либо процессом, рейд нам не поможет Поэтому рейд не освобождает нас от необходимости делать бекапы Но помогает, когда возникают проблемы с дисками на физическом уровне
Storage Area Network
Архитектурное решение SAN представляет собой сеть, как правило на базе
Trang 15Fibre Channel (оптика) которая служит для подключения хранилищ данных к серверам таким образом, чтобы те считали устройства как локальные.
Такое решение добавляет большую гибкость инфраструктуре предприятия Ведь СХД могут находиться физически в любом месте и их не нужно переподключать от одного сервера к другому Все что нужно сделать – добавить сервер/СХД в SAN-сеть Также, трафик LAN/WAN и SAN не конфликтует между собой Из-за некоторой сложности, SAN пока не вышел
за пределы крупных компаний
Network Attached Storage
NAS – это сетевая система хранения данных В целом это обычный сервер
Fibre Channel (оптика) которая служит для подключения хранилищ данных к серверам таким образом, чтобы те считали устройства как локальные
Такое решение добавляет большую гибкость инфраструктуре предприятия Ведь СХД могут находиться физически в любом месте и их не нужно переподключать от одного сервера к другому Все что нужно сделать – добавить сервер/СХД в SAN-сеть Также, трафик LAN/WAN и SAN не конфликтует между собой Из-за некоторой сложности, SAN пока не вышел
за пределы крупных компаний
Network Attached Storage
NAS – это сетевая система хранения данных В целом это обычный сервер
Trang 16но вся вычислительная мощность которого направлена в одно русло – обслуживание и хранение файлов.
DEPO Storage NAS 1005 До 5 Тб данных.
Неоспоримым плюсом NAS-серверов по отношению к “классическим” серверам является – цена Так что, если от будущего сервера потребуются функции только файл-сервера стоит обратить внимание на NAS-решения.Для NAS-серверов была специально разработана операционная система FreeNAS, которая построена на базе FreeBSD ОС максимально оптимизирована под задачи NAS и весит в районе 32 Мб Её можно загрузить
с fl ash-носителя/cdrom диска
Direct Attached Storage
Представляет из себя дисковый массив с прямым подключением к серверу Другие сервера/клиенты могут получить доступ к этому массиву только через сервер, к которому он подключен
но вся вычислительная мощность которого направлена в одно русло – обслуживание и хранение файлов
DEPO Storage NAS 1005 До 5 Тб данных.
Неоспоримым плюсом NAS-серверов по отношению к “классическим” серверам является – цена Так что, если от будущего сервера потребуются функции только файл-сервера стоит обратить внимание на NAS-решения.Для NAS-серверов была специально разработана операционная система FreeNAS, которая построена на базе FreeBSD ОС максимально оптимизирована под задачи NAS и весит в районе 32 Мб Её можно загрузить
с fl ash-носителя/cdrom диска
Direct Attached Storage
Представляет из себя дисковый массив с прямым подключением к серверу Другие сервера/клиенты могут получить доступ к этому массиву только через сервер, к которому он подключен
Trang 17В рабочем скрипте цифр быть не должно Я добавил их для удобства объяснения строк кода.
Любой скрипт в Linux начинается с этой последовательности, которая
1
называется sha-bang По сути исполняемый файл может быть просто перечислением набора команд, но если планируется что-то сложнее, где предстоит работа с переменными то sha-bang стоит поместить в файл В этом случае будет создан процесс, в котором мы можем хранить временные данные;
В рабочем скрипте цифр быть не должно Я добавил их для удобства объяснения строк кода
Любой скрипт в Linux начинается с этой последовательности, которая
1
называется sha-bang По сути исполняемый файл может быть просто перечислением набора команд, но если планируется что-то сложнее, где предстоит работа с переменными то sha-bang стоит поместить в файл В этом случае будет создан процесс, в котором мы можем хранить временные данные;
Trang 18Все строки в файле начинающиеся с символа #, кроме первой строки –
2
комментарии Здесь я просто указал название нашего скрипта как многие делают;
В переменную timestamp мы сохраняем результат выполнения команды
3
date в нужном нам формате: год-месяц-день-час-минута Значение переменной будет фигурировать в конечном имени файла;
В переменной backupFS мы будем сохранять список каталогов для бекапа
4
Каталоги указываем через пробел а весь их список берем в двойные кавычки;
Перед созданием бекапа мы просматриваем backup-каталог и удаляем
8
файлы которые хранятся более 7 дней Для вычисления сколько архив находится в файловой системе мы использовали атрибут файла mtime В этом атрибуте сохраняется время последней модификации файла;
Архивируем нужную нам директорию Имя файла мы генерируем
12
динамически В имени будет использован результат выполнения команды hostname, То есть мы подставим имя нашего сервера, что весьма полезно при хранение бекапов в централизованном месте, где могут быть бекапы
с десятка серверов Далее в название файла добавляем текущее время
в соответствие с форматом переменной timestamp После добавления времени добавляем название резервируемого каталога с заменой символов “/” на “-”;
В переменную timestamp мы сохраняем результат выполнения команды
3.
date в нужном нам формате: год-месяц-день-час-минута Значение переменной будет фигурировать в конечном имени файла;
В переменной backupFS мы будем сохранять список каталогов для бекапа
4.
Каталоги указываем через пробел а весь их список берем в двойные кавычки;
Перед созданием бекапа мы просматриваем backup-каталог и удаляем
8.
файлы которые хранятся более 7 дней Для вычисления сколько архив находится в файловой системе мы использовали атрибут файла mtime В этом атрибуте сохраняется время последней модификации файла;
Архивируем нужную нам директорию Имя файла мы генерируем
12
динамически В имени будет использован результат выполнения команды hostname, То есть мы подставим имя нашего сервера, что весьма полезно при хранение бекапов в централизованном месте, где могут быть бекапы
с десятка серверов Далее в название файла добавляем текущее время
в соответствие с форматом переменной timestamp После добавления времени добавляем название резервируемого каталога с заменой символов “/” на “-”;
Trang 19Завершение условного оператора и выход из программы.
18
В соответствие со своими нуждами поправьте список каталогов для бекапа, путь куда их сохранять и количество дней хранения копий Помещаем скрипт
в cron администратора, например на 4 часа утра каждый рабочий день, еще
мы добавим и субботу, чтобы захватить данные которые были сделаны в течение рабочего дня пятницы
0 4 * * 1-6 /root/backup.sh
Каталог для бекапа может быть NFS-ресурсом экспортированным на сервер Так мы простым скриптом решаем важную задачу системного администрирования Для более сложной инфраструктуры скорее всего понадобится что-то более функциональное и гибкое
В своих backup-скриптах больше внимания уделяйте обходу потенциальных ошибок и неадекватного поведения в случае отсутствия места на диске или
в случае отсутствия нужных каталогов Не тратьте время на оптимизацию, смысла в этом не много, ведь узким местом всегда будет процесс копирования/архивирования ваших данных
Добавим пользователя rsync и установим ему пароль
# useradd rsync
# passwd rsync
Добавим его в нужные группы чтобы он мог получить право на чтение если такого еще нет
Скопируем каталог /etc с сервера unixbox в наш локальный каталог /var/backup
$ rsync -e ssh -avz delete-after force rsync@unixbox:/etc /var/backup/
Завершение условного оператора и выход из программы
18.
В соответствие со своими нуждами поправьте список каталогов для бекапа, путь куда их сохранять и количество дней хранения копий Помещаем скрипт
в cron администратора, например на 4 часа утра каждый рабочий день, еще
мы добавим и субботу, чтобы захватить данные которые были сделаны в течение рабочего дня пятницы
0 4 * * 1-6 /root/backup.sh
Каталог для бекапа может быть NFS-ресурсом экспортированным на сервер Так мы простым скриптом решаем важную задачу системного администрирования Для более сложной инфраструктуры скорее всего понадобится что-то более функциональное и гибкое
В своих backup-скриптах больше внимания уделяйте обходу потенциальных ошибок и неадекватного поведения в случае отсутствия места на диске или
в случае отсутствия нужных каталогов Не тратьте время на оптимизацию, смысла в этом не много, ведь узким местом всегда будет процесс копирования/архивирования ваших данных
Добавим пользователя rsync и установим ему пароль
# useradd rsync
# passwd rsync
Добавим его в нужные группы чтобы он мог получить право на чтение если такого еще нет
Скопируем каталог /etc с сервера unixbox в наш локальный каталог /var/backup
$ rsync -e ssh -avz delete-after force rsync@unixbox:/etc /var/backup/
Вводим пароль и все
Trang 20Если хочется процедуру автоматизировать то нужно будет сгенерировать public ключ на сервере centos52 и положить его в файл authorized_keys пользователю rsync на сервере unixbox Давайте сделаем это.
Пояснения
Внимание: если после /etc нет “/” то будет скопирован сам каталог и его содержимое Если “/” есть, то будет скопировано только содержимое этого каталога
-e ssh – этим ключем мы показываем что будем использовать ssh, то есть наш трафик будет шифроваться;
-a – работа в режиме архивирования, сохраняются права доступа и информация о владельцах;
-v – выводить больше информативной информации;
-z – архивировать передаваемые данные;
delete-after – удалять файлы которые отсутствуют в источнике после того как закончится передача файлов по сети Мы хотим иметь полную копию контента с удаленного сервера Можете включать эту опцию периодически Вдруг кто-нибудь случайно удалит файл на удаленном сервере и во время ближайшей синхронизации мы удалим его тоже;
force – не удалять директорию пока в ней есть файлы
rsyncd
Также есть сервис – rsyncd который работает на порту 873 TCP При запущенном сервисе строка доступа может выглядеть так:
rsync://[USER@]HOST[:PORT]/SRC [DEST]
то есть в начале будет добавлено rsync:// а остальное также как и в примере выше Аутентификация в rsyncd основана на 128 bit MD4, что очень не надежно в наше время К тому же данные передаются в открытом виде, что явно не в пользу этого сервиса, когда есть такие средства как rsync+ssh и scp Поэтому подробно рассматривать его не вижу смысла
Если хочется процедуру автоматизировать то нужно будет сгенерировать public ключ на сервере centos52 и положить его в файл authorized_keys пользователю rsync на сервере unixbox Давайте сделаем это
Пояснения
Внимание: если после /etc нет “/” то будет скопирован сам каталог и его содержимое Если “/” есть, то будет скопировано только содержимое этого каталога
-e ssh – этим ключем мы показываем что будем использовать ssh, то есть наш трафик будет шифроваться;
-a – работа в режиме архивирования, сохраняются права доступа и информация о владельцах;
-v – выводить больше информативной информации;
-z – архивировать передаваемые данные;
delete-after – удалять файлы которые отсутствуют в источнике после того как закончится передача файлов по сети Мы хотим иметь полную копию контента с удаленного сервера Можете включать эту опцию периодически Вдруг кто-нибудь случайно удалит файл на удаленном сервере и во время ближайшей синхронизации мы удалим его тоже;
force – не удалять директорию пока в ней есть файлы
rsyncd
Также есть сервис – rsyncd который работает на порту 873 TCP При запущенном сервисе строка доступа может выглядеть так:
rsync://[USER@]HOST[:PORT]/SRC [DEST]
то есть в начале будет добавлено rsync:// а остальное также как и в примере выше Аутентификация в rsyncd основана на 128 bit MD4, что очень не надежно в наше время К тому же данные передаются в открытом виде, что явно не в пользу этого сервиса, когда есть такие средства как rsync+ssh и scp Поэтому подробно рассматривать его не вижу смысла
Trang 21Скрипт в помощь
Этого материала достаточно чтобы начать пользоваться rsync в создание своих файловых зеркал/резервных копий Ниже я дам пример скрипта, который может помочь когда нужно копировать набор каталогов с удаленного сервера
#!/bin/bash
#backup.sh
LIST=/var/backup/backup.list
cat ${LIST} | while read res; do
rsync -e ssh -avz delete-after force rsync@unixbox:$res /var/backup
done
Файл /var/backup/backup.list должен содержать список каталог для копирования Примерно так:
# dd if=/dev/hda of=/dev/hdb conv=noerror,sync
Команда выше сделает точную копию раздела /dev/hda в разделе /dev/hdb
То есть мы «отзеркалировали» /dev/hda
После conv= мы можем указать ряд параметров
noerror — продолжать копирование не обращая внимание на bad-блоки и прочие ошибки
sync — поврежденные или отсутствующие данные во входном буфере на выходе будут заменены на нули Опция замедляет работу команды dd, но для более корректного образа стоит воспользоваться ею
# dd if=/dev/hda3 of=/var/backup/hda3.img
Этой командой мы записали раздел /dev/hda3 в бинарный файл hda3.img Теперь его можно перенести на другой сервер и развернуть в точную копию
Скрипт в помощь
Этого материала достаточно чтобы начать пользоваться rsync в создание своих файловых зеркал/резервных копий Ниже я дам пример скрипта, который может помочь когда нужно копировать набор каталогов с удаленного сервера
#!/bin/bash
#backup.sh
LIST=/var/backup/backup.list
cat ${LIST} | while read res; do
rsync -e ssh -avz delete-after force rsync@unixbox:$res /var/backup
done
Файл /var/backup/backup.list должен содержать список каталог для копирования Примерно так:
# dd if=/dev/hda of=/dev/hdb conv=noerror,sync
Команда выше сделает точную копию раздела /dev/hda в разделе /dev/hdb
То есть мы «отзеркалировали» /dev/hda
После conv= мы можем указать ряд параметров
noerror — продолжать копирование не обращая внимание на bad-блоки и прочие ошибки
sync — поврежденные или отсутствующие данные во входном буфере на выходе будут заменены на нули Опция замедляет работу команды dd, но для более корректного образа стоит воспользоваться ею
# dd if=/dev/hda3 of=/var/backup/hda3.img
Этой командой мы записали раздел /dev/hda3 в бинарный файл hda3.img Теперь его можно перенести на другой сервер и развернуть в точную копию
Trang 22/dev/hda3 Только учтите один минус dd — программа копирует данные по секторам и ей все равно есть на этом участке диска данные или нет, будет воссоздана точная копия и размер будет точно такой же! То есть если раздел /dev/hda3 имеет объем в 5 Гб а занят на нем только 1 то файл hda3.img будет весить 5 Гб.
# dd if=/dev/hda1 of=/var/backup/mbr.dump bs=512 count=1
Команде dd мы просто передали параметры bs и count, этим указав какой объем данных мы хотим скопировать
bs — block size, размера блока который мы хотим скопировать
count — количество bs
Мы ведь уже знаем, что MBR находится в первых 512 байтах (1-й сектор).Теперь восстановим MBR из резервной копии
# dd if=/var/backup/mbr.dump of=/dev/hda1 bs=512 count=1
Размер сектора можно узнать так:
# fdisk -l /dev/hda1
Amanda - Advanced Maryland Automatic Network Disk Archiver
Amanda – это клиент/серверная система создания резервных копий Хороший выбор для средних и крупных предприятий Что тут говорить,
/dev/hda3 Только учтите один минус dd — программа копирует данные по секторам и ей все равно есть на этом участке диска данные или нет, будет воссоздана точная копия и размер будет точно такой же! То есть если раздел /dev/hda3 имеет объем в 5 Гб а занят на нем только 1 то файл hda3.img будет весить 5 Гб
# dd if=/dev/hda1 of=/var/backup/mbr.dump bs=512 count=1
Команде dd мы просто передали параметры bs и count, этим указав какой объем данных мы хотим скопировать
bs — block size, размера блока который мы хотим скопировать
count — количество bs
Мы ведь уже знаем, что MBR находится в первых 512 байтах (1-й сектор).Теперь восстановим MBR из резервной копии
# dd if=/var/backup/mbr.dump of=/dev/hda1 bs=512 count=1
Размер сектора можно узнать так:
# fdisk -l /dev/hda1
Amanda - Advanced Maryland Automatic Network Disk Archiver
Amanda – это клиент/серверная система создания резервных копий Хороший выбор для средних и крупных предприятий Что тут говорить,
Trang 23сама корпорация Xerox использует Amanda в своей ИТ инфраструктуре Изначально Amanda была создана для работы с ленточными накопителями
но сейчас активно используется при бекапе на HDD Такая концепция получила название “виртуальные ленты” (vtapes) Amanda не испытывает проблем при работе в гетерогенных сетях (в сетях, которые используют разные платформы и операционные системы)
centos52 – Amanda Server
unixbox – Amanda Client
/var/backup – каталог для резервных копий
Задача
Будем делать бекап каталога /etc сервера unixbox Один раз в неделю будем делать полный бекап, остальные – инкрементальный
Начинаем установку
yum -y install amanda-server.i386
Создаем каталог для нового проекта и копируем файл amanda.conf из проекта по умолчанию
mkdir /etc/amanda/fasttech
сама корпорация Xerox использует Amanda в своей ИТ инфраструктуре Изначально Amanda была создана для работы с ленточными накопителями
но сейчас активно используется при бекапе на HDD Такая концепция получила название “виртуальные ленты” (vtapes) Amanda не испытывает проблем при работе в гетерогенных сетях (в сетях, которые используют разные платформы и операционные системы)
centos52 – Amanda Server
unixbox – Amanda Client
/var/backup – каталог для резервных копий
Задачад
Будем делать бекап каталога /etc сервера unixbox Один раз в неделю будем делать полный бекап, остальные – инкрементальный
Начинаем установку
yum -y install amanda-server.i386
Создаем каталог для нового проекта и копируем файл amanda.conf из проекта по умолчанию
mkdir /etc/amanda/fasttech
Trang 24tpchanger «chg-disk» # /usr/lib/amanda/chg-disk
tapedev «fi le:/var/backup»
tpchanger «chg-disk» # /usr/lib/amanda/chg-disk
tapedev «fi le:/var/backup»
Trang 25В файл disklist помещаем систему с которой будем делать бекап и директорию
# echo 'unixbox /etc comp-tar' > /etc/amanda/fasttech/disklist
$ echo «export PATH=$PATH:/usr/sbin» >> bash_profi le
Проверяем статус “лент”
$ ammt -t fi le:/var/backup/ status
fi le:/var/backup/ status: ONLINE
Переходим в бекап-директорию
$ cd /var/backup
В файл disklist помещаем систему с которой будем делать бекап и директорию
# echo 'unixbox /etc comp-tar' > /etc/amanda/fasttech/disklist
$ echo «export PATH=$PATH:/usr/sbin» >> bash_profi le
Проверяем статус “лент” р р у
$ ammt -t fi le:/var/backup/ status
fi le:/var/backup/ status: ONLINE
Переходим в бекап-директорию
$ cd /var/backup
Trang 26-slot 3: read label `fasttech-3’, date `X’
NOTE: skipping tape-writable test
Tape fasttech-3 label ok
WARNING: tapecycle (5) <= runspercycle (5).
Server check took 0.070 seconds
(brought to you by Amanda 2.5.0p2)
# netstat -lp | grep :amanda
tcp 0 0 *:amandaidx *:* LISTEN 3403/xinetd Сервер готов
# netstat -lp | grep :amanda
udp 0 0 *:amanda *:* 4850/xinetd
-slot 3: read label `fasttech-3’, date `X’
NOTE: skipping tape-writable test
Tape fasttech-3 label ok
WARNING: tapecycle (5) <= runspercycle (5).
Server check took 0.070 seconds
(brought to you by Amanda 2.5.0p2)
# netstat -lp | grep :amanda
tcp 0 0 *:amandaidx *:* LISTEN 3403/xinetd
# netstat -lp | grep :amanda
udp 0 0 *:amanda *:* 4850/xinetd
Клиент готов
Trang 27$ amadmin fasttech info unixbox /etc
Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
Сделав бекап еще раз, мы увидим что на этот раз получена инкрементальная копия (Dumps: 1)
$ amadmin fasttech info unixbox /etc
Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
$ amadmin fasttech info unixbox /etc
Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
Сделав бекап еще раз, мы увидим что на этот раз получена инкрементальная копия (Dumps: 1)
$ amadmin fasttech info unixbox /etc
Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
Trang 28Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
date host disk lv tape or fi le fi le part status
2009-02-14 unixbox /etc 0 fasttech-3 1 OK
2009-02-14 unixbox /etc 1 fasttech-4 1 OK
К примеру нам нужен файл shells из каталога /etc c ленты fasttech-3
не передавать в качестве аргумента нужный нам каталог то мы получим все резервируемые каталоги с сервера Дальше дело техники
Чтобы делать бекап в 4 утра каждый будний день, пользователю amanda в crontab (crontab -e) помещаем такую строку:
0 4 * * 1-6 /usr/sbin/amdump fasttech
Полезное
Эта команда попросит Amanda сделать полный бекап каталога /etc с сервера unixbox в следующий раз:
amadmin fasttech force unixbox /etc
Команда перемотает виртуальную ленту на начало
ammt -t fi le:/var/backup rewind
Конфигурационный файл /etc/amanda/fasttech/amanda.conf
Current info for unixbox /etc:
Stats: dump rates (kps), Full: 968.0, -1.0, -1.0
date host disk lv tape or fi le fi le part status
2009-02-14 unixbox /etc 0 fasttech-3 1 OK
2009-02-14 unixbox /etc 1 fasttech-4 1 OK
К примеру нам нужен файл shells из каталога /etc c ленты fasttech-3
не передавать в качестве аргумента нужный нам каталог то мы получим все резервируемые каталоги с сервера Дальше дело техники
Чтобы делать бекап в 4 утра каждый будний день, пользователю amanda в crontab (crontab -e) помещаем такую строку:
0 4 * * 1-6 /usr/sbin/amdump fasttech
Полезное
Эта команда попросит Amanda сделать полный бекап каталога /etc с сервера unixbox в следующий раз:
amadmin fasttech force unixbox /etc
Команда перемотает виртуальную ленту на начало
ammt -t fi le:/var/backup rewind
Конфигурационный файл /etc/amanda/fasttech/amanda.conf
Trang 29runspercycle Тоже самое что и dumpcycle;
tapecycle
Число лент которое Amanda использует в порядке ротации, должно быть больше чем в dumpcycle, обычно это количество лент dumpcycle*2;
tpchanger Название устройства по смене лент;
tapedev Тип ленточного устройства;
tapetype Тип ленточного устройства ассоциированного с tapedev; labelstr Метка которая будет наноситься на ленты;
infofi le
logdir
indexdir
Опции задают расположение log-файлов, индексных файлов (содержащих образ бекап-директорий);
defi ne tapetype Задает бекап-устройство, в моем примере это диск на 500 Гб; defi ne dumptype Здесь задаются backup-опции.
Подводим итоги
Принцип работы Amanda понять не сложно Есть сервер с запущенной службой через xinetd и есть клиенты с запущенным сервисом ожидающим подключения от сервера В файле amandahosts на клиенте мы разрешаем каким серверам можно получать с нас бекап В файле disklist на сервере мы перечисляем список серверов и каталогов которые мы хотим резервировать
с них Как я писал выше, изначально Amanda была создана для работы с ленточными накопителями и это дает о себе знать Нам нужно создать набор каталогов и пометить их как лента Как будто мы работаем с набором лент ленточного накопителя При каждом запуске резервного копирования ленты последовательно будут меняться в “виртуальном лотке”
Резюме
Мы разобрали теорию бекапов и научились на практике дублировать наши данные разными способами
Домашняя работа
Установить и настроить Amanda, сделать пару бекапов, потом удалить “случайно” какой-нибудь файл в системе и восстановить его средствами Amanda
runspercycle Тоже самое что и dumpcycle;
tapecycle
Число лент которое Amanda использует в порядке ротации, должно быть больше чем в dumpcycle, обычно это количество лент dumpcycle*2;
tpchanger Название устройства по смене лент;
tapedev Тип ленточного устройства;
tapetype Тип ленточного устройства ассоциированного с tapedev; labelstr Метка которая будет наноситься на ленты;
infofi le
logdir
indexdir
Опции задают расположение log-файлов, индексных файлов (содержащих образ бекап-директорий);
defi ne tapetype Задает бекап-устройство, в моем примере это диск на 500 Гб; defi ne dumptype Здесь задаются backup-опции.
Подводим итоги
Принцип работы Amanda понять не сложно Есть сервер с запущенной службой через xinetd и есть клиенты с запущенным сервисом ожидающим подключения от сервера В файле amandahosts на клиенте мы разрешаем каким серверам можно получать с нас бекап В файле disklist на сервере мы перечисляем список серверов и каталогов которые мы хотим резервировать
с них Как я писал выше, изначально Amanda была создана для работы с ленточными накопителями и это дает о себе знать Нам нужно создать набор каталогов и пометить их как лента Как будто мы работаем с набором лент ленточного накопителя При каждом запуске резервного копирования ленты последовательно будут меняться в “виртуальном лотке”
Резюме
Мы разобрали теорию бекапов и научились на практике дублировать наши данные разными способами
Домашняя работа
Установить и настроить Amanda, сделать пару бекапов, потом удалить “случайно” какой-нибудь файл в системе и восстановить его средствами Amanda
Trang 30Сетевой интерфейс Linux
Сетевой интерфейс – это точка присутствия сервера в локальной сети В свою очередь, локальная сеть скорее всего будет иметь доступ в глобальные сети
Настройка сетевого интерфейса очень частая работа для системного администратора и в ней нет нечего сложного
Какие файлы влияют на работу сетевого интерфейса
/etc/modprobe.conf – здесь загружаются модули ядра для различных устройств
alias eth0 pcnet32
alias eth1 pcnet32
/etc/hosts – здесь находится список ip-адресов и назначенных им имен Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать эти имена на всю сеть
/etc/resolv.conf – в этом файле указываются DNS сервера DNS-сервер задается директивой nameserver
# cat /etc/resolv.conf
nameserver 192.168.146.2
/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени В нашем случае сначала используем /etc/hosts а только потом DNS-сервер
# cat /etc/host.conf
order hosts,bind
/etc/init.d/network – скрипт останавливающий и запускающий работу сети в Linux
/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить Включение осуществляется передачей “1” в этот файл
# echo '1' > /proc/sys/net/ipv4/ip_forward
/etc/sysconfi g/network — здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера Default gateway рекомендуется указывать здесь
# cat /etc/sysconfi g/network
NETWORKING=yes
Сетевой интерфейс Linux
Сетевой интерфейс – это точка присутствия сервера в локальной сети В свою очередь, локальная сеть скорее всего будет иметь доступ в глобальные сети
Настройка сетевого интерфейса очень частая работа для системного администратора и в ней нет нечего сложного
Какие файлы влияют на работу сетевого интерфейса
/etc/modprobe.conf – здесь загружаются модули ядра для различных устройств
alias eth0 pcnet32
alias eth1 pcnet32
/etc/hosts – здесь находится список ip-адресов и назначенных им имен Удобно в отсутствие DNS-сервера или когда нет необходимости сообщать эти имена на всю сеть
/etc/resolv.conf – в этом файле указываются DNS сервера DNS-сервер задается директивой nameserver
# cat /etc/resolv.conf
nameserver 192.168.146.2
/etc/host.conf – файл указывает последовательность использования механизмов разрешения имени В нашем случае сначала используем /etc/hosts а только потом DNS-сервер
# cat /etc/host.conf
order hosts,bind
/etc/init.d/network – скрипт останавливающий и запускающий работу сети в Linux
/proc/sys/net/ipv4/ip_forward – включение маршрутизации для своих интерфейсов, если у вас два или более интерфейсов её нужно включить Включение осуществляется передачей “1” в этот файл
# echo '1' > /proc/sys/net/ipv4/ip_forward
/etc/sysconfi g/network — здесь мы указываем, является ли наш сервер доступным по сети, если да то по каким протоколам и указываем наш hostname, то есть имя сервера Default gateway рекомендуется указывать здесь
# cat /etc/sysconfi g/network
NETWORKING=yes
Trang 31HOSTNAME=centos52
NETWORKING=yes — будет ли наш сервер работать в сети, наверно 99% случаев ответ будет — да, то есть yes :) Эта директива для Ipv4
NETWORKING_IPV6=no — Ipv6 уже где-то используется но не настолько чтобы переводить сервера на его использование Пока я не буду его включать.HOSTNAME=centos52 — имя нашего сервера
В /etc/sysconfi g/network-scripts/ находятся различные скрипты влияющие на работу сетевого интерфейса Linux
# ls -l /etc/sysconfi g/network-scripts/
-rw-r r 1 root root 140 Feb 14 19:23 ifcfg-eth0
-rw-r r 1 root root 254 Mar 3 2008 ifcfg-lo
/etc/sysconfi g/network-scripts/ifcfg-*
Для нас самое большое значение имеют скрипты ifcfg-* Именно в них описываются настройки сетевых интерфейсов присутствующих в сервере Давайте посмотрим что у них внутри
HWADDR=00:0C:29:43:5B:3D — MAC-адрес нашей сетевой карты Media Access Control — это уникальный идентификатор сетевой карты У каждой сетевой карты свой MAC-адрес и в идеале он не повторяется больше ни с каким в мире Иногда MAC-адрес пытаются подменить чтобы выдать свой компьютер за чужой, по каким либо соображениям, обычно враждебным Длина MAC-адреса составляет 48 бит что позволяет иметь 281 474 976 710
656 уникальных комбинаций У каждого производителя сетевых плат есть
NETWORKING_IPV6=no
HOSTNAME=centos52
NETWORKING=yes — будет ли наш сервер работать в сети, наверно 99% случаев ответ будет — да, то есть yes :) Эта директива для Ipv4
NETWORKING_IPV6=no — Ipv6 уже где-то используется но не настолько чтобы переводить сервера на его использование Пока я не буду его включать.HOSTNAME=centos52 — имя нашего сервера
В /etc/sysconfi g/network-scripts/ находятся различные скрипты влияющие на работу сетевого интерфейса Linux
# ls -l /etc/sysconfi g/network-scripts/
-rw-r r 1 root root 140 Feb 14 19:23 ifcfg-eth0
-rw-r r 1 root root 254 Mar 3 2008 ifcfg-lo
/etc/sysconfi g/network-scripts/ifcfg-*
Для нас самое большое значение имеют скрипты ifcfg-* Именно в них описываются настройки сетевых интерфейсов присутствующих в сервере Давайте посмотрим что у них внутри
HWADDR=00:0C:29:43:5B:3D — MAC-адрес нашей сетевой карты Media Access Control — это уникальный идентификатор сетевой карты У каждой сетевой карты свой MAC-адрес и в идеале он не повторяется больше ни с каким в мире Иногда MAC-адрес пытаются подменить чтобы выдать свой компьютер за чужой, по каким либо соображениям, обычно враждебным Длина MAC-адреса составляет 48 бит что позволяет иметь 281 474 976 710
656 уникальных комбинаций У каждого производителя сетевых плат есть
Trang 32свой диапазон в котором он назначает адреса своим платам адрес пишется в шестнадцатеричной форме счисления.
MAC-ONBOOT=yes — включать ли этот интерфейс автоматически при включение сервера Думаю, что скорее всего это и нужно
IPADDR=127.0.0.1 — ip-адрес loopback интерфейса Он всегда такой
NETMASK=255.0.0.0 — сетевая маска
NETWORK=127.0.0.0 — сеть в которой находится наш ip-адрес
BROADCAST=127.255.255.255 — адрес широковещательной рассылкиONBOOT=yes — включать ли интерфейс при загрузке сервера, конечно да!NAME=loopback — имя сетевого интерфейса Вывод команды ifconfi g будет показывать значение указанное именно в DEVICE
Custom iface
Выше мы рассмотрели интерфейс работающий по протолу dhcp Но как правило придется работать именно с custom-интерфейсами, то есть вручную задавать параметры и маршрутизацию о которой мы поговорим немного позже
MAC-ONBOOT=yes — включать ли этот интерфейс автоматически при включение сервера Думаю, что скорее всего это и нужно
IPADDR=127.0.0.1 — ip-адрес loopback интерфейса Он всегда такой
NETMASK=255.0.0.0 — сетевая маска
NETWORK=127.0.0.0 — сеть в которой находится наш ip-адрес
BROADCAST=127.255.255.255 — адрес широковещательной рассылкиONBOOT=yes — включать ли интерфейс при загрузке сервера, конечно да!NAME=loopback — имя сетевого интерфейса Вывод команды ifconfi g будет показывать значение указанное именно в DEVICE
Custom iface
Выше мы рассмотрели интерфейс работающий по протолу dhcp Но как правило придется работать именно с custom-интерфейсами, то есть вручную задавать параметры и маршрутизацию о которой мы поговорим немного позже
Trang 33# service network restart
или
# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
# service network restart
или
# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: [ OK ]
Проверим все ли поднялось
# ifconfi g
eth0 Link encap:Ethernet HWaddr 00:0C:29:43:5B:3D
Trang 34inet addr:192.168.146.130 Bcast:192.168.146.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff :fe43:5b3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1327 errors:0 dropped:0 overruns:0 frame:0
TX packets:1340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149547 (146.0 KiB) TX bytes:232486 (227.0 KiB)
Interrupt:59 Base address:0x2000
Жирным выделены особенно интересные нам участки в выводе команды ifconfi g Как видим все похоже на правду и интерфейс «поднят», то есть находится в рабочем режиме
Для большей ясности разберем и некоторые другие параметры сетевого интерфейса
MTU:1500 — это Maximum Transfer Unit Различные сети и каналы передачи имеют разные скорости обмена Это определяет максимальную длину пакета, пересылка которого с высокой вероятностью произойдет без ошибок Для Ethernet — сетей значение MTU составляет 1500 байт
Metric:1 — чем меньше это значение тем лучше считается маршрут до этой сети На серверах скорее всего это менять не придется Этот параметр играет большую роль в работе протоколов маршрутизации
Сollisions:0 — нулевое значение говорит о том, что с сетевым интерфейсом все в порядке на физическом уровне
RX bytes — сколько данных принято
TX bytes — сколько данных отослано
Так идем дальше В примере выше, после настройки сетевого интерфейса
мы полностью перезагружали службу network Когда на сервере только один интерфейс это не страшно, но если их несколько и какие-то уже работают
и выполняют свои функции прерывать их работу нежелательно Тут нам на помощь приходит скрипт ifup/ifdown Он нужен для перезагрузки какого либо одного сетевого интерфейса Короткий пример
Шаг 1 Вносим изменения в /etc/sysconfi g/network-scripts/ifcfg-eth0
Шаг 2 # ifdown eth0
Шаг 3 # ifup eth0
inet addr:192.168.146.130 Bcast:192.168.146.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff :fe43:5b3d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1327 errors:0 dropped:0 overruns:0 frame:0
TX packets:1340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:149547 (146.0 KiB) TX bytes:232486 (227.0 KiB)
Interrupt:59 Base address:0x2000
Жирным выделены особенно интересные нам участки в выводе команды ifconfi g Как видим все похоже на правду и интерфейс «поднят», то есть находится в рабочем режиме
Для большей ясности разберем и некоторые другие параметры сетевого интерфейса
MTU:1500 — это Maximum Transfer Unit Различные сети и каналы передачи имеют разные скорости обмена Это определяет максимальную длину пакета, пересылка которого с высокой вероятностью произойдет без ошибок Для Ethernet — сетей значение MTU составляет 1500 байт
Metric:1 — чем меньше это значение тем лучше считается маршрут до этой сети На серверах скорее всего это менять не придется Этот параметр играет большую роль в работе протоколов маршрутизации
Сollisions:0 — нулевое значение говорит о том, что с сетевым интерфейсом все в порядке на физическом уровне
RX bytes — сколько данных принято
TX bytes — сколько данных отослано
Так идем дальше В примере выше, после настройки сетевого интерфейса
мы полностью перезагружали службу network Когда на сервере только один интерфейс это не страшно, но если их несколько и какие-то уже работают
и выполняют свои функции прерывать их работу нежелательно Тут нам на помощь приходит скрипт ifup/ifdown Он нужен для перезагрузки какого либо одного сетевого интерфейса Короткий пример
Шаг 1 Вносим изменения в /etc/sysconfi g/network-scripts/ifcfg-eth0
Шаг 2 # ifdown eth0
Шаг 3 # ifup eth0
Trang 35Маршрутизация — это процесс поиска наилучшего пути от источника к получателю Это набор правил по которым будет передаваться трафик
Мы вроде бы с ней еще нечего не делали, но она уже у вас работает Не верите ? Сейчас проверим
netstat – команда позволяющая отслеживать сетевые подключения сервера
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface192.168.146.0 * 255.255.255.0 U 0 0 0 eth0default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0
В выводе мы увидим список сетей и как до них добраться То есть какой шлюз использовать для достижения пункта назначения Помните, когда мы настраивали сетевой интерфейс eth0 мы указали директиву GATEWAY в ifcfg-eth0 ? Этот gateway был помечен как default, то есть шлюз по умолчанию Весь трафик в сети, которые явно не описаны в таблице маршрутизации, отправляются через шлюз по умолчанию В нашем случае default gateway — 192.168.146.2
Вывод команды “netstat -r” нам говорит следующее
Первая строка Чтобы попасть в подсеть 192.168.146.0 нам не нужен никакой шлюз (*), поскольку мы и так находимся в этой сети
Вторая строка — это default, то есть маршрут по умолчанию Весь трафик предназначенный по все остальные сети будет уходить через этот шлюз.Genmask — это сетевая маска, благодаря маске можно отделить сетевую часть адреса от адреса хоста
irtt - initial round trip time, задает значение которое используется при установке
Маршрутизация р ру ц
Маршрутизация — это процесс поиска наилучшего пути от источника к получателю Это набор правил по которым будет передаваться трафик
Мы вроде бы с ней еще нечего не делали, но она уже у вас работает Не верите ? Сейчас проверим
netstat – команда позволяющая отслеживать сетевые подключения сервера
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface192.168.146.0 * 255.255.255.0 U 0 0 0 eth0default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0
В выводе мы увидим список сетей и как до них добраться То есть какой шлюз использовать для достижения пункта назначения Помните, когда мы настраивали сетевой интерфейс eth0 мы указали директиву GATEWAY в ifcfg-eth0 ? Этот gateway был помечен как default, то есть шлюз по умолчанию Весь трафик в сети, которые явно не описаны в таблице маршрутизации, отправляются через шлюз по умолчанию В нашем случае default gateway — 192.168.146.2
Вывод команды “netstat -r” нам говорит следующее
Первая строка Чтобы попасть в подсеть 192.168.146.0 нам не нужен никакой шлюз (*), поскольку мы и так находимся в этой сети
Вторая строка — это default, то есть маршрут по умолчанию Весь трафик предназначенный по все остальные сети будет уходить через этот шлюз.Genmask — это сетевая маска, благодаря маске можно отделить сетевую часть адреса от адреса хоста
irtt - initial round trip time, задает значение которое используется при установке
Trang 36соединения Round trip time – представляет из себя отрезок времени, если
в течение которого от удаленного хоста не пришло подтверждение о получение пакета, пакет будет выслан снова
Iface – показывает к какому интерфейсу относится маршрут
Прописываем маршруты
Если на сервере несколько сетевых интерфейсов то скорее всего понадобится вручную составить таблицу маршрутизации
Приведу пример У нас два сетевых интерфейса eth0 и eth1 Через eth0
мы получаем доступ во внешние сети и по умолчанию весь трафик направляется через него Через eth1 мы получаем доступ ко внутренней сети 192.168.147.0/24 но что еще важнее, в этой сети есть сервер 192.168.147.1
у которого есть сетевой интерфейс в подсеть 192.168.148.0/24 и мы очень хотим туда попадать А для того что туда попадать необходимо прописать правильные маршруты у себя в ОС
Так выглядит таблица маршрутизации в нашем случае
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface192.168.147.0 * 255.255.255.0 U 0 0 0 eth1192.168.146.0 * 255.255.255.0 U 0 0 0 eth0192.168.148.0 192.168.147.1 255.255.255.0 UG 0 0 0 eth1default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0
То есть в подсеть 192.168.148.0/24 (внутренняя подсеть) мы попадаем через eth1 -> 192.168.147.1, сервер выполняющий роль шлюза в эту подсеть Все остальное идет через default шлюз Все очень просто Ну и собственно как привести настройки к этому
соединения Round trip time – представляет из себя отрезок времени, если
в течение которого от удаленного хоста не пришло подтверждение о получение пакета, пакет будет выслан снова
Iface – показывает к какому интерфейсу относится маршрут
Прописываем маршруты р р ру
Если на сервере несколько сетевых интерфейсов то скорее всего понадобится вручную составить таблицу маршрутизации
Приведу пример У нас два сетевых интерфейса eth0 и eth1 Через eth0
мы получаем доступ во внешние сети и по умолчанию весь трафик направляется через него Через eth1 мы получаем доступ ко внутренней сети 192.168.147.0/24 но что еще важнее, в этой сети есть сервер 192.168.147.1
у которого есть сетевой интерфейс в подсеть 192.168.148.0/24 и мы очень хотим туда попадать А для того что туда попадать необходимо прописать правильные маршруты у себя в ОС
Так выглядит таблица маршрутизации в нашем случае
# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface192.168.147.0 * 255.255.255.0 U 0 0 0 eth1192.168.146.0 * 255.255.255.0 U 0 0 0 eth0192.168.148.0 192.168.147.1 255.255.255.0 UG 0 0 0 eth1default 192.168.146.2 0.0.0.0 UG 0 0 0 eth0
То есть в подсеть 192.168.148.0/24 (внутренняя подсеть) мы попадаем через eth1 -> 192.168.147.1, сервер выполняющий роль шлюза в эту подсеть Все остальное идет через default шлюз Все очень просто Ну и собственно как привести настройки к этому
Trang 37# cat /etc/sysconfi g/network-scripts/route-eth1
192.168.148.0/24 via 192.168.147.1
Для того чтобы прописать маршруты для какого либо интерфейса, необходимо создать файл route-<название интерфейса> в каталоге /etc/sysconfi g/network-scripts/ После того как все готово к работе, мы перезагружаем сетевой сервис
# service network restart
# cat /etc/sysconfi g/network-scripts/route-eth1
192.168.148.0/24 via 192.168.147.1
Для того чтобы прописать маршруты для какого либо интерфейса, необходимо создать файл route-<название интерфейса> в каталоге /etc/sysconfi g/network-scripts/ После того как все готово к работе, мы перезагружаем сетевой сервис
# service network restart
Trang 38Теперь подведем итоги, что и как мы сделали.
Есть три вида маршрутов Динамические – которые динамически назначаются сетевому интерфейсу, например сервером DHCP Статические – которые вы вручную прописываете и они остаются в настройках после перезагрузки сервера И маршруты по умолчанию – когда никакие другие маршруты не подходят для того, чтобы отослать по ним пакеты
Мы могли добавить маршрут в подсеть 192.168.148.0/24 командой route
# route add -net 192.168.148.0/24 gw 192.168.147.1
Но после перезагрузки сервера информация о маршруте пропала бы Чтобы такого не произошло используется специальный механизм А именно создание файла вида route-<имя интерфейса> в /etc/sysconfi g/network-scripts В него мы вносим список сетей и как до них добраться Каждая новая запись начинается с новой строки
Про шлюз
Чтобы сервер был шлюзом для других компьютеров необходимо удовлетворить ряд условий:
1 На сервере корректная таблица маршрутизации благодаря которой он поймет что делать с пакетами дальше;
# echo '1' > /proc/sys/net/ipv4/ip_forward
нужной нам сети, например вот так (перенаправлять пакеты для хостов из подсети 192.168.146.0/24):
# iptables -t nat -A POSTROUTING -s 192.168.146.0/24 -j MASQUERADE
Полезные ключи netstat
r – показывает таблицу маршрутизации
n – выводит статистику по ip-адресу, не пытается определить имя хоста Это работает несколько быстрее и обычно, вывод команды удобнее читать
a – показывает состояние всех сокетов на сервере Сокет – это конечная точка сетевых коммуникаций Каждый сокет имеет тип и ассоциированный
Мы могли добавить маршрут в подсеть 192.168.148.0/24 командой route
# route add -net 192.168.148.0/24 gw 192.168.147.1
Но после перезагрузки сервера информация о маршруте пропала бы Чтобы такого не произошло используется специальный механизм А именно создание файла вида route-<имя интерфейса> в /etc/sysconfi g/network-scripts В него мы вносим список сетей и как до них добраться Каждая новая запись начинается с новой строки
Про шлюз р
Чтобы сервер был шлюзом для других компьютеров необходимо удовлетворить ряд условий:
1 На сервере корректная таблица маршрутизации благодаря которой он поймет что делать с пакетами дальше;
2 Включена передача пакетов между интерфейсами:
# echo '1' > /proc/sys/net/ipv4/ip_forward
3 Включен маскарадинг (или установлен прокси) для нужной нам сети, например вот так (перенаправлять пакеты для хостов из подсети 192.168.146.0/24):
# iptables -t nat -A POSTROUTING -s 192.168.146.0/24 -j MASQUERADE
Полезные ключи netstat
r – показывает таблицу маршрутизации
n – выводит статистику по ip-адресу, не пытается определить имя хоста Это работает несколько быстрее и обычно, вывод команды удобнее читать
a – показывает состояние всех сокетов на сервере Сокет – это конечная точка сетевых коммуникаций Каждый сокет имеет тип и ассоциированный
Trang 39netstat на практике
Параметров выше вполне достаточно, чтобы многое узнать из жизни сетевых служб
# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 ::ff ff :192.168.146.130:22 ::ff ff :192.168.146.1:2642 ESTABLISHEDtcp 0 132 ::ff ff :192.168.146.130:22 ::ff ff :192.168.146.1:2027 ESTABLISHED
TIME_WAIT – сокет после своего закрытия, еще какое-то время принимает пакеты из сети;
CLOSED – сокет не используется;
CLOSE_WAIT – удаленный хост отключился, ожидаем закрытия сокета;LAST_ACK – удаленный хост отключился и сокет закрыт Ожидание потдверждения;
LISTEN – сокет ожидает входящие подключения;
CLOSING – оба сокета отключились но еще не все наши данные отосланы;UNKNOWN – статус сокета неизвестен
netstat на практике р
Параметров выше вполне достаточно, чтобы многое узнать из жизни сетевых служб
# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 ::ff ff :192.168.146.130:22 ::ff ff :192.168.146.1:2642 ESTABLISHEDtcp 0 132 ::ff ff :192.168.146.130:22 ::ff ff :192.168.146.1:2027 ESTABLISHED
TIME_WAIT – сокет после своего закрытия, еще какое-то время принимаетпакеты из сети;
CLOSED – сокет не используется;
CLOSE_WAIT – удаленный хост отключился, ожидаем закрытия сокета;LAST_ACK – удаленный хост отключился и сокет закрыт Ожиданиепотдверждения;
LISTEN – сокет ожидает входящие подключения;
CLOSING – оба сокета отключились но еще не все наши данные отосланы;UNKNOWN – статус сокета неизвестен
Trang 40Мы научились настраивать один и более сетевых интерфейсов Разобрались
с маршрутизацией Узнали какие файлы и как влияют на работу сети в Linux Сейчас мы познакомимся с двумя программами которые играют существенную роль в работе сети Это программа nmap – которая сканирует порты удаленного хоста и сообщается какие порты на нем открыты И программа tcpdump, она переводит вашу сетевую плату в режим promiscuous, что позволяет перехватывать весь трафик проходящий через карту
NMAP
Nmap позволяет сканировать удаленные компьютеры на предмет открытых портов С более агрессивными опциями можно узнать версию ОС и некоторые другие вещи
Not shown: 1677 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
111/tcp open rpcbind 2 (rpc #100000)
935/tcp open status 1 (rpc #100024)
MAC Address: 00:0C:29:25:04:55 (VMware)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11
Uptime 0.195 days (since Wed Feb 18 14:55:10 2009)
Nmap fi nished: 1 IP address (1 host up) scanned in 14.239 seconds
У nmap много различных опций, подробнее о них можно прочитать в man nmap
Мы научились настраивать один и более сетевых интерфейсов Разобрались
с маршрутизацией Узнали какие файлы и как влияют на работу сети в Linux Сейчас мы познакомимся с двумя программами которые играют существенную роль в работе сети Это программа nmap – которая сканирует порты удаленного хоста и сообщается какие порты на нем открыты И программа tcpdump, она переводит вашу сетевую плату в режим promiscuous, что позволяет перехватывать весь трафик проходящий через карту
NMAP
Nmap позволяет сканировать удаленные компьютеры на предмет открытых портов С более агрессивными опциями можно узнать версию ОС и некоторые другие вещи
Not shown: 1677 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
111/tcp open rpcbind 2 (rpc #100000)
935/tcp open status 1 (rpc #100024)
MAC Address: 00:0C:29:25:04:55 (VMware)
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11
Uptime 0.195 days (since Wed Feb 18 14:55:10 2009)
Nmap fi nished: 1 IP address (1 host up) scanned in 14.239 seconds
У nmap много различных опций, подробнее о них можно прочитать в man nmap