首頁 > 軟體

磁碟配額:quota

2020-06-16 17:32:12

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限額設定。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-09/135485.htm


IT145.com E-mail:sddin#qq.com