笔记基本分类-磁盘配额
配额:quota
什么是磁盘配额?
限制磁盘资源的使用。
限制原因就是因为资源不是无限的。
应用场景:
1.网络存储空间有限 网盘
2.邮件服务器
3.公司的文件共享服务器
能限制谁?
1.限制普通用户
2.限制用户组
注意:不能限制root用户
root用户对其他人的限制
能够限制什么?
inode------------ 限制用户创建文件的个数
block------------ 限制用户能够使用的磁盘空间的大小
设置配额的条件?
需要内核支持quota的功能
# grep -i quota /boot/config-2.6.32-431.el6.x86_64
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y //看到此行表示支持
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
如何进行磁盘配额?
准备工作
关闭iptables selinux
1.首先需要分区开启用户配额和组配额 文件系统必须支持磁盘配额 usrquota,grpquota
创建一个分区并格式化
# fdisk -cu /dev/sdb
# partx -a /dev/sdb
# partx -a /dev/sdb
# mkfs.ext4 /dev/sdb1
将文件系统挂载到系统中的/quota目录
# mkdir /quota
# mount /dev/sdb1 /quota
查看文件系统是否支持磁盘配额
# mount | grep /quota
/dev/sdb1 on /quota type ext4 (rw)
让文件系统支持磁盘配额
# mount -o remount,usrquota,grpquota /dev/sdb1 /quota
查看文件系统是否支持磁盘配额
# mount | grep /quota
/dev/sdb1 on /quota type ext4 (rw,usrquota,grpquota)
将分区设置为开机挂载(可选)
# vim /etc/fstab
/dev/sdb1 /quota ext4 defaults,usrquota,grpquota 0 0
2.创建磁盘配额的记录文件
# quotacheck -cugv /quota
-c 创建磁盘配额的配置文件
-u 针对用户配额的配置文件
-g 针对用户组配额的配置文件
-v 显示扫描过程种的信息
-a 检测系统中所有已经挂载支持quota功能的分区
# ls /quota
aquota.group aquota.user lost+found
3.针对用户进行配额
# useradd quota1
# useradd quota2
# ls -ld /quota
drwxr-xr-x. 3 root root 4096 4月 1 15:19 /quota
# chmod 777 /quota //保证普通用户可以对/quota目录可写
例子:限制quota1用户最多只能创建10个文件 创建文件数达到7个警告 用户使用的空间最多使用10M 使用空间达到8M警告
# edquota -u quota1 //编辑方式同vim
Disk quotas for user quota1 (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 8000 10000 0 7 10
-u, --user edit user data
-g, --group edit group data
inodes 单位是个
blocks 单位是KB
软限制:超过软限制只警告,不影响使用 只警告一次
硬限制:是不可逾越的限制
4.启动配额 ---- 一定要操作
# quotaon /quota
5.测试配额
1)文件个数的测试
# su - quota1
$ cd /quota //一定要切换到做了配额的目录下操作
$ touch a.txt
$ touch {b..f}.txt
$ touch g.txt
$ touch h.txt //超过软限制警告,有警告,但是还可以创建
sdb1: warning, user file quota exceeded.
$ touch i.txt
$ touch j.txt
$ touch k.txt //超过硬限制不能创建文件
sdb1: write failed, user file limit reached.
touch: 无法创建"k.txt": 超出磁盘限额
$ ls
aquota.group b.txt e.txt h.txt lost+found
aquota.user c.txt f.txt i.txt
a.txt d.txt g.txt j.txt
2)使用空间测试
# su - quota1
$ cd /quota //一定要切换到做了配额的目录下操作
$ dd if=/dev/zero of=1.txt bs=1M count=5
记录了5+0 的读入
记录了5+0 的写出
5242880字节(5.2 MB)已复制,0.00629614 秒,833 MB/秒
$ ls -lh
总用量 5.1M
-rw-rw-r--. 1 quota1 quota1 5.0M 4月 1 16:22 1.txt
-rw-------. 1 root root 7.0K 4月 1 16:21 aquota.group
-rw-------. 1 root root 7.0K 4月 1 16:20 aquota.user
drwx------. 2 root root 16K 4月 1 15:03 lost+found
$ dd if=/dev/zero of=2.txt bs=1M count=3
sdb1: warning, user block quota exceeded.
记录了3+0 的读入
记录了3+0 的写出
3145728字节(3.1 MB)已复制,0.00714227 秒,440 MB/秒
$ dd if=/dev/zero of=3.txt bs=1M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.00221462 秒,473 MB/秒
$ ls -lh
总用量 9.1M
-rw-rw-r--. 1 quota1 quota1 5.0M 4月 1 16:22 1.txt
-rw-rw-r--. 1 quota1 quota1 3.0M 4月 1 16:22 2.txt
-rw-rw-r--. 1 quota1 quota1 1.0M 4月 1 16:22 3.txt
-rw-------. 1 root root 7.0K 4月 1 16:21 aquota.group
-rw-------. 1 root root 7.0K 4月 1 16:20 aquota.user
drwx------. 2 root root 16K 4月 1 15:03 lost+found
$ dd if=/dev/zero of=4.txt bs=1M count=2
sdb1: write failed, user block limit reached.
dd: 正在写入"4.txt": 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
802816字节(803 kB)已复制,0.0029627 秒,271 MB/秒
组的配额
edquota -g IT
# quotaoff /quota 停止配额
查看配额的使用情况
# repquota -a
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
quota1 +- 10000 8000 10000 6days 4 7 10
限期
默认7天
grace:优雅时间,当超过软限制,优雅时间倒计时为0时,软限制自动提升为硬限制
1.为用户组IT配置额度,IT组只能在/sdb目录创建100个文件并使用空间不能超100M。
创建文件个数到达80个警告,空间使用80M警告。
groupadd IT
useradd -g IT it1
useradd -g IT it2
edquota -g IT
Disk quotas for group IT (gid 583 ):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 80000 100000 0 80 100
2.创建目录/perm/public,该目录可以被dev组和adm1组的用户任意操作,其他用户只能访问这个目录内的文件,新建文件public,只能往文件里追加内容,不能覆盖,root用户也不能随意删除。
mkdir -p /perm/public
groupadd dev
groupadd adm1
setfacl -m g:dev:rwx /perm/public
setfacl -m g:adm1:rwx /perm/public
getfacl /perm/public/
# file: perm/public/
# owner: root
# group: root
user::rwx
group::r-x
group:dev:rwx
group:adm1:rwx
mask::rwx
other::r-x
touch public
chattr +a public
3.统计自己电脑也以登陆到系统的用户有多少个
grep -c /bin/bash /etc/passwd
grep /bin/bash /etc/passwd |wc -l
4.开机挂载/dev/sdb1分区到/sdb1目录
vim /etc/fstab
/dev/sdb1 /sdb1 ext4 defaults 0 0
5.使用文件创建交换分区,交换分区大小为80M
dd if=/dev/zer0 of=/tmp/a.txt bs=1M count=80
mkswap /tmp/a.txt
swapon /tmp/a.txt
vim /etc/fstab
/tmp/a.txt swap swap defaults 0 0
raid
lvm
浙公网安备 33010602011771号