Linux磁盘配额

2024-03-17 00:20
文章标签 linux 磁盘 配额

本文主要是介绍Linux磁盘配额,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

磁盘配额

概述

Linux系统作为一个多用户的操作系统,在生产环境中,会发生多个用户共同使用一个磁盘的情况,会造成Linux根分区的磁盘空间耗尽,导致Linux系统无法建立新的文件,从而出现服务程序崩溃、系统无法启动等故障现象。
为了避免这种情况,解决方法就是 ,对用户在指定文件系统中使用磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持系统存储空间可以稳定使用。
如果要针对某个目录进行配额限制的话,XFS文件系统支持 Project Quota 功能,通过该特性,可以支持目录级别的配额限制。本文将对ext4和xfs这两种linux文件系统进行磁盘配额的详细配置

实现条件

  • 磁盘配额要求Linux内核支持磁盘配额技术,centos7默认支持
  • 磁盘配额只对一般用户有效,对管理员(root)来说是没有任何作用限制的
  • 安装 xfsprogs 和 quota 软件包

EXT4和XFS的区别

ext4 文件系统xfs 文件系统
无法对单一目录可对单一目录
quota工具xfs_quota工具
quota默认不开启默认开启
需要创建配额配置文件不需要创建配额配置文件

Ext4 文件系统

Ext4 文件系统(扩展文件系统)是 Ext 文件系统家族的第四代,其起源可以追溯到 1987 年首次推出的 Minix 操作系统。Ext 文件系统是第一个支持 Linux 内核的文件系统。早在 1992 年。它在 2008 年与 Linux 2.6.28 一起出现。接替其前身 ext3。

Ext4 完美地管理了许多小文件并确保元数据被正确写入,即使写入缓存断电。

一目了然,它的主要特点包括:

  • 支持大文件大小 - Ext4 支持高达 16 TiB (Tebibytes) 的单个文件大小,而 XFS 支持高达 8 exbibytes 的最大文件大小。
  • 基于范围的延迟分配以加快文件分配。
  • 向后兼容性——使用 Ext4 文件系统的另一个好处是它向后兼容Ext3 和 Ext2系统。这提高了性能和灵活性,因为某些 Ext4 功能也可以在 Ext3 和 Ext2 文件系统中实现。此外,Ext3 和 Ext2 文件系统可以作为 Ext4 挂载。
  • 分配改进 - 存储块在写入磁盘之前由 Ext4 文件系统更有效地分配。这大大提高了读写性能。
  • 日志校验和 - Ext4 文件系统利用校验和选项将文件损坏的风险降至最低。校验和选项执行频繁的检查以探测块卷中的错误。这样做可以减少日志记录时间并降低性能。
  • 更快的文件系统检查 - 除了日志校验和,Ext4 产生更快的文件系统检查,例如,与早期版本(如 Ext3 和 Ext2)相比,fsck 命令将运行得更快并在更短的时间内给出结果。
  • 改进的时间戳——Ext4 实现了以纳秒为单位测量的时间戳,这是对基于秒的时间戳的粒度的改进,后者被认为是不够的。此外,时间戳还增加了 408 年,以解决 2038 年的上限。
  • 无限数量的子目录——Ext4 文件系统不限制可以在单个目录中创建的子目录的数量,除了目录大小本身。在 Ext3 中,一个目录最多只能有 32,000 个子目录。Ext4 引入了 HTreeindices 功能以增加可以存储在目录中的条目。
  • 透明加密 - 早在 2015 年 6 月,Linux 内核 4.1 中的 Ext4 文件系统就实现了对透明加密的支持。

XFS 文件系统

XFS 文件系统最初由 Silicon Graphics 于 1993 年开发,它以稳定和高性能的 64 位日志文件系统而自豪。XFS 文件系统旨在支持高达 18 EB 的大型文件系统和超大文件。该文件系统专为具有大型磁盘阵列、大型 CPU 以及需要存储大型文件的系统而设计。

XFS 以提供高 I/O 线程的可扩展性以及在处理大文件方面的出色性能而广为人知。

XFS 文件系统是 RHEL、CentOS 和其他 RHEL 发行版(如 Oracle Linux、Rocky Linux 和 AlmaLinux)中的默认文件系统。

主要特点包括:

  • 支持更大的文件系统 - XfS 支持高达 1PiB 的文件系统大小,而 Ext4 支持高达 50TiB。支持的文件系统大小可能因 Linux 发行版版本而异。
  • 延迟分配 - 使用惰性评估技术进行文件分配。块分配仅在数据最终刷新到磁盘时发生,有助于减少碎片并提高性能。
  • 在线碎片整理和文件系统增长
  • 复杂的元数据预读算法
  • 元数据日志 - 元数据日志是一项功能,可在突然断电或系统崩溃的情况下保证文件系统的一致性。
  • 配额日志——这消除了在系统崩溃后进行冗长的配额一致性检查的需要。
  • 支持扩展属性——这使系统能够为每个文件关联几个额外的名称/值对。
  • 在线碎片整理和增长 - 您可以在挂载和活动时对文件系统进行碎片整理和扩大。
  • 存储可扩展性——XFS 文件系统在支持大型文件系统、大型目录和高达 EB 容量的海量文件方面发挥了惊人的作用。
  • 高效的磁盘空间管理——XFS 还通过 B-Tree 索引为高效的磁盘空间管理提供可扩展性。

实现步骤

1、关闭selinux
2、修改/etc/fstab,对所选文件系统激活配额选项
3、重新挂载设备
4、用quotacheck命令生成基本配额文件(xfs跳过)
5、启动磁盘配额功能(xfs跳过)
6、用quota或者xfs_quota对具体用户或者目录设置配额

磁盘配额设置

确认selinux已关闭
sestatus -v
在这里插入图片描述
如果是enable表示开启,需要修改selinux的配置文件,设置完需重启,如图:
在这里插入图片描述

mount -o usrquota,grpquota /dev/sdb3 /opt #临时带配额参数挂载

写进/etc/fstab配置文件,实现永久挂载

xfs_quota -x -c 'limit -u bsoft=50M bhard=60M isoft=6 ihard=8 jerry' /opt/
xfs_quota命令
-x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c:直接调用管理命令,如limit,report等
管理命令limit后相关:
-u:对用户限制
-g:对组限制
bsoft:磁盘容量软限制
bhard:磁盘容量硬限制
isoft:文件数量软限制
ihard:文件数量硬限制

给/opt授权

 chmod 777 /opt

验证磁盘配额

quota -u [username]
dd if=/dev/zero of=/opt/123.txt bs=10M count=12

在这里插入图片描述
验证配额数量
取消磁盘配额

xfs_quota -x -c 'disable -up' /data

tip:

/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。

/dev/zero : 在类UNIX 操作系统中, /dev/zero 是一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。

其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。BSD就是通过mmap把/dev/zero映射到虚地址空间实现共享内存的。可以使用mmap将/dev/zero映射到一个虚拟的内存空间,这个操作的效果等同于使用一段匿名的内存(没有和任何文件相关)。

这篇关于Linux磁盘配额的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/817225

相关文章

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。