Bug 18763 - новая опция --rsync-exclude
Summary: новая опция --rsync-exclude
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: vzdump (show other bugs)
Version: unstable
Hardware: all Linux
: P2 enhancement
Assignee: Andrew Vasilyev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-06 19:06 MSK by Michael A. Kangin
Modified: 2020-09-11 16:34 MSK (History)
8 users (show)

See Also:


Attachments
новая опция rsync-exclude (2.17 KB, patch)
2009-02-06 19:06 MSK, Michael A. Kangin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael A. Kangin 2009-02-06 19:06:13 MSK
Created attachment 3302 [details]
новая опция rsync-exclude

Бывает так, что сама виртуальная машина крохотная, а какой-нибудь не сильно нужный для резервного копирования каталог с данными внутри неё просто огромный. И vzdump такой машины может занять несколько часов (не говоря уж о расходуемом месте на диске). Опция --exclude-path не помогает, так как она применяется только на этапе создания tar-архива, уже после копирования VE rsync'ом во временную директорию. 

Предлагаю маленький патчик для новой опции --rsync-exclude, которая передаётся непосредственно rsync'у как его --exclude.
Comment 1 Mikhail Gusarov 2009-02-06 20:02:10 MSK
А как насчёт, мнэ, повесить такое в апстрим?
Comment 2 Slava Dubrovskiy 2009-02-07 09:14:52 MSK
(В ответ на комментарий №1)
> А как насчёт, мнэ, повесить такое в апстрим?
Апстрим теперь тут http://www.proxmox.com/cms_proxmox/en/virtualization/openvz/vzdump/ и в принципе у меня готова сборка версии 1.1, но я никак не могу проверить как он с LVM снапшотами работает. Может на неделе или позже немного.


(В ответ на комментарий №0)
> Created an attachment (id=3302) [details]
> новая опция rsync-exclude
> 
> Бывает так, что сама виртуальная машина крохотная, а какой-нибудь не сильно
> нужный для резервного копирования каталог с данными внутри неё просто огромный.
> И vzdump такой машины может занять несколько часов (не говоря уж о расходуемом
> месте на диске). Опция --exclude-path не помогает, так как она применяется
> только на этапе создания tar-архива, уже после копирования VE rsync'ом во
> временную директорию. 
> 
> Предлагаю маленький патчик для новой опции --rsync-exclude, которая передаётся
> непосредственно rsync'у как его --exclude.

Я попробую этот патч на 1.1. Если там такого еще нет и если ничего не сломается.
Comment 3 Slava Dubrovskiy 2009-02-07 09:57:44 MSK
Чего то уже  closed
Comment 4 Michael A. Kangin 2009-02-08 01:23:24 MSK
(В ответ на комментарий №2)

> Я попробую этот патч на 1.1. Если там такого еще нет и если ничего не
> сломается.

Там такого нет, только вряд ли этот патч возьмёт и приложится на 1.1; наверное, переделывать придётся.
Comment 5 Slava Dubrovskiy 2009-02-09 09:38:07 MSK
(В ответ на комментарий №4)
> (В ответ на комментарий №2)
> 
> > Я попробую этот патч на 1.1. Если там такого еще нет и если ничего не
> > сломается.
> 
> Там такого нет, только вряд ли этот патч возьмёт и приложится на 1.1; наверное, переделывать придётся.

Почему нет? Вроде есть.

$ sudo vzdump
usage: /usr/sbin/vzdump OPTIONS [--all | VPSID]

        --exclude VPSID         exclude VPSID (assumes --all)
        --exclude-path REGEX    exclude certain files/directories
        --stdexcludes           exclude temorary files and logs
Comment 6 Michael A. Kangin 2009-02-09 11:25:51 MSK
(В ответ на комментарий №5)
> (В ответ на комментарий №4)

> > Там такого нет, только вряд ли этот патч возьмёт и приложится на 1.1; наверное, переделывать придётся.
> 
> Почему нет? Вроде есть.
> 
> $ sudo vzdump
> usage: /usr/sbin/vzdump OPTIONS [--all | VPSID]
> 
>         --exclude VPSID         exclude VPSID (assumes --all)
>         --exclude-path REGEX    exclude certain files/directories
>         --stdexcludes           exclude temorary files and logs

--exclude тут вообще не причём, а --exclude-path и --stdexcludes действуют как исключения для find, который find'ит в уже скопированном rsync'ом дереве файлов. В том-то весь и фокус - исключить ненужное на этапе первоначального rsync'а, а не последующего find'а.
Comment 7 Michael A. Kangin 2009-11-09 18:30:22 MSK
Для версии 1.1:
http://git.altlinux.org/people/prividen/packages/vzdump.git
на 1.2 даже взглянуть убоялся.

Там же две полезных для резервного копирования баз данных опции --cmd-presuspend и --cmd-postsuspend.
Comment 8 Slava Dubrovskiy 2009-11-09 19:02:13 MSK
(В ответ на комментарий №7)
> Для версии 1.1:
> http://git.altlinux.org/people/prividen/packages/vzdump.git
> на 1.2 даже взглянуть убоялся.
Я смотрел. Устал патчить и плюнул.

> Там же две полезных для резервного копирования баз данных опции
> --cmd-presuspend и --cmd-postsuspend.
С lvm работает?
Comment 9 Michael A. Kangin 2009-11-09 19:49:58 MSK
(В ответ на комментарий №8)

> > Там же две полезных для резервного копирования баз данных опции
> > --cmd-presuspend и --cmd-postsuspend.
> С lvm работает?

Пока нет. В принципе, добавить эти опции для ЛВМ там парой строчек можно, но мне тестировать не на чем. сделать?
Comment 10 Michael A. Kangin 2009-11-10 17:50:27 MSK
(В ответ на комментарий №9)

> С lvm работает?

В общем, закоммитил эту функциональность, прошу посмотреть патч и проверить в работе.
Comment 11 Slava Dubrovskiy 2009-11-12 20:32:37 MSK
Я вот посмотрел и собрал 1.2. 
вот занимаюсь тестированием.
Команды cmd-* там есть, но немного в другом виде. Через script специальный.
Может вы посмотрите как там сделали exclude? Может там сделали как вы хотели?
Если нет, то может тогда сразу внести эти правки в 1.2?
Comment 12 Michael A. Kangin 2009-11-15 01:03:28 MSK
(В ответ на комментарий №11)
> Я вот посмотрел и собрал 1.2. 
> вот занимаюсь тестированием.
> Команды cmd-* там есть, но немного в другом виде. Через script специальный.

Со скриптом этим пока печально.
Вызывается для всех фаз один мегаскриптик - его еще творить надо.
Фаза pre-stop подойдёт для перевода VM в режим бакапа (например, заморозка MySQL), а вот обратной ей фазы нет: pre-restart выполняется, пока VM еще заморожена (и, в случае со snapshot, ДО создания снапшота), backup-end ждать тоскливо - пока-то там всё затарится и загзипуется. 
Надо будет сотворить еще одну фазу post-restart.

> Может вы посмотрите как там сделали exclude? Может там сделали как вы хотели?

Нет, всё точно так же остаётся.

> Если нет, то может тогда сразу внести эти правки в 1.2?

Постараюсь на днях.


А у вас vzdump не ругается насчёт отсутствия --rsyncable у gzip?
Comment 13 Evgenii Terechkov 2011-04-10 13:00:29 MSK
ping

P.S.: gzip не ругается
Comment 14 Alexander Volkov 2011-09-22 14:13:04 MSK
см. тж #18048
Comment 15 Alexander Volkov 2012-08-13 15:29:21 MSK
между тем, в апстриме уже Version: 1.2.6
И работает со всем, чем надо, и полезных ключей понадобавлено...
Comment 16 Sergey Y. Afonin 2013-10-18 11:12:00 MSK
http://www.proxmox.com/cms_proxmox/en/virtualization/openvz/vzdump/ что-то не открывается больше... На сколько я понял, vzdump живёт сейчас внутри
http://git.proxmox.com/?p=pve-manager.git;a=summary

А на чём, в итоге, остановились ?
Comment 17 Sergey Y. Afonin 2013-10-18 11:14:33 MSK
Точнее, вот так: http://git.proxmox.com/?p=pve-manager.git
Comment 18 Slava Dubrovskiy 2013-10-18 11:51:19 MSK
(In reply to comment #16)
> http://www.proxmox.com/cms_proxmox/en/virtualization/openvz/vzdump/ что-то не
> открывается больше... На сколько я понял, vzdump живёт сейчас внутри
> http://git.proxmox.com/?p=pve-manager.git;a=summary
> 
> А на чём, в итоге, остановились ?
Та версия что в proxmox привязана к пакету proxmox, что мне не нравится. Поэтому не обновляю. Старая вполне работает.
Comment 19 Sergey Y. Afonin 2013-10-18 13:14:25 MSK
А 1.2.6 ? Тоже, в общем-то, старая, но в Debian-е, вроде как, есть, и без proxmox.
Comment 20 Sergey Y. Afonin 2020-09-11 11:38:54 MSK
А vzdump с OpenVZ 7 ещё актуален? Его ploop-у обучили?
Comment 21 Andrew Vasilyev 2020-09-11 13:32:49 MSK
(Ответ для Sergey Y. Afonin на комментарий #20)
> А vzdump с OpenVZ 7 ещё актуален? Его ploop-у обучили?

  Так в PVE OpenVZ не поддерживают больше, тем более OVZ7. Есть только KVM и LXC.
Comment 22 Sergey Y. Afonin 2020-09-11 13:43:45 MSK
(In reply to Andrew Vasilyev from comment #21)

>   Так в PVE OpenVZ не поддерживают больше,

Здесь же в отрыве от PVE обсуждение.
Comment 23 Andrew Vasilyev 2020-09-11 13:52:25 MSK
(Ответ для Sergey Y. Afonin на комментарий #22)
> (In reply to Andrew Vasilyev from comment #21)
> 
> >   Так в PVE OpenVZ не поддерживают больше,
> 
> Здесь же в отрыве от PVE обсуждение.

  Если речь про пакет vzdump в репозитории ALT, то в режиме stop/start он, наверное, работать будет, а вот в suspend, скорее всего, нет.
Comment 24 Andrew Vasilyev 2020-09-11 14:09:02 MSK
>   Если речь про пакет vzdump в репозитории ALT, то в режиме stop/start он,
> наверное, работать будет, а вот в suspend, скорее всего, нет.


  Проверил. Работает :-)

XXX# vzdump --suspend 10004
INFO: starting backup for VPS 10004 (/var/lib/vz/private/10004)
INFO: starting first sync /var/lib/vz/private/10004 to /var/lib/vz/dump/tmp12928
INFO: suspend vps
	freeze
INFO: final sync /var/lib/vz/private/10004 to /var/lib/vz/dump/tmp12928
INFO: resume vps
	unfreeze
INFO: vps is online again after 0 seconds
INFO: Creating archive '/var/lib/vz/dump/vzdump-10004.tar' (/var/lib/vz/dump/tmp12928/10004)
Total bytes written: 1543546880 (1.5GiB, 195MiB/s)
INFO: backup for VPS 10004 finished successful  (0.40 minutes)

XXX# uname -r
3.10.0-ovz-el7-alt4.1127.10.1.vz7.162.9
Comment 25 Sergey Y. Afonin 2020-09-11 16:25:59 MSK
(In reply to Andrew Vasilyev from comment #24)

> INFO: final sync /var/lib/vz/private/10004 to /var/lib/vz/dump/tmp12928
> INFO: resume vps
> 	unfreeze
> INFO: vps is online again after 0 seconds

Так это же он не ploop копировал. Хотя... Может и нормально. Потом просто распаковать в пустой ploop. Но вот что делать, если в контейнере несколько ploop...

/dev/ploop10541p1  9.9G  1.7G  7.8G  18% /
/dev/ploop17884p1   15G  394M   14G   3% /var/log
Comment 26 Andrew Vasilyev 2020-09-11 16:34:53 MSK
(Ответ для Sergey Y. Afonin на комментарий #25)
> (In reply to Andrew Vasilyev from comment #24)
> Так это же он не ploop копировал. Хотя... Может и нормально. Потом просто
> распаковать в пустой ploop. Но вот что делать, если в контейнере несколько
> ploop...

  Скрипт копирует tar-ом замороженный контейнер, включая root.hdd. Если будет несколько девайсов, возможно, он их тоже скопирует. 

  В случае одного root.hdd контейнер восстановился через vzdump --restore (в другой VEID) и запустился (со сменой IP в конфиге, разумеется). ploop device руками не создавался, всё автоматом.