Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162186
  • 博文数量: 126
  • 博客积分: 1073
  • 博客等级: 上尉
  • 技术积分: 1175
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 00:32
文章分类

全部博文(126)

文章存档

2018年(56)

2013年(1)

2012年(8)

2011年(61)

分类: LINUX

2011-01-24 20:34:54

下面是关于在linux下面关于磁盘配额的讨论,

 

磁盘配额介绍

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

 

linux下面怎么配置磁盘配额呢?

第一步,在分区挂载选项上添加参数。

在磁盘配额的开始,我们要对需要做磁盘配额的分区在挂载选项上面添加两个参数,usrquotagrpquota这个两个参数,

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命令我们也可以看到,usrquotagrpqouta这两个磁盘配额参数也已经添加成功了。

 

第二步,生成磁盘配额数据库。

[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.useraquota.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的数据,那么就必须加上那个默认的文件大小,也就是70Kinodes的选项也一样,在做限制的时候也需要加上默认的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工具创建了一个文件名为file80K文件,但是给了我们一个警告,是因为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下面磁盘配额的讨论就到这里了。

阅读(605) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~