Linux限制磁盘与内存配额【超详细】

简介: Linux限制磁盘与内存配额方法

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!

Linux内存主要用来存储系统和应用程序的指令,数据,缓存等。磁盘是主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。在一个linux操作系统中,内存和磁盘并不是无限制的,经常会遇到磁盘或者硬盘不足,影响了服务器功能。所以大家会尝试添加各种报警、监控等用于及时的了解到服务器的状况。
那么有没有办法,可以限制磁盘和硬盘的使用量呢?
答案是有的。

Linux限制磁盘用量的方式

什么是磁盘配额

磁盘配额即为quota,表示对用户和用户组使用磁盘空间和文件个数的限制,但是仅限定普通用户,对管理员无效。

磁盘配额的条件

内核必须支持磁盘配合,且安装quota管理工具。

查看内核是否支持磁盘配额,可以用grep命令

[root@test ~]# grep QUOTA /boot/config-3.10.0-1160.el7.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
CONFIG_QUOTACTL_COMPAT=y

当grep出来的结果有CONFIG_XFS_QUOTA=y,即代表当前内核支持磁盘配额

安装quota工具

检查是否安装rpm -qa|grep quota,有输出结果代表已经安装。
未安装的话使用yum命令yum -y install quota

repquota(report quota),检查磁盘空间限制的状态。
edquota,是编辑用户或群组的quota。

配额步骤

新建一个磁盘分区

[root@test ~]# fdisk  /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (1,2,默认 1):
起始 扇区 (104857600-209715199,默认为 104857600):
将使用默认值 104857600
Last 扇区, +扇区 or +size{
   
   K,M,G} (104857600-209715199,默认为 209715199):
将使用默认值 209715199
分区 1 已设置为 Linux 类型,大小设为 50 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)

新建/data目录并挂载

[root@test ~]# mkdir /data
[root@test ~]# mount /dev/vda1  /data/
[root@test ~]# df -h /data/
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       296G   17G  267G   6% /dat

新建临时用户,用于配置限额

[root@test ~]# useradd test
[root@test ~]# passwd test
Changing password for user test.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@test ~]# cat /etc/passwd|grep test
test:x:1000:1000::/home/test:/bin/bash

分区开启配额

临时开启

[root@test ~]# mount -o remount,usrquota,grpquota /data/

永久开启(需重启机器)

[root@test ~]# echo "/dev/vda1 /data ext4 defaultsusrquota,grpquota 0 0 " >> /etc/fstab

对磁盘配额

#创建容量和文件数限制        
[root@test ~]# xfs_quota -x -c 'limit -u bsoft=10M bhard=20M isoft=6 ihard=8 test'  /data
#仅创建磁盘容量限制
[root@test ~]# xfs_quota -x -c 'limit -u bsoft=10M bhard=20M' /data
#仅创建磁盘文件数限制
[root@test ~]# xfs_quota -x -c 'limit -u isoft=6 ihard=8 test' /data       ###bsoft和isoft是限制容量   isoft和ihard是限制文件数

-x:表示启动专家模式,再当前模式下以允许对配额系统进行修改的所有管理命令可用
-c:表示直接调用管理命令
-u:指定用户账号对象
-g:指定组账号对象在这里插入代码片
bsoft:设置磁盘容量的软件限制数值
bhard:设置磁盘容量的硬限制数值
isoft:设置磁盘文件数的软限制数值
ihard:设置磁盘文件数的硬限制数值

查看磁盘配额

 #查看test磁盘:容量限制
[root@test ~]# xfs_quota  -c  'quota  -uv test' /data
#查看test磁盘:文件数限制
[root@test ~]#     xfs_quota -c ’quota -uv test‘ /data
 #查看全部
[root@test ~]#   xfs_quota -x -c "report -aibh"

内存限制方法

编辑limits.conf配置文件

[root@test data]# vim /etc/security/limits.conf 

#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

例如限制每个用户的内存使用都不超过10G

* hard rss 10000000

image.png

限制test用户内存使用不超过10G

@test hard rss 10000000

image.png

(1) 加*号表示对所有用户起作用,加@test表示只对某个名叫test的用户起作用。
(2) hard说明是硬上限,你也可以改成soft,也即软上限。
(3) rss表示我们限制的是内存的使用量。
(4) 10000000(单位KB)表明我们限制的量大概是10GB。

退出终端重新登录查看结果

[root@test ~]# su test
[test@test root]$ ulimit  -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31200
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) 10000000
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

image.png

此时可以看到最大内存改成了我们设置的10000000KB,至此配置完成。

码字不易。如果文章对您有希望的话,请三连支持一波。
如有问题,欢迎留言,一起探讨,感谢。
也可关注早九晚十二微信公众号,看到留言后会第一时间回复。

相关文章
|
5月前
|
存储 监控 Linux
Linux: 检测磁盘坏块 你得会吧!
Linux: 检测磁盘坏块 你得会吧!
331 19
Linux: 检测磁盘坏块 你得会吧!
|
4月前
|
缓存 Linux 数据安全/隐私保护
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
950 23
|
4月前
|
Linux
在线对Linux进行磁盘扩容的技术指南。
综上所述,Linux磁盘扩容的过程,重要的不仅是技术,更是对每一步骤的深刻理解和投入的爱心。只要手握正确的工具,我们不仅能满足"孩子"的成长需求,还能享受其中的乐趣和成就。
279 10
|
5月前
|
监控 固态存储 Linux
如何判断Linux磁盘是SSD还是HDD?
总的来说,判断磁盘是SSD还是HDD并不复杂,只需要使用正确的命令和方法,就可以轻松得到结果。希望这些信息对你有所帮助,如果你还有其他问题,欢迎随时提问。
494 15
|
6月前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
219 27
|
7月前
|
消息中间件 Linux
Linux中的System V通信标准--共享内存、消息队列以及信号量
希望本文能帮助您更好地理解和应用System V IPC机制,构建高效的Linux应用程序。
255 48
|
6月前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
554 10
|
7月前
|
缓存 NoSQL Linux
Linux系统内存使用优化技巧
交换空间(Swap)的优化 禁用 Swap sudo swapoff -a 作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。 使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。
270 3
|
7月前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
509 2
|
7月前
|
存储 固态存储
磁盘和内存的区别
存储特性: • 磁盘:非易失性存储,数据在断电后不会丢失,适合长期存储数据。 • 内存:易失性存储,数据在断电后会丢失,适合临时存储当前运行的程序和数据。 容量: • 磁盘:容量通常较大,从几百GB到数TB不等,适合存储大量的文件和数据。 • 内存:容量相对较小,一般在几GB到几十GB之间,用于提供快速的临时存储空间。 速度: • 磁盘:读写速度较慢,HDD一般在几十MB/s,SSD可以达到几百MB/s甚至数GB/s。 • 内存:读写速度非常快,通常在几十纳秒到几百纳秒之间,能够快速响应CPU的指令。
335 2