OpenVZ Forum


Home » International » Russian » поддержка UDEV
поддержка UDEV [message #5812] Thu, 31 August 2006 10:09 Go to next message
kn1ght is currently offline  kn1ght
Messages: 17
Registered: May 2006
Location: Piter
Junior Member
А будет ли поддрержка UDEV ?
а то при активации udev в /dev/ отсутсвует почти все...
Re: поддержка UDEV [message #5826 is a reply to message #5812] Fri, 01 September 2006 04:24 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Уважаемый OpenVZ team слишком за виртуализировался и забыл что sysfs надо включать не только для дистрибутивов suse, а для любого который расчитан на 2.6 ядра. (проще уж добавить опцию в конфиг - чем шаманить с именем шаблона/дистрибутива в vzctl).
Кроме того неплохо бы иметь в sysfs не только class/network с данными по интерфейсам, но еще и class/tty/ptmx. Без этого не создается /dev/ptmx и не работает console multeplexer.
Патч исправляющий это досадное недоразумение приатачен.

PS. недавно получилось воспроизвести забавную атаку на OpenVZ. vzctl enter перевел процес в контекст VPS но при этом консоль открылась на хосте. Деталей толком нету - все что известно, это происходит при выходе за какой-то из лимитов скорее всего file limit или proc limit.
Re: поддержка UDEV [message #5827 is a reply to message #5812] Fri, 01 September 2006 04:56 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

внутри VE? пока не планируется, т.к. без нее живется прекрасно %)

на самом деле причины в другом. виртуализация sysfs/hotplug-events не столь простая вещь. sysfs/net-devices у нас виртуализованы, но... этого мало. Делать почестному - проблематично, а делать хаки не хочется. Плюс, помимо технических проблем есть проблемы совместимости. К сожалению, авторы sysfs/udev совершенно не озабочены совместимостью... Недавно Andrew Morton даже завернул патч от Greg KH... :/ Как Вы понимаете нам это критично...


http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5828 is a reply to message #5826] Fri, 01 September 2006 05:16 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

Quote:

Уважаемый OpenVZ team слишком за виртуализировался и забыл что sysfs надо включать не только для дистрибутивов suse, а для любого который расчитан на 2.6 ядра. (проще уж добавить опцию в конфиг - чем шаманить с именем шаблона/дистрибутива в vzctl).

1. Все нормальные дистрибутивы прекрасно работают и без sysfs/udev. Во многих из них, можно даже настраивать как работать.

2. sysfs был сделан опцией, т.к. на ядрах 2.6.x до какого-то момента файловая система sysfs работала так, что dentries/inodes были unreclaimable. Из-за этого sysfs даже в том виде какой он есть у нас занимал >0.5-1Mb/VE. Полный sysfs занимал бы еще в разы больше. В 2.6.16+ (по идее) его теперь можно просто всегда включать.

3. насчет конфига - правильное замечание, это просто где-то потерялось по пути в OpenVZ.
http://bugzilla.openvz.org/show_bug.cgi?id=242

Quote:

Кроме того неплохо бы иметь в sysfs не только class/network с данными по интерфейсам, но еще и class/tty/ptmx. Без этого не создается /dev/ptmx и не работает console multeplexer.
Патч исправляющий это досадное недоразумение приатачен.


Огромное спасибо за патч и за то, что помогаете не только словом, но и делом Smile
http://bugzilla.openvz.org/show_bug.cgi?id=243

Quote:


PS. недавно получилось воспроизвести забавную атаку на OpenVZ. vzctl enter перевел процес в контекст VPS но при этом консоль открылась на хосте. Деталей толком нету - все что известно, это происходит при выходе за какой-то из лимитов скорее всего file limit или proc limit.


будем исследовать. Как Вы определили что консоль открылась на хосте? /proc/user_beancounters Вы не смотрели?
http://bugzilla.openvz.org/show_bug.cgi?id=244


http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5836 is a reply to message #5828] Fri, 01 September 2006 09:02 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Quote:

1. Все нормальные дистрибутивы прекрасно работают и без sysfs/udev. Во многих из них, можно даже настраивать как работать.


Объясните это RHEL4 & клоны - которые в дефолтой конфигурации ставят udev, и не расчитаны на другое. Обмануть можно - но зачем ручные телодвижения?

Quote:


2. sysfs был сделан опцией, т.к. на ядрах 2.6.x до какого-то момента файловая система sysfs работала так, что dentries/inodes были unreclaimable. Из-за этого sysfs даже в том виде какой он есть у нас занимал >0.5-1Mb/VE. Полный sysfs занимал бы еще в разы больше. В 2.6.16+ (по идее) его теперь можно просто всегда включать.


это было в районе 2.6.3 или где-то типа того. патч под 2.6.8 (stable) и там насколько помню этого нету. Даже если бы и было - минимальное дерево не сожрет много места в памяти. И будет убито при unmount.

Quote:


3. насчет конфига - правильное замечание, это просто где-то потерялось по пути в OpenVZ.
http://bugzilla.openvz.org/show_bug.cgi?id=242


Тогда можете еще дописать
1) vzctl не возвращает коректный код возврата при enter failed.
Quote:


# vzctl enter 4 ; echo $?
enter failed
0


2) При привышении количества процессов и попытке сделать enter - возвращается
Quote:


# vzctl enter 4
Unable to fork: Cannot allocate memory


вместо Too many processes.
3) в какой-то момент получилась ситуация 2 раза смотрироваными директориями
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
Похоже в отличии от FreeVPS вы не делается force umount для всего VPS mount tree. Собственно OpenVZ не знает что такое disknamespace поэтому возможны такие приколы.


Quote:

Кроме того неплохо бы иметь в sysfs не только class/network с данными по интерфейсам, но еще и class/tty/ptmx. Без этого не создается /dev/ptmx и не работает console multeplexer.
Патч исправляющий это досадное недоразумение приатачен.


Огромное спасибо за патч и за то, что помогаете не только словом, но и делом Smile
http://bugzilla.openvz.org/show_bug.cgi?id=243

Quote:


Quote:


PS. недавно получилось воспроизвести забавную атаку на OpenVZ. vzctl enter перевел процес в контекст VPS но при этом консоль открылась на хосте. Деталей толком нету - все что известно, это происходит при выходе за какой-то из лимитов скорее всего file limit или proc limit.


будем исследовать. Как Вы определили что консоль открылась на хосте? /proc/user_beancounters Вы не смотрели?
http://bugzilla.openvz.org/show_bug.cgi?id=244


по тому что promt не поменялся. и я как был в /etc/sysconfig на host - так и остался. при этом ps ax показывал процессы VPS.
к сожалению я поздно спохватился и логов не сохранил. Но это была попытка запустить с Virtozzo unlimited.conf - VPS внутри которого RHEL4 с java. явно не хватало и процессов и файлов - но что именно позволило такому событию быть - не скажу.
Re: поддержка UDEV [message #5837 is a reply to message #5836] Fri, 01 September 2006 09:27 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

Quote:


это было в районе 2.6.3 или где-то типа того. патч под 2.6.8 (stable) и там насколько помню этого нету. Даже если бы и было - минимальное дерево не сожрет много места в памяти. И будет убито при unmount.



нет, как раз в 2.6.8 каждая sysfs отнимает по пол метра.
я понимаю, что Вам скорее всего это не критично, а для клиентов которые запускают по 100+ VE, это уже >50-100Mb, т.е. порядка 10% normal zone на i386.

Quote:


Тогда можете еще дописать
1) vzctl не возвращает коректный код возврата при enter failed.


http://bugzilla.openvz.org/show_bug.cgi?id=245


Quote:


2) При привышении количества процессов и попытке сделать enter - возвращается:
# vzctl enter 4
Unable to fork: Cannot allocate memory
вместо Too many processes.


Такой ошибки не бывает. Есть ENOMEM и ядро еще возвращает EAGAIN (Try again) в случае rlimit'ов.

P.S. такая ошибка есть на SPARC'е...
#define EPROCLIM 67 /* SUNOS: Too many processes */

Quote:


3) в какой-то момент получилась ситуация с 2 раза смотрироваными директориями
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
Похоже в отличии от FreeVPS вы не делается force umount для всего VPS mount tree. Собственно OpenVZ не знает что такое disknamespace поэтому возможны такие приколы.


disk namespace не используется, т.к. иначе проблематично осуществить доступ к файлам VE из VE0.
На VE stop все должно отмонтироваться... vzctl делает это в цикле пока есть маунты...



http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5838 is a reply to message #5837] Fri, 01 September 2006 10:04 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
[quote]
dev wrote on Fri, 01 September 2006 05:27

Quote:


это было в районе 2.6.3 или где-то типа того. патч под 2.6.8 (stable) и там насколько помню этого нету. Даже если бы и было - минимальное дерево не сожрет много места в памяти. И будет убито при unmount.



нет, как раз в 2.6.8 каждая sysfs отнимает по пол метра.
я понимаю, что Вам скорее всего это не критично, а для клиентов которые запускают по 100+ VE, это уже >50-100Mb, т.е. порядка 10% normal zone на i386.


по моим наблюдениям тем кому надо 100+ VE ставят миниум 2xPIV 4G, а то и x86_64/4G. Кроме того можно просто бэкпорт нужной фичи в stable. вы многое другое бэкпортите - так почему бы не это?

Quote:


Quote:


2) При привышении количества процессов и попытке сделать enter - возвращается:
# vzctl enter 4
Unable to fork: Cannot allocate memory
вместо Too many processes.


Такой ошибки не бывает. Есть ENOMEM и ядро еще возвращает EAGAIN (Try again) в случае rlimit'ов.

P.S. такая ошибка есть на SPARC'е...
#define EPROCLIM 67 /* SUNOS: Too many processes */


Есть еще и в FreeBSD - с которой я вобщем-то и спутал.

Quote:


Quote:


3) в какой-то момент получилась ситуация с 2 раза смотрироваными директориями
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
Похоже в отличии от FreeVPS вы не делается force umount для всего VPS mount tree. Собственно OpenVZ не знает что такое disknamespace поэтому возможны такие приколы.


disk namespace не используется, т.к. иначе проблематично осуществить доступ к файлам VE из VE0.
На VE stop все должно отмонтироваться... vzctl делает это в цикле пока есть маунты...



вот воспроизведение - box 2xPIIIs ядро stable с моим патчем.
# ssh rhel4
Last login: Fri Sep 1 07:56:17 2006 from berloga.shadowland
[root@rhel4 ~]# vzctl mount 4
VPS is mounted
[root@rhel4 ~]# vzctl start 4
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is unmounted
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# cat /proc/mounts
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
/dev/hda3 /vservers ext3 rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/vservers/vps134 /vz/root/4 simfs ro 0 0
/proc /vz/root/4/proc proc rw,nodiratime 0 0
/sys /vz/root/4/sys sysfs rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
[root@rhel4 ~]# vzctl restart 4
Restarting VPS
Stopping VPS ...
VPS was stopped
VPS is unmounted
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# cat /proc/mounts
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
/dev/hda3 /vservers ext3 rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/vservers/vps134 /vz/root/4 simfs rw 0 0
/proc /vz/root/4/proc proc rw,nodiratime 0 0
/sys /vz/root/4/sys sysfs rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
[root@rhel4 ~]# cat /proc/mounts
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
/dev/hda3 /vservers ext3 rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/vservers/vps134 /vz/root/4 simfs ro 0 0
/proc /vz/root/4/proc proc rw,nodiratime 0 0
/sys /vz/root/4/sys sysfs rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
[root@rhel4 ~]# vzctl restart 4
Restarting VPS
Stopping VPS ...
VPS was stopped
VPS is unmounted
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# cat /proc/mounts
/dev/root / ext3 rw 0 0
none /dev tmpfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
/dev/hda3 /vservers ext3 rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/vservers/vps134 /vz/root/4 simfs rw 0 0
/proc /vz/root/4/proc proc rw,nodiratime 0 0
/sys /vz/root/4/sys sysfs rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
none /vz/root/4/dev tmpfs rw 0 0
none /vz/root/4/dev/pts devpts rw 0 0
[root@rhel4 ~]#

Re: поддержка UDEV [message #5840 is a reply to message #5837] Fri, 01 September 2006 10:12 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Quote:


disk namespace не используется, т.к. иначе проблематично осуществить доступ к файлам VE из VE0.


Админ host не должен быть хозяином всего - иначе OpenVZ не позволяет хранить конфиденциальные данные. Пользователь должен иметь возможность хранить свои конфиденциальные данные которые не видны с host - иначе мы получаем ситуацию когда при взломе host - взломщику доступны данные всех VE на хосте. Как клево черт подери Smile человек замоунтил криптованый диск, а юзер на хосте может гулять по его данным и читать.

Re: поддержка UDEV [message #5841 is a reply to message #5840] Fri, 01 September 2006 10:33 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

если говорить о security, то:

1. disk namespace не улучшает security. host'овый root ВСЕГДА видит всю память, разделы, имеет прямой доступ к железу и может например читать disk partition. Надеюсь не надо объяснять, что человек, которому _НАДО_ владея всеми этими правами все равно получит доступ к файлам. И, в конце концов, наличие vzctl enter также позволяет УВИДЕТЬ ВСЕ что надо с еще меньшими усилиями.
Quote:


иначе OpenVZ не позволяет хранить конфиденциальные данные


Ни одна софтварная технология виртуализации не позволяет хранить конфидециальные данные, которые тем или иным образом не мог бы считать админ машины.
Разница только в требуемых усилиях.

Каковы Ваши предложения? Сделать просто чтобы по умолчанию доступа не было?

2. Обычно когда думают о безопасности не дают VE0 глобальные IP адреса и настраивают как положено доступ, также не запускают в VE0 apache c php, telnet Smile и т.д. Опять же, OpenVZ в данном плане не исключение. Об этом нужно помнить и думать при использовании любой технологии виртуализации.

Могу я поинтересоваться чем Вам так насолила OpenVZ и откуда такая неприязнь? По крайней мере, у меня возникло такое ощущение...


http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5842 is a reply to message #5841] Fri, 01 September 2006 10:54 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
dev wrote on Fri, 01 September 2006 06:33

если говорить о security, то:

Каковы Ваши предложения? Сделать просто чтобы по умолчанию доступа не было?

2. Обычно когда думают о безопасности не дают VE0 глобальные IP адреса и настраивают как положено доступ, также не запускают в VE0 apache c php, telnet Smile и т.д. Опять же, OpenVZ в данном плане не исключение. Об этом нужно помнить и думать при использовании любой технологии виртуализации.

Могу я поинтересоваться чем Вам так насолила OpenVZ и откуда такая неприязнь? По крайней мере, у меня возникло такое ощущение...


Сделать как сделано в том же Linux-VServer.
if inode->ctx_id != process->ctx_id => deny access. Это как миниум защитит от 90% атак из под обычного пользователя. И заставит очень сильно подумать человека который имеет даже root на host.

PS. неужели список багов это признак неприязни? хотя отсутсвие правильного кода возврата у vzctl - сильно мешает мне в работе.

Quote:


# vzctl status 4; echo $?
VPSID 4 exist unmounted down
0
[root@rhel4 ~]# vzctl start 4
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# vzctl status 4; echo $?
VPSID 4 exist mounted running
0


Re: поддержка UDEV [message #5843 is a reply to message #5842] Fri, 01 September 2006 11:09 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

Quote:


Сделать как сделано в том же Linux-VServer.
if inode->ctx_id != process->ctx_id => deny access. Это как миниум защитит от 90% атак из под обычного пользователя. И заставит очень сильно подумать человека который имеет даже root на host.



#define VE_AREA_ACC_CHECK 0x0001
#define VE_AREA_ACC_DENY 0x0002
#define VE_AREA_EXEC_CHECK 0x0010
#define VE_AREA_EXEC_DENY 0x0020
#define VE0_AREA_ACC_CHECK 0x0100
#define VE0_AREA_ACC_DENY 0x0200
#define VE0_AREA_EXEC_CHECK 0x1000
#define VE0_AREA_EXEC_DENY 0x2000
int ve_area_access_check = 0;

# echo 65535 > /proc/sys/fs/ve-area-access-check
и ядро будет ругаться и запрещать доступ к данным из VE0 в VE и наоборот (последнее просто дополнительная security защита).

Quote:


PS. неужели список багов это признак неприязни? хотя отсутсвие правильного кода возврата у vzctl - сильно мешает мне в работе.


Нет конечно, за баги я Вам бесконечно благодарен.
Мне просто показалось что у Вас какой-то раздраженный тон Smile))

Quote:


# vzctl status 4; echo $?
VPSID 4 exist unmounted down
0
[root@rhel4 ~]# vzctl start 4
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# vzctl status 4; echo $?
VPSID 4 exist mounted running
0


Это by design.
1. ошибок никаких нет. поэтому ноль.
2. при добавлении новых состояний, множество кодов будет расти,
а соответственно нужно переделывать скрипты и т.д. Это не желательно.


http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5846 is a reply to message #5843] Fri, 01 September 2006 12:41 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member

dev wrote on Fri, 01 September 2006 07:09

Quote:


Сделать как сделано в том же Linux-VServer.
if inode->ctx_id != process->ctx_id => deny access. Это как миниум защитит от 90% атак из под обычного пользователя. И заставит очень сильно подумать человека который имеет даже root на host.



#define VE_AREA_ACC_CHECK 0x0001
#define VE_AREA_ACC_DENY 0x0002
#define VE_AREA_EXEC_CHECK 0x0010
#define VE_AREA_EXEC_DENY 0x0020
#define VE0_AREA_ACC_CHECK 0x0100
#define VE0_AREA_ACC_DENY 0x0200
#define VE0_AREA_EXEC_CHECK 0x1000
#define VE0_AREA_EXEC_DENY 0x2000
int ve_area_access_check = 0;

# echo 65535 > /proc/sys/fs/ve-area-access-check
и ядро будет ругаться и запрещать доступ к данным из VE0 в VE и наоборот (последнее просто дополнительная security защита).


Thanks. жалко что это нигде не документировано - или я плохо искал?


Quote:


Quote:


PS. неужели список багов это признак неприязни? хотя отсутсвие правильного кода возврата у vzctl - сильно мешает мне в работе.


Нет конечно, за баги я Вам бесконечно благодарен.
Мне просто показалось что у Вас какой-то раздраженный тон Smile))

Quote:


# vzctl status 4; echo $?
VPSID 4 exist unmounted down
0
[root@rhel4 ~]# vzctl start 4
Warning: distribution not specified default used /etc/vz/dists/default
Starting VPS ...
VPS is mounted
Setting CPU limit: 0
Setting CPU units: 1000
Set hostname: vps134
VPS start in progress...
[root@rhel4 ~]# vzctl status 4; echo $?
VPSID 4 exist mounted running
0


Это by design.
1. ошибок никаких нет. поэтому ноль.
2. при добавлении новых состояний, множество кодов будет расти,
а соответственно нужно переделывать скрипты и т.д. Это не желательно.


[/quote]
Эато нет возможности опреть состояние без парсинга строки ответа.
гораздо логичнее - для такой команды как status вовзращать с кодом возврата текущее состояние VPS, и обработать в скрипте проще и не надо привязываться к текстовым строкам.
Я не прав?


Re: поддержка UDEV [message #5847 is a reply to message #5846] Fri, 01 September 2006 12:59 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

Quote:


Thanks. жалко что это нигде не документировано - или я плохо искал?



это действительно не документировано. Я думал написать на wiki страничку про security, про соображения насчет VE0 и т.д. но пока руки не доходят :/



Quote:


Эато нет возможности опреть состояние без парсинга строки ответа.
гораздо логичнее - для такой команды как status вовзращать с кодом возврата текущее состояние VPS, и обработать в скрипте проще и не надо привязываться к текстовым строкам.
Я не прав?


И правы, и нет. парсить в скриптах возможно и проще. Хотя, не сказать что существенно.

А вот проблема возникает. Например,
сейчас множество состояний и соответственно кодов это {exist,destroyed}x{mounted,unmounted}x{running,stopped}. Итого, 8 комбинаций. И вот скоро например мы хотим расширить состояния:
{running,stopped,suspended} и {exist,destroyed,migrating}.
Соответственно количество состояний, во-первых, увеличивается в 4 раза, во-вторых, нужно ходить править скрипты и разбираться что имел ввиду автор.

С другой стороны, наверное, все комбинации не бывают и достаточно репортить состояния:
NOT_EXIST STOPPED MOUNTED RUNNING
плюс 1 бит на ошибки.


http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5850 is a reply to message #5828] Fri, 01 September 2006 13:56 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Quote:


3. насчет конфига - правильное замечание, это просто где-то потерялось по пути в OpenVZ.
http://bugzilla.openvz.org/show_bug.cgi?id=242


вот реализация SYSFS=[yes|no] как опции конфига.
man править не стал - я mdoc не на столько хорошо знаю.
Мою задачу решает - с остальным еще думать будем.
  • Attachment: sysfs.diff
    (Size: 2.39KB, Downloaded 363 times)
Re: поддержка UDEV [message #5851 is a reply to message #5847] Fri, 01 September 2006 14:08 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Quote:


И правы, и нет. парсить в скриптах возможно и проще. Хотя, не сказать что существенно.

А вот проблема возникает. Например,
сейчас множество состояний и соответственно кодов это {exist,destroyed}x{mounted,unmounted}x{running,stopped}. Итого, 8 комбинаций. И вот скоро например мы хотим расширить состояния:
{running,stopped,suspended} и {exist,destroyed,migrating}.
Соответственно количество состояний, во-первых, увеличивается в 4 раза, во-вторых, нужно ходить править скрипты и разбираться что имел ввиду автор.

С другой стороны, наверное, все комбинации не бывают и достаточно репортить состояния:
NOT_EXIST STOPPED MOUNTED RUNNING
плюс 1 бит на ошибки.


exit(2) возвращает в userland помоему 8 бит.
C учетом планируемых состояний я бы сказал что нужны
группы
EXIST/NO_EXIST
mounted/unmounted
{running,stopped,suspended,migrating}
и того 4 бита в ответе
(3 бита резерв)
крайний бит - флаг ошибки. младшие биты в этом случае код ошибки.
определение ошибки будет элементарным
if( $rc > 127 ) $error = 256 - $rc.
попробую сделать патчик :-\

[Updated on: Fri, 01 September 2006 14:10]

Report message to a moderator

Re: поддержка UDEV [message #5852 is a reply to message #5850] Fri, 01 September 2006 14:17 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

мы планировали сделать FEATURES="sysfs и др.".
Но возможно сделаем именно так...

добавил очередной баг %)



http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5854 is a reply to message #5838] Fri, 01 September 2006 15:02 Go to previous messageGo to next message
Andrey Mirkin is currently offline  Andrey Mirkin
Messages: 193
Registered: May 2006
Senior Member
Какая версия vzctl использовалась?
Какой темплит использовался для впски?
Можно ли запостить сюда конфиг файл для этой впски?


Andrey Mirkin
http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5855 is a reply to message #5852] Fri, 01 September 2006 15:11 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
dev wrote on Fri, 01 September 2006 10:17

мы планировали сделать FEATURES="sysfs и др.".
Но возможно сделаем именно так...

добавил очередной баг %)



Я читал багзилу - но тогда уж FLAGS. что бы хоть как-то стандартизировать имя переменной среди VPS софта.
Re: поддержка UDEV [message #5856 is a reply to message #5854] Fri, 01 September 2006 15:18 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
Andrey Mirkin wrote on Fri, 01 September 2006 11:02

Какая версия vzctl использовалась?
Какой темплит использовался для впски?
Можно ли запостить сюда конфиг файл для этой впски?

vzctl - 3.0.10
темлейт не стандартный - в некотором каталоге был развернут архив с содержиым FS от устанвленого RHEL4.
конфиг собственно тривиальный
==
SYSFS=no
AVNUMPROC=40:40
CAPABILITY="MKNOD:on CHOWN:on"
CPULIMIT=0
CPUUNITS=1000
DCACHESIZE=1048576:1097728
DGRAMRCVBUF=132096:132096
DISKINODES=200000:220000
DISKSPACE="5120000:5120000"
HOSTNAME=vps134
KMEMSIZE="2147483647:2147483647"
LOCKEDPAGES=32:32
NUMFILE="2147483647:2147483647"
NUMFLOCK=100:110
NUMIPTENT=128:128
NUMOTHERSOCK=80:80
NUMPROC="400:400"
NUMPTY=16:16
NUMSIGINFO=256:256
NUMTCPSOCK="40:40"
ONBOOT=no
OOMGUARPAGES="2147483647:2147483647"
OTHERSOCKBUF=132096:336896
PHYSPAGES=0:2147483647
PRIVVMPAGES="2147483647:2147483647"
QUOTATIME=0
SHMPAGES=8192:8192
TCPRCVBUF=319488:524288
TCPSNDBUF=319488:524288
VE_PRIVATE=/vservers/vps134
VMGUARPAGES="2147483647:2147483647"
===
практически все в unlim.
Базовым для игр служил
==
1070 Авг 23 12:37 ve-unlimited.conf-sample
==
взятый из демки виртуозы.


Re: поддержка UDEV [message #5858 is a reply to message #5856] Fri, 01 September 2006 15:37 Go to previous messageGo to next message
Andrey Mirkin is currently offline  Andrey Mirkin
Messages: 193
Registered: May 2006
Senior Member
А на vzctl - 3.0.11 баг с дублированием моунтов после рестарта воспроизводится? Не могли бы Вы попробовать?

Andrey Mirkin
http://static.openvz.org/userbars/openvz-developer.png
Re: поддержка UDEV [message #5865 is a reply to message #5836] Sat, 02 September 2006 09:18 Go to previous messageGo to next message
Vasily Tarasov is currently offline  Vasily Tarasov
Messages: 1345
Registered: January 2006
Senior Member
Quote:

UMKA: PS. недавно получилось воспроизвести забавную атаку на OpenVZ. vzctl enter перевел процес в контекст VPS но при этом консоль открылась на хосте. Деталей толком нету - все что известно, это происходит при выходе за какой-то из лимитов скорее всего file limit или proc limit.

DEV: будем исследовать. Как Вы определили что консоль открылась на хосте? /proc/user_beancounters Вы не смотрели?
http://bugzilla.openvz.org/show_bug.cgi?id=244

UMKA: по тому что promt не поменялся. и я как был в /etc/sysconfig на host - так и остался. при этом ps ax показывал процессы VPS.
к сожалению я поздно спохватился и логов не сохранил. Но это была попытка запустить с Virtozzo unlimited.conf - VPS внутри которого RHEL4 с java. явно не хватало и процессов и файлов - но что именно позволило такому событию быть - не скажу.


Добрый день,
К сожалению, мнем не удалось воспроизвести ситуацию, о которой вы говорите. Во-первых, пробовал входить в VE так, чтобы в процессе его выполнения превышались лимиты количества процессов и количества открытых файлов. Далее анализировал код vzctl. Судя по описанию, т.к. вы находитесь в той же директории - значит не сработал chroot, но при этом сменился environment. По коду:
if ((ret = vz_chroot(root)))
      goto err;
ret = vz_env_create_ioctl(h, veid, VE_ENTER);
if (ret < 0) {
      if (errno == ESRCH)
             ret = VZ_VE_NOT_RUNNING;
      else
            ret = VZ_ENVCREATE_ERROR;
       goto err;
}

Значит смена environment могла произойти только (!) если удачно прошёл chroot...
Может быть chroot проходил не туда (что-то вроде /)? Проверено такие ситуации обрабатываются и enter проваливается.

Закрываю баг как инвалид, но если вам удастся его воспроизвести переоткройте его, пожалуйста.
С полным описанием как воспроизвести.

Спасибо!


Re: поддержка UDEV [message #5873 is a reply to message #5865] Mon, 04 September 2006 08:33 Go to previous messageGo to next message
Umka is currently offline  Umka
Messages: 56
Registered: September 2006
Member
vass wrote on Sat, 02 September 2006 05:18


Значит смена environment могла произойти только (!) если удачно прошёл chroot...
Может быть chroot проходил не туда (что-то вроде /)? Проверено такие ситуации обрабатываются и enter проваливается.

Закрываю баг как инвалид, но если вам удастся его воспроизвести переоткройте его, пожалуйста.
С полным описанием как воспроизвести.

Спасибо!


Попробую.
Re: поддержка UDEV [message #6390 is a reply to message #5826] Fri, 15 September 2006 09:54 Go to previous message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

Патч не полный, иногда oops'ится:
Quote:


Sep 14 20:58:17 titan3 VPS: 111: stopped
Sep 14 20:58:19 titan3 Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b6b6b
Sep 14 20:58:19 titan3 vzmond/112[29586]: Oops 8813272891392 [1]
Sep 14 20:58:19 titan3 Modules linked in: ip_vzredir vzredir vzcompat vzfs vzevent vzlist vznet vzstat ip_vznetstat vznetstat vzmon ipt_length ipt_ttl ipt_tcpmss ipt_TCPMSS iptable_mangle iptable_filter ipt_multiport ipt_limit ipt_tos ipt_REJECT ip_tables vzdquota vzdev af_packet nls_iso8859_1 nls_cp437 vfat fat thermal processor fan button uhci_hcd ehci_hcd shpchp e1000
Sep 14 20:58:19 titan3 Pid: 29586, CPU 4, comm: vzmond/112
Sep 14 20:58:19 titan3 psr : 0000101008126010 ifs : 8000000000000612 ip : [<a0000001002d3e60>] Tainted: P
Sep 14 20:58:19 titan3 ip is at kobject_hotplug+0x100/0x540
Sep 14 20:58:19 titan3 unat: 0000000000000000 pfs : 0000000000000206 rsc : 0000000000000003
Sep 14 20:58:19 titan3 rnat: 0000000000000000 bsps: 0000000000000000 pr : 0000000000069695
Sep 14 20:58:19 titan3 ldrs: 0000000000000000 ccv : 00000000ffff0001 fpsr: 0009804c8a70033f
Sep 14 20:58:19 titan3 csd : 0000000000000000 ssd : 0000000000000000
Sep 14 20:58:19 titan3 b0 : a0000001002d4a10 b6 : a0000001001c2f60 b7 : a0000001001435a0
Sep 14 20:58:19 titan3 f6 : 1003e6b6b6b6b6b6b6b6b f7 : 1003e000000000000000a
Sep 14 20:58:19 titan3 f8 : 1003e0000000000000418 f9 : 100098300000000000000
Sep 14 20:58:19 titan3 f10 : 100029ffffffff3e62c19 f11 : 1003e000000000000000a
Sep 14 20:58:19 titan3 r1 : a000000100db8020 r2 : e00000005ae701a8 r3 : e00000005ae70000
Sep 14 20:58:19 titan3 r8 : e00000014a2c8ce0 r9 : 0000000000100100 r10 : a000000100b3ce90
Sep 14 20:58:19 titan3 r11 : 00000000ffff0001 r12 : e00000014a2cfdf0 r13 : e00000014a2c8000
Sep 14 20:58:19 titan3 r14 : 6b6b6b6b6b6b6b6b r15 : e0000001ffd327d0 r16 : e0000001ffd32790
Sep 14 20:58:19 titan3 r17 : e0000001fff268f8 r18 : e0000001fff26908 r19 : 00000000ffff0001
Sep 14 20:58:19 titan3 r20 : e0000002fffa1f88 r21 : e0000001fff26860 r22 : a000000100bc61a0
Sep 14 20:58:19 titan3 r23 : 0000000000000007 r24 : e00000028326ee40 r25 : 00000000170fc2a5
Sep 14 20:58:19 titan3 r26 : 0000000000000000 r27 : 0000000000000000 r28 : e00000028326ee40
Sep 14 20:58:19 titan3 r29 : e00000028326ee58 r30 : 0000000000000000 r31 : a000000100bd8df0
Sep 14 20:58:19 titan3 Call Trace:
Sep 14 20:58:19 titan3 [<a000000100017380>] show_stack+0x80/0xa0
Sep 14 20:58:19 titan3
Sep 14 20:58:19 titan3 sp=e00000014a2cf980 bsp=e00000014a2c90e8
Sep 14 20:58:19 titan3 [<a000000100017c90>] show_regs+0x890/0x8c0
Sep 14 20:58:20 titan3 sp=e00000014a2cfb50 bsp=e00000014a2c90a0
Sep 14 20:58:20 titan3 [<a000000100027370>] die+0x150/0x240
Sep 14 20:58:20 titan3
Sep 14 20:58:20 titan3 sp=e00000014a2cfb70 bsp=e00000014a2c9060
Sep 14 20:58:20 titan3 [<a00000010004c460>] ia64_do_page_fault+0xb00/0xc40
Sep 14 20:58:20 titan3 sp=e00000014a2cfb70 bsp=e00000014a2c8fe0
Sep 14 20:58:20 titan3 [<a00000010000fc20>] ia64_leave_kernel+0x0/0x260
Sep 14 20:58:20 titan3 sp=e00000014a2cfc20 bsp=e00000014a2c8fe0
Sep 14 20:58:20 titan3 [<a0000001002d3e60>] kobject_hotplug+0x100/0x540
Sep 14 20:58:20 titan3 sp=e00000014a2cfdf0 bsp=e00000014a2c8f50
Sep 14 20:58:20 titan3 [<a0000001002d4a10>] kobject_del+0x30/0x80
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8f30
Sep 14 20:58:20 titan3 [<a0000001003bc3d0>] class_device_del+0x2f0/0x380
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8ee0
Sep 14 20:58:20 titan3 [<a0000001003bc480>] class_device_unregister+0x20/0x60
Sep 14 20:58:20 titan3
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8ec0
Sep 14 20:58:20 titan3 [<a0000001003bd550>] class_simple_device_remove+0x150/0x180
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8e98
Sep 14 20:58:20 titan3 [<a000000100362350>] fini_ve_tty_class+0x30/0x60
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8e78
Sep 14 20:58:20 titan3 [<a000000200483540>] fini_ve_sysfs+0x40/0x160 [vzmon]
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8e30
Sep 14 20:58:20 titan3 [<a00000020048b1c0>] env_cleanup+0x440/0xce0 [vzmon]
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8dd8
Sep 14 20:58:20 titan3 [<a00000020048c000>] vzmond_helper+0x60/0xa0 [vzmon]
Sep 14 20:58:20 titan3 sp=e00000014a2cfe10 bsp=e00000014a2c8db8
Sep 14 20:58:20 titan3
Sep 14 20:58:20 titan3 [<a000000100019450>] kernel_thread_helper+0xd0/0x100
Sep 14 20:58:20 titan3 sp=e00000014a2cfe30 bsp=e00000014a2c8d90
Sep 14 20:58:20 titan3 [<a000000100009060>] start_kernel_thread+0x20/0x40
Sep 14 20:58:20 titan3 sp=e00000014a2cfe30 bsp=e00000014a2c8d90
Sep 14 20:58:20 titan3 Kernel panic - not syncing: Fatal exception




требуется еще виртуализация simple_dev_list:
--- ./drivers/base/class_simple.c.simple	2006-08-23 11:10:16.000000000 +0400
+++ ./drivers/base/class_simple.c	2006-09-15 13:21:11.000000000 +0400
@@ -26,7 +26,11 @@ struct simple_dev {
 };
 #define to_simple_dev(d) container_of(d, struct simple_dev, class_dev)
 
+#ifdef CONFIG_VE
+#define simple_dev_list	(get_exec_env()->_simple_dev_list)
+#else
 static LIST_HEAD(simple_dev_list);
+#endif
 static spinlock_t simple_dev_list_lock = SPIN_LOCK_UNLOCKED;
 
 static void release_simple_dev(struct class_device *class_dev)
--- ./include/linux/ve.h.simple	2006-09-15 11:52:53.000000000 +0400
+++ ./include/linux/ve.h	2006-09-15 13:13:25.000000000 +0400
@@ -194,6 +194,7 @@ struct ve_struct {
 #endif
 	struct subsystem	*class_subsys;
 	struct subsystem	*class_obj_subsys;
+	struct list_head	_simple_dev_list;
 	struct class		*net_class;
 	struct class_simple	*tty_class;
 
--- ./kernel/vecalls.c.simple	2006-09-15 11:52:53.000000000 +0400
+++ ./kernel/vecalls.c	2006-09-15 13:17:28.000000000 +0400
@@ -1348,6 +1348,7 @@ static int init_ve_struct(struct ve_stru
 	ve->init_entry = init_tsk;
 	ve->features = data->feature_mask;
 	INIT_LIST_HEAD(&ve->vetask_lh);
+	INIT_LIST_HEAD(&ve->_simple_dev_list);
 	init_rwsem(&ve->op_sem);
 	ve->ifindex = -1;
 
--- ./kernel/ve.c.simple	2006-09-15 11:52:53.000000000 +0400
+++ ./kernel/ve.c	2006-09-15 13:21:05.000000000 +0400
@@ -186,6 +186,7 @@ struct ve_struct ve0 = {
 	._sysctl_local_port_range = { 1024, 4999 },
 	._tcp_port_rover = 1024 - 1,
 #endif
+	._simple_dev_list	= LIST_HEAD_INIT(ve0._simple_dev_list),
 };
 
 EXPORT_SYMBOL(ve0);


http://static.openvz.org/userbars/openvz-developer.png

[Updated on: Fri, 15 September 2006 09:55]

Report message to a moderator

Previous Topic: Перенос системы
Next Topic: Патчи к актуальным ядрам
Goto Forum:
  


Current Time: Sat Apr 13 07:29:26 GMT 2024

Total time taken to generate the page: 0.01630 seconds