Страница 1 из 5
Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 18:59:57
kostjn
Привет.
Написал патч для лимитов на jail-ы. Патч для FreeBSD-CURRENT.
Ограничиваем CPU, память, число процессов, число файловых дескрипторов.
Лимиты можно менять во время работы jail-а, без перезагрузки.
Скачать можно тут
http://kostjn.spb.ru/patch-jail-limit-8CURRENT.tar.gz
В README описано как пользоваться.
Буду благдарен, если найдете время для тестирования.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:02:57
zingel
Это Вы написали?
Почетно.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:25:11
ProFTP
а почему для CURRENT, а не для STABLE 7.1?
kostjn писал(а):
Буду благдарен, если найдете время для тестирования.
как работает этот пачт не подскажешь?
http://forum.lissyara.su/viewtopic.php?f=16&t=16617
как пропатчить?
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:34:34
Гость
zingel писал(а):Это Вы написали?
Почетно.
Да. Пока нет. Когда в основное дерево примут будет здорово

Нужно тестировать и еще раз тестировать.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:38:46
ProFTP
а ты его постаивл? нормально поставилось?
за какое время исхродники 8.0 CURRENT? когда ты обновлял?
куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:39:14
Гость
Потому что комиты идут в CURRENT. Кроме этого разработчики в CURRENT серьезно перепилили системные вызовы связанные с jail-ами.
Можно переделать под STABLE, но в этом смысла нет. 8 выйдет уже скоро.
Это старые патчи. Все они базируются на этом
http://wiki.freebsd.org/JailResourceLimits.
Работают только с BSD планировщиком, память реально не ограничивают.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 19:42:42
Гость
ProFTP писал(а):а ты его постаивл? нормально поставилось?
за какое время исхродники 8.0 CURRENT? когда ты обновлял?
куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Да конечно. Могу ядро рабочее прислать

Обновлялся 2 часа назад

После этого пропатчил и собрал ядро.
Все ошибки и проблемы пока сюда. После тестирования сделаем pr.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 20:09:40
ProFTP
куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 20:19:14
kostjn
ProFTP писал(а):куда рапорты ошибок отсылать? ну что типо все работает чтобы они его в продакшен поставили...
Если все ок, можно подписаться на freebsd-jail
http://lists.freebsd.org/mailman/listinfo/freebsd-jail, и туда написать

.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 20:31:21
terminus
Фигасе! Интересно.

А в листы уже писали (описали архитектуру предлагаемого решения)?
---
А - увидил. Пока в листах ответа нет...
---
Надо будет потестить (есть у меня на работе CURRENT для таких вещей)

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-20 20:49:59
Alex Keda
Константин, вы зря в копию не поставили CURRENT рассылку.
по джайлам не многие читают, а вот куррент - куда больше народу читает. в т.ч. и разаработчики
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 11:42:51
terminus
На CURRENT от 05.05.2009 собрать не вышло. Счас накачусь до самого последнего и попробую еще раз. Ошибка такая:
Код: Выделить всё
===> usr.bin/ipcrm (all)
cc -O2 -pipe -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector -c
/usr/src/usr.bin/ipcrm/ipcrm.c
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'msgrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:93: warning: implicit declaration of function 'ms
gctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:108: warning: implicit declaration of function 'm
sgget'
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'shmrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:134: warning: implicit declaration of function 's
hmctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:149: warning: implicit declaration of function 's
hmget'
/usr/src/usr.bin/ipcrm/ipcrm.c: In function 'semrm':
/usr/src/usr.bin/ipcrm/ipcrm.c:176: warning: implicit declaration of function 's
emctl'
/usr/src/usr.bin/ipcrm/ipcrm.c:191: warning: implicit declaration of function 's
emget'
cc -O2 -pipe -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector -c
/usr/src/usr.bin/ipcrm/../ipcs/ipc.c
cc -O2 -pipe -I/usr/src/usr.bin/ipcrm/../ipcs -std=gnu99 -fstack-protector -o
ipcrm ipcrm.o ipc.o -lkvm
gzip -cn /usr/src/usr.bin/ipcrm/ipcrm.1 > ipcrm.1.gz
===> usr.bin/ipcs (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/ipcs/ipcs.c
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/ipcs/ipc.c
cc -O2 -pipe -std=gnu99 -fstack-protector -o ipcs ipcs.o ipc.o -lkvm
gzip -cn /usr/src/usr.bin/ipcs/ipcs.1 > ipcs.1.gz
===> usr.bin/join (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/join/join.c
cc -O2 -pipe -std=gnu99 -fstack-protector -o join join.o
gzip -cn /usr/src/usr.bin/join/join.1 > join.1.gz
===> usr.bin/jot (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/jot/jot.c
cc -O2 -pipe -std=gnu99 -fstack-protector -o jot jot.o
gzip -cn /usr/src/usr.bin/jot/jot.1 > jot.1.gz
===> usr.bin/kdump (all)
cc -O2 -pipe -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector -c /usr/src/usr.bin/kdump
/kdump.c
cc -O2 -pipe -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector -c ioctl.c
cc -O2 -pipe -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector -c kdump_subr.c
cc -O2 -pipe -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector -c /usr/src/usr.bin/kdump
/../ktrace/subr.c
cc -O2 -pipe -I/usr/src/usr.bin/kdump/../ktrace -I/usr/src/usr.bin/kdump -I/usr
/src/usr.bin/kdump/../.. -std=gnu99 -fstack-protector -o kdump kdump.o ioctl.o
kdump_subr.o subr.o
gzip -cn /usr/src/usr.bin/kdump/kdump.1 > kdump.1.gz
===> usr.bin/keylogin (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/keylogin/keylogi
n.c
/usr/src/usr.bin/keylogin/keylogin.c: In function 'main':
/usr/src/usr.bin/keylogin/keylogin.c:76: warning: implicit declaration of functi
on 'key_setnet'
cc -O2 -pipe -std=gnu99 -fstack-protector -o keylogin keylogin.o -lrpcsvc
gzip -cn /usr/src/usr.bin/keylogin/keylogin.1 > keylogin.1.gz
===> usr.bin/keylogout (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/keylogout/keylog
out.c
cc -O2 -pipe -std=gnu99 -fstack-protector -o keylogout keylogout.o
gzip -cn /usr/src/usr.bin/keylogout/keylogout.1 > keylogout.1.gz
===> usr.bin/killall (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/killall/killall.
c
In file included from /usr/src/usr.bin/killall/killall.c:32:
/usr/obj/usr/src/tmp/usr/include/sys/jail.h:47: error: 'RLIM_NLIMITS' undeclared
here (not in a function)
*** Error code 1
Stop in /usr/src/usr.bin/killall.
*** Error code 1
Stop in /usr/src/usr.bin.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
[root@hius /usr/src]#
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 12:26:06
Dorlas
Отличная новость - сам Jail-ы использую уже где-то полгода на нескольких серверах - мысль о ограничении ресурсов давно лежит у меня в свободном поиске
Постараюсь помощь в тестировании - сейчас сливаю src для CURRENT-а, потом запущу сборку.
Тестировать скорее всего буду в VmWare (т.к. под рукой нет свободной машинки) - но думаю никакой разницы не будет.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 13:18:16
kostjn
terminus писал(а):На CURRENT от 05.05.2009 собрать не вышло. Счас накачусь до самого последнего и попробую еще раз. Ошибка такая:
Код: Выделить всё
===> usr.bin/ipcrm (all)
===> usr.bin/killall (all)
cc -O2 -pipe -std=gnu99 -fstack-protector -c /usr/src/usr.bin/killall/killall.
c
In file included from /usr/src/usr.bin/killall/killall.c:32:
/usr/obj/usr/src/tmp/usr/include/sys/jail.h:47: error: 'RLIM_NLIMITS' undeclared
here (not in a function)
*** Error code 1
Stop in /usr/src/usr.bin/killall.
*** Error code 1
Патч наложился нормально?
Проблема в разнице хедер файла jail.h в /usr/include/sys/ /usr/src/sys/sys/jail.h видимо.
Скопируйте файл из /usr/src/sys/sys/jail.h в /usr/include/sys/. Очистите /usr/obj и попробуйте собрать заново.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 14:20:39
Dorlas
Я сейчас тоже запустил сборку на сервере - система FreeBSD 7.2-STABLE. У меня файлы jail.h тоже отличаются...
Получается, с 7.2 до CURRENT так просто не прыгнуть? Или это из-за патча?
Сейчас поставил на закачку последний снапшот с CURRENT:
ftp://ftp.freebsd.org/pub/FreeBSD/snaps ... -disc1.iso
думаю, пригодится

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 14:34:34
terminus
kostjn писал(а):Патч наложился нормально?
Проблема в разнице хедер файла jail.h в /usr/include/sys/ /usr/src/sys/sys/jail.h видимо.
Скопируйте файл из /usr/src/sys/sys/jail.h в /usr/include/sys/. Очистите /usr/obj и попробуйте собрать заново.
На сегодняшнем CURRENT все скомпилилось как надо. Счас начну мучать.
Спасибо.

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 14:37:01
kostjn
Dorlas писал(а):Я сейчас тоже запустил сборку на сервере - система FreeBSD 7.2-STABLE. У меня файлы jail.h тоже отличаются...
Получается, с 7.2 до CURRENT так просто не прыгнуть? Или это из-за патча?
Сейчас поставил на закачку последний снапшот с CURRENT:
ftp://ftp.freebsd.org/pub/FreeBSD/snaps ... -disc1.iso
думаю, пригодится

Не собирается из за патча

. Суть в том, что в /usr/include старые хедеры. Эти хедеры в /usr/src/sys/sys/ патчатся. Поэтому если не собирается мир, то нужно после команды patch сделать
Код: Выделить всё
cp /usr/src/sys/sys/filedesc.h /usr/include/sys/filedesc.h
cp /usr/src/sys/sys/jail.h /usr/include/sys/jail.h
cp /usr/src/sys/sys/kernel.h /usr/include/sys/kernel.h
cp /usr/src/sys/sys/ktr.h /usr/include/sys/ktr.h
cp /usr/src/sys/sys/proc.h /usr/include/sys/proc.h
И после этого собирать мир.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 14:55:38
Dorlas
Пока собирается мир и качается ISO-шка, хочется задать пару вопросов - уж больно любопытно:
1) Сколько времени ушло у Вас, чтобы написать эти патчи?
2) Ранее для FreeBSD уже что-то писали? Я в восторге - но совершенно не представляю, как люди до такого доходят

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 15:03:50
kostjn
Dorlas писал(а):Пока собирается мир и качается ISO-шка, хочется задать пару вопросов - уж больно любопытно:
1) Сколько времени ушло у Вас, чтобы написать эти патчи?
2) Ранее для FreeBSD уже что-то писали? Я в восторге - но совершенно не представляю, как люди до такого доходят

Около месяца

Долго мучился с новым шедулером, с пониманием того, как же работает система виртуальной памяти, с блокировками

.
Неа не писал.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 15:49:24
Alex Keda
рацпредложение - объядинить jget+jset не думали?
просто ключ добавить что происходит - get или set

==========
собираю на amd64
завтра узнаю, собралось или нет

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 16:02:29
terminus
OFFTOPIC
Товарищи, есть вопрос немного не по теме.
Собрал я значит сегодняшний CURRENT с патчами товарища kostjn, поставил все как надо, и решил из того же /usr/obj поставить и джайлы. То есть после установки системы я /usr/obj не удалял и /usr/src не чистил. Значит делаю все по хендбуку:
Код: Выделить всё
# setenv D /here/is/the/jail
# mkdir -p $D
# cd /usr/src
# make world DESTDIR=$D
# cd etc/ [1]
# make distribution DESTDIR=$D
# mount -t devfs devfs $D/dev
А он кажется начал по новой пересобирать мир (уже час make world DESTDIR= выполняет). Вопрос - я что-то проаустил (в карренте теперь по-другому джайлы ставится), или это какой-то косячек карента? Или это у меня с памятью какая беда (вроде недавно ставил джайлы в 7.х используя готовый /usr/obj и кажется там быстрее было)
нипаняятна...
---
не - меня от жары глючит... все правильно - ведь make world выполняется же...

Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 16:22:49
kostjn
lissyara писал(а):рацпредложение - объядинить jget+jset не думали?
просто ключ добавить что происходит - get или set
Эти программки были написаны только для теста, на коленке. Разумеется нужно придумать простой и логичный интерфейс для управления jail-ами.
Как Вам видится схема управления jail-ами?
Насколько удачной(неудачной) кажется идея использовать классы регистрации пользователей в login.conf?
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 16:25:09
kostjn
terminus писал(а):
не - меня от жары глючит... все правильно - ведь make world выполняется же...

Если придется пересобирать ядро не удаляйте /usr/obj, и используйте
На порядок ускоряет сборку, только в 8 эту фишку добавили.
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 16:28:55
paradox
Не собирается из за патча . Суть в том, что в /usr/include старые хедеры. Эти хедеры в /usr/src/sys/sys/ патчатся. Поэтому если не собирается мир, то нужно после команды patch сделать
cp /usr/src/sys/sys/filedesc.h /usr/include/sys/filedesc.h
cp /usr/src/sys/sys/jail.h /usr/include/sys/jail.h
cp /usr/src/sys/sys/kernel.h /usr/include/sys/kernel.h
cp /usr/src/sys/sys/ktr.h /usr/include/sys/ktr.h
cp /usr/src/sys/sys/proc.h /usr/include/sys/proc.h
брр
чтото не то и не так
когда собираеться мир /usr/include/* вообще не затрагиваеться
мир собираеться и использует токо /usr/src/*
так что пересмотрите что то не то или не так делаете или сделали
Re: Jail limits under FREEBSD-CURRENT
Добавлено: 2009-05-21 16:36:51
terminus
kostjn писал(а):Как Вам видится схема управления jail-ами?
Насколько удачной(неудачной) кажется идея использовать классы регистрации пользователей в login.conf?
С точки зрения админа - это не очень удобно. Для именения лимитов надо сначала добавить класс с соответвующими параметрами и тольео мотом прыгать на него... Наверняка должна быть возможность создавать классы динамически, но на этот вопрос, наверно, только в листах ответят...