- Migration linux ��� ���
- Миграция виртуального сервера Linux: перемещение данных
- Общая стратегия
- Создание скрипта для миграции
- Установка дополнительных программ и сервисов
- Добавление репозиториев (опционально)
- Ограничение версий и установки
- Начало миграции данных
- Установка screen
- Перемещение файлов
- Расширение скрипта для синхронизации данных и файлов
- Конфигурационные файлы
- Вариант 1
- Вариант 2 (рекомендуемый)
- Дамп и перемещение файлов БД
- Дальнейшие действия
Migration linux ��� ���
Собираю статистику через cacti, перлом делаю ps -eo pcpu и складываю, смотрю, у меня система на половину забитая пол дня стоит, скорее top, htop, всё нормально, делаю вывод через ps, а там:
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 6 2 66 Jan25 ? 6-16:31:45 [migration/0]
манов нет, find / -name migration ничего не нашёл, процесс не убивается. Скорее всего это просто зависло состояние загрузки. Подскажите пожалуйста, что это за зверь такой, для чего он нужен и почему в ps он завис на 66 процентах?
Оглавление |
|
Сообщения по теме | [Сортировка по времени | RSS] |
1 . «MIGRATION кто это?» | + / – | |
Сообщение от _KUL (ok) on 04-Фев-12, 18:35 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
2 . «MIGRATION кто это?» | + / – | |
Сообщение от кегна on 04-Фев-12, 19:27 | ||
так это ж ядерный процесс. ясно дело что его не пришибешь) dmesg пусто? | ||
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору |
3 . «MIGRATION кто это?» | + / – | |
Сообщение от кегна on 04-Фев-12, 19:54 | ||
вроде решение: | ||
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору |
4 . «MIGRATION кто это?» | + / – | |
Сообщение от _KUL (ok) on 05-Фев-12, 17:44 | ||
Такого файла нет, только логи посмотрел, всё лаконично, ПО отрабатывает, всё нормально, никаких кёрнелов нет | ||
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору |
5 . «MIGRATION кто это?» | + / – | |
Сообщение от кегна on 05-Фев-12, 20:26 | ||
там по ссылке все достаточно подробно описано. что это и почему возникает. Источник Миграция виртуального сервера Linux: перемещение данныхВ некоторых ситуациях возникает необходимость перенести свои данные и рабочую среду с одного сервера на другой. Возможно, со временем вы захотите сменить центр обработки данных и провайдера или перейти на более крупную и мощную машину. В любом случае при переходе с одной системы в другую нужно учесть множество различных нюансов. Полностью восстановить функции и конфигурации может быть трудно, если вы не используете средства для управления конфигурацией (Chef, Puppet или Ansible). Кроме того, нужно не только переместить данные, но и настроить сервисы для работы на новой машине. В предыдущем руководстве вы подготовили серверы к перемещению данных и собрали список необходимого ПО и сервисов. Теперь целевой и исходный сервер могут взаимодействовать с помощью SSH-ключей. В данном руководстве вы узнаете, как переместить данные на новый сервер. Общая стратегияОбщая идея миграции заключается в том, чтобы переместить всю необходимую информацию и при этом оставить целевую систему как можно более чистой. Некоторые направляют для этого rsync на root исходной машины, а затем исключают некоторые файлы, которые могут вызвать конфликт. Мы не будем следовать этой стратегии. Миграция больших фрагментов системных данных в рабочую операционную систему может привести к непредсказуемым результатам. Кроме того, не стоит сразу перегружать новую систему лишними файлами. Описанный далее метод потребует больших усилий, но в результате вы получите более удобную и дружественную конфигурацию. Мы не будем мигрировать все доступные файлы, которые не вызовут конфликта, поскольку среди них могут оказаться файлы, которые больше не используются. Вместо этого мы продумаем все необходимые данные и переместим только требуемые файлы. Создание скрипта для миграцииВыбранные файлы нужно добавить в скрипт. Такой подход имеет ряд преимуществ. Вы сможете при необходимости повторно запустить команды, если у вас возникнут проблемы. Кроме того, скрипт самостоятельно документирует команды, которые вы использовали для передачи данных. Также это позволит исходному серверу перейти к следующему элементу передачи данных без взаимодействия с пользователем. Вы сможете запустить скрипт несколько раз для проверки. Большинство файлов будут переданы через rsync, эта утилита передает только файлы. Объемные фрагменты данных можно закомментировать на время тестирования. Это руководство поможет вам составить такой скрипт. Создать его можно в домашнем каталоге пользователя root. Это автоматизирует большую часть операций по перемещению данных. Создайте файл: В начало файла поместите стандартный заголовок скрипта. Вместо sh можно указать bash, если вы хотите использовать расширенные функции. По мере того, как вы будете отбирать необходимые файлы, скрипт будет расширяться. Пока что закройте файл, чтобы сделать его исполняемым. Вернитесь в командную строку и введите: chmod 700 /root/sync.sh Чтобы вызывать сценарий, укажите его абсолютный путь. Или относительный путь: Во время работы над скриптом нужно регулярно проверять его. Установка дополнительных программ и сервисовУстановите пакеты, которые помогут автоматизировать ряд задач. Их тоже можно добавить в скрипт, но лучше установить их вручную. У вас должен быть список требуемых пакетов и версий, собранный на исходной машине. Добавление репозиториев (опционально)Прежде чем загрузить эти версии с помощью менеджера пакетов, нужно узнать, добавлены ли в исходную систему какие-либо дополнительные репозитории. На машинах Ubuntu/Debian вы можете проверить репозитории здесь: Это главный список источников пакетов. Дополнительные списки могут храниться в каталоге sources.list.d: Если хотите, добавьте эти репозитории на целевую машину. В дистрибутивах RHEL список репозиториев можно запросить так: yum repolist enabled Чтобы добавить эти репозитории на целевую машину, введите: yum-config-manager —add-repo repo_url Внеся изменения в список источников, добавьте их в начало сценария и закомментируйте. Таким образом вы будете знать, что вам нужны эти репозитории, если в дальнейшем решите применить этот скрипт на чистой установке. nano /root/sync.sh Сохраните и закройте файл. Ограничение версий и установкиТеперь можно попробовать установить требуемые версии пакетов на целевую машину. Если это Ubuntu/Debian, введите: apt-get update Обычно устаревшие пакеты удаляются из официальных репозиториев. В этом случае вам, возможно, придется найти старую версию файлов .deb и их зависимостей и установить их вручную: dpkg -i package.deb Это необходимо, если от версии программы зависит работа приложения. В дистрибутивах RHEL можно установить конкретные версии пакетов с помощью программы: yum install package_name-version_number Если вам нужно найти файлы, которые были удалены из репозитория, используйте следующую команду, чтобы установить их: yum install package_name.rpm Установите все необходимое программное обеспечение, доступное для менеджера пакетов, в новую систему. Не забудьте указать в скрипте все свои операции. Добавьте их в скрипт и закомментируйте: nano /root/sync.sh Сохраните и закройте файл. Начало миграции данныхФактическая передача данных – самая значительная часть миграции. Если вы переносите сервер с большим количеством данных, скрипт уже сейчас может переместить какой-то фрагмент данных. позже вы сможете добавить другие команды в скрипт, а rsync передаст только различия между файлами. Установка screenДля удобства работы установите screen на целевую машину, чтобы машина продолжала поддерживать сессию. Установить screen в Ubuntu и Debian поможет команда: apt-get update Чтобы запустить сессию screen на целевом сервере, введите: После запуска сессии вы вернетесь в командную строку. Скорее всего, вы не заметите никаких изменений, но теперь терминал помещен в сессию screen. Это позволяет легко переключаться между несколькими сеансами терминала и восстанавливать сессию, если вам нужно покинуть локальный терминал или отключиться. Здесь вы можете выполнять команды и отключаться от терминала, при этом команды будут продолжать работу. Чтобы отключиться от терминала, введите: Чтобы восстановить терминал, введите: Чтобы создать новое окно терминала в сессии screen: Чтобы переключиться между окнами, используйте: CTRL-a n Перемещение файловВ сессии screen запустите любую задачу rsync, которая должна занять много времени. Количество времени здесь зависит от количества важных данных (не БД), которые вы должны перенести. Общий синтаксис команды: rsync -avz —progress source_server:/path/to/directory/to/transfer /path/to/local/directory Запустив сессию rsync, создайте новое окно screen и перейдите в него: Проверяйте его периодически, чтобы убедиться, что синхронизация поддерживается и, возможно, начать следующую синхронизацию, набрав: Расширение скрипта для синхронизации данных и файловТеперь нужно добавить команду rsync, которую вы только что выполнили, в скрипт. Добавьте дополнительные команды rsync, необходимые для получения всех важных данных пользователя и приложения на вашем целевом сервере. Пока что о файлах БД речи не идет, так как существуют лучшие методы для перемещения этих данных на другой сервер. #!/bin/sh Добавьте все команды rsync, необходимые для перемещения ваших данных и конфигураций исходной системы. Скрипт не должен быть идеальным, поскольку на данном этапе вы можете в любой момент исправить его. Скрипт будет запускаться несколько раз, это позволит вам исправить все ошибки и изъяны, а также добавить другие важные файлы. Конфигурационные файлыМногие программы будут работать должным образом даже после перемещения, но некоторые все же нуждаются в отладке. Это является небольшой проблемой для скрипта синхронизации. Если вы запустите скрипт для синхронизации данных, а затем измените конфигурации программ, эти изменения будут утеряны при следующем запуске сценария. Помните, что нужно запускать скрипт rsync несколько раз, чтобы внести все изменения, произошедшие в исходной системе. Исходная система может значительно измениться в процессе миграции и тестирования нового сервера. Есть два общих варианта, которые позволят сохранить изменения конфигураций. Начнем с более простого. Вариант 1Вариант 1 быстрый, но не самый безопасный. При этом вы должны изменить перемещенные файлы на целевой машине, а затем исключить их из скрипта. После этого rsync не будет синхронизировать эти файлы. Для этого нужно закомментировать предыдущую команду синхронизации и добавить новую команду, которая исключит файлы. # rsync -avz —progress 111.222.333.444:/etc/mysql/* /etc/mysql/ Добавьте исключения для всех файлов, которые не должны меняться на целевой машине. Также хорошо бы добавить в скрипт комментарий, описывающий все изменения, которые были внесены в файл. # Adding exclude rule. Changed socket to ‘/mysqld/mysqld.sock’ Вариант 2 (рекомендуемый)Системы Linux включают в себя множество текстовых манипуляторов, которые очень полезны для написания скриптов. Фактически большинство этих программ создаются специально для работы в среде сценариев. Самые популярные из них – sed и awk. Читайте также: Основная идея заключается в том, что в скрипт можно добавить любые изменения, которые вы делали бы вручную, и скрипт сам выполнит все указанное. В предыдущем примере вместо того чтобы исключать измененные файлы, вы можете прописать в самом скрипте все изменения, которые нужно внести в конфигурации. Вот как это делается с помощью sed: rsync -avz —progress 111.222.333.444:/etc/mysql/* /etc/mysql/ Эта команда будет менять сокет в каждом экземпляре файла после каждой передачи данных. Убедитесь, что команды для изменения файлов идут после строк, которые синхронизируют файлы. Аналогичным образом можно легко скопировать изменения, внесенные в файлы табличных данных, используя awk. Например, awk может удалить хэшированный пароль root из второго столбца файла /etc/shadow: awk ‘BEGIN < OFS=FS=":"; >$1==»root» < $2=""; >< print; >‘ /etc/shadow > shadow.tmp && mv shadow.tmp /etc/shadow && rm shadow.tmp Эта команда сообщает awk, что и исходный, и выходной разделитель должны быть двоеточием, а не пробелом. Затем нужно указать, что если столбец 1 равен «root», то столбец 2 должен содержать пустую строку. До появления новых версий awk не было возможности редактировать данные сразу, поэтому этот файл записывается во временный файл, затем исходный файл перезаписывается, а временный удаляется. Постарайтесь записать в скрипт все необходимые изменения. В дальнейшем вы сможете использовать этот скрипт повторно. Добавьте в скрипт команды, которые будут выполнять все необходимые операции. Дамп и перемещение файлов БДЕсли вы используете СУБД, вам нужно создать дамп БД доступными в вашей системе методами. Методы отличаются в зависимости от СУБД (MySQL, MariaDB, PostgreSQL и т.п.). В MySQL для экспорта БД есть команда: mysqldump -Q -q -e -R —add-drop-table -A -u root -proot_password > /root/database_name.db Опции этой команды зависят от контекста, поэтому вам нужно будет изучить, какие параметры подходят для вашей системы, прежде чем принимать решение. Рассмотрим некоторые опции дампа:
Теперь у вас есть дамп данных MySQL исходной системы. Выполните эту команду SSH: ssh root@111.222.333.444 ‘mysqldump -Q -q -e -R —add-drop-table -A -u root -proot_password > /root/database_name.db’ Теперь используйте обычную команду rsync, чтобы извлечь этот файл: rsync -avz —progress 111.222.333.444:/root/database_name.db /root/ Теперь можно импортировать дамп в целевую систему: mysql -u root -proot_password Не забудьте добавить все необходимые компоненты в скрипт. Дальнейшие действияТеперь данные перемещены в целевую систему. После этого нужно настроить целевую машину и подогнать ее под состояние исходного сервера. Источник |