> RedHat >

RHCE学习笔记-RHEL5.4配置磁盘配额

磁盘配额介绍
目前的磁盘配额只可以针对单一的文件系统来进行操作,也就是每一个分区来做磁盘配额。在linux下面可以针对ext2和ext3的文件系统来做磁盘配额,磁盘配额可以对用户和组来做,可以针对文件的大小和数量做磁盘配置,还可以对用户进行软限制和硬限制。

配置磁盘配额
第一步,在分区挂载选项上添加参数
在磁盘配额的开始,我们要对需要做磁盘配额的分区在挂载选项上面添加两个参数,usrquota和grpquota这个两个参数,
Usrquota     代表可以对用户做磁盘配额
Grpquota    代表可以对组来做磁盘配额
下面开始编辑/etc/fstab这个文件添加参数。
/dev/sda8       /mnt          ext3    defaults,usrquota,grpquota    0  0
 
已经在/etc/fstab这个文件里面添加了参数,但是并不可以立即生效,敲入一条命令让其立即生效。
[root@localhost ~]#
[root@localhost ~]# mount -o remount /dev/sda8
[root@localhost ~]#
[root@localhost ~]# mount |grep /dev/sda8
/dev/sda8 on /mnt type ext3 (rw,usrquota,grpquota)
[root@localhost ~]#

通过mount命令我们也可以看到,usrquota和grpqouta这两个磁盘配额参数也已经添加成功了。

第二步,生成磁盘配额数据库。
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem            Size       Used       Avail     Use%     Mounted on
/dev/sda3             3.9G       2.6G     1.2G      70%          /
/dev/sda6             494M    11M    458M     3%           /home
/dev/sda2             9.5G       2.9G     6.2G     32%         /var
/dev/sda1             99M      14M      81M       15%         /boot
tmpfs                   188M     0           188M    0%           /dev/shm
/dev/hdc               2.8G     2.8G     0            100%       /media/RHEL_5.4 i386 DVD
/dev/sda8             471M    11M     437M    3%          /mnt
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
lost+found
[root@localhost mnt]#
通过df –h命令可以查看到我们的/dev/sda8这个分区是被挂载到/mnt下面的,我们进入了/mnt,现在里面什么东西也没有。

现在开始生成磁盘配额数据库
#quotacheck  -cumg  /dev/sda7
[root@localhost ~]# quotacheck -cumg  /dev/sda8
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ll
total 24
-rw------- 1 root root  6144 Feb 25 21:52 aquota.group
-rw------- 1 root root  6144 Feb 25 21:52 aquota.user
drwx------ 2 root root 12288 Feb 25 21:39 lost+found
现在可以看到,生成磁盘配额数据库后,在/mnt下面就自动的产生了两个文件,aquota.user和aquota.group这个两个文件。这两个文件就是用来存放所有磁盘配额的信息。

第三步,启用磁盘配额。
#quotaon  /dev/sda8

启动磁盘配额功能,
[root@localhost ~]# quotaon /dev/sda8
[root@localhost ~]#

当然我们也可以关闭磁盘配额的功能。
[root@localhost ~]#
[root@localhost ~]# quotaoff /dev/sda8

第四步,编辑磁盘配额。
# edquota user1
现在我们系统中有个用户user1,我们就针对这个用户来做磁盘配额。
[root@localhost ~]#
[root@localhost ~]# edquota user1
Disk quotas for user user1 (uid 500):
  Filesystem    blocks      soft       hard     inodes     soft     hard
  /dev/sda8        0             0            0           0            0         0

参数意义
Filesystem     代表为那个分区在做磁盘配额
Blocks          文件的大小
Soft              软限制文件大小
Hard             硬限制文件大小
Inodes          文件的数量
Soft              软限制文件数量
Hard            硬限制文件数量

有一点需要注意的是,如果在blocks这项里面已经默认就有了文件大小,那么我们在做文件大小磁盘配额限制的时候,一定要加上这个默认的文件大小,比如说在blocks这项里面已经有了20K大小的文件,那么我们在做磁盘配额限制用户只可以写如50K的数据,那么就必须加上那个默认的文件大小,也就是70K。inodes的选项也一样,在做限制的时候也需要加上默认的inodes的文件数量。

关于软限制和硬限制

软限制代表当用户写入的数据达到软限制的规定,就进行警告,但是还是可以写入数据的。
硬限制代表当用户写入的数据达到硬限制的规定,那么用户就不可以在磁盘写入数据了,强制性的。
现在我们来做一个试验,允许user1在/dev/sda8里面只可以写入100K的数据,当user1在/dev/sda8中写入的数据到达80K就进行警告。
[root@localhost ~]#
[root@localhost ~]# edquota user1
Disk quotas for user user1 (uid 500):
  Filesystem    blocks    soft       hard     inodes     soft     hard
  /dev/sda8        0         80         100        0           0          0

我们将user1的软限制设为80K,硬限制设为100K了。
现在我们来测试一下,磁盘配额有没有生效。可以看到idoes这项都是0,如果是0就表示这项不生效。
为了试验效果,首先将/mnt的权限全部开放。
[root@localhost ~]# chmod 777 /mnt/
[root@localhost ~]#

现在我们切换到user1用户,然后使用dd工具创建一个80K的文件。
[root@localhost ~]# su - user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /mnt/
[user1@localhost mnt]$ ls
aquota.group  aquota.user  lost+found
[user1@localhost mnt]$ dd if=/dev/zero of=file bs=1K count=80
sda8: warning, user block quota exceeded.
80+0 records in
80+0 records out
81920 bytes (82 kB) copied, 0.00277285 seconds, 29.5 MB/s
[user1@localhost mnt]$ ls
aquota.group  aquota.user  file  lost+found
[user1@localhost mnt]$
可以看到,我们通过dd工具创建了一个文件名为file的80K文件,但是给了我们一个警告,是因为user1达到了软限制,所以系统给了一个警告。

我们已经往/dev/sda8里面写入了80K的数据,如果我们在写入20K的数据,那么会发生什么事情呢。
[user1@localhost mnt]$
[user1@localhost mnt]$ dd if=/dev/zero of=file1 bs=1k count=20
sda8: write failed, user block limit reached.
dd: writing `file1': Disk quota exceeded
19+0 records in
18+0 records out
18432 bytes (18 kB) copied, 0.00365465 seconds, 5.0 MB/s
[user1@localhost mnt]$ ll -h
total 126K
-rw------- 1 root  root  7.0K Feb 25 22:36 aquota.group
-rw------- 1 root  root  7.0K Feb 25 22:33 aquota.user
-rw-rw-r-- 1 user1 user1  80K Feb 25 22:36 file
-rw-rw-r-- 1 user1 user1  18K Feb 25 22:41 file1
drwx------ 2 root  root   12K Feb 25 21:39 lost+found
[user1@localhost mnt]$
可以看到,当在往/dev/sda8里面写入20K的数据的时候,系统提示我们写入失败,这就表明我们的磁盘配额就做成功了。当然我们的file1这个文件最后还是被创建了。但是这个文件只有18K,是不完整的。

刚才我们只是对用户做了磁盘配额,如果是组呢,组的磁盘配额配置和用户的配置方法一样,如果对组做限制,那么这个组里面的所有成员就都会受到磁盘配额的影响。

对组做磁盘配额

#Edquota  -g  user1 
磁盘配额的基本配置到这里就基本完成了。

如果我们需要给多个用户做磁盘配额的话,一个一个指定又太麻烦了,有一个方法可以减轻负担。
# Edquota  -p  user1 user2
这个就是将user1里面的磁盘配额策略复制给user2
[root@localhost ~]#
[root@localhost ~]# edquota user1
Disk quotas for user user1 (uid 500):
  Filesystem  blocks       soft       hard     inodes     soft     hard
  /dev/sda8    100           80        100       2           0        0
 
这个就是user1磁盘配额的策略信息
[root@localhost ~]# edquota -p user1 user2
[root@localhost ~]# edquota user2
Disk quotas for user user2 (uid 501):
  Filesystem     blocks       soft       hard     inodes     soft     hard
  /dev/sda8       0               80        100        0          0        0
可以看到,user1的策略信息就被自动的复制给user2了。

查看磁盘配额的信息
# Edquota  -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/sda8                 7days                  7days
这个里面主要强制定义用户磁盘过期的时间
Block grace period    7days
这个是代表当用户达到了磁盘配额文件大小的软限制,还没有达到硬限制,那么在七天后,用户还是没有做修改,还是处于警告范围,那么就算用户没有达到硬限制,那么用户也不可以在往里面写入数据了。
Inode grace period    7days
这个是磁盘配额文件数量的过期时间限制,和Block grace period的一样,也是七天。
当然这些过期时间也是可以修改的。
如果只想修改每个用户的过期时间,可以用这条命令
Edquota  -T  user1(username)

查看磁盘配额的策略设置
Quota  user1(username)
[root@localhost ~]# quota user1
Disk quotas for user user1 (uid 500):
 Filesystem blocks   quota   limit    grace   files   quota   limit   grace
 /dev/sda8  100*    80        100                2          0        0    
[root@localhost ~]#
这个命令只可以查询每一个用户

如果想查询系统中所有用户的磁盘配额策略,使用这条命令
#repquora  -a
[root@localhost ~]# repquota -a
*** Report for user quotas on device /dev/sda8
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     10544   0       0                 4     0     0      
user1     +-   100      80     100  6days   2     0     0      
user2     --    1          80     100              1     0     0      
user3     --    1          80     100              1     0     0       
[root@localhost ~]#
这条命令可以查看系统中所有用户的磁盘配额的信息。
linux下有关磁盘配额的内容就介绍这里,希望对大家有所帮助。

(责任编辑:IT)