ZFS (and quota)

Johan Ström johan at stromnet.se
Thu Sep 20 15:53:18 PDT 2007


On Sep 20, 2007, at 13:56 , Pawel Jakub Dawidek wrote:

> On Thu, Sep 20, 2007 at 12:31:56AM +0200, Johan Ström wrote:
>> Hello
>>
>> I just installed FreeBSD-current on a box (actually upgraded 6.2 to -
>> current) to experiment a bit.
>> I was playing around with ZFS a bit and tried out the quota features.
>> While doing this I noticed that it doesnt seem like you get a "disk
>> full" notice the same way as you do on a "normal" (UFS) filesystem.
>> Instead of aborting the operation with "No space left on device" it
>> just continued:
> [...]
>> [root at devbox /tank]# zfs create tank/set2
>> [root at devbox /tank/set2]# zfs set quota=10M tank/set2
>> [root at devbox /tank/set2]# zfs get quota tank/set2
>> NAME       PROPERTY  VALUE      SOURCE
>> tank/set2  quota     10M        local
>> [root at devbox /tank/set2]# dd if=/dev/urandom of=test
>> ^C
>> 18563+0 records in
>> 18562+0 records out
>> 9503744 bytes transferred in 199.564353 secs (47622 bytes/sec)
>> [root at devbox /tank/set2]# zfs list tank/set2
>> NAME        USED  AVAIL  REFER  MOUNTPOINT
>> tank/set2  9.15M   870K  9.15M  /tank/set2
>>
>> No hard stop there, it just tries to write more and more and more..
>> Well the quota is enforced fine but shouldnt there be some more hard
>> error? I'm not sure how regular UFS quotas work though since I never
>> used them, but this seems like strange behaviour.
>
> Hmm, seems to work just fine here:
>
> 	beast:root:~# zfs create tank/foo
> 	beast:root:~# zfs set quota=10m tank/foo
>
> 	beast:root:~# dd if=/dev/random of=/tank/foo/test bs=1m
> 	dd: /tank/foo/test: Disc quota exceeded
> 	11+0 records in
> 	10+0 records out
> 	10485760 bytes transferred in 6.109407 secs (1716330 bytes/sec)
>
> 	beast:root:~# df -h /tank/foo
> 	Filesystem    Size    Used   Avail Capacity  Mounted on
> 	tank/foo       10M     10M      0B   100%    /tank/foo
>
> I think you just waited not long enough:) You didn't give block size
> argument to dd(1), so it used 512 bytes. Please be more patient, retry
> and report back, thanks!

You where correct :)

[root at devbox /tank/set2]# dd if=/dev/urandom of=test2
dd: test2: Disc quota exceeded
1538+0 records in
1537+0 records out
786944 bytes transferred in 202.628064 secs (3884 bytes/sec)

But the last day i ran it for at least 300 seconds wihtout having a  
stop.. When i did it on UFS it took 2 seconds to fill up altogether,  
with zfs it keept on going much longer? Retested:

[root at devbox /tank/set3vol]# ls -al
total 6
drwxr-xr-x  3 root  wheel     512 Sep 20 14:16 .
drwxr-xr-x  5 root  wheel       5 Sep 20 00:22 ..
drwxrwxr-x  2 root  operator  512 Sep 20 00:21 .snap
[root at devbox /tank/set3vol]# dd if=/dev/urandom of=test
/tank/set3vol: write failed, filesystem is full
dd: test: No space left on device
19169+0 records in
19168+0 records out
9814016 bytes transferred in 2.176188 secs (4509728 bytes/sec)
[root at devbox /tank/set3vol]# cd ../set2/
[root at devbox /tank/set2]# ls -al
total 3
drwxr-xr-x  2 root  wheel  2 Sep 20 14:16 .
drwxr-xr-x  5 root  wheel  5 Sep 20 00:22 ..
[root at devbox /tank/set2]# dd if=/dev/urandom of=test
dd: test: Disc quota exceeded
20226+0 records in
20225+0 records out
10355200 bytes transferred in 456.448610 secs (22686 bytes/sec)
[root at devbox /tank/set2]# df -h
Filesystem                Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a               496M    174M    282M    38%    /
devfs                     1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e               496M     28K    456M     0%    /tmp
/dev/ad0s1f               5.0G    2.8G    1.8G    61%    /usr
/dev/ad0s1d               1.2G    105M    1.0G     9%    /var
tank                       37G      0B     37G     0%    /tank
tank/set1                  37G      0B     37G     0%    /tank/set1
/dev/zvol/tank/set3vol    9.4M    9.4M   -728K   108%    /tank/set3vol
tank/set2                  10M     10M      0B   100%    /tank/set2
[root at devbox /tank/set2]#

On UFS 2.1 sec (altough disk full, not quota full), on ZFS 450sec.

>
> -- 
> Pawel Jakub Dawidek                       http://www.wheel.pl
> pjd at FreeBSD.org                           http://www.FreeBSD.org
> FreeBSD committer                         Am I Evil? Yes, I Am!



More information about the freebsd-fs mailing list