Linux是一个多用户多任务的操作系统,在使用中可能会有几个人对服务器有操作,几个用户共同使用一个共享磁盘的情况,因为我们的硬盘是有限的,我们需要对用户的空间进行限制。这里使用磁盘配额,可以很方便的对用户的空间进行额度限制。
1:加入一块硬盘,分出一个主分区:
[root@localhost ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xa03faa82. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): Using default value 2610 Command (m for help): p 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: 0xa03faa82 Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
2.格式化分区并挂载
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkdir /data ##创建一个用户共享使用的目录 [root@localhost ~]# mount /dev/sdb1 /data/ ##将分区挂载到共享目录 [root@localhost ~]# mount ##查看挂载情况 /dev/mapper/VolGroup-lv_root 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) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb1 on /data type ext4 (rw)
写入到开机挂载里面
[root@localhost ~]# vi /etc/fstab [root@localhost ~]# tail -1 /etc/fstab /dev/sdb1 /data ext4 defaults 0 0
3.重新挂载使文件目录支持磁盘配额:
[root@localhost ~]# mount -o remount,usrquota,grpquota /dev/sdb1
[root@localhost ~]# mount /dev/mapper/VolGroup-lv_root 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) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sdb1 on /data type ext4 (rw,usrquota,grpquota) ##再次查看分区挂载可以看到支持+磁盘配额
同样使它开机挂载支持磁盘配额:
[root@localhost ~]# vi /etc/fstab [root@localhost ~]# tail -1 /etc/fstab /dev/sdb1 /data ext4 defaults,usrquota,grpquota 0 0
3。下载磁盘配额软件:
[root@localhost ~]# yum -y install quota
4.生成磁盘配额的数据库文件:
[root@localhost ~]# quotacheck -ugvc /data/ 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 [/data] done quotacheck: Cannot stat old user quota file /data/aquota.user: 没有那个文件或目录. Usage will not be substracted. quotacheck: Cannot stat old group quota file /data/aquota.group: 没有那个文件或目录. Usage will not be substracted. quotacheck: Cannot stat old user quota file /data/aquota.user: 没有那个文件或目录. Usage will not be substracted. quotacheck: Cannot stat old group quota file /data/aquota.group: 没有那个文件或目录. Usage will not be substracted. quotacheck: Checked 2 directories and 0 files quotacheck: Old file not found. quotacheck: Old file not found.
查看生成的磁盘配置数据库文件
[root@localhost ~]# ls /data/ aquota.group aquota.user lost+found
5.新建需要限制的用户和组:
[root@localhost ~]# useradd u01 ##新建用户 [root@localhost ~]# useradd u02 [root@localhost ~]# echo "123123" |passwd --stdin u01 更改用户 u01 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@localhost ~]# echo "123123" |passwd --stdin u02 更改用户 u02 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@localhost ~]# groupadd g01 ##新建组 [root@localhost ~]# usermod -g g01 u01 ##将用户加入组 [root@localhost ~]# usermod -g g01 u02 [root@localhost ~]# id u01 ##确认用户信息 uid=500(u01) gid=502(g01) 组=502(g01) [root@localhost ~]# id u02 uid=501(u02) gid=502(g01) 组=502(g01)
6.对用户进行额度配置:
setauota -u 用户 或(-g 组) 大小软限制 大小硬限制 数量软限制 数量硬限制 对哪个目录
##大小限制的单位是kb,软限制是当达到这个限制时,再创建文件或导入数据,会出现提示信息,不过还可以再往里面新建。当到达硬限制时,就真的无法创建了。
[root@localhost ~]# setquota -u u01 10000 15000 10 15 /data/
7.开启磁盘配额: 重启系统也可以
[root@localhost ~]# quotaon -a
给所有人可写入权限即可,要在其他用户新建文件测试
[root@localhost ~]# chmod 777 /data/
[root@localhost ~]# su - u01 ##切换到u01 [u01@localhost ~]$ touch /data/{1..20}.mp3 ##新建20个文件 sdb1: warning, user file quota exceeded. ##这个到达软限制,有提醒 sdb1: write failed, user file limit reached. ##这个到达硬限制,提示写入错误 touch: 无法创建"/data/16.mp3": 超出磁盘限额 touch: 无法创建"/data/17.mp3": 超出磁盘限额 touch: 无法创建"/data/18.mp3": 超出磁盘限额 touch: 无法创建"/data/19.mp3": 超出磁盘限额 touch: 无法创建"/data/20.mp3": 超出磁盘限额
最后查看目录,发现创建了15个文件,这个15是硬限制的设置
[u01@localhost ~]$ ls /data/ 10.mp3 12.mp3 14.mp3 1.mp3 3.mp3 5.mp3 7.mp3 9.mp3 aquota.user 11.mp3 13.mp3 15.mp3 2.mp3 4.mp3 6.mp3 8.mp3 aquota.group lost+found [u01@localhost ~]$ exit logout
给组配置额度:
[root@localhost ~]# setquota -g g01 15000 20000 15 20 /data/
切换到u02测试:
[root@localhost ~]# su - u02 [u02@localhost ~]$ touch /data/{1..10}.txt sdb1: write failed, group file limit reached. touch: 无法创建"/data/6.txt": 超出磁盘限额 touch: 无法创建"/data/7.txt": 超出磁盘限额 touch: 无法创建"/data/8.txt": 超出磁盘限额 touch: 无法创建"/data/9.txt": 超出磁盘限额 touch: 无法创建"/data/10.txt": 超出磁盘限额
发现只创建了5个文件,就不能再创建了。因为刚才对组进行了限制20个数量的硬限制,而u01、u02都在g01组里面,u01的15个文件已经存在了,所以u02只能创建五个了。
[u02@localhost ~]$ ls /data/ 10.mp3 12.mp3 14.mp3 1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3 8.mp3 aquota.group lost+found 11.mp3 13.mp3 15.mp3 1.txt 2.txt 3.txt 4.txt 5.txt 7.mp3 9.mp3 aquota.user [u02@localhost ~]$ exit logout [root@localhost ~]#
转载于:https://blog.51cto.com/lesliecheung/1957133