Синхронизируйте снимки LVM к серверу резервного копирования

Ubuntu, потому что это легко и просто.

Хинду, потому что это - sooo много забавы.

21
задан 17 June 2009 в 19:14
8 ответов

Стандарт rsync пропускает эту функцию, но существует патч для него в rsync-патчах tarball (копия-devices.diff), которая может быть загружена с http://rsync.samba.org/ftp/rsync/ После appling и перекомпиляция, Вы можете rsync устройства с - опция устройств копии.

12
ответ дан 28 November 2019 в 20:26

Смотрите на Проект устройства хранения данных Linux Zumastor, он реализует резервное копирование "снимка" использование двоичного файла "rsync" через ddsnap инструмент.

Из страницы справочника:

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

6
ответ дан 28 November 2019 в 20:26
  • 1
    А-ч, который похож просто на вид вещи, которую я искал, спасибо. –  David Hicks 18 June 2009 в 20:29

Если бы Вы пытаетесь минимизировать вакуум суммы, Вы отправили бы через провод с плоскостью dd, Вы не могли просто передать его по каналу к gzip прежде, чем передать его по каналу к ssh?

например, dd, если =/dev/xenVG/SERVER001OS | gzip | ssh administrator@backupserver "dd =/mnt/largeDisk/SERVER001OS.img.gz"

1
ответ дан 28 November 2019 в 20:26
  • 1
    It' d сокращают пропускную способность, нуждался в немного, но we' ve получил образы дисков приблизительно на 60 и 100 ГБ и даже с gzip it' d занимают слишком много времени. –  David Hicks 25 June 2009 в 22:12

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

Например, производительность Mysql со снимками lvm

1
ответ дан 28 November 2019 в 20:26
  • 1
    Действительно - мое начальное решение, включенное, просто устанавливая ежедневный снимок, затем делающий разность с предыдущим day' s снимок и dd-луг это к серверу резервного копирования. Я был самым раздраженным для обнаружения этого wouldn' t быть настолько простым. –  David Hicks 25 June 2009 в 22:11

Хотя существуют патчи 'устройства записи' и 'устройства копии' для RSync, они только работают хорошо над маленькими (1-2GB) изображениями. RSync потратит возрасты, ищущие вокруг соответствие блокам на увеличенных изображениях, и это почти бесполезно из 40 ГБ или более крупных устройств/файлов.

Мы используем следующее, чтобы работать на сравнение контрольной суммы 1 МБ и затем затем скопировать содержание, если оно не соответствует. Мы используем это для серверов резервного копирования на виртуальном хосте в США к системе резервного копирования в Великобритании по общедоступному Интернету. Очень мало хита производительности активности ЦП и снимка только после закрытия:

Создайте снимок:

lvcreate -i 2 -L 25G /dev/vg_kvm/company-exchange -n company-exchange-snap1

export dev1='/dev/mapper/vg_kvm-company--exchange--snap1';
export dev2='/dev/mapper/vg_kvm-company--exchange';
export remote='root@backup.company.co.za';

Начальный отбор:

dd if=$dev1 bs=100M | gzip -c -9 | ssh -i /root/.ssh/rsync_rsa $remote "gzip -dc | dd of=$dev2"

Возрастающее ночное резервное копирование (только отправляет измененные блоки):

ssh -i /root/.ssh/rsync_rsa $remote "
  perl -'MDigest::MD5 md5' -ne 'BEGIN{\$/=\1024};print md5(\$_)' $dev2 | lzop -c" |
  lzop -dc | perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
    read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 | lzop -c |
ssh -i /root/.ssh/rsync_rsa $remote "lzop -dc |
  perl -ne 'BEGIN{\$/=\1} if (\$_ eq\"s\") {\$s++} else {if (\$s) {
    seek STDOUT,\$s*1024,1; \$s=0}; read ARGV,\$buf,1024; print \$buf}' 1<> $dev2"

Удалите снимок:

lvremove -f company-exchange-snap1
16
ответ дан 28 November 2019 в 20:26

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

Следующие модули являются обязательными:

  • core
  • mod_authz_host
  • mod_auth_basic
  • mod_authn_file
  • mod_dir
  • mod_log_config
  • mod_mime

Затем я закомментировал все оставшиеся модули и перезапустил Apache. Он будет звучать, если что-то сломается, например:

Starting httpd: Syntax error on line 10 of /etc/httpd/conf.d/squid.conf:
Invalid command 'order', perhaps misspelled or defined by a module not included in the server configuration

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

9
ответ дан 28 November 2019 в 20:26

Есть скрипт на языке Python, называемый blockync , который представляет собой простой способ синхронизации двух блочных устройств по сети через ssh, только передавая изменения.

  • Скопируйте blockync.py в домашний каталог на удаленном хосте.
  • Убедитесь, что ваш удаленный пользователь может использовать sudo или сам root.
  • Убедитесь, что ваш локальный пользователь (root?) Может читать исходное устройство и ssh для удаленный хост
  • Вызов: python blocksync.py / dev / source user @ remotehost / dev / dest

Я недавно взломал его, чтобы очистить его и изменить на использование той же быстрой контрольной суммы алгоритм как rsync ( Adler-32 ).

2
ответ дан 28 November 2019 в 20:26

В дополнение к ответу Дэвида Херсельмана следующий сценарий будет синхронизироваться с локальным устройством:

perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};print md5($_)' $dev2 |
  perl -'MDigest::MD5 md5' -ne 'BEGIN{$/=\1024};$b=md5($_);
    read STDIN,$a,16;if ($a eq $b) {print "s"} else {print "c" . $_}' $dev1 |
   perl -ne 'BEGIN{$/=\1} if ($_ eq"s") {$s++} else {if ($s) {
    seek STDOUT,$s*1024,1; $s=0}; read ARGV,$buf,1024; print $buf}' 1<> $dev2

Насколько мне известно, оба сценария были впервые опубликованы по адресу lists.samba.org .

0
ответ дан 28 November 2019 в 20:26

Теги

Похожие вопросы