歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 磁盤配額:quota

磁盤配額:quota

日期:2017/2/28 13:48:36   编辑:Linux教程

quota作用: 限制用戶或組對磁盤空間的使用,例如文件服務器,郵件服務器...

•創建硬鏈接不受限制,無論是block還是inode
•對root用戶不起作用,但可以修改對root的配額設置
•針對文件系統,不針對目錄
•針對容量或者文件數量限制,block和inode

一、啟用磁盤限額

1. 讓文件系統支持配額 [ext3/4]

[root@node1 sdb]# vim /etc/fstab
/dev/sdb1 /mnt/sdb ext4 defaults,usrquota,grpquota 0 0
[root@node1 sdb]# mount
/dev/sdb1 on /mnt/sdb type ext4 (rw,usrquota,grpquota)

2. 創建磁盤配額的數據庫文件

注意: 建議停用SELinux

[root@nfs ~]# setenforce 0
setenforce: SELinux is disabled
[root@nfs ~]# vim /etc/selinux/config
SELINUX=disabled

如果不關閉會有類似下面的提示

[root@node1 sdb]# quotacheck -acug
quotacheck: Cannot create new quotafile /mnt/sdb/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /mnt/sdb/aquota.group.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied


[root@node1 sdb]# yum -y install quota //如果沒有這個功能的話安裝quota這個包
[root@node1 sdb]# quotacheck -acgu //生成quota文件數據庫
[root@node1 sdb]# ls //配額相關的數據庫文件
aquota.group aquota.user lost+found

選項:

-a 所有分區(已支持配額)

-c 創建

-u 用戶

-g 組

3.啟動磁盤配額

[root@node1 sdb]# quotaon -a //啟動所有分區的磁盤配額

二、日常管理

TIPS:數值0為不限制

方法一:edquota

[root@node1 sdb]# edquota -u alice //-u參數可以忽略
Disk quotas for user alice (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 16 8192 10240 4 0 8

blocks: 從磁盤的使用量限制,比如限制用戶使用10M,單位是k

inodes: 從創建文件數限制,比如只能建立100個文件

soft: 軟限制 block 8M

hard: 硬限制 block 10M

grace time: 寬限期,默認7天 # edquota -t

[root@node1 sdb]# su - alice
[alice@node1 sdb]$ pwd
/mnt/sdb
[alice@node1 sdb]$ dd if=/dev/zero of=file1 bs=1M count=9
sdb1: warning, user block quota exceeded.
9+0 records in
9+0 records out
9437184 bytes (9.4 MB) copied, 0.0221389 s, 426 MB/s

[alice@node1 sdb]$ dd if=/dev/zero of=file1 bs=1M count=20
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd: writing `file1': Disk quota exceeded
11+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0347449 s, 302 MB/s
[alice@node1 sdb]$ ll -h
-rw-rw-r--. 1 alice alice 10M Aug 11 12:10 file1

[alice@node1 sdb]$ quota //查看自己的配額情況
Disk quotas for user alice (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 10240* 8192 10240 6days 1 0 8

方法二: setquota

# setquota -u username block軟限制 block硬限制 inode軟限制 inode硬限制 分區
# setquota -u jack 80000 100000 15 20 /dev/sda2

方法三:復制

# edquota -p alice tom robin user1 user2 user3
# setquota -p alice jack /mnt/raid5/ //必需指定設備

將alice的配額方案復制給後面所有用戶

[root@nfs ~]# for i in {1..10}
do
useradd zhang$i
edquota -p alice zhang$i
done

+++查看配額+++

查看單個用戶的配額: # quota jack

查看所有用戶的配額: # repquota -a

# repquota -ag

普通用戶查看自己配額: $ quota

擴展知識:針對組設置配額

例1:限制hr組的成員能在/home/hr目錄中:100M 50文件

[root@node1 sdb]# groupadd hr
[root@node1 sdb]# useradd hr01 -G hr
[root@node1 sdb]# useradd hr02 -G hr
[root@node1 sdb]# mkdir /mnt/sdb/hrhome
[root@node1 sdb]# chgrp hr !$
chgrp hr /mnt/sdb/hrhome
[root@node1 sdb]# ll -d !$
ll -d /mnt/sdb/hrhome
drwxr-xr-x. 2 root hr 4096 Aug 11 12:18 /mnt/sdb/hrhome
[root@node1 sdb]# repquota -ag
*** Report for group quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 20 0 0 2 0 0
hr -- 4 0 102400 1 0 50


倒2.不改動既有系統的Quota實例

假如你忽然想將郵件信箱所在目錄 /var/spool/mail/ 給一個quota,但是已經沒有獨立的文件系統讓你規劃了,並且你想讓用戶的郵箱與主文件夾的總體使用固定,那該怎麼辦?

假設/home是個獨立的分區,那麼:

1.將/var/spool/mail這個目錄完整的移動到/home下面;

2.利用 ln -s /home/mail /var/spool/mail來新建連接數據;

3.將 /home 進行quota限額設置。

Copyright © Linux教程網 All Rights Reserved