Попросили меня как то разобраться с проблемой в proxmox'е... В целом картина была такая, что некогда была произведена миграция контейнеров на этот хост, но странным оставалось то, что они работали, но при этом ими невозможно было управлять. В терминале всё хозяйство выглядело примерно так:
1 183 running XXX.XXX.XXX.XXX www1.ww
3 - stopped XXX.XXX.XXX.XXX www2.ww
4 147 running XXX.XXX.XXX.XXX www3.ww
128 - stopped XXX.XXX.XXX.XXX www4.ww
253 193 running XXX.XXX.XXX.XXX www5.ww
254 - stopped XXX.XXX.XXX.XXX www6.ww
3 - stopped XXX.XXX.XXX.XXX www2.ww
4 147 running XXX.XXX.XXX.XXX www3.ww
128 - stopped XXX.XXX.XXX.XXX www4.ww
253 193 running XXX.XXX.XXX.XXX www5.ww
254 - stopped XXX.XXX.XXX.XXX www6.ww
В первом столбце как раз указаны id виртуалок. Надо оговориться, что коммерческой поддержки для этого хоста не было купленно и мне оставалось теперь полагаться только на себя... При попытках миграции с консоли или при обращении к машине через веб-интерфейс proxmox начинались сыпаться лавиной ошибки (но такая картина была только с первыми тремя). Мои потуги ползания по гуглу не привели ни к чему особенному (точнее все писали о своих проблемах, кои меня не трогали), но главное что в самом веб интерфейсе он мне писал ошибку "value does not look like a valid VM ID", что в вольном переводе гласит что значение не выглядит приемлемым для идентификатора виртуалки. Я решил за это зацепиться и начал поиск файлов, внутри которых могла бы быть эта строчка и о чудо - я накопал какой то файл с расширением .js, где я нашёл вот это:
register_format('pve-vmid', \&pve_verify_vmid);
sub pve_verify_vmid {
my ($vmid, $noerr) = @_;
if ($vmid !~ m/^[1-9][0-9]+$/) {
return undef if $noerr;
die "value does not look like a valid VM ID\n";
}
return $vmid;
}
sub pve_verify_vmid {
my ($vmid, $noerr) = @_;
if ($vmid !~ m/^[1-9][0-9]+$/) {
return undef if $noerr;
die "value does not look like a valid VM ID\n";
}
return $vmid;
}
Оказалось, что когда то при миграции виртуалок им назначили криво id (а надо было не 1, 2, 3, 4 и так до 99, а скажем к примеру 101, 102 ну и т.д.) и что мне оставалось, так это сменить id виртуалок. Но это оказалось нетривиальной задачей, но вполне решаемой, так что итак, погнали...
Для начала сдампим проблемную виртуалку:
vzctl chkpnt 1 --dumpfile /tmp/111.111
Теперь перенесём конфиг виртуалки:
mv /etc/vz/conf/1.conf /etc/vz/conf/101.conf
Затем откроем его и внутри сменим значения с 1 на 101 (там их всего то 2, да и то в самом конце файла, но меняем аккуратно, не забывая про синтаксис и кавычки), после чего сохраняем его:
nano /etc/vz/conf/101.conf
Теперь перенесём всё остальное:
mv /vz/private/1 /vz/private/101
mv /vz/root/1 /vz/root/101
Теперь восстановим работу виртуалки:
vzctl restore 101 --dumpfile /tmp/111.111
Посыпал ошибками при восстановлении виртуалки? Вполне возможно, но это решается сбросом квот на эту виртуалку, для чего сделаем следующее:
vzctl stop 101
vzquota drop 101
vzquota drop 101
vzctl start 101
После чего виртуалка запустится как по маслу, но со стандартными значениями в квотах (память+кол-во процессоров), но эти значения легко поменять через веб-интерфейс proxmox'a... Данные манипуляции укатили проблему в прошлое, но мало ли что будет в будущем...
Комментариев нет:
Отправить комментарий