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