所谓磁盘配额就是管理员为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
磁盘配额用于对新加载的分区进行磁盘配额,对系统安装时设定的分区无效。
另外,在redhat版本6中设置磁盘配额,需要关闭selinux,否则会出错。
Quota是在RedHatlinux下实现linux磁盘配额的工具,它支持单独的挂载文件系统,而不是一个目录。quota默认是安装的,如果没有安装,请用yum install quota命令进行安装。
以下实验平台为CentOS 6.2。
这里以加载到/data的lv_data为例。
[root@
itpro
~]# cat /etc/fstab
# /etc/fstab
/dev/mapper/vg_itpro-lv_root / ext4 defaults 1 1
/dev/mapper/vg_itpro-lv_data /data ext4 defaults 0 0
……省略部分输出……
[root@itpro ~]# quotacheck -cum /data
quotacheck: Mountpoint (or device) /data not found or has no quota enabled.
quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.
(注:默认情况下/data是不支持quota的)
1.首先修改/etc/fstab中lv_data的属性
在defaults后面加上usrquota选项,修改后内容如下:
[root@
itpro
~]# cat /etc/fstab
/dev/mapper/vg_itpro-lv_root / ext4 defaults 1 1
/dev/mapper/vg_itpro-lv_data /data ext4
defaults,usrquota 0 0
……
(注:在defaults后面追加usrquota,如果是针对用户组,则加grpquota)
重新加载分区,并检查分区参数是否正确
[root@itpro ~]# mount -o remount /data
[root@itpro ~]# mount |grep /data
/dev/mapper/vg_itpro-lv_data on /data type ext4 (rw,usrquota)
(注:(rw,usrquota)说明usrquota设置成功;
也可以不修改fstab文件,直接使用命令# mount -o remount,usrquota /data
不过,系统重启后会失效,所以,fstab文件还是要修改的。)
2.扫描文件系统生成配额文件
[root@
itpro
~]# quotacheck -cum /data
[root@
itpro
~]# ls /data/
aquota.user lost+found
(注:此时,/data目录下自动生成了一个aquota.user文件;
如果是针对用户组,则生成aquota.group文件;
如果出现
quotacheck: Cannot create new quotafile /data/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
说明selinux没关闭。使用#setenforce 0关闭selinux,同时编辑/etc/selinux/config文件,将SELINUX的值设为permissive或disabled。)
3.针对指定用户设置配额
[root@
itpro
~]# edquota -u shuqing
Disk quotas for user shuqing (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/vg_itpro-lv_data 0
1024 2048 0 0 0
(注:这里以用户shuqing为例,soft设为1M,hard设为2M。
字段说明:a. 文件系统 (filesystem):
b. 磁盘容量 (blocks):当前磁盘使用大小,单位为 Kbytes,不用管;
c. soft:磁盘容量 (block) 的 soft 限制值,单位亦为 KB
d. hard:block 的 hard 限制值,单位 KB;
e. 档案数量 (inodes):当前文件记录数,单位为个数,不用管;
f. soft:inode 的 soft 限制值;
g. hard:inode 的 hard 限制值。)
4.开启配额
开启
[root@
itpro
~]# quotaon /data
查看分区配额的配置
[root@itpro ~]# quota -uv sqa
Disk quotas for user sqa (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/vg_itpro-lv_data
0 1024 2048 0 0 0
[root@
itpro
~]# repquota -auvs
*** Report for user quotas on device /dev/mapper/vg_itpro-lv_data
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
sqa -- 0 1024 2048 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
5.测试
首先要确保用户shuqing对/data目录有写权限
[root@
itpro
~]# ll -d /data
drwxr-xr-x. 3 root root 4096 Mar 10 13:08 /data
[root@
itpro
~]# chmod o+w /data
[root@
itpro
~]# ll -d /data
drwxr-xrwx. 3 root root 4096 Mar 10 13:08 /data
(注:这里是给其他用户添加写权限)
切换到shuqing用户,并进入到/data目录
[root@
itpro
~]# su shuqing
[shuqing@
itpro
root]$ cd /data
情况1:创建一个1M的文件,可以正常创建
[shuqing@
itpro
data]$ dd if=/dev/zero of=testfile bs=1k count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.00550559 s, 190 MB/s
[shuqing@
itpro
data]$ ll
total 1048
-rw-------. 1 root root 7168 Mar 10 13:23 aquota.user
drwx------. 2 root root 16384 Mar 10 04:51 lost+found
-rw-rw-r--. 1 shuqing shuqing
1048576 Mar 10 13:23 testfile
情况2:创建一个大于1M、小于2M的文件,可以正常创建,但出现警告
[shuqing@
itpro
data]$ dd if=/dev/zero of=testfile bs=1k count=1500
dm-2: warning, user block quota exceeded.
1500+0 records in
1500+0 records out
1536000 bytes (1.5 MB) copied, 0.0135609 s, 113 MB/s
[shuqing@
itpro
data]$ ll
total 1524
-rw-------. 1 root root 7168 Mar 10 13:24 aquota.user
drwx------. 2 root root 16384 Mar 10 04:51 lost+found
-rw-rw-r--. 1 shuqing shuqing
1536000 Mar 10 13:24 testfile
情况3:创建一个大于2M的文件,出现警告及报错,最终生长的文件只有2M。
[shuqing@
itpro
data]$ dd if=/dev/zero of=testfile bs=1k count=2500
dm-2: warning, user block quota exceeded.
dm-2: write failed, user block limit reached.
dd: writing `testfile': Disk quota exceeded
2049+0 records in
2048+0 records out
2097152 bytes (2.1 MB) copied, 0.0263838 s, 79.5 MB/s
[shuqing@
itpro
data]$ ll
total 2072
-rw-------. 1 root root 7168 Mar 10 13:24 aquota.user
drwx------. 2 root root 16384 Mar 10 04:51 lost+found
-rw-rw-r--. 1 shuqing shuqing
2097152 Mar 10 13:25 testfile