首页 > 系统相关 >linux quota命令使用——应用场景 针对不同的用户设置不同的磁盘访问大小

linux quota命令使用——应用场景 针对不同的用户设置不同的磁盘访问大小

时间:2023-06-01 10:33:57浏览次数:33  
标签:quota dev limit linux 磁盘 root grace localhost

quota

显示磁盘已使用的空间与限制

Linux quota命令 语法

quota [选项] [用户|组群]

命令中各选项的含义如表所示。

 

 

linux quota命令使用——应用场景 针对不同的用户设置不同的磁盘访问大小_群组

Linux quota命令 示例

显示用户zhangsan的磁盘使用情况和限制

[root@rhel ~]# su - zhangsan
//以用户zhangsan登录系统
[zhangsan@rhel ~]$ quota
Disk quotas for user zhangsan (uid 500):
  Filesystem blocks quota limit grace files quota limit grace
  /dev/sda5   0   0   0   5*   3   5 6days

显示用户zhangsan的磁盘使用情况和限制

[root@rhel ~]# quota zhangsan
Disk quotas for user zhangsan (uid 500):
  Filesystem blocks quota limit grace files quota limit grace
  /dev/sda5   0   0   0   5*   3   5 6days

显示组群sales的磁盘使用情况和限制

[root@rhel ~]# quota -g sales
Disk quotas for group sales (gid 502):
  Filesystem blocks quota limit grace files quota limit grace
  /dev/sda5     4    0     0     1   20     40

补充说明

quota命令 用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。

语法

quota(选项)(参数)

 

 

选项

-g:列出群组的磁盘空间限制;
-q:简明列表,只列出超过限制的部分;
-u:列出用户的磁盘空间限制;
-v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;
-V:显示版本信息。

 

 

参数

用户或者工作组:指定要显示的用户或者工作组。

实例

我们可以限制某一群组所能使用的最大磁盘配额,而且可以再限制某一使用者的最大磁盘配额 ,好比做一个收费的应用,vip可以得到空间更大一些。另外,以 Link 的方式,来使邮件可以作为限制的配额(更改/var/spool/mail 这个路径),不2,需要重新再规划一个硬盘!直接使用 Link 的方式指向 /home (或者其它已经做好的 quota 磁盘)就可以!这通常是用在原本规划不好,但是却又不想要更动原有主机架构的情况中!

要求:Linux 主机里面主要针对 quser1 及 quser2 两个使用者来进行磁盘配额, 且这两个使用者都是挂在 qgroup 组里面的。每个使用者总共有 50MB 的磁盘空间 (不考虑 inode) 限制!并且 soft limit 为 45 MB;而宽限时间设定为 1 天, 但是在一天之内必须要将多余的文件删除掉,否则将无法使用剩下的空间 ;gquota 这个组考虑最大限额,所以设定为 90 MB!(注意,这样设置的好处是富有弹性,好比现在的邮件服务,那么多用户,承诺给用户每人最大空间为数GB,然而人们不可能每人都会使用那么大的空间,所以邮件服务的总空间,实际上肯定不是注册客户数乘以数GB,否则这样得多大啊。)

[root@localhost ~]# groupadd qgroup
[root@localhost ~]# useradd -m -g qgroup quser1
[root@localhost ~]# useradd -m -g qgroup quser2
[root@localhost ~]# passwd quser1
[root@localhost ~]# passwd quser2
[root@localhost ~]# df     ===>  自己找一个合适的分区来做实验,这里用/disk2
Filesystem             1K-blocks        Used      Available   Use% Mounted on
/dev/hda1              5952252   3193292     2451720     57%     /
/dev/hdb1            28267608       77904   26730604       1%     /disk2
/dev/hda5              9492644     227252     8775412       3%     /disk1

[root@localhost ~]# vi /etc/fstab
LABEL=/             /                ext3      defaults                                     1 1
LABEL=/disk1    /disk1        ext3      defaults                                      1 2
LABEL=/disk2    /disk2        ext3      defaults,usrquota,grpquota       1 2  
/dev/hda3         swap         swap     defaults                                     0 0

 

 

注意多了usrquota,grpquota,在defaults,usrquota,grpquota之间都没有空格,务必正确书写。这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取/etc/mtab这个文件的,而该文件需要重新开机之后才能够以/etc/fstab 的新数据进行改写!所以这个时候可以选择:重新开机 (reboot)。

重新remount filesystem来驱动设定值。

[root@localhost ~]# umount /dev/hdb1
[root@localhost ~]# mount -a
[root@localhost ~]# grep '/disk2' /etc/mtab
/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0

 

 

事实上,也可以利用 mount 的 remount 功能。

[root@localhost ~]# mount -o remount /disk2

 

 

这样就已经成功的将 filesystem 的 quota 功能加入。

扫瞄磁盘的使用者使用状况,并产生重要的 aquota.group 与 aquota.user:

[root@localhost ~]# quotacheck -avug
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files

[root@localhost ~]# ll /disk2
-rw-------  1 root root  6144 Sep  6 11:44 aquota.group
-rw-------  1 root root  6144 Sep  6 11:44 aquota.user

 

 

使用 quotacheck 就可以轻易的将所需要的数据给他输出了!但奇怪的是,在某些 Linux 版本中,不能够以 aquota.user(group) 来启动quota ,可能是因为旧版 quota 的关系, 所以就另外做了一个 link 文件按来欺骗 quota,这个动作非必要。(主要是学习这个思维很重要)

[root@localhost ~]# cd /disk2
[root@localhost ~]# ln -s aquota.user quota.user
[root@localhost ~]# ln -s aquota.group quota.group

 

 

启动 quota 的限额:

[root@localhost ~]# quotaon -avug
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on    ===>  看到turned on,才是真的成功!

 

 

编辑使用者的可使用空间:

[root@localhost ~]# edquota -u quser1
Disk quotas for user quser1 (uid 502):
  Filesystem    blocks    soft    hard   inodes   soft   hard
  /dev/hdb1           0     45000    50000         0      0      0
[root@localhost ~]# edquota -p quser1 quser2      ===>  直接复制给quser2

 

 

接下来要来设定宽限时间,还是使用 edquota

[root@localhost ~]# edquota -t
Grace period before enforcing soft limits for users:
time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/hdb1                     1days                  7days

 

 

使用quota -v来查询:

[root@localhost ~]# quota -vu quser1 quser2
Disk quotas for user quser1 (uid 502):
     Filesystem  blocks   quota      limit   grace   files   quota   limit   grace
      /dev/hdb1         0    45000    50000                   0       0       0
Disk quotas for user quser2 (uid 503):
     Filesystem  blocks   quota      limit   grace   files   quota   limit   grace
      /dev/hdb1         0    45000    50000                   0       0       0

 

 

注意,由于使用者尚未超过45 MB,所以 grace ( 宽限时间 ) 就不会出现。

编辑群组可使用的空间:

[root@localhost ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
  Filesystem     blocks       soft       hard    inodes   soft   hard
  /dev/hdb1            0      80000   90000           0      0      0

[root@localhost ~]# quota -vg qgroup
Disk quotas for group qgroup (gid 502):
     Filesystem   blocks    quota      limit      grace    files   quota   limit   grace
      /dev/hdb1         0     80000   90000                       0        0        0

标签:quota,dev,limit,linux,磁盘,root,grace,localhost
From: https://blog.51cto.com/u_11908275/6392719

相关文章

  • Linux 内核时钟架构之时钟事件设备与tick_device
    每个CPU定义了一个tick_device,其用于对本cpu使用的时钟事件设备跟踪。也就是说,tick_device是有的,但是这里面有没有clock_event_device我们并不清楚,但是内核在启动时候,如果注册clock_event_device设备,那么内核尝试用时钟事件设备与tick_device设备绑定。这样,两则就关联起来了。......
  • Linux 内核时钟架构之时钟事件设备注册
    voidclockevents_register_device(structclock_event_device*dev);voidclockevents_config_and_register(structclock_event_device*dev,u32freq,unsignedlongmin_delta,unsignedlongmax_delta);相关的一个是配置函数voidclocke......
  • Linux 内核时钟之timer初始化
    init_timersvoid__initinit_timers(void){init_timer_cpus();init_timer_stats();open_softirq(TIMER_SOFTIRQ,run_timer_softirq);}staticvoid__initinit_timer_cpu(intcpu){structtimer_base*base;inti;for(i=0;i<NR_BASES;i+......
  • Linux 添加redis守护进程
    1、编写启动服务文件 /lib/systemd/system/redis.service[Unit]Description=Theredis-serverProcessManagerDocumentation=https://redis.io/After=network.target[Service]Type=forking#根据自己的redis路径启动和停止ExecStart=/usr/local/redis/bin/redis-server/usr/l......
  • 走进Linux编程的大门
    随着Linux的不断普及,使用Linux的人也越来越多了。然而在Linux中如何进行程序设计,用什么样的开发工具好呢?本文就以我初学Linux编程的一点心得体会,和大家共同探讨。在Linux中进行程序设计,可以使用各种编程语言和开发工具,以下是一些常用的方法:1、C/C++编程C/C++是Linux系统中......
  • Linux系统下C语言的编程技巧
    Linux系统能够为人们提供更加安全实用的效果,保证计算机系统能够稳定的运行。利用Linux系统下首先要进行C语言的编程,掌握编程的技巧能够更好的发挥计算机的作用。如何掌握Linux系统下计算机C语言的编程技巧是计算机发展的关键要素。本文对Linux系统下计算机C语言的编程技巧进行相......
  • 一分钟学一个 Linux 命令 - pwd
    前言大家好,我是god23bin。欢迎大家继续围观《一分钟学一个Linux命令》,每天只需一分钟,记住一个Linux命令不成问题。本篇文章将聚焦于pwd命令,一个超级简单又常用的命令。在接下来的内容中,我将快速介绍pwd命令的使用方法,希望能够帮助大家更好地理解和应用。什么是pwd命......
  • linux crypt()函数使用总结
    linuxcrypt()函数使用总结 原型:char*crypt(constchar*key,constchar*salt);标准说明:crypt()算法会接受一个最长可达8字符的密钥(即key),并施以数据加密算法(DES)的一种变体。salt参数指向一个两个字符的字符串,用来改变DES算法。该函数返回一个指针,指向长度13个字符......
  • parted命令磁盘分区
    最近新增了一块硬盘3T的,挂入系统fdisk/dev/sdb然后按照很多年以前略微记忆,n新增,p主分区,然后default开头和结尾,然后s保存后退出,使用mkfs.xfs/dev/sdb1 最后使用ls-l/dev/disk/by-uuid/  找到对应uuid然后使用vim在/etc/fstab中添加如下配置UUID=8b2a11114-d30c-4b3f-a534......
  • linux - passwd结构体
     #include<stdio.h>#include<pwd.h>#include<unistd.h>#include<sys/types.h>intmain(){structpasswd*tmp=NULL;tmp=getpwuid(geteuid());printf("username:%s\n",tmp->pw_name);printf("userp......