OpenVZ Forum


Home » International » Russian » CentOS5: активация udev после обновления на CentOS 5.4
CentOS5: активация udev после обновления на CentOS 5.4 [message #38011] Mon, 09 November 2009 08:04 Go to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
Привет всем.

Сегодня выяснилось, что во всех контейнерах (судя по всему, после перезагрузки ноды с контейнерами) перестал работать rpm, почта и невозможно зайти в контейнер через vzctl enter (Unable to open pty: No such file or directory). В итоге выяснилось, что причина -- изменения в /dev (файлы терминалов, urandom и наверное, что-то еще). Судя по всему, изначальная причина в обновлении пакета initscripts, т.к. /vz/template/centos/5/i386/config/install-post удаляет запуск udev из /etc/rc.d/rc.sysinit. А сейчас в /etc/rc.d есть файл rc.sysinit.rpmsave со следами вмешательства и rc.sysinit с запуском udev. В логах yum есть запись:

Oct 23 19:13:03 Updated: initscripts-8.45.30-2.el5.centos.i386

Разница межу старым и новым rc.sysinit (обратите внимание на первое изменение):

--- rc.sysinit.rpmsave  2009-08-24 14:41:32.000000000 +0400
+++ rc.sysinit  2009-09-29 03:34:29.000000000 +0400
@@ -343,7 +343,7 @@
 nashpid=$(pidof nash 2>/dev/null)
 [ -n "$nashpid" ] && kill $nashpid >/dev/null 2>&1
 unset nashpid
-
+/sbin/start_udev

 # Load other user-defined modules
 for file in /etc/sysconfig/modules/*.modules ; do
@@ -761,9 +761,9 @@
 # mounted). Contrary to standard usage,
 # filesystems are NOT unmounted in single user mode.
 if [ "$READONLY" != "yes" ] ; then
-       action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs -O no_netdev
+       action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev
 else
-       action $"Mounting local filesystems: " mount -a -n -t nfs4,smbfs,ncpfs,cifs,gfs -O no_netdev
+       action $"Mounting local filesystems: " mount -a -n -t nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev
 fi

 if [ -x /sbin/quotaon ]; then
@@ -851,7 +851,7 @@

 # Clean out /.
 rm -f /fastboot /fsckoptions /forcefsck /.autofsck /forcequotacheck /halt \
-       /poweroff &> /dev/null
+       /poweroff /.suspended &> /dev/null

 # Do we need (w|u)tmpx files? We don't set them up, but the sysadmin might...
 _NEED_XFILES=
@@ -869,6 +869,7 @@
                */cvs)          rm -rf $afile/* ;;
                */dovecot)      rm -f $afile/*/* ;;
                */cups)         rm -f $afile/*/* ;;
+               */libvirt)      rm -rf $afile/*/* ;;
                *)              rm -f $afile/* ;;
           esac
        else


Судя по всему, при обновлении initscripts был заменен файл rc.sysinit с нужными изменениями.
В связи с этим хотелось узнать, как можно избежать такой ситуации в дальнейшем и хватит ли сейчас для исправления проблемы просто удалить запуск udev и перезагрузить контейнер?
(Сам шаблон можно взять в http://forum.openvz.org/index.php?t=msg&th=7825&star t=0& , там же описаны изменения (минимальные)).
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38012 is a reply to message #38011] Mon, 09 November 2009 08:17 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
Создал это сообщение в субботу, но забыл отправить. За это время закомментировал вызов udev в rs.sysinit и перезагрузил контейнеры -- все заработало. Остался вопрос, что делать для предотвращения подобных ситуаций.

Есть подозрение, что пакет vzdev-3.3.13-1.3.swsoft в шаблоне был предназначен для замены udev, но за время, прошедшее после его создания (вроде официальный шаблон есть только для CentOS4) многое изменилось, и udev поставился по зависимостям, т.к. vzdev перестал обеспечивать все необходимое. Или о перезаписи rc.sysinit просто не подумали (менее радостный вариант).

Свои мысли: вообще не трогать rc.sysinit (удалить его изменения из скриптов шаблона), изменить vzdev-3.3.13-1.3.swsoft так, чтобы был пустой файл /sbin/start_udev
и он (пакет vzdev) удовлетворял всем зависимостям, которые другие пакеты хотят от udev. Может еще есть какие варианты?
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38236 is a reply to message #38012] Tue, 01 December 2009 11:10 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
я на всякий случай подниму тему (может просто не заметили), сейчас лично для меня это не особо актуально, но проблема не решена, как-то неспокойно...
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38291 is a reply to message #38236] Fri, 04 December 2009 13:39 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Здравствуйте,

вы правы vzdev предназначен для того, чтобы не раздувать VE и не тацить с собой udev. Если udev ставится по зависимостям, то ничего страшного. В случае, если вы хотите использовать udev, можете прописать те девайсы, которые вы бы хотел udev создавал. Как это сделать описано, например, здесь
http://wiki.openvz.org/Container_enter_failed
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38293 is a reply to message #38291] Fri, 04 December 2009 14:12 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
Похоже, мы друг друга не совсем понимаем (не пойму, правда, кто кого).
Проблема в том, что после запуска udev начинаются чудеса (похуже, чем просто невозможность войти в контейнер), отключение его запуска делается путем изменения rc.sysinit, который будет перезаписан после очередного обновления пакета initscripts, что imho очень некрасиво.
Глянул страницу в wiki, похоже её обновили после моего последнего визита... Я пытаюсь более расширенно подойти к фразе "so you must take steps to guard against this" (если я правильно понял, что имеется в виду). Об этом и писал ранее. В идеале мне бы хотелось так модифицировать конфиг шаблона, чтобы после его сборки не нужно было ни за чем следить и чтобы ситуация вроде описанной мной не повторялась.
Я уже успел подзабыть тему, но вроде бы самая удачная мысль, которая мне приходила в голову -- удалить модификация rc.sysinit, модифицировать vzdev, чтобы он полностью подменял пакет udev в плане зависимостей и положить на место /sbin/start_udev какой-нибудь пустой файл, вроде
#!/bin/sh
exit 0

Соответственно, хотел спросить если ли возражения / предложения, т.к. вы явно лучше ориентируетесь в ситуации.
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38299 is a reply to message #38293] Fri, 04 December 2009 15:44 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Насколько я понял, мы пытаемся уйти от проблемы, не разрешив её. Хотелось бы разобраться с проблемой с udev'ом: если не создавались какие-то девайсы, то их можно создать с помощью удева, как описано в вики. А если нет - то что было причиной?

Насчет вашего решения, пока ничего не придумал против Smile
Одни только вопрос: как с версиями решили поступать?
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38326 is a reply to message #38299] Mon, 07 December 2009 11:29 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
Устройства есть, но они не работают, начинается это после добавления запуска udev. Если удалить запуск udev, то все работает нормально. diff-файл я прилагаю, то что с минусам -- это до запуска udev, с плюсами -- после. Я, к сожалению, только в общих чертах представляю как работает udev, поэтому выводов делать не могу о причинах того, что происходит. Я только вижу, что в vzdev есть устройства, после запуска udev эти устройства перестают работать, значит надо убрать запуск udev.
  • Attachment: udev_diff.txt
    (Size: 29.10KB, Downloaded 412 times)
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38420 is a reply to message #38326] Fri, 18 December 2009 12:38 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Здравствуйте еще раз.
Прошу прощения за задержку.

Вот только что удалось взглянуть на присланный вами файлик. Позвольте несколько замечаний на его счет:

- файлы терминалов уже были обсуждены, они разительно отличаются до и после включения udev. Поэтому если вы хотите использовать udev, создавайте их с помощью правил udev, как это описано в wiki (какие именно девайсы нужно создавать, можно, например, с помощью strace определить на команду, которая перестаёт работать).
- вы также жаловались на urandom, но посмотрите - во втором случае это не файл устройств а обыкновенный файл размеров 512 байт, поэтому энтропии на всех не хватило, попробуйте создать на его месте файл устройств (с:1:9)
Какие еще девайсы не работают вы не указали, поэтому я больше ничего не искал Smile
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38423 is a reply to message #38420] Fri, 18 December 2009 12:53 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
> Поэтому если вы хотите использовать udev
я изначально говорил не о том, что использовать, а как сделать, чтобы ситуация не повторялась. Я одинаково не знаю udev и структуру vzdev-3.3.13-1.3.swsoft, поэтому сейчас мне все равно, что использовать.

По поводу urandom я заметил. Остальные файлы устройств не смотрел, т.к. после удаления запуска udev у меня все работает.

Насколько я понимаю, Вы предлагаете отказаться от vzdev-3.3.13-1.3.swsoft и добавить в конфиг udev параметры для создания нужных устройств?
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38426 is a reply to message #38423] Fri, 18 December 2009 13:10 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Ну да, я предлагаю играть по правилам и не делать специальных костылей, зависящих от того, поставился udev или нет. Если udev поставился после upgrade, значит, это кому-нибудь было нужно. И нашими действиями должны стать изменения правил udev'а для создания недостающих устройств.
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38427 is a reply to message #38426] Fri, 18 December 2009 13:20 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
Хорошо, тогда направление действий примерно понятно. Удаляем из шаблона пакет vzdev-3.3.13-1.3.swsoft и делаем замену. По этому поводу сразу есть пара вопросов:

1. Как идеологически правильно будет добавить устройства:
    a) Создать новый пакет с нужными файлами
    b) создать эти файлы скриптами (install-post)
    с) как-то еще?

2. Как во все это вписывается пакет MAKEDEV-3.3.13-1.3.swsoft (мешает, помогает, никак)?





Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38428 is a reply to message #38427] Fri, 18 December 2009 13:50 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Я НЕ ПРЕДЛАГАЮ удалять пакет vzdev из шаблона.
С этим пакетом все прекрасно работает. И хорошо.
Мы хотим предотвратить проблему, что когда ставится udev по каким-то причинам (например, upgrade), то все перестаёт работать.
Поэтому нам нужно решить именно эту проблему - гладкая замена vzdev на udev.

Как вам такой сценарий?
- Мы хотим, чтобы при работе udev существовал наш файлик /etc/udev/makedev.d/51-udev.nodes, в котором были бы прописаны устройства, необходимые для работы (ptmx, pty etc.)
- Изменить vzdev таким образом, что в postuninstall скрипте vzdev оставлял бы после себя подобный файл.
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38470 is a reply to message #38428] Wed, 23 December 2009 07:35 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
я опять не понимаю. Сначала Вы пишете что не нужно удалять vzdev, потом что нужно заменить его. Зачем вообще держать два пакета с одним и тем же функционалом -- созданием файлов устройств?

[Updated on: Wed, 23 December 2009 07:41]

Report message to a moderator

Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38477 is a reply to message #38470] Thu, 24 December 2009 12:17 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *masterlink.ru
Quote:
я опять не понимаю

Прошу прощения, что вас запутал.

Quote:

Зачем вообще держать два пакета с одним и тем же функционалом -- созданием файлов устройств?


Конечно же, этого делать не нужно, об этом я писал в своем первом посте. Более того, те templates, которые выложены на openvz.org не содержат в себе оба пакета одновременно. Ваша ситуация изначально ничем не отличалась, у вас также был пакет vzdev, но не было пакета udev. И это нормально!!!
Однако, никто не мешает нам удалить этот пакет и на его место поставить udev (что было проделано системой в вашем случае). Поэтому мы должны что-либо сделать, чтобы данная процедура замены прошла гладко. Насколько я понимаю, вам не очень нравится идея ручками дописывать девайсы, которые вы бы хотели, чтобы udev создал, поэтому необходимо придумать автоматическое решение. Я предложил создавать файл для устройств в скрипте, который бы вызывался перед удалением пакета vzdev. Возможно, есть более элегантное решение.
Надеюсь, сейчас я был предельно четок.
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38478 is a reply to message #38477] Thu, 24 December 2009 14:00 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
То есть, насколько я понял, Вы согласны с тем, что нужно в конечном итоге удалить пакет vzdev и оставить udev, весь вопрос, как это гладко сделать?
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38479 is a reply to message #38478] Thu, 24 December 2009 14:42 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *masterlink.ru
Quote:

То есть, насколько я понял, Вы согласны с тем, что нужно в конечном итоге удалить пакет vzdev и оставить udev


А-а, я кажется понял, по поводу чего могла возникнуть путаница у нас с Вами. Smile По поводу термина "удалить". Если удалить, то откуда?

- Я не предлагаю удалять пакет vzdev из template.

- Но предоставить возможность в процессе жизнедеятельности VE поменять vzdev на udev.
Quote:

весь вопрос, как это гладко сделать?


Да, все мои разговоры были о том, как корректно реализовать замену vzdev на udev на работающей VE.
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38481 is a reply to message #38479] Fri, 25 December 2009 08:16 Go to previous messageGo to next message
lithium is currently offline  lithium
Messages: 78
Registered: April 2007
Member
From: *ros-express.ru
а может будет более правильным удалить vzdev из templtae и донастроить udev, чтобы он создавал те же устройства, что и vzdev? В vzdev же обычные файлы устройств, не какие-то OpenVZ-специфичные?
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38490 is a reply to message #38481] Sat, 26 December 2009 10:55 Go to previous message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
From: *sw.ru
Quote:

В vzdev же обычные файлы устройств, не какие-то OpenVZ-специфичные?


Обычные, не спецефичные.

Quote:

а может будет более правильным удалить vzdev из templtae и донастроить udev, чтобы он создавал те же устройства, что и vzdev?


Мне не ясно, чем это лучше. Ведь если udev на работающей системе захочет обновится, то мы должны будем сострогать костыли, которые бы и обновленный udev заставляли создавать нужные девайсы. А какая разница, где создавать костыли: в vzdev или udev? vzdev как-то предпочтительней, поскольку udev сторонний пакет, и городить огород в стороннем пакете, по моему мнению, идея не супер.
Previous Topic: gentoo --ipadd и маршруты в /etc/conf.d/net
Next Topic: puppet менеджмент и OpenVZ
Goto Forum:
  


Current Time: Sun Dec 08 11:12:57 GMT 2019