开笔之前,首先讲讲自己对于写博客这一行为的想法。首先自己先原谅自己是一个学生党加宅懒菜,曾经也有写过,但是还是没有坚持下来。这次总算下定决心好好的开始自己的博客之旅,原因很简单,为了巩固自己的学习,锤炼自己的文笔,当然也可以放松自己的心情,因为博客这个东西,自己想怎么写就怎么写吗。虽然自己是个渣渣,若干年后,说不定自己就成为了一个大神了呢听说写博客可以学的更好  ~.~ 【磁盘配额】_限制,哈哈哈,自吹一波先。开始写把~~

    磁盘配额是什么?

这个社会人人提倡自由平等,但是在root面前。也就只能呵呵了。不同的人对于共同一个硬盘空间享受有不同的待遇,也许你跟root关系好些(没事搞搞基),来来来多给你一点,也许你一不小心调戏了不该调戏的妹子被root看到了。。你就乖乖地省吃俭用把。。当然这些都是瞎话。。。是的,在共同使用同一硬盘空间的时候,为了防止个别用户占用大量资源空间,而导致其他用户空间不足,磁盘配额这一为各个用户划分磁盘空间的神器就显得相当重要了。也就是quota,简单点就是分蛋糕啦。

    磁盘配额实验

一 准备实验环境(虚拟机中)

5个用户(user1-user5) ,一个用户组(myquotagrp),quota-3.17-18.el6.x86_64 ,一块硬盘 /dev/sdb


脚本实现用户和组新建,包安装以及磁盘分区不做过多叙述

#!/bin/bash
groupadd myquotagrp
for i in {1..5}
do
 useradd  -g myquotagrp user$i && echo "aixocm" |passwd user$i --stdin 
done
[root@llc test]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63adbeff

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux

分区完注意格式化,否则无法挂载,然而挂载时需要特别注意的是要开启此分区的文件系统配额支持,最好是写入/etc/fstab文件中,如下


/dev/sdb1        /lianxi            ext4    defaults,usrquota,grpquota    0 0


写入进去后 mount -a 挂载

[root@llc test]# mount -a
[root@llc test]# mount 
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sr0 on /iso type iso9660 (ro)
/dev/sdb1 on /lianxi type ext4 (rw,usrquota,grpquota)


此时磁盘配额实验环境也就基本完成了


二 新建Quota配置文件

quotacheck:扫描文件系统并新建quota配置文件


[root@llc ~]# quotacheck -avug
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb1 [/lianxi] done
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Cannot stat old user quota file: 没有那个文件或目录
quotacheck: Cannot stat old group quota file: 没有那个文件或目录
quotacheck: Checked 2 directories and 0 files
quotacheck: Cannot create new quotafile /lianxi/aquota.user.new: 权限不够
quotacheck: Cannot initialize IO on new quotafile: 权限不够
quotacheck: Cannot create new quotafile /lianxi/aquota.group.new: 权限不够
quotacheck: Cannot initialize IO on new quotafile: 权限不够

提示权限不够,这里是SElinux搞的鬼,这里需要设置关闭状态

[root@llc ~]# getenforce Enforcing[root@llc ~]# setenforce 0[root@llc ~]# getenforce Permissive临时修改
[root@llc ~]# vim /etc/selinux/SELINUX=disabled
永久修改重启后生效
再次执行
[root@llc ~]# quotacheck -avugquotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.quotacheck: Scanning /dev/sdb1 [/lianxi] donequotacheck: Cannot stat old user quota file: 没有那个文件或目录quotacheck: Cannot stat old group quota file: 没有那个文件或目录quotacheck: Cannot stat old user quota file: 没有那个文件或目录quotacheck: Cannot stat old group quota file: 没有那个文件或目录quotacheck: Checked 2 directories and 0 filesquotacheck: Old file not found.quotacheck: Old file not found.[root@llc ~]# ls /lianxi/aquota.group  aquota.user


这里可以发现并没有提示权限不够,其中上面提示的没有那个文件或目录是由于本身我是第一次建立配额文件,所以不存在之前的老文件,故不用太过在意,执行成功后我们将在需要进行配额的目录里发现了两个文件

aquota.group  aquota.user这说明我们quota配置文件生成成功,那么我来解释下选项的意思。


-a 扫描所有在/etc/mtab内,含有quota支持的文件系统(如果不接-a,就要加指定文件系统)

-v 显示过程

-u 针对用户扫描,新建aquota.user

-g 针对用户组扫描,新建aquota.group


三 quota 启动,关闭,即编辑配置文件

quotaon -avug 开启

quotaoff -avug 关闭

[root@llc ~]# quotaon -avug
/dev/sdb1 [/lianxi]: group quotas turned on
/dev/sdb1 [/lianxi]: user quotas turned on


-a 针对所有在/etc/mtab文件内的含有quota支持的文件系统(如果不接-a,就要加指定文件系统)

-v 显示过程

-u 开启用户配额

-g 开启用户组配额


编辑配置文件,设定限制值

[root@llc ~]# edquota -u user1
Disk quotas for user user1 (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                      0         200000     300000       0        0        0

~                                                                                            

Filesystem:针对那个文件系统进行配额

block:磁盘容量,quota自己计算,不做修改

soft:软限制,大小超过,发出警告并gracetime开始倒计时

hard:硬限制,大小超过,直接锁住磁盘,用户无法使用

inodes:文件数量,quota自己计算,不做修改

soft:软限制,数量超过,发出警告并gracetime开始倒计时

hard:硬限制,数量超过,直接锁住磁盘,用户无法使用

以user1的配额文件为模板,传递给另外四个用户

[root@llc ~]# edquota -p user1 -u user2
[root@llc ~]# edquota -p user1 -u user3
[root@llc ~]# edquota -p user1 -u user4
[root@llc ~]# edquota -p user1 -u user5



设置组配额限制

[root@llc ~]# edquota -g myquotagroup
Disk quotas for group myquotagroup (gid 501):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdb1                       0        900000    1000000       0        0        0


设置宽限时间

[root@llc ~]# 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/sdb1                     14days                  14days


默认都是为7天,改为14天


查看quota限制报表,包括用户和组限制

[root@llc ~]# repquota -avug
*** Report for user quotas on device /dev/sdb1
Block grace time: 14days; Inode grace time: 14days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
user1     --       0  200000  300000              0     0     0       
user2     --       0  200000  300000              0     0     0       
user3     --       0  200000  300000              0     0     0       
user4     --       0  200000  300000              0     0     0       
user5     --       0  200000  300000              0     0     0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 6
Used average: 6.000000
*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
myquotagroup --       0  900000 1000000              0     0     0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000



四 测试quota

让普通用户可以在/lianxi里新建文件

[root@llc /]# chmod 777 /lianxi/
[user1@llc lianxi]$ dd if=/dev/zero of=test bs=1M count=280sdb1: warning, user block quota exceeded.记录了280+0 的读入记录了280+0 的写出293601280字节(294 MB)已复制,1.1914 秒,246 MB/秒


以普通用户进入/lianxi,并且使用dd命令得到一个280M的文件这时候发现了warning,切换到root用户取查看报表

[root@llc /]# repquota -auv
*** Report for user quotas on device /dev/sdb1
Block grace time: 14days; Inode grace time: 14days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
user1     +-  286720  200000  300000 13days       1     0     0

   

发现grace开始倒数了,随后继续切换到user1继续建立文件

[user1@llc lianxi]$ dd if=/dev/zero of=test1 bs=1M count=280
sdb1: write failed, user block limit reached.
dd: 正在写入"test1": 超出磁盘限额
记录了13+0 的读入
记录了12+0 的写出
13598720字节(14 MB)已复制,0.0556218 秒,244 MB/秒

发现已经超出磁盘限额,并且最大也无法超过300

[user1@llc lianxi]$ du -sk300020    .[user1@llc lianxi]$ mkdir hellomkdir: 无法创建目录"hello": 超出磁盘限额


此时也无法再新建任何目录和文件,当然如果其中两个用户的磁盘配额超过总配额也是不行的,这样其他用户也就无法使用了。


其实很简单。但是我还是写了这么多- - ,重点是在于理解理解。命令之类的东西还是可以百度那啥的,至于用户组配额就可以自行推导了,是不是很简单呢