当前位置: 首页 > news >正文

磁盘配额实例详解

引言

这篇文章介绍一下磁盘配额;利用磁盘配额这种技术,系统管理员可以限制某个用户在某个硬盘分区可使用的大小,和可以创建文件数量的多少;目前Linux系统和Windows系统都支持这种技术。

文章目录

  • 0×1.磁盘配额术语介绍
  • 0×2.Linux磁盘配额实例
  • a.实验环境介绍
  • b.修改/etc/fstab添加支持磁盘配额选项
  • c.创建磁盘配额配置文件
  • d.实现磁盘配额限制
  • e.关闭磁盘配额

0×1.磁盘配额术语介绍

磁盘配额使用条件:

磁盘配额实施的对象是硬盘分区,并且Linux的内核必须支持磁盘配额这种技术,本例所使用的CentOS7是完全支持的;
磁盘配额的记录文件保存在开启磁盘配额分区的根目录下面,它们是aquota.user和aquota.group;
磁盘配额只对一般身份用户有效,对root权限用户无效;

磁盘配额的相关术语:

最低限制(软限制,soft):最低限制容量(可以被超过,但会出现警告,超过的部分会保存到宽限时间到期);
最高限制(硬限制,hard): 不能被超越的限制;
宽限时间:当用户使用的空间超过了最低限制但还没到达最高限制时,在这个宽限时间到期前必须将超额的数据降低到最低限制以下(默认为7天),当宽限时间到期,系统将自动清除超出的数据;

0×2.Linux磁盘配额实例

a.实验环境介绍

系统:CentOS7;
所用软件:quota,CentOS7默认已安装,CentOS6可能需要yum在线安装此软件,前面的文章已经介绍过yum的使用方法,这里不再赘述;
硬盘及分区:/dev/sda1(系统所在分区),/dev/sdb1(20G),已经格式化为ext4文件系统;
所有的磁盘配额操作都在/dev/sdb1中进行;

b.修改/etc/fstab添加支持磁盘配额选项

首先在系统新建一个用于挂载分区的目录,然后修改/etc/fstab添加一条自动挂载分区条目:

01#使用管理员权限在系统根目录,新建一个目录sdb1(并非一定要在根目录创建挂载目录)
02qing@qingsword.com:~$ sudo mkdir /sdb1
03 
04#使用vi编辑/etc/fstab,在末尾添加一行自动挂载,支持quota
05qing@qingsword.com:~$ sudo vi /etc/fstab
06 
07#将下面这一行添加到末尾,第一个字段为被挂载的分区,第二个字段为挂载的目录,第三个字段是被挂载的分区的文件系统类型,后面的几个字段是支持quota的参数。各字段用空格分隔
08/dev/sdb1 /sdb1 ext4 defaults,usrquota,grpquota 0 0
09 
10#保存,重新启动计算机,查看sdb1挂载信息
11qing@qingsword.com:~$ mount grep /dev/sdb1
12.....
13#只要括号里面显示"usrquota,grpquota",说明可以使用磁盘配额了
14/dev/sdb1 on /sdb1 type ext4 (rw,usrquota,grpquota)

c.创建磁盘配额配置文件

01#为了让其他用户可以使用这个分区,先将这个实验用的分区权限修改成777
02qing@qingsword.com:~$ sudo chmod 777 /sdb1
03 
04#创建磁盘配额配置文件,命令参数解释如下:
05#-v 显示扫描过程;
06#-u 针对扫描情况与目录的使用情况建立aquota.user;
07#-g 针对用户扫描文件与使用情况建立aquota.group;
08qing@qingsword.com:~$ sudo quotacheck -vug /sdb1
09 
10#接着就能看到分区目录中自动生成了两个配置文件
11qing@qingsword.com:~$ ls /sdb1
12aquota.group  aquota.user

d.实现磁盘配额限制

01#创建普通测试用户qingsword,配置密码
02qing@qingsword.com:~$ sudo useradd qingsword
03qing@qingsword.com:~$ sudo passwd qingsword
04 
05#配置qingsword用户使用/dev/sdb1分区的限额
06qing@qingsword.com:~$ sudo edquota -u qingsword
07 
08#输入上面的命令后,会进入一个vi编辑界面
09#对其中各字段解释如下:
10#Filesystem下显示实现磁盘配额的分区;
11#blocks下为当前已经使用的大小,不用修改;
12#soft为软限制,超出后会给出警告,超出的部分默认会保存7天;
13#hard为硬限制,不可超越的限制(软硬限制默认单位都是KB);
14#后面的两个相同的soft、hard分别表示分区中这个用户可以创建的文件数目软硬限制;
15#本例中设置,qingsword可以使用/dev/sdb1分区的软限制大小10KB,硬限制20KB,可创建的文件个数软限制是3个,硬限制5个;
16Disk quotas for user qingsword (uid 500):
17Filesystem blocks soft hard inodes soft hard
18/dev/sdb1    0     10   20    0     3    5
19 
20#修改保存退出后,开启这个分区的磁盘配额
21qing@qingsword.com:~$ sudo quotaon /sdb1

如果操作无误,现在磁盘配额就已经开始起作用了,使用qingsword用户登录测试如下:

01#切换到qingsword用户
02qing@qingsword.com:~$ su qingsword
03 
04#进入/dev/sdb1分区
05qingsword@qingsword.com:~$  cd /sdb1
06 
07#使用dd命令进行文件写入测试,
08# if=/dev/zero 表示从"/dev/zero"文件输出,of=/sdb1/testfile1 表示输入到"/sdb1/testfile1"文件中,也就是,从/dev/zero这个文件中读取垃圾数据写入/sdb1/testfile1这个文件中;
09# bs=1K 表示一次读取写入的大小是1KB,count=12 表示读取12次;
10#所以理论上最后写入/sdb1/testfile1的数据应该是12KB
11qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile1 bs=1K count=12
12 
13sdb1: warning, user block quota exceeded.
14#因为针对qingsword用户在这个分区的软限制设置是10KB,所以这里给出了警告信息
1512+0 records in
1612+0 records out
1712288 bytes (12 kB) copied
18 
19#可以查看到testfile1的大小是12KB
20qingsword@qingsword.com:/sdb1$ ls -l testfile1
21-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:24 testfile1
22 
23#测试向第二个文件/sdb1/testfile2写入10KB垃圾数据
24qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile2 bs=1K count=10
25 
26sdb1: write failed, user block limit reached.
27dd: writing `/sdb1/testfile2': Disk quota exceeded
28#出现了一个警告,并且下方显示只有8K的数据被复制,这是因为我们设置的硬限制是20KB
299+0 records in
308+0 records out
318192 bytes (8.2 kB) copied
32 
33#第一个文件已经占用了12KB的数据,第二个文件仅写入了8KB的数据,硬限制是不能被超越的,而软限制10KB是可以被超越的,超越的数据,会在这个分区中默认保存7天,然后系统将自动删除这些数据
34qingsword@qingsword.com:/sdb1$ ls -l testfile1 testfile2
35-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:33 testfile1
36-rw-rw-r--. 1 qingsword qingsword  8192 Jan 13 16:33 testfile2
37 
38#下面测试文件数量限制,按照前面的介绍和我们的配置,超过3个文件的软限制时会给出警告,而无法超过5个文件的硬限制,使用touch来创建空文件
39qingsword@qingsword.com:/sdb1$ touch testfile3
40 
41#超过3个文件时出现了警告
42qingsword@qingsword.com:/sdb1$ touch testfile4
43sdb1: warning, user file quota exceeded.
44 
45 
46qingsword@qingsword.com:/sdb1$ touch testfile5
47 
48#touch第6个文件的时候提示创建失败
49qingsword@qingsword.com:/sdb1$ touch testfile6
50sdb1: write failed, user file limit reached.
51touch: cannot touch `testfile6': Disk quota exceeded
52 
53#超过文件数量软限制的部分同样会被保存7天,然后被系统自动删除
54qingsword@qingsword.com:/sdb1$ ls
55aquota.group  testfile2  testfile4
56aquota.user   testfile1   testfile3  testfile5
57 
58#查看当前用户的磁盘配额使用情况,两个已经超出的配置分别是文件大小和文件数量,宽限时间还有6天
59qingsword@qingsword.com:/sdb1$ quota -vugs
60Disk quotas for user qingsword (uid 1002):
61Filesystem space quota limit grace files quota limit grace
62dev/sdb1    20K*  10K  20K   6days   5*    3     5   6days
63 
64#可以使用root权限修改宽限时间
65qing@qingsword.com:~$ sudo edquota -t

e.关闭磁盘配额

 
01#关闭单个磁盘的磁盘配额
02qing@qingsword.com:~$ sudo quotaoff /sdb1
03 
04#关闭所有已经开启的磁盘配额
05qing@qingsword.com:~$ sudo quotaoff -a
06 
07#反之,开启所有磁盘配额
08qing@qingsword.com:~$ sudo quotaon -a
09 
10#如果不再使用磁盘配额,可以将配置文件也删除
11qing@qingsword.com:~$ sudo rm -rf /sdb1/aquota.*
12 
13#最后删除/etc/fstab中的自动挂载即可

*转载请注明来自:晴刃(QingSword.COM)

*原文连接:http://www.qingsword.com/qing/938.html

转载于:https://www.cnblogs.com/han1094/p/6283533.html

相关文章:

  • 框架与超链接的小示例
  • chrome的功能Copy as cURL
  • hibernate-部分字段查询方案
  • SQL语句-创建索引
  • Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
  • ctime 写到文件
  • CentOS 5.4 final下Systemtap的安装
  • |BZOJ 1477|数论|青蛙的约会
  • 一个简单的通讯服务框架(大家发表意见一起研究)JAVA版本
  • mysql中的列属性
  • tcp三次握手与四次挥手
  • ajax php 点击加载更多
  • 【VS开发】ClientToScreen 和ScreenToClient 用法
  • 简单获取CDN背后网站的真实IP
  • jquery 简单实现tab切换
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [NodeJS] 关于Buffer
  • [译] 怎样写一个基础的编译器
  • 07.Android之多媒体问题
  • ES6 ...操作符
  • java8-模拟hadoop
  • JavaScript HTML DOM
  • Laravel5.4 Queues队列学习
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • socket.io+express实现聊天室的思考(三)
  • uva 10370 Above Average
  • 从零开始的无人驾驶 1
  • 复杂数据处理
  • 前端技术周刊 2019-02-11 Serverless
  • 使用parted解决大于2T的磁盘分区
  • 再次简单明了总结flex布局,一看就懂...
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • k8s使用glusterfs实现动态持久化存储
  • postgresql行列转换函数
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 数据可视化之下发图实践
  • 选择阿里云数据库HBase版十大理由
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • !!java web学习笔记(一到五)
  • #、%和$符号在OGNL表达式中经常出现
  • #pragma预处理命令
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (k8s中)docker netty OOM问题记录
  • (附源码)ssm高校实验室 毕业设计 800008
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六)c52学习之旅-独立按键
  • (三)mysql_MYSQL(三)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一一四)第九章编程练习
  • (转)大道至简,职场上做人做事做管理
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net CHARTING图表控件下载地址
  • .NET Core IdentityServer4实战-开篇介绍与规划