Date: Thu, 14 Jul 2005 14:37:55 +0800 (CST) From: Jone Jas <jas_arlerr@yahoo.com.cn> To: Alex Lyashkov <shadow@psoft.net> Cc: freebsd hackers <freebsd-hackers@freebsd.org>, Vlad GALU <vladgalu@gmail.com> Subject: Re: limit jail disk space Message-ID: <20050714063755.4601.qmail@web15005.mail.cnb.yahoo.com> In-Reply-To: <1121271947.8832.62.camel@berloga.shadowland>
next in thread | previous in thread | raw e-mail | index | archive | help
Alex Lyashkov <shadow@psoft.net> 写道: В Срд, 13.07.2005, в 18:46, Jone Jas пишет: > Alex Lyashkov 写道: > В Срд, 13.07.2005, в 16:22, Jone Jas пишет: > > Alex Lyashkov 写道: > > > >option QUOTA? or jail disklimit? > > > I mean jail disk limit > > > > > > >for jail disklimit more easy create tools who controled > all > > > limits >for jail. > > > >Look to LinuxVServer project (www.linux-vserver.org) or > > > >FreeVPS. > > > Sure. The tools may control all limits such as cpu time, > > > memory, bandwidth, disk space, etc. I have read the Linux > > > VServer dlimit code. But I am not very sure where to put > the > > > hooks for inode/blocks control of jail in FreeBSD. This is > > why > > > I open this thread. Vlad GALU said I can look to the quota > > > method. I will try. Thanks. > > > -- > > >If you look into quota function you can see it called from > > >inode/blocks allocation/deallocation code at same points > you> >can install disklimits hooks. > > >I can`t find any benefit add new quota type (total size > used > > at >jail) - this way was used at early version Linux VServer > > but >have are one problem - more difficult create separated > > per jail >diskquota. > > > > I am really not aware of this. Are there some conflicts? > > > >In case of undivided diskquota hash you will have to make > >superfluous comparisons at searching. It may be too many > >objects with the same uid/gid, but different jid. If you will > divide >diskquota hash, you need to add parameter in macro > >DQHASH. > I understand. >look into ufs_quota.c:dqget(). >I say about situation with same uid/gid at different jails. For >me more right map disk device id then map uid to different >value. >At you way you need modify >LIST_FOREACH(dq, dqh, dq_hash) { >if (dq->dq_id != id || >dq->dq_ump->um_quotas[dq->dq_type] != dqvp) >continue; >to >LIST_FOREACH(dq, dqh, dq_hash) { >if (dq->dq_id != id || dq->dq_jid != jid || >dq->dq_ump->um_quotas[dq->dq_type] != dqvp) >continue; >.. >but at my way (used at freevps and last linux-vserver) >need only >- dqh = DQHASH(dqvp, id); >+ dqh = DQHASH(map_dqvp, id); Sounds good! Seems more simple and efficient than my way. Btw, which FreeBSD version is your patch against? 5.3 or 5.4? > > > > >If you create disklimit separated from quota code you can > > >easy add quota hash ptr into prison structure and switch > > >hashes when work. > > >Next problem - where store jail id for dinode struct. > > >rwantson@ say we need use xattr for this, but my opinion > > >usereserved fields in dinode. > > > > Yes. My opinion is the same with yours. > > > >You want add reference pointer to prison struct from a inode > >struct or store at inode struct prison id? > I mean just jid. I think that is enough. > > > >PS > >if interested, i tried to port freevps structure to freebsd > jail - > >resulting patch available > >http://www.freevps.com/download/freebsd/. It > >have same functionality with jail and add only total process > >limit in jail. > > Thanks for your patch. I have taken a glance and I will read > it carefully in my spare time. I think it will help me a lot. > -- FreeVPS Developers Team http://www.freevps.com --------------------------------- DO YOU YAHOO!? 雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050714063755.4601.qmail>