Home » International » Russian » CentOS5: активация udev после обновления на CentOS 5.4
CentOS5: активация udev после обновления на CentOS 5.4 [message #38011] |
Mon, 09 November 2009 08:04 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Привет всем.
Сегодня выяснилось, что во всех контейнерах (судя по всему, после перезагрузки ноды с контейнерами) перестал работать 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 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Создал это сообщение в субботу, но забыл отправить. За это время закомментировал вызов 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 #38293 is a reply to message #38291] |
Fri, 04 December 2009 14:12 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Похоже, мы друг друга не совсем понимаем (не пойму, правда, кто кого).
Проблема в том, что после запуска udev начинаются чудеса (похуже, чем просто невозможность войти в контейнер), отключение его запуска делается путем изменения rc.sysinit, который будет перезаписан после очередного обновления пакета initscripts, что imho очень некрасиво.
Глянул страницу в wiki, похоже её обновили после моего последнего визита... Я пытаюсь более расширенно подойти к фразе "so you must take steps to guard against this" (если я правильно понял, что имеется в виду). Об этом и писал ранее. В идеале мне бы хотелось так модифицировать конфиг шаблона, чтобы после его сборки не нужно было ни за чем следить и чтобы ситуация вроде описанной мной не повторялась.
Я уже успел подзабыть тему, но вроде бы самая удачная мысль, которая мне приходила в голову -- удалить модификация rc.sysinit, модифицировать vzdev, чтобы он полностью подменял пакет udev в плане зависимостей и положить на место /sbin/start_udev какой-нибудь пустой файл, вроде
Соответственно, хотел спросить если ли возражения / предложения, т.к. вы явно лучше ориентируетесь в ситуации.
|
|
|
|
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38326 is a reply to message #38299] |
Mon, 07 December 2009 11:29 |
lithium
Messages: 78 Registered: April 2007
|
Member |
|
|
Устройства есть, но они не работают, начинается это после добавления запуска udev. Если удалить запуск udev, то все работает нормально. diff-файл я прилагаю, то что с минусам -- это до запуска udev, с плюсами -- после. Я, к сожалению, только в общих чертах представляю как работает udev, поэтому выводов делать не могу о причинах того, что происходит. Я только вижу, что в vzdev есть устройства, после запуска udev эти устройства перестают работать, значит надо убрать запуск udev.
|
|
|
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38420 is a reply to message #38326] |
Fri, 18 December 2009 12:38 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Здравствуйте еще раз.
Прошу прощения за задержку.
Вот только что удалось взглянуть на присланный вами файлик. Позвольте несколько замечаний на его счет:
- файлы терминалов уже были обсуждены, они разительно отличаются до и после включения udev. Поэтому если вы хотите использовать udev, создавайте их с помощью правил udev, как это описано в wiki (какие именно девайсы нужно создавать, можно, например, с помощью strace определить на команду, которая перестаёт работать).
- вы также жаловались на urandom, но посмотрите - во втором случае это не файл устройств а обыкновенный файл размеров 512 байт, поэтому энтропии на всех не хватило, попробуйте создать на его месте файл устройств (с:1:9)
Какие еще девайсы не работают вы не указали, поэтому я больше ничего не искал
|
|
|
|
|
|
|
|
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38477 is a reply to message #38470] |
Thu, 24 December 2009 12:17 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Прошу прощения, что вас запутал.
Quote: |
Зачем вообще держать два пакета с одним и тем же функционалом -- созданием файлов устройств?
|
Конечно же, этого делать не нужно, об этом я писал в своем первом посте. Более того, те templates, которые выложены на openvz.org не содержат в себе оба пакета одновременно. Ваша ситуация изначально ничем не отличалась, у вас также был пакет vzdev, но не было пакета udev. И это нормально!!!
Однако, никто не мешает нам удалить этот пакет и на его место поставить udev (что было проделано системой в вашем случае). Поэтому мы должны что-либо сделать, чтобы данная процедура замены прошла гладко. Насколько я понимаю, вам не очень нравится идея ручками дописывать девайсы, которые вы бы хотели, чтобы udev создал, поэтому необходимо придумать автоматическое решение. Я предложил создавать файл для устройств в скрипте, который бы вызывался перед удалением пакета vzdev. Возможно, есть более элегантное решение.
Надеюсь, сейчас я был предельно четок.
|
|
|
|
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38479 is a reply to message #38478] |
Thu, 24 December 2009 14:42 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Quote: |
То есть, насколько я понял, Вы согласны с тем, что нужно в конечном итоге удалить пакет vzdev и оставить udev
|
А-а, я кажется понял, по поводу чего могла возникнуть путаница у нас с Вами. По поводу термина "удалить". Если удалить, то откуда?
- Я не предлагаю удалять пакет vzdev из template.
- Но предоставить возможность в процессе жизнедеятельности VE поменять vzdev на udev.
Quote: |
весь вопрос, как это гладко сделать?
|
Да, все мои разговоры были о том, как корректно реализовать замену vzdev на udev на работающей VE.
|
|
|
|
Re: CentOS5: активация udev после обновления на CentOS 5.4 [message #38490 is a reply to message #38481] |
Sat, 26 December 2009 10:55 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Quote: |
В vzdev же обычные файлы устройств, не какие-то OpenVZ-специфичные?
|
Обычные, не спецефичные.
Quote: |
а может будет более правильным удалить vzdev из templtae и донастроить udev, чтобы он создавал те же устройства, что и vzdev?
|
Мне не ясно, чем это лучше. Ведь если udev на работающей системе захочет обновится, то мы должны будем сострогать костыли, которые бы и обновленный udev заставляли создавать нужные девайсы. А какая разница, где создавать костыли: в vzdev или udev? vzdev как-то предпочтительней, поскольку udev сторонний пакет, и городить огород в стороннем пакете, по моему мнению, идея не супер.
|
|
|
Goto Forum:
Current Time: Sun Nov 03 20:00:38 GMT 2024
Total time taken to generate the page: 0.03716 seconds
|