Назад | Перейти на главную страницу

Как клонировать живой сервер linux, не останавливая его?

Вот моя текущая ситуация: + Linux-сервер, содержащий несколько веб-приложений, которые нельзя остановить, без физического доступа к нему, только через ssh.

Это то, что мне нужно: мне нужно реплицировать его на виртуальную машину на моем компьютере, чтобы выполнять некоторые операции, которые могут быть рискованными.

Что пробовал: пробовал dump команда, запускающая эту строку на живом сервере:

dump -0aLf / | ssh user@backup-server dd of=/path/to/destination/data.dump

Но не удается открыть устройства в /dev/ показывая это сообщение:

DUMP: Date of this level 0 dump: Mon Sep  1 16:52:14 2014
DUMP: Dumping /dev/vzfs (/) to /dev/tape
DUMP: Cannot open /dev/vzfs
DUMP: The ENTIRE dump is aborted.

Мои вопросы:

Вы всегда можете просто сделать tar.gz. Я сделал это для клонирования систем. Очевидно, вам необходимо создать разделы, отформатировать и смонтировать перед распаковкой в ​​целевой системе. Кроме того, вам нужно будет установить grub после и, конечно же, права root на исходной машине.

Я обычно перечисляю каждый раздел отдельно и использую --one-file-system. Например, представьте, что у вас есть система с /, /boot, /usr, /var и /tmp разные перегородки. Вы можете сделать архив всей системы следующим образом:

tar --one-file-system -cjpf backup.tar.bz2 / /boot /usr /var"

Также /sys, /dev, /proc, /tmp необходимо будет создать в целевой системе. /dev может быть включен в архив, это не вредит. Здесь вы тоже копируете /var/tmp просто потому, что это не отдельный раздел от /var, вы всегда можете использовать --exclude если вы не хотите его копировать. Обычно меня не волнует, не слишком ли он большой.

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

Невозможно клонировать сервер Linux без прав администратора (читай: root).

Похоже, вы пытаетесь сначала протестировать изменение в отдельной среде (которая в настоящее время не существует). Вопрос в том, каких слоев коснется это изменение?

Если вы знаете, какие компоненты будут обновлены / изменены, вы знаете, на чем сосредоточиться. Допустим, это сервер CentOS 6, на котором работает MySQL 5.1, и изменение заключается в обновлении до MySQL 5.5 (что угодно). Создайте отдельный компьютер с CentOS 6, установите MySQL 5.1, реплицируйте данные и конфигурацию, затем попробуйте выполнить обновление и протестируйте.

Если эту машину невозможно остановить, как вы ее исправляете? Я надеюсь ты Если да, то его можно остановить и просто потребуются какие-то меры. Лучше всего остановить его и подумать о выполнении операции p2v, чтобы у вас была точная система, работающая на виртуальной машине где-нибудь, с которой можно поэкспериментировать (и намного проще ломать и восстанавливать много раз, если необходимо).