quota - linux磁盘配额管理

磁盘管理系列

linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html

linux磁盘管理系列二:软RAID的实现  http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_041_raid.html

linux磁盘管理系列三:LVM的使用        http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_042_lvm.html

1 前言

在linux系统中,由于是多用户、多任务的环境,如果有少数几个用户大量使用磁盘空间,导致其他用户的正常使用,因此需要对各个用户的磁盘空间进行管理和限定。

2 quota的用途

限制某一个用户的最大磁盘配额

3 quota的使用限制

  • 仅能针对整个文件系统
  • 内核必须支持
  • 只对一般用户生效
  • 这里提供一个样例,针对样例对quota的配置管理做个描述

4 案例讲解

4.1案例描述

  • 创建5个用户user1,user2,user3,user4,user5,密码和用户名相同,初始组为usergrp组。
  • 5个用户都可以取得300M的磁盘使用空间,文件数量不限。超过250M,给于提示。
  • usergrp这个组内成员最大使用空间1GB。
  • 如果有用户超过soft限制,给14天的宽限时间。

4.2 准备磁盘

[[email protected] ~]# fdisk -l      #查看磁盘情况

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bd275

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/cl-root: 39.7 GB, 39720058880 bytes, 77578240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/cl-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[[email protected] ~]# fdisk /dev/sdb     #对sdb这个盘进行分区,这里就分一个区
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbcd17d69.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xbcd17d69

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621184 blocks
131059 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[[email protected] ~]# mkdir /mnt/home          #创建一个目录
[[email protected] ~]# mount /dev/sdb1 /mnt/home   #测试挂载下

4.4.创建用户

[[email protected] ~]# vim adduserbat.sh  #创建一个添加用户的脚本
[[email protected] ~]# cat adduserbat.sh  #确认下脚本
#!/bin/bash

groupadd usergrp
for user in user1 user2 user3 user4 user5
do
    useradd -g usergrp -b /mnt/home $user
    echo $user |passwd --stdin $user
done
[[email protected] ~]# sh adduserbat.sh    #运行脚本去创建用户
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user user1.
passwd: all authentication tokens updated successfully.
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user user2.
passwd: all authentication tokens updated successfully.
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user user3.
passwd: all authentication tokens updated successfully.
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user user4.
passwd: all authentication tokens updated successfully.
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
Changing password for user user5.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# finger user1             #查看用户信息,确保家目录在/dev/sdb1的挂载目录上。
Login: user1                      Name:
Directory: /mnt/home/user1              Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[[email protected] ~]# id user1              #查看用户信息
uid=2531(user1) gid=2532(usergrp) groups=2532(usergrp)

4.5.检查操作系统支持

前面提到了quota仅仅针对整个文件系统来进行规划的。需要确认我们为各个用户提供存储的位置是独立的文件系统。

[[email protected] ~]# df -h /mnt/home      #查看我们的挂载点是否是独立文件系统
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       9.8G   37M  9.2G   1% /mnt/home
[[email protected] ~]# mount |grep /mnt/home     #查看我们的文件系统
/dev/sdb1 on /mnt/home type ext4 (rw,relatime,data=ordered)

4.6.让文件系统支持quota设置

[[email protected] ~]# mount -o remount,usrquota,grpquota /mnt/home   #重新挂载/mnt/home 支持usrquota,grpquota
[[email protected] ~]# mount |grep /mnt/home                           #确认下
/dev/sdb1 on /mnt/home type ext4 (rw,relatime,quota,usrquota,grpquota,data=ordered)
[[email protected] ~]# tail -n 1 /etc/mtab >> /etc/fstab         #追加到/etc/fstab中去,确保开机启用quota
[[email protected] ~]# cat /etc/fstab                            #确保fstab文件正确性

#
# /etc/fstab
# Created by anaconda on Fri Feb 10 03:56:55 2017
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=dd4c6743-bdf5-4899-a43b-814cbe75c618 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
/dev/sr0 /mnt/cdrom iso9660 ro,relatime,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500 0 0
/dev/sdb1 /mnt/home ext4 rw,relatime,quota,usrquota,grpquota,data=ordered 0 0

4.7.扫描文件系统并新建quota的配置文件

[[email protected] ~]# quotacheck -avug
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
quotacheck: Scanning /dev/sdb1 [/mnt/home] done
quotacheck: Cannot stat old user quota file /mnt/home/aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /mnt/home/aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file /mnt/home/aquota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file /mnt/home/aquota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 30 directories and 20 files
quotacheck: Old file not found.
quotacheck: Old file not found.

主要参数

  • -a:  扫描所有在/etc/mtab内含有quota参数的文件系统
  • -u:  针对用户扫描文件与目录的使用情况,会新建一个aquota.user文件
  • -g:  针对用户组扫描文件与目录的使用情况,会新增一个aquota.group文件
  • -v:  显示扫描过程的信息

4.8 启用quota

[[email protected] ~]# quotaon  -avug    #启用quota
/dev/sdb1 [/mnt/home]: group quotas turned on
/dev/sdb1 [/mnt/home]: user quotas turned on

这个命令(quotaon) 几乎只需要在第一次启动quota时才需要进行,因为下次等你重新启动时,系统的/etc/rc.d/rc.sysinit这个初始化脚本就会自动执行这个命令。

如果想关闭可以使用quotaoff -avug

4.9.编辑账户的的限值

[[email protected] ~]# edquota -u user1

会打开一个vi编辑器,修改我们的设置如下图。

  • 软限制: 这个值超过了基本上没事,还是可以创建文件继续使用文件,但是在指定grace天过后就不能在创建文件了。
  • 硬限值: 这个值不能超过。

执行如下命令将user1的设置应用到其他用户上

[[email protected] ~]# edquota -p user1 -u user2    #-p 指定参考用户,这句话的意思就是将user1的quota信息赋值给user2
[[email protected] ~]# edquota -p user1 -u user3
[[email protected] ~]# edquota -p user1 -u user4
[[email protected] ~]# edquota -p user1 -u user5

4.10.编辑组的设置

[[email protected] ~]# edquota -g usergrp

4.11.修改宽限时间

[[email protected] ~]# edquota -t

4.12.对用户和组合quota限制查看

[[email protected] ~]# quota -uvs user1       #查看user1的限制信息
Disk quotas for user user1 (uid 2531):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1     28K    245M    293M               7       0       0
[[email protected] ~]# quota -gvs usergrp
Disk quotas for group usergrp (gid 2532): #查看usergrp的限制信息
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1      0K    879M    977M               0       0       0        

参数说明

  • -u:  指定用户
  • -g:  指定用户组
  • -s:  以1024为倍数来指定单位,显示M之类的单位
  • -v:  显示用户在文件系统的quota值

4.13对文件系统quota限制查看

[[email protected] ~]# repquota -as
*** Report for user quotas on device /dev/sdb1                   #这里看到是针对/dev/sdb1的文件系统的
Block grace time: 14days; Inode grace time: 7days
                        Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --     20K      0K      0K              2     0     0
zhao      --     52K      0K      0K             13     0     0
user1     --     28K    245M    293M              7     0     0
user2     --     28K    245M    293M              7     0     0
user3     --     28K    245M    293M              7     0     0
user4     --     28K    245M    293M              7     0     0
user5     --     28K    245M    293M              7     0     0       

4.14.quota测试

[[email protected] ~]$ dd if=/dev/zero of=bigfile bs=1M count=270  #先创建一个270M的文件看看
sdb1: warning, user block quota exceeded.                   #这里提示警告了。 也就是我们超过了软限制的值250了。
270+0 records in
270+0 records out
283115520 bytes (283 MB) copied, 0.715086 s, 396 MB/s
[[email protected]ail ~]$ dd if=/dev/zero of=bigfile2 bs=1M count=40  #这里我们创建一个40M的文件
sdb1: write failed, user block limit reached.               #提示错误了。超出限制了。
dd: error writing ‘bigfile2’: Disk quota exceeded
23+0 records in
22+0 records out
24035328 bytes (24 MB) copied, 0.1165 s, 206 MB/s
[[email protected] ~]$ du -sk                                      #查看两个文件占用情况
300000    .

4.12脚本设置quota信息

上面我们对用户和组的设置,它会启动一个vi编辑器,修改保存才生效。需要交互。如果我们想使用script方式快速设置,那就需要使用setquota命令了。

命令使用  setquota  [  -u  | -g ] 用户名或者组名 块大小软限制 块大小硬限制  文件数量软限制 文件数量大小硬限制 文件系统

[[email protected] ~]# quota -usv user1     #查看user1的quota信息
Disk quotas for user user1 (uid 2531):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1    293M*   245M    293M  13days      14       0       0
[[email protected] ~]# setquota -u user1 400000 500000 100 200 /dev/sdb1    #使用setquota修改
[[email protected] ~]# quota -usv user1                                     #再次查看quota信息
Disk quotas for user user1 (uid 2531):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1    293M    391M    489M              14     100     200        

原文地址:https://www.cnblogs.com/sddai/p/11111895.html

时间: 2024-10-10 07:55:52

quota - linux磁盘配额管理的相关文章

【Red Hat linux】quota软件磁盘配额管理

磁盘配额介绍 quota软件设置的磁盘配额功能,只在指定的文件系统(分区)有效,磁盘配额的限制对象为系统中指定的用户账号.组账号进行限制. 磁盘配额的限制类型分为: 磁盘容量:限制用户能够使用的磁盘数据块大小,也就是限制磁盘空间的大小,默认单位为KB. 文件数量:限制用户能够拥有的文件个数,在linux中每一个文件都有一个对应的数字标记,称为i节点            号,这个编号在同一个文件系统内是唯一的. 磁盘配额的限制方法: 软限制:指在固定期限内暂时允许这个用户超过这个限制,但是系统会

Linux磁盘配额管理

▲为什么要使用磁盘配额quota? ????在linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况.然而系统资源是有限的,因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源 ? 磁盘配额程序对硬盘配额的限制项目: soft:软限制,也称最低容量限制.在宽限时间之内,使用者的容量可以超过最低容量限制.但必须在宽限时间之内将磁盘容量降低到最低容量的限制之下 hard:硬限制,也称最高容量限制.是绝对不能超过的容量 soft到hard之间的容量就是宽限容量 宽

—linux 磁盘配额按用户管理(quota)

我根据下面的ref链接整理的基本是的按用户额度管理步骤 (按组的额度管理被简化掉) 我在Ubuntu服务器12.04下整理,其他版本的Ubuntu和Linux应该都没有问题的 (有任何错误都指正给我,包括typo) <->准备: sudo apt-get install quota <二>按用户名配额步骤如下: 1. 设定有配额的分区:/etc/fstab: like: UUID=5ce4f28a-23ce-464a-86e0-7caa61503961 /mnt/sdb3    

Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令

功能说明:显示磁盘已使用的空间与限制. 语 法:quota [-quvV][用户名称...] 或 quota [-gqvV][群组名称...] 补充说明:执行quota指令,可查询磁盘空间的限制,并得知已使用多少空间. 参 数:  -g   列出群组的磁盘空间限制.  -q   简明列表,只列出超过限制的部分.  -u   列出用户的磁盘空间限制.  -v   显示该用户或群组,在所有挂入系统的存储设备的空间限制.  -V   显示版本信息. 在网络管理的工作中,由于硬盘的资源是有限的,常常需要

Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk

fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 console 上输入 fdisk /dev/sda,可进入分割硬盘模式. 1. 输入 m 显示所有命令列示. 2. 输入 p 显示硬盘分割情形. 3. 输入 a 设定硬盘启动区. 4. 输入 n 设定新的硬盘分割区. 4.1. 输入 e 硬盘为[延伸]分割区(extend). 4.2. 输入 p

Linux磁盘系统——管理磁盘的命令

Linux磁盘系统——管理磁盘的命令 摘要:本文主要学习了Linux系统中管理磁盘的命令,包括查看磁盘使用情况.磁盘挂载相关.磁盘分区相关.磁盘格式化等操作. df命令 df命令用于显示Linux系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量.已使用的容量.剩余容量等. /dev/shm为内存挂载点,如果你想把文件放到内存里,就可以放到/dev/shm/目录下. 基本语法 1 [[email protected] ~]# df [选项] 目录或文件 选项说明 1 -a:显示所有

程序包管理rpm、quota、磁盘配额

下面介绍的是磁盘配额.quota及相关命令.rpm程序包管理器.rpm命令行工具的功能等. 一.磁盘配额 1.磁盘配额功能:磁盘配额可以用来构建文件服务器. 文件服务器功能:用来共享存储空间,让用户能够随时存储数据. 常见的文件服务器有FTP.SMB.网盘.网盘(极速上传) 磁盘配额主要是针对这类文件服务器进行用户的磁盘空间使用限制而提出的. 2.磁盘配额的设定对象 (1).能够实施读写操作的块设备: (2).要有正确的文件系统. 3.磁盘配额主要限制哪些人的访问行为 (1).用户 磁盘配额为指

linux磁盘配额quota学习笔记

1.Linux的磁盘配额quota的作用. quota的作用就是限制user和group在磁盘的使用限制,可以限制使用的空间大小block和建立的文件数量inode,一般用于限制block. 2.查看分区是否支持quota功能,如何建立quota. 查看分区是否开启quota,查看/etc/fstab文件,在文件选项增加usrquota和grpquota参数. 然后使用mount -a命令重新挂载fstab的设备. 3.建立quota记录文件. 建立quota记录文件:quotacheck -a

linux中磁盘配额管理

一,磁盘管理的概念: Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限.因此,系统管理员应该适当的开放磁盘的权限给用户,以妥善分配系统资源. 二,什么是磁盘配额: 磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间. 三,磁盘配额的步骤: 1,首先创建要磁盘配额的用户(add) 2,首先编辑/etc/fstab文件 使用vi编辑器对