It didn't work when set to
if (rc == 0 && osfs->os_bavail < (osfs->os_blocks / 10))
this just return error, but we don't want any error or fail,
and just choose another OST(our stripe count is 1) automatically,
Another our change is in lov_qos after
if (!lov->lov_tgts[i] || !lov->lov_tgts[i]->ltd_active)
continue;
add:
if (lov->lov_tgts[i]->ltd_exp->exp_obd->obd_osfs.os_bavail <=
lov->lov_tgts[i]->ltd_exp->exp_obd->obd_osfs.os_blocks / 10
){
lov->lov_tgts[i]->ltd_qos.ltq_usable=0;
continue;
}
but it sometimes still write to the ost with used rate up to 90%.
Any suggestions??
2007/4/19, Nathaniel Rutman <[EMAIL PROTECTED]>:
swin wang wrote:
>
> We have tested the 1.5.97, and set qos_priofree, but it didn't work,
> I think qos_priofree just make different penalty to OST, it can not
avoid
> alloc object on the full OST.
> Are you sure qos_priofree can do it?
You are correct; it just changes the penalty. QOS does not ever
guarantee that any particular OST will or won't be used - it only
changes the likelihood.
You can prevent the MDT from assigning new stripes to a particular OST
by deactivating the corresponding OSC on the MDT using "lctl
deactivate", but this has to be done every time the MDT is restarted.
You could also use
mount -o exclude=testfs-OST0000 -t lustre /dev/mdt /mnt/mdt
at MDT mount time for the same result.
You could also change the line in filter_precreate()
if (rc == 0 && osfs->os_bavail < (osfs->os_blocks >> 10))
blocks >> 10 = blocks / 1024 = 0.1%,
you could just change it to os_blocks / 10 for an automatic 10% free
space limit.
>
> 2007/4/18, Andreas Dilger <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>:
>
> On Apr 18, 2007 16:19 +0800, swin wang wrote:
> > We hope that if an OST's used rate up to 90% or 95%, it can
> be marked
> > FULL, and avoid to use this OST. we plan to add a state FULL in
> structure
> > lov_tgt_desc, when the
> > OST used rate up to 90% or 95%, set its state to FULL, and
> when create
> > new object,
> > don't use these FULL OST.
> > We want to know how to calculate used rate of a OST, is it
> like this:
> > used rate =
> lov->lov_tgts[i]->ltd_exp->exp_obd->obd_osfs.os_bavail /
> > ov->lov_tgts[i]->ltd_exp->exp_obd->obd_osfs.os_blocks ??
>
> This is already done on the OSTs in filter_precreate(), though the
> limit is
> only 0.1%. I'd be happy to accept a patch which made this limit a
> tunable
> in /proc that can be set by the sysadmin.
>
> There is also in 1.6 (and betas) some free space management that
> is tunable
> on the MDS /proc/fs/lustre/lov/*/qos_priofree which is a
> percentage of
> weight which you want to give to "free" OSTs. In your case you
> want this
> to be relatively high (90% is the default in later betas). If
> this is not
> sufficient to have the MDS allocate very preferentially on free
> OSTs, please
> provide more details on your configuration.
>
> Cheers, Andreas
> --
> Andreas Dilger
> Principal Software Engineer
> Cluster File Systems, Inc.
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lustre-discuss mailing list
> [email protected]
> https://mail.clusterfs.com/mailman/listinfo/lustre-discuss
>
_______________________________________________
Lustre-discuss mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-discuss