您当前的位置:首页 > 计算机 > 系统应用 > 操作系统

常见系统故障修复(四)——磁盘配额

时间:11-22来源:作者:点击数:

一、基础知识介绍

1.磁盘资源耗尽故障

(1): 故障原因

  • 磁盘空间已被大量的数据占满,空间耗尽
  • 虽然还有可用空间,但文件节点数耗尽

(2):故障现象

  • 无法写入新的文件,提示“… : 设备上没有空间”
  • 部分程序无法运行,甚至系统无法启动

(3):解决思路

  • 清理磁盘空间,删除无用、冗余的文件
  • 转移或删除占用大量i节点的琐碎文件
  • 进入单用户模式、急救模式进行修复
  • 为用户设置磁盘配额

2.磁盘配额

(1):磁盘配额的概念:磁盘配额是指计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。

(2):进行磁盘配额的原因:如果不进行磁盘配额,那么每个用户都可以向磁盘中写入大量的数据,这样很容易造成磁盘资源耗尽,而且还存在一个潜在的安全性问题----如果有入侵者拿到任意一个普通账户的信息,如果没有进行磁盘配额,那么入侵者就可以向磁盘中写入大量的垃圾文件来耗尽磁盘资源。这样就可能会导致部分程序无法运行,甚至系统崩溃。

(3):实现磁盘限额的条件

  • 需要Linux内核支持
  • 安装quota软件包

(4):Linux磁盘限额的特点

  • 作用范围:针对指定的文件系统(分区)
  • 限制对象:用户帐号、组帐号
  • 限制类型:
    磁盘容量(默认单位为KB)
    文件数量
  • 限制方法:软限制、硬限制
    软限制:软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于对进程限制的硬限制的值,在 一般情况下,超过软限制并不会影响对磁盘的写入,软限制就相当于是一个提示而已,会提醒你磁盘快满了。
    硬限制:硬限制是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制,硬限制就相当于是一 个不可以逾越的线,一旦超过硬限制,那么用户就不能再向磁盘中写入数据了。

二、实现磁盘配额的步骤

1.安装quota软件包

rpm -ivh /media/RHEL_6.5\ x86_64\ Disc\ 1/Packages/quota-3.17-20.el6.x86_64.rpm

2.创建挂载目录,并修改权限为777,让普通用户对挂载目录具有写入权限

mkdir sdb1

chmod 777 sdb1/

ls -lda sdb1/

3.启用文件系统的配额支持(添加usrquota、grpquota挂载参数)

vim /etc/fstab

修改文件内容如下

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

4.重启计算机

reboot

5.查看是否成功挂载

mount | grep /dev/sdb1

6.关闭内核防火墙(若不关闭会提示出错)

setenforce 0

7.检测磁盘配额并创建配额文件
quotacheck -ugcv 文件系统
quotacheck -augcv
-a:检测所有可用的分区
-u:检测用户配额
-g:检测组配额
-c:创建配额数据文件
-v:显示执行过程信息

quotacheck -ugcv /dev/sdb1

ls -l /sdb1/aquota.*

8.创建用户和组

useradd zhangsan

passwd zhangsan

groupadd user

9.编辑用户和组帐号的配额设置(edquota命令)

edquota -u 用户名(编辑用户配额)
edquota -g 组名(编辑组配额)

第1列:此处不填写(文件系统名)
第2列:此处不填写(系统自动检测的已使用配额值)
第3列:磁盘容量软限制
第4列:磁盘容量硬限制
第5列:此处不填写(系统自动检测的已使用配额值)
第6列:文件个数软限制
第7列:文件个数硬限制

  • 编辑用户配额

edquota -u zhangsan

修改内容为下面红色方框中的数值

  • 编辑组配额

edquota -g user

修改内容为下面红色方框中的数值

10.启用文件系统的磁盘配额功能

quotaon -ugv /sdb1

注意:在执行这步之前最好再执行一下关闭selinux(setenforce 0)的操作,因为如果没有关闭selinux的话,那么启用文件系统的配额功能时就会提示权限不够

11.验证

(1):切换到zhangsan用户下的/sdb1目录下

su - zhangsan

cd /sdb1

(2):验证磁盘配额是否生效

  • 创建指定数量的文件:使用touch命令,或cp命令

touch 1.txt 2.txt...6.txt(是否有出错提示)

由上图可以看出来,虽然zhangsan用户创建了6个文件,可实际上只创建了5个文件,这样因为磁盘配额中节点数目的上限就是5,也就是说,zhangsan用户最多创建5个文件,一旦超过5个文件,zhangsan用户就无法创建了。

  • 创建指定容量的文件:使用dd命令,或cp命令

rm -rf *.txt(一定要先执行这一步,因为如果不执行这一步的话,不管是多大的文件都写不进去了,因为刚才已经达到了节点数的上限)

dd if=/dev/zero of=myfile bs=1M count=120(是否有出错提示)

ls -lh 文件名(查看写入的文件的字节数)

(3):关闭文件系统的磁盘配额功能

su root(必须要切换到root用户,zhangsan用户没有权限关闭磁盘配额功能)

quotaoff -ugv /sdb1

(4):再次切换到zhangsan用户,测试创建文件是否受限

su zhangsan

cd /sdb1

touch 1.txt 2.txt...6.txt(是否有出错提示)

由上图可以看出,zhangsan用户创建文件的时候数目不再受限。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门