首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

企鹅日志(十二):磁盘配额(quota)

2013-04-20 
企鹅日记(十二):磁盘配额(quota)#!/bin/bash# 使用script新建实验quota所需的环境groupadd quotagroupfor

企鹅日记(十二):磁盘配额(quota)
#!/bin/bash# 使用script新建实验quota所需的环境groupadd quotagroupfor username in user1 user2 user3 user4 user5do useradd -g quotagroup $username echo "123456" | passwd --stdin $usernamedone

接下来实践下quota流程:

# df -h /home

文件系统??????? 容量? 已用? 可用 已用% 挂载点
/dev/sda3??????? 69G? 4.4G?? 62G??? 7% /

因为我用的虚拟机,自动被分区,只有一个根分区/挂载sda3文件系统,所以我会针对/来进行,不过一般来讲不建议直接在/下面设置quota。

# mount | grep ‘\s/\s’

/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered)

通过查看/dev/sda3的数据知道是哦那个ext4文件系统,那么肯定支持quota

修改配置文件/etc/fstab,让/支持quota:

UUID=2f08675e-289a-404a-a13e-4802dec910e9 /?????????????????????? ext4??? defaults,usrquota,grpquota??????? 1 1

重点在上面粗体显示的usrquota,grpquota

# umount / (我勒个擦,根目录你怎么umount,还是重启吧)

# mount -a

# mount | grep “\s/\s”

/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered,usrquota,grpquota)

看到了吧,可以针对用户组和用户进行磁盘配额了。

====新建quota配置文件====

# quotacheck [-avugfM] [/mount_point]

-a:扫描所有在/etc/mtab内,含有quota支持的文件系统,加上此参数后,后面的/mount_point就不用写了

-u:针对用户扫描文件与目录使用情况,会新建aquota.user

-g:针对用户组扫描文件与目录使用情况,会新建aquota.group

-v:显示扫描过程信息

-f:强制扫描文件系统,并写入quota配置文件(危险,慎用)

-M:强制以读写方式扫描文件系统,只有在特殊情况下才会使用。

实际上只需要记住前面四个参数 -augv即可。

# ll -d /a*

-rw——-. 1 root root 8192 10月 27 02:06 /aquota.group
-rw——-. 1 root root 7168 10月 27 02:06 /aquota.user

不要手动去修改这两个quota配置文件啊,这个是quota自己去更新的。

====quota启动、关闭与限制值的设置====

# quotaon [-avug]? <===启动quota服务

# quotaon [-vug] /mount_point

上面的参数跟之前的一模一样,这个命令只需要执行一次,下次系统启动后会自动再执行的

# quotaoff [-a]? <===关闭quota服务

# quotaoff [-ug] /mount_point

# edquota [-u username] [-g groupname]? <===编辑quota的宽限值

# edquota -t <===修改宽限时间

# edquota -p 范本账号 -u 新账号

这些都很简单,不解释

# edquota -u user1

Disk quotas for user user1 (uid 1002):
Filesystem?????????????????? blocks?????? soft?????? hard???? inodes???? soft???? hard
/dev/sda3??????????????????????? 28????????? 0????????? 0???????? ?? 8??????????????? 0??????? 0

解释下这七个字段:

1,文件系统,或者是partition

2,磁盘容量(blocks):这个是quota自己自动算出来的,单位为KB,不要改动它

3,soft:磁盘容量(block)的soft限制值,单位为KB

4,hard:block的hard限制值,单位为KB

5,文件数量(inodes):这个也是quota自己自动算出来的,单位为个,不要改动它

6,soft:inode的soft值

7,hard:inode的hard值

我把它修改成如下的:

Disk quotas for user user1 (uid 1002):
Filesystem?????????????????? blocks?????? soft?????? hard???????????? inodes???? soft???? hard
/dev/sda3??????????????????????? 28?????? 250000???? 300000????? 8???????????? 0??????? 0

注意:我用的1000去近似1024,方便点,其实真正的250MB = 250 * 1024KB,这么说你了解麽 o(╯□╰)o

还有其他四个用户,直接参考copy user1的设置就可以了。

# edquota -p user1 -u user2

# edquota -p user1 -u user3

# edquota -p user1 -u user4

# edquota -p user1 -u user5

更改用户组的quota限额:

# edquota -g quotagroup

Disk quotas for group quotagroup (gid 1002):
Filesystem?????????????????? blocks?????? soft???????????? hard?????????????? inodes???? soft???? hard
/dev/sda3?????????????????????? 140??????? 900000???? 1000000?????? 35?????? ????? 0?????????? 0

最后,将宽限时间改成14天吧:

# 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/sda3?????????????????????14days????????????????? 7days

到这步,所有的设置都已经完成,接下来验收成果:

====quota限制值的报表====

单一用户/用户组的quota报表:

# quota [-uvs] username列表

# quota [-gvs] groupname列表

-u:后接用户名,不填表示当前用户

-g:后接用户组

-v:显示每个用户或者用户组在文件系统中的quota值

-s:使用好看的单位,比如M之类的

# quota -uvs user1 user2

Disk quotas for user user1 (uid 1002):
Filesystem?? space?? quota?? limit?? grace?? files?? quota?? limit?? grace
/dev/sda3???? 28K??? 245M??? 293M?????????????? 8?????? 0?????? 0
Disk quotas for user user2 (uid 1003):
Filesystem?? space?? quota?? limit?? grace?? files?? quota?? limit?? grace
/dev/sda3???? 28K??? 245M??? 293M?????????????? 8?????? 0?????? 0

针对整个文件系统的报表:

# repquota -a [-vugs]

-a:直接到/etc/mtab查询具有quota标志的文件系统,并报告quota结果

-v:输出的数据将含有文件系统相关的详细信息

-u:显示出用户的quota限制(这个是默认值)

-g:显示个别用户组的quota限制值

-s:使用K,M,G的单位显示

测试下实际效果:

# su – user1

# dd if=/dev/zero of=bigfile bs=1M count=270

# repquota -auv

dd if=/dev/zero of=bigfile2 bs=1M count=300

dd: 正在写入”bigfile2″: 超出磁盘限额
记录了23+0 的读入
记录了22+0 的写出
24047616字节(24 MB)已复制,0.648835 秒,37.1 MB/秒

# du -sk

300000? .? <===果然到了极限

[user1@(none) ~]$ ll
总用量 299968
-rw-r–r–. 1 user1 quotagroup 283115520 10月 27 02:42 bigfile
-rw-r–r–. 1 user1 quotagroup? 24047616 10月 27 02:44 bigfile2

当用户超过了soft,然后再宽限日期又没有删除空间,导致用户的hard变成了原来的soft,用户再也使用不了磁盘,那么怎么办呢。当然是进去删除文件就行了啊。不过很多用户不知道怎么回事,最好在用户超过限额(soft)后给用户发警告信:

# warnquota? (fedora上面没有这个命令,囧!)

==== 不改动既有系统的quota实例(link方式)====

如果/var/spool/mail不是一个独立分区,你想让用户邮件信箱与主文件夹的总体 磁盘使用量固定,但/home是单独的文件系统,跟/var/spool/mail不一样。

可以这样解决:

1,将/var/spool/mail这个目录整个完整的移动到/home下面

2,建立连接 # ln -s /home/mail /var/spool/mail,那么现在所有往/var/spool/mail里面放的数据全部放到/home/mail里面去了。

3,将/home/进行quota限额设置

注意,进行以上设置的时候,可能需要关闭SELinux

====软件磁盘阵列(Software RAID)====

请参考下一篇文章。哈哈 ……+……

===================================END========================

热点排行