Снять dump centos 7

Обновлено: 04.07.2024

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

Постановка задачи

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

Немного теории

В общем то, для решения данной задачи есть много разных способов, среди них такие как:

Что хочется добавить еще, какой бы способ вы не выбрали, это не спасет вас от последующей правки fstab, скриптов инициализации сети, hosts и т.д.

Пара слов о эталоне

Вот какие разделы и диски имеются на эталонном сервере:
2 раздела: /boot на /dev/sda1 и / на логическом разделе LVM LogVolRoot

В системе один физический раздел

И одна Volume Group которая состоит из этого одного физического раздела /dev/sda2

Ну и напоследок fstab:

От слов к делу

Вся процедура выглядет примерно так:

  • Делаем дампы разделов на эталонном сервере либо на внешний диск, либо на какой-то NAS.
  • Грузимся с live-cd на целевом сервере.
  • Подготавливаем диски целевого сервера: разбиваем на разделы, форматируем.
  • Подцепляем внешний диск/nas где лежат наши бэкапы.
  • Накатываем дампы.
  • Правим системные конфиги
  • Пересобираем initrd
  • Ставим grub в MBR.
  • Ребутимся и надеемся увидеть счастье.

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

2. Грузимся с live-cd. Я использовал тот же CentOS live-cd.

4. Поскольку дампы я залил на файловый сервер, то монтируем его:

Далее монтируем новые разделы, если они еще не смонтированы

Затем переходим в mount-point каждого раздела и накатываем dump:

надо поменять на

Для этого нам надо, во-первых, перемонтировать наш boot в boot, который находится в корне нашего подмонтированного рутового раздела, а не просто куда-нибудь. Это важно. Затем также смонтировать системные fs в дерево нашего образа, затем чрутнуться в наш образ и переинициализировать initrd:

Как показала практика, даже ручное указание, какие драйверы нужно добавить в образ, как показано ниже, не помогает.


Даже в этом случае при попытке загрузить ОС появляется kernel panic

8. Теперь дело за малым, это проинсталлить grub в MBR, чтобы он указывал на правильный раздел /boot. Поскольку диск у нас в системе один, и бутовый раздел на нем первый, то делаем следующее:

Я наверное не буду инноватором и по большей части здесь будут ссылки на маны, но тем не менее, кому-то может пригодиться, какие именно маны надо читать 🙂

Tshark – это анализатор сетевых протоколов без GUI (графической облочки), удобно для использования на серверах телефонии, DNS,Web где в среде рабочего стола не только нет необходимости, но и она избыточна, использует столь ценный ресурсы сервера. В этой статье мы рассмотрим, как снять дамп tshark и различные параметры.


Вывод в консоль перехваченных пакетов tshark.

Без каких-либо параметров TShark будет работать так же, как tcpdump. Он будет использовать библиотеку pcap для захвата трафика из первого доступного сетевого интерфейса и отображает вывод для каждого принятого пакета.

Выведем ключи запуска tshark и рассмотрим их поподробней.


Выводим помощь по синтаксису использования ключей.

Вторая страница помощи по выбору параметров ключей.

Первое что необходимо указать интерфейс с которого будем снимать дамп.

По умолчанию без указания интерфейса tshark снимает пакеты с первого по номеру интерфейса.

Увидеть доступные интерфейсы можно командой:


Выводим интерфейсы которые можно прослушать.

Как Вы можете возможно снять дамп и системных интерфейсов, например USB

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

Интерфейс захвата можно указать как с использованием номера, так и указать название, они равнозначны, пример:


Прослушивание определенного интерфейса.

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


Прослушивание нескольких интерфейсов одновременно

Сейчас tshark запущен в режиме захвата реального времени без сохранения. Удобен для мониторинга трафика в ожидании какого-нибудь события. Например, дебажить проблемы с прохождением пакетов регистрации sip-телефона, не отбрасываются ли пакеты?

Теперь приступим к непосредсвенно снятию дампа в файл командой:


Снятие дампа с интерфейса eth0 в файл eth0.pcap

На скриншоте видим количество захваченных пакетов.

Считываем снятый дамп и вывод на экран содержимое.

При отображении пакетов через стандартный вывод TShark записывает по умолчанию сводную строку, содержащую поля, указанные в файле настроек (которые также являются полями, отображаемыми в панели списка пакетов в Wireshark). Хотя, если он пишет пакеты, в процессе захвата, вместо того, чтобы записывать пакеты из сохраненного файла захвата, он не отображает поле «номер кадра». Если указан параметр -V , вместо этого он записывает представление о деталях пакета, отображая все поля всех протоколов в пакете.


Подробный вывод информации о каждом прослушанном пакете на интерфейсе eth0.

Если задана опция -O , она будет отображать только полные данные для указанных протоколов и показывать только подробную строку верхнего уровня для всех других протоколов.

Чтобы узнать имена протоколов, которые Вы можете указать, используется команда:

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


выводим список имен поддерживаемых протоколов.

Например, посмотрим полные данные только для пакетов по протоколу tcp.


Мониторим пакеты с интерфейса eth0 и выводим подробности для пакетов tcp.

Если параметр -P задан с параметрами -V или –O , отобразится итоговая строка для всего пакета и подробная информация.


Выводим подробную информацию только для пакетов udp с интерфейса eth0.

Если вы хотите записать декодированную форму пакетов в файл, запустите TShark без опции -w и перенаправьте свой стандартный вывод в файл (не используйте параметр -w ).


Перенаправляем декодированный вывод в файл.

Смотрим что записалось в файл.

Если вы хотите, чтобы пакеты отображались через стандартный вывод, а также сохранялись в файле, укажите параметр -P в дополнение к опции -w для отображения итоговой строки. Укажите параметр -V в дополнение к опции -w для отображения деталей отображаемого пакета и указания опции -O со списком протоколов, чтобы иметь полную информацию об указанных протоколах и строку подробностей верхнего уровня для всех других протоколов, которые будут отображаться. Если опция -P используется вместе с опцией -V или -O , то итоговая строка будет отображаться вместе с подробными строками.

Запись пакетов в файл дампа и параллельно вывод подробностей по пакетам udp.

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


Вывод форматов сохранения пакетов в файл.

Захват пакетов выполняется с помощью библиотеки pcap. Эта библиотека поддерживает указание выражения фильтра, используя ключ –f пакеты, которые не соответствуют этому фильтру, отбрасываются.

Например, для захвата сетевых пакетов с сетевого интерфейса с номером 2, c установленным фильтром, который будет выполнять захват только SIP/TCP-пакетов, выполните команду:


Когда включен, система загружается из контекста другого ядра.

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

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

1. Установите пакет kexec-tools, если он еще не установлен.

Чтобы использовать службу kdump, вы должны установить пакет kexec-tools. Если он еще не установлен, установите инструменты kexec.

2. Настройка использования памяти в GRUB2

Чтобы настроить объем памяти, зарезервированный для ядра kdump, отредактируйте /etc/default/grub и измените GRUB_CMDLINE_LINUX, установите параметр crashkernel = [размер] в список параметров ядра.

Выполните команду ниже, чтобы восстановить конфигурацию grub:

Перезагрузите систему, чтобы вступили в силу параметры ядра.

3. Конфигурирование местоположения дампа

Чтобы настроить kdump, нам нужно отредактировать файл конфигурации /etc/kdump.conf.

Опцией по умолчанию является сохранение файла vmcore в каталоге / var / crash / локальной файловой системы.

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

При желании вы также можете сохранить дамп ядра непосредственно в необработанном разделе.
Например:

4. Настройка Core Collector

Чтобы уменьшить размер файла дампа vmcore, kdump позволяет вам указать внешнее приложение для сжатия данных и, при необходимости, оставить всю несущественную информацию.

В настоящее время единственным полностью поддерживаемым сборщиком ядра является makedumpfile.

5. Изменение действия по умолчанию

Мы также можем указать действие по умолчанию для выполнения, когда дамп ядра не может сгенерироваться в нужном месте. Если не указано действие по умолчанию, «перезагрузка» считается по умолчанию.

6. Запустите демон kdump

Проверьте и убедитесь, что в командной строке ядра включена конфигурация kdump и память зарезервирована для сбоя ядра:

Установите,чтобы служба kdump могла быть запущена при перезагрузке системы.

Чтобы запустить службу в текущем сеансе, используйте следующую команду:

7. Тестирование kdump (ручной запуск kdump)

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

Затем введите в командной строке следующие команды:

Для записи при сбое ядра в выбранное местоположение то есть в / var / crash /

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Введение

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

анализ sip трафика asterisk в sngrep

Можно заглянуть в каждую строку и посмотреть все этапы взаимодействия в sip протоколе.

дамп трафика астериск

У вас перед глазами будет полная картина в режиме реального времени всех событий на вашем сервере asterisk. Вы можете не только просматривать события, но и сохранять дампы для последующего изучения или отправки. Часто техподдержка оператора или просто в теме на форуме с вопросом, люди просят предоставить sip логи в режиме debug. Их можно собрать с помощью астериска через консоль или вывод в файл. Но с помощью sngrep это сделать удобнее и нагляднее, особенно если надо выделить какую-то одну небольшую часть.

Для отладки и тестирования работы voip я рекомендую сервис Zadarma. Плюс его в том, что после регистрации вы получите настройки пира для внутренней сети оператора. И внутри этой сети вы можете бесплатно звонить. Например, я одного пира регистрирую на sip клиенте смартфона и с него звоню на второй аккаунт, пир от которого настроен в астериске. Таким образом эмулирую внешний звонок. Удобно отлаживать различные конфигурации звонков, не требуя платного подключения.

Я расскажу, как установить sngrep на сервере с CentOS 7, а затем на простом примере, покажу, как пользоваться этим инструментом. Рассмотрим изменение конфигурации asterisk и проследим с помощью sngrep эти изменения в sip трафике. Работать будем на сервере, настроенном по моей статье - установка и настройка asterisk.

Установка sngrep

Ставить, как я уже сказал ранее, будем на CentOS 7 из исходников. Устанавливаем необходимые пакеты.

Если у вас система Debian или Ubuntu, то необходимые пакеты будут такими.

Дальнейшее будет актуально для любой системы.

Скачиваем исходники и собираем.

На этом все, ничего сложного. Установили sngrep. Теперь можно проверить его в работе. Для этого просто запустите в консоли.

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

Анализ sip трафика asterisk с помощью sngrep

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

Смотрим консоль с sngrep. Там появилась строка с командой register.

информация о регистрации

Выбираем ее и жмем Enter. Проваливаемся в более подробную информацию о событии. Направления стрелок указывают направления передачи информации. Сначала наш сервер отправил запрос на регистрацию.

дамп register в asterisk

Потом удаленный сервер прислал ответ о том, что все в порядке.


Обращаю внимание на выделенный параметр expires=120. Это время действия регистрации, которую установил для нас сервер. Она равна двум минутам. Если мы посмотрим на левый столбец последнего скрина, то заметим, что повторный запрос на регистрацию нашим сервером был отправлен через 105 секунд. Это время expires - 15 секунд.

Дальше подключим нового абонента к нашему серверу и посмотрим на его регистрацию. Это будет софтофон с номером 100.

визуальный debug логов астериска

Смотрим подробности обмена информацией.

дебаг регистрации пира

Клиент с user-agent 3CXPhone запросил регистрацию с временем 120. Наш сервер зарегистрировал его с указанными параметрами.

дебаг успешной регистрации

Теперь предположим, что к нам подключается очень много клиентов и мы хотим увеличить интервал регистрации с 120 секунд до 600 (10 минут), чтобы на сервер сыпалось поменьше запросов. Мы можем указать этот параметр на стороне каждого клиента, но это более хлопотно. Вместо этого изменим минимальное время регистрации на сервере. Проверим, какое оно установлено сейчас.

Изменим параметр Reg. default duration и Reg. min duration до 600 секунд. Для этого добавляем в sip.conf в блок [general] параметры.

Открываем в консоли sngrep и снова подключаемся тем же софтфоном. Проверяем регистрацию.

запрос на регистрацию в asterisk

Клиент шлет запрос с Expires: 120, мы ему подтверждаем регистрацию с нашим временем - 600.

Успешная регистрация с Expires=600

Повторно за регистрацией абонент придет теперь только через 10 минут.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

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

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

Не забывайте пользоваться поиском во время работы. Он обновляет результаты в режиме реального времени, что очень удобно. В моем примере я запускал анализатор без ключей, он анализировал весь sip поток. Вы можете его сразу ограничить только конкретным сетевым интерфейсом, либо ip адресом, если дебажите что-то конкретное.

По большому счету, sngrep не делает ничего особенного. Собирать и анализировать sip поток можно и с помощью tcpdump, но в sngrep это более удобно и наглядно, особенно визуализация со стрелочками :)

Читайте также: