担心用户将磁盘空间耗光?一文带你搞懂Linux磁盘配额(quota),告别硬盘焦虑

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Linux的起源与发展

2、什么是磁盘配额

二、Linux磁盘配额概述 

1、支持磁盘配额的文件系统 

2、磁盘配额的类型(用户配额、组配额) 

3、Linux磁盘配额的实现过程

三、磁盘配额实践 

1、准备实验环境

2、配额工具 xfs_quota 介绍 

3、查看磁盘配额

4、设置磁盘配额 


一、前言

1、Linux的起源与发展


1991年,芬兰赫尔辛基大学的学生林纳斯·托瓦兹(Linus Torvalds)开始编写一个新的操作系统内核,这个内核最初被称为“Freax”。他的初衷只是想学习操作系统内核的开发,并为自己的个人计算机编写一个操作系统。然而,当他将这个内核发布在Internet上并开放源代码后,全球各地的程序员开始参与到这个项目中来,共同完善这个内核。最终,这个内核被命名为Linux,这个名字是由Linus Torvalds的名字和Unix操作系统的名字组合而成的。

Linux从一开始就坚持源代码的公开和免费使用,任何人都可以对其进行修改和分发。这种开放性和自由性吸引了大量的开发者和用户,使得Linux逐渐成长并成熟起来。如今,Linux已经发展成为一个性能稳定、功能强大的多用户网络操作系统,支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。同时,Linux也有上百种不同的发行版,如基于社区开发的Debian、ArchLinux,以及基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。

2、什么是磁盘配额

在 Linux 中,磁盘配额(Disk Quota)是一种机制,用于限制用户或组在文件系统中使用的磁盘空间的总量。它允许系统管理员为每个用户或组设置磁盘空间配额,以控制其对磁盘资源的使用。

磁盘配额通常用于以下目的:

  1. 资源管理:磁盘配额可以帮助系统管理员管理磁盘资源,确保不同用户或组之间的公平使用。
  2. 防止滥用:通过限制用户或组可以使用的磁盘空间,可以防止用户滥用磁盘资源,导致磁盘空间被耗尽,影响系统的正常运行。
  3. 提高安全性:通过限制用户或组的磁盘使用量,可以减少因为磁盘空间被耗尽而导致的系统服务中断或拒绝服务攻击。

系统管理员可以使用磁盘配额来对用户或组进行限制,并监控其磁盘使用情况。当用户或组的磁盘使用量接近或超过配额限制时,系统会发出警告或限制用户继续写入文件,以避免超出配额限制。

二、Linux磁盘配额概述 

1、支持磁盘配额的文件系统 

  1. XFS文件系统:XFS是一个高性能的日志文件系统,被广泛用于企业级存储解决方案。XFS文件系统原生支持磁盘配额,包括用户配额、组配额和目录级别的配额(Project Quota)。
  2. EXT4文件系统:EXT4是EXT3文件系统的后继者,并增加了许多新的特性和改进。虽然EXT4本身并不直接支持磁盘配额,但可以通过Linux内核的quota模块和额外的工具(如quota)来支持用户和组配额。

为了使用磁盘配额,需要确保文件系统已经启用了配额支持。

对于XFS文件系统,通常是在文件系统创建或挂载时自动启用的。

对于EXT4文件系统,需要在挂载时添加usrquota和grpquota选项来启用用户和组配额支持。

  

2、磁盘配额的类型(用户配额、组配额) 

1. 用户配额(User Quota):

  • 用户配额是针对单个用户的磁盘空间使用限制。系统管理员可以为每个用户单独设置磁盘容量的软限制和硬限制,以及文件数量的软限制和硬限制。
  • 当用户的磁盘使用量或文件数量超过软限制但未达到硬限制时,系统通常会发出警告(如记录日志或发送通知),但并不会阻止用户的进一步操作。然而,一旦用户的磁盘使用量或文件数量达到或超过硬限制,系统将禁止用户进行任何可能导致超出限制的操作。

2. 组配额(Group Quota):

  • 组配额是针对一组用户的磁盘空间使用限制。当用户数量较多时,单独为用户设置配额可能会变得繁琐。此时,可以将用户组织到用户组中,并为整个用户组设置配额限制。
  • 组中的用户将共享该组的配额空间。这意味着,如果给某个用户组分配了200MB的磁盘空间,那么该组中的所有用户将共同使用这200MB的空间。一旦整个组的磁盘使用量达到或超过其配额限制,组中的任何用户都将无法进行任何可能导致超出限制的操作。

   

3、Linux磁盘配额的实现过程

1. 配额类型和限制:

  • 磁盘容量(块配额):限制用户或组可以使用的磁盘块(通常是512字节或4KB的块)的数量。
  • 文件数量(inode配额):限制用户或组可以拥有的文件(包括目录)的数量。

2. 设置配额:

  • 系统管理员使用特定的命令(如xfs_quota、edquota等)为用户或组设置配额限制。这些命令允许管理员设置软限制(用户可以超过但会收到警告)和硬限制(用户不能超过,否则操作将失败)。

3. 文件系统的支持:

  • 并非所有Linux文件系统都支持配额。常见的支持配额的文件系统有XFS、ext4(需要额外的内核支持和工具)等。
  • 当文件系统被挂载时,需要指定支持配额的选项(如usrquota、grpquota),以便系统能够跟踪用户和组的磁盘使用情况。

4. 配额的检查:

  • 当用户尝试写入文件或创建新文件时,系统会检查该用户的配额。
  • 如果用户的磁盘使用量或文件数量超过了软限制但尚未达到硬限制,系统通常会记录警告信息(如写入日志)但不会阻止操作。
  • 如果用户的磁盘使用量或文件数量超过了硬限制,系统将阻止进一步的写入操作,并可能向用户显示错误消息。

5. 配额报告和监控:

  • 系统管理员可以使用各种命令和工具来报告和监控用户和组的配额使用情况。这些工具允许管理员查看哪些用户或组接近或超过其配额限制,并采取适当的措施。

6. 配额的灵活性:

  • 配额设置可以在运行时更改,无需重新启动系统或卸载文件系统。
  • 管理员可以为用户或组设置不同的配额限制,以满足不同的需求。

三、磁盘配额实践 

1、准备实验环境

创建测试账户与测试组

[root@nfs ~]# vim addAccount.sh.
#输入以下内容
#!/bin/bash
groupadd mytest

for username in test1 test2 test3 test4 test5
do
    useradd -g mytest $username
    echo "password" | password --stdin $username
done

mkdir /home/test
chgrp mytest /home/test
chmod 2770 /home/test

   

执行脚本

[root@nfs ~]# chmod +x addAccount.sh 
[root@nfs ~]# ./addAccount.sh

开启磁盘配额

[root@nfs ~]# vim /etc/fstab

添加  usrquota,grpquota 两个字段,注意,千万不要填错

  

使配置生效

[root@nfs ~]# umount /home
[root@nfs ~]# mount -a
[root@nfs ~]# mount | grep home

   

2、配额工具 xfs_quota 介绍 

xfs_quota是XFS文件系统中用于管理磁盘配额的工具。XFS是Linux下的一个高性能日志文件系统,它原生支持磁盘配额功能,允许系统管理员限制用户或组在文件系统中的磁盘空间使用。

xfs_quota命令提供了对XFS文件系统配额的详细管理和控制。管理员可以使用xfs_quota来设置、查看和修改用户或组的磁盘配额限制。

主要特点和使用方式:

  • 设置配额:管理员可以为特定的用户或组设置磁盘容量的软限制和硬限制,以及文件数量的软限制和硬限制。软限制允许用户在一段时间内超过限制,但系统会发出警告;而硬限制则是用户绝对不能超过的限制。
  • 查看配额:管理员可以使用xfs_quota命令来查看特定用户或组的当前磁盘使用情况,以及他们的配额限制。
  • 修改配额:如果需要,管理员可以随时修改用户或组的配额限制。
  • 配额的类型:配额限制可以包括磁盘容量(即用户或组可以使用的磁盘空间大小)和文件数量(即用户或组可以拥有的文件数量)。
  • 软限制和硬限制:如上所述,软限制允许用户在一定时间内超过其配额限制,但会收到警告;而硬限制则是用户绝对不能超过的限制。

   

3、查看磁盘配额

[root@nfs ~]# xfs_quota -x -c "report -ubin" /home

  • User ID:用户的唯一标识符。
  • Used:用户当前已使用的磁盘空间量(以块为单位)。
  • Soft:用户的软配额限制,即警告限制。当用户磁盘使用量达到软限制时,系统会发出警告。
  • Hard:用户的硬配额限制。当用户磁盘使用量达到硬限制时,系统将不允许用户再向文件系统中写入数据。
  • Warn/Grace:警告和宽限期。警告指示用户接近配额限制,而宽限期是一个时间段,用于在用户达到硬限制之前提供缓冲时间。 

4、设置磁盘配额 

例1:要为用户test1设置磁盘容量的软限制为2GB和硬限制为3GB

[root@nfs home]# xfs_quota -x -c "limit -u bsoft=2G bhard=3G test1" /home

这个命令的含义是设置用户 ID 为 1000 的用户在 /home 目录下的磁盘配额限制:

  • bsoft=2G:设置用户的软配额限制为 2GB,即警告限制。当用户磁盘使用量达到软限制时,系统会发出警告。
  • bhard=3G:设置用户的硬配额限制为 3GB。当用户磁盘使用量达到硬限制时,系统将不允许用户再向文件系统中写入数据。
  • 1000:表示要设置配额的用户 ID。
  • /home:表示要设置配额的目录路径。

 查看设置结果

[root@nfs home]# xfs_quota -x -c "report -ubin" /home

  

验证结果

切换用户到 test1

[root@nfs home]# su test1

 使用DD命令创建3.5G文件

[test1@nfs ~]$ dd if=/dev/zero of=test.img bs=50M count=70

  

例2:为test2用户设置文件数量的软限制和硬限制 

[root@nfs home]# xfs_quota -x -c "limit isoft=100 ihard=200 test2" /home

这个命令的含义是设置 /home 目录下名为 test2 的用户组的索引节点(Inode)配额限制:

  • isoft=100:设置索引节点的软配额限制为 100 个。当用户组的索引节点使用量达到软限制时,系统会发出警告。
  • ihard=200:设置索引节点的硬配额限制为 200 个。当用户组的索引节点使用量达到硬限制时,系统将不允许用户组再创建新的文件。

查看设置结果

[root@nfs home]# xfs_quota -x -c "report -ubin" /home

   

验证结果:

切换到test2用户

[root@nfs home]# su test2
[test2@nfs home]$ cd

编写一个脚本,创建201个文件

[test2@nfs ~]$ vim createFile.sh
#!/bin/bash

# 定义目录路径
dir="/home/test2"

# 循环创建文件
for ((i=1; i<=201; i++)); do
    touch "$dir/file$i.txt"
    echo "file $i create success"
done

执行脚本

[test2@nfs ~]$ chmod +x createFile.sh 
[test2@nfs ~]$ ./createFile.sh

  

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux 系统中,可以使用磁盘配额(disk quota)来限制每个用户或每个组在文件系统上所占用的磁盘空间磁盘配额可以用来控制用户磁盘空间的使用,并防止某个用户或组占用过多的磁盘空间,保证系统的稳定性和公平性。 要启用磁盘配额,首先需要确保相关的内核模块已经加载。然后,可以按照以下步骤进行磁盘配额的设置: 1.创建一个文件系统并启用磁盘配额支持: ``` $ sudo mkfs.ext4 -O quota /dev/sdX ``` 注意替换 `/dev/sdX` 为实际的分区设备。 2.挂载文件系统,并在 `/etc/fstab` 文件中添加相应的挂载选项。例如: ``` /dev/sdX /mnt/data ext4 defaults,usrquota,grpquota 0 0 ``` 确保在挂载选项中添加了 `usrquota` 和 `grpquota`。 3.重新加载 `/etc/fstab` 文件以使挂载选项生效: ``` $ sudo mount -o remount /mnt/data ``` 4.创建磁盘配额数据库文件: ``` $ sudo quotacheck -cug /mnt/data ``` 5.启用磁盘配额: ``` $ sudo quotaon /mnt/data ``` 6.设置用户或组的磁盘配额限制。例如,要设置用户磁盘配额限制为 1GB: ``` $ sudo edquota -u username ``` 在编辑器中,可以设置 `blocks` 或 `soft` 和 `hard` 限制。 以上步骤中的命令可能会因 Linux 发行版和文件系统类型的不同而有所变化,请根据实际情况进行适当调整。此外,还可以使用 `repquota` 命令查看磁盘配额的使用情况。 希望这些信息对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明跟你说过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值