Home » International » Russian » vzmigrate: останавливается синхронизация
vzmigrate: останавливается синхронизация [message #37957] |
Fri, 06 November 2009 11:10 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Наконец-то завел дополнительные ноды, начал переносить контейнеры, все перешли нормально, самый большой (с почтой) оставил на десерт. Однако, при копировании 2,3 ГБ из 2,5 процесс замирает, суммарное время процсса sshd на ноде-получателе и ssh и rsync на источнике перестают расти. Вывод vzmigrate:
# vzmigrate -v --online hn1 101
OPT:-v
OPT:--online
OPT:hn1
Starting online migration of CT 101 to hn1
OpenVZ is running...
Loading /etc/vz/vz.conf and /etc/vz/conf/101.conf files
Check IPs on destination node: 10.3.128.xx
Preparing remote node
Copying config file
101.conf 100% 1758 1.7KB/s 00:00
Saved parameters for CT 101
Creating remote container root dir
Creating remote container private dir
Initializing remote quota
Quota init
Turning remote quota on
Syncing private
На этом после копирования 2,3 ГБ все замирает (ждал часа полтора). Варианты с --online и без него никак не влияют. Повторный запуск иногда просто можно запустить, один раз пришлось отключать квоту для будущего контейнера на ноде-получателе, один раз контейнер даже успел появиться в выводе vzlist -a как не запущенный.
ОС - CentOS 5.4.
Ядро на ноде-получателе
2.6.18-128.2.1.el5.028stab064.7PAE #1
на источнике
2.6.18-128.2.1.el5.028stab064.7 #1 SMP
(оба i686)
Весь софт самый последний, обновляется через yum.
|
|
|
Re: vzmigrate: останавливается синхронизация [message #37958 is a reply to message #37957] |
Fri, 06 November 2009 11:19 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
сейчас запустил strace на каждый процесс на ноде-источнике: vzmigrate, подчиненные awk, grep, rsync и подчиненный ему ssh. Везде тишина.
vzmigrate застрял на waitpid()
grep и awk на read()
rsync и ssh на select().
В логах (message, secure, vzctl.log и вывод dmesg) ничего подозрительного.
P.S. Небольшое уточнение:
ssh не замер на одном вызове, а повторяет его:
select(5, NULL, [4], NULL, {0, 301000}) = 0 (Timeout)
select(5, NULL, [4], NULL, {60, 0}) = 0 (Timeout)
select(5, NULL, [4], NULL, {60, 0}) = 0 (Timeout)
select(5, NULL, [4], NULL, {60, 0}) = 0 (Timeout)
select(5, NULL, [4], NULL, {60, 0}) = 0 (Timeout)
[Updated on: Fri, 06 November 2009 11:31] Report message to a moderator
|
|
|
|
|
|
|
Re: vzmigrate: останавливается синхронизация [message #37968 is a reply to message #37957] |
Fri, 06 November 2009 13:34 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Путем запуска vzquota stat на ноде-получателе нашел в чем проблема -- на исходной ноде размер контейнера (diskspace) оказался между softlimit (2,3 ГБ) и hardlimit (2,6 ГБ) (но все работало, df -h показывал ~70%), а на ноде-получателе, судя по всему, за размер softlimit выйти было нельзя, при копировании все стопорилось когда размер файлов на диске упирался в soflimit. Вот вывод vzquota stat на получателе когда все затыкалось:
[root@hn1 vz-scripts]# vzquota stat 101
resource usage softlimit hardlimit grace
1k-blocks 2359300* 2359296 2621440 none
inodes 47820 200000 220000
Увеличил квоту на исходной ноде перед переносом до 3:3,5 ГБ-- все перенеслось нормально. (Надо все-таки почитать про управление ресурсами). Странный момент в том, что судя по тому, что я вижу при пролистывании экрана putty, df -h внутри контейнера перед переносом показывал:
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/simfs 2,3G 1,6G 668M 72% /
none 252M 8,0K 252M 1% /dev
хотя, как оказалось, занято было около 2,5 ГБ (это несоответствие не заметил), а сейчас, на новой ноде, внутри контейнера показывает:
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/simfs 2,9G 2,6G 369M 88% /
none 2,0G 8,0K 2,0G 1% /dev
Сейчас проверил, на старой ноде в единственном оставшемся контейнере все показывается нормально, хотя, он не рабочий (для экспериментов), его объем в последнее время не рос. Может после моих каких-то действий что-то сбойнуло...
P.S. (чуть не забыл) Cпасибо за помощь
[Updated on: Fri, 06 November 2009 13:35] Report message to a moderator
|
|
|
|
Re: vzmigrate: останавливается синхронизация [message #37971 is a reply to message #37968] |
Fri, 06 November 2009 14:00 |
|
Значит, во-первых, на source системе, видимо, стоял grace period, а на dest он был в 0.
Во-вторых, расхождение в квотах может быть вызвано тем, что вы помимо квоты что-то писали в контейнер, например так:
vzctl stop NNN
vzctl umount NNN # на всякий случай
cp some /vz/private/NNN/tmp
При этом, понятное дело, учёта никакого нет, а также нет возможности потом (при старте контейнера) увидеть, что квоту надо пересчитывать.
Правильно писать в контейнер так:
vzctl mount NNN
cp some /vz/root/NNN/tmp
При этом записываемое будет учитываться в квоту, и она не разойдётся с реальными значениями.
Теперь как пересчитать квоту. Проще всего вот так:
vzctl stop NNN
vzctl umount NNN # на всякий случай
vzquota drop NNN
vzctl start NNN # тут будет пересчитываться квота
Kir Kolyshkin
|
|
|
Re: vzmigrate: останавливается синхронизация [message #37974 is a reply to message #37971] |
Fri, 06 November 2009 14:37 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
> Значит, во-первых, на source системе, видимо, стоял grace period, а на dest он был в 0.
Я пока не в курсе, где это настраивается (соотв-но, сам это нигде не менял), если это про параметр QUOTATIME в конфиге CT, то он равен нулю (и был перенесен на новую систему с тем же параметром).
> Во-вторых, расхождение в квотах может быть вызвано тем, что вы помимо квоты что-то писали в контейнер [...]
Это вполне может быть, т.к. перенос почты проходил в слегка экстремальном режиме, но мне казалось, что квота пересчитывается при перезапуске контейнера, поэтому не заострял внимания на этом моменте.
> Теперь как пересчитать квоту. [...]
Насколько я понял, при переносе она пересчиталась, если это просто совет на будущее, то тогда ясно, спасибо за совет.
|
|
|
Re: vzmigrate: останавливается синхронизация [message #37975 is a reply to message #37974] |
Fri, 06 November 2009 15:04 |
|
Про quotatime я прогнал -- конечно же, он такой же будет на второй системе, как и на первой. Проблема была вызвана неправильной квотой, а неправильная квота -- записью в контейнер помимо квоты.
Quote: | мне казалось, что квота пересчитывается при перезапуске контейнера
|
Нет, она пересчитывается не при каждом старте квоты, а только тогда, когда, скажем, нет квотафайла. То есть ситуацию, когда квота файл есть, но значения в нём неверные, нельзя задетектить.
При миграции она естественным путём пересчитывается -- сначала инициализируется и включается квота, потом всё копируется, и в процессе копирования считается.
Как вырулить в такой ситуации -- не знаю. Можно форсировать пересчёт квоты перед миграцией -- но такой вариант не пройдёт, потому что придётся контейнер останавливать.
Поэтому разве что смотреть на второй системе, не появились ли ошибки квоты, и в этом случае их как-то показывать и останавливать процесс...
Kir Kolyshkin
|
|
|
|
|
|
Re: vzmigrate: останавливается синхронизация [message #38016 is a reply to message #37977] |
Mon, 09 November 2009 11:09 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
запустил трассивроку еще и на сервер ssh на получателе, получилось куча файлов, в самом большом из них в конце:
write(1, "\340\322\344\202\270\320\327\272/\372Q\214L^\324lq\32\352\212\264\17\375\315\200\21\33\211\252PB\r"..., 122880) = -1 EDQUOT (Disk quota exceeded)
write(4, "R\0\0\10rsync: write failed on \"/vz/"..., 86) = 86
rt_sigaction(SIGUSR1, {0x1, [], SA_RESTORER, 0x138e98}, NULL, 8) = 0
rt_sigaction(SIGUSR2, {0x1, [], SA_RESTORER, 0x138e98}, NULL, 8) = 0
write(4, "L\0\0\10rsync error: error in file I"..., 80) = 80
exit_group(11) = ?
Так что проблема, наверное, все-таки в rsync...
|
|
|
Re: vzmigrate: останавливается синхронизация [message #38073 is a reply to message #38016] |
Fri, 13 November 2009 14:36 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Здравствуйте,
опция --implace у rsync тоже может помочь обойти проблемы с квотой (если квота для VE почти закончилась и хочется копировать файл, размер которого больше, чем позволяется VE в квоте, так как rsync может сначала копировать файл во временный, а потом ставить его на место, таким образом возможет двойной счет, если уже какой-то файл был до это скопирован).
[Updated on: Fri, 13 November 2009 14:39] Report message to a moderator
|
|
|
|
Goto Forum:
Current Time: Mon Nov 04 01:49:02 GMT 2024
Total time taken to generate the page: 0.03571 seconds
|