Subject: Disk Quota's over NFS
To: None <tech-net@netbsd.org>
From: Duncan McEwan <duncan@mcs.vuw.ac.nz>
List: tech-net
Date: 11/27/2002 17:08:16
I'm experimenting with disk quotas at the moment and everything seems to work
as expected when a quota is exceeded on a local file system (kernel logs a
message to my terminal saying "write failed, user disk limit reached" and the
application writing the file prints out "Disc quota exceeded".
But when I do the same thing on a workstation with a file system mounted via
NFS I get odd results.
The following command sequence shows a user "visitor6" with a soft quota limit
of 51200 blocks and a hard limit of 102400 blocks. They currently have 85172
blocks allocated so are over their soft limit. If they then try to make a copy
of a 70MB file they should exceed their hard limit after about 17MB's are
copied. But "ls -l"'s done while the cp was running show that it seems to copy
the entire file before truncating it to 17MB.
| barretts% df .
| Filesystem 1K-blocks Used Avail Capacity Mounted on
| rialto:/am/rialto/home2 13968878 4578950 8691484 34% /am/rialto/home2
| barretts% quota
| Disk quotas for user visitor6 (uid 1215):
| Filesystem blocks quota limit grace files quota limit grace
| /am/rialto/home2
| 85172* 51200 102400 5days 271 0 0
| barretts% ls -l foo
| -rw-r--r-- 1 visitor6 others 72546304 Nov 25 16:27 foo
| barretts% cp foo bar &
| [1] 5130
| barretts% ls -l bar
| -rw------- 1 visitor6 others 11796480 Nov 27 16:00 bar
| barretts% ls -l bar
| -rw------- 1 visitor6 others 22675456 Nov 27 16:00 bar
| barretts% ls -l bar
| -rw------- 1 visitor6 others 68747264 Nov 27 16:00 bar
| ...
| barretts% ls -l bar
| -rw------- 1 visitor6 others 17629184 Nov 27 16:00 bar
| [1] + Done cp foo bar
| barretts%
So, one question is why does the copy not terminate as soon as the hard
limit has been exceeded. I can imagine NFS buffering/caching issues being
responsible for this.
More importantly, why does the cp command think that it finished successfully
and so doesn't provide any feedback to the user that the file hasn't been
copied properly?
Can quotas over NFS filesystems be made to work "right" or are they just not
that useful? (In case anyone is wondering, both client and server kernels are
built with "options QUOTA").
Thanks,
Duncan