天天看點

linux核心 quota,Linux磁盤配額(Quota)--鳥哥私房菜筆記

1、Quota的概念:磁盤配額,目的是限定使用者在磁盤分區上所能使用的空間大小。

2、Quota的一般用途:針對WWW Server,限制沒人的網頁空間容量

針對Mail Server,每個人的郵件空間限制

針對file Server,限制每個人可用的網絡硬碟空間

除了以上網絡伺服器限制的情況,還可以針對以下情況進行限制:

限制某一群組所能使用的最大磁盤配額

針對群組内的使用者進行再次限制

以link的方式進行磁盤配額限制,針對某些無法做Quota的目錄,可以link到其他目錄

3、Quota的使用限制僅能針對整個filesystem,即隻能對整個分區做限制,如果一個分區配置了Quota,則整個分區下的目錄都會有影響

Linux核心必須支援Quota,Centos 5.X的版本預設支援Quota,如果自行編譯核心,注意要把Quota功能編譯進去

Quota的記錄檔案:Kernel 2.6.XX 的核心版本使用的預設檔案是aquota.user和aquota.group

隻對一般使用者有效,對root使用者無法配置Quota

4、Quota的規範設定項目:容量限制或者檔案數量限制(block或inode):

限制inode用量:可以管理使用者可以建立的“檔案數量”

限制block用量:管理使用者磁盤容量的限制(較常使用方式)

5、柔性勸導和硬性規定(soft/hard):

一般soft值要比hard設定值小,soft相當于警告門檻值,比如:某使用者soft設定值為400M,而hard設定值則為500MHard:表示使用者的用量絕對不會超過此值,超過則鎖定該使用者的磁盤使用權;

Soft:表示使用者使用量低于此值時,可以正常使用磁盤,若高于此值并低于hard值時,系統會發磁盤将滿的警告資訊,且給予一個寬限時間(grace time)。如果使用者在寬限期倒數期間,将磁盤占用量降低到soft值之下,則寬限期停止計時,恢複正常使用。

寬限時間(Gracetime):

如果使用者的磁盤使用量在soft值和hard值之間,則系統會自動啟動寬限時間倒計時,寬限時間一般設定為七天,如果使用者七天之内沒用把磁盤使用量降低到soft之下,則soft值會取代hard值來作為磁盤的Quota限制。

6、Quota配置範例:目的與賬号:五個賬号為一組,分别為:myquota1、myquota2、myquota3、myquota4和myquota5,密碼均為password,這五個賬号所屬的初始群組為myquotagrp,賬号其他屬性預設。

賬号的磁盤容量限制:五個使用者的磁盤使用量hard值設定為150MB,soft值設定為100MB。

群組的限額:設定myquotagrp群組所能使用的磁盤容量為500MB,是以,如果前面四個使用者每個占用120MB磁盤容量,最後一個使用者隻能使用20MB磁盤容量了。

寬限時間的限制:寬限時間預設為7天,這裡可以修改為14天寬限期。

在做Quota配置之前先使用簡單的shell腳本添加使用者和群組,如下:

#!/bin/bash

#使用腳本建立quota實驗的使用者和群組

groupadd myquotagrp

for username in myquota1 myquota2 myquota3 myquota4 myquota5

do

useradd –g myquotagrp$username

echo “password” | passwd--stdin $usernamedone

以下是Quota配置流程:配置檔案系統支援Quota

Quota需要在整個檔案系統上配置,是以要先确定配置的目錄是否是以整個檔案系統挂載的,比如/home目錄,使用df –h /home可以檢查是否是獨立的檔案系統

[[email protected] /]# df -h home

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda6             3.9G  313M  3.4G   9% /home

[[email protected] /]#

确定支援Quota之後,可以使用兩種方式配置檔案系統的Quota功能:臨時支援Quota,重新挂載檔案系統或重新開機後Quota功能消失:

執行指令:mount –o remount,usrquota,grpquota /home

指令中usrquota表示支援使用者quota,grpquota表示支援群組quota

使用如下指令可以顯示結果:[[email protected] /]# mount | grep home

/dev/sda6 on /home type ext3 (rw,usrquota,grpquota)

[[email protected] /]#

檔案系統永久支援Quota,需要把quota功能寫入到fstab配置檔案中:

在fstab檔案中/home行,defaults後面添加usrquota和grpquota,中間使用逗号隔開[[email protected] /]# cat /etc/fstab

LABEL=/        /          ext3    defaults        1 1

LABEL=/tmp      /tmp        ext3    defaults        1 2

LABEL=/opt     /opt         ext3    defaults        1 2

LABEL=/home     /home         ext3    defaults,usrquota,grpquota       1 2

LABEL=/usr     /usr                    ext3    defaults        1 2

建立Quota記錄檔案

Quota會分析整個檔案系統,将每個使用者(群組)所擁有的檔案總數與總容量寫入檔案系統頂層目錄(本例/home目錄)下的記錄檔案中(aquota.user和aquota.group),然後再比較記錄檔案中的限制值來規範使用者或群組的磁盤用量。可以使用quotacheck指令掃描檔案系統并建立Quota的記錄檔案,指令用法如下:

quotacheck[-avugfM] [/mount_point]

選項與參數:

-a:掃描/etc/mtab内,所有支援quota的分區,加此參數後,/mount_point可不寫

-u:針對使用者掃描檔案與目錄的使用情況,會建立aquota.user記錄檔案

-g:針對群組掃描,會建立aquota.group

-v:顯示掃描過程的資訊

-f:強制掃描檔案系統,并寫入新的quota配置檔案(危險)-M:強制以讀寫的方式掃描檔案系統,隻有特殊情況下使用

本例中,使用指令:quotacheck –avug 指令即可。執行指令後,會在/home目錄下産生aquota.user和aquota.group檔案,這兩個檔案不是普通的文本檔案,不可以手動添加或者修改。

Quota啟動、關閉和限制值設定

配置檔案生成後,就可以啟動quota了。啟動quota的指令:quotaon

關閉quota的指令:quotaoffquotaon [-avug] [/mount_point]

選項與參數:

-u:針對使用者啟動quota(aquota.user)

-g:針對群組啟動quota(aquota.group)

-v:顯示啟動過程的相關資訊-a:根據/etc/mtab内的設定啟動quota,加上-a不需要mount_point

本例中使用quotaon –augv指令即可啟動使用者和群組的quota功能。第一次啟動quota時需要使用此指令,以後/etc/rc.d/rc.sysinit腳本會自動執行此指令。edquota:編輯賬号/群組的限值與寬限時間

edquota的文法如下:edquota [-u username] [-g groupname]

edquota –t    ##修改寬限時間

edquota –p 範本賬号–u 新賬号

選項與參數:

-u:後面跟賬号,進入quota編輯界面(vi)設定使用者的限制值;

-g:後面跟組名,設定組的限制值

-t:修改寬限時間-p:複制範本。範本賬号設定值會複制給新賬号;

比如,設定使用者myquota1的限定值如下:[[email protected] /]# edquota -u myquota1

Disk quotas for user myquota1 (uid 503):

Filesystem                   blocks       soft       hard     inodes     soft     hard

/dev/sda6                    123072     100000     150000          9        0        0

~

如上圖,修改使用者myquota1的限定值,隻需要修改blocks後面的soft和hard值即可。數值機關為KB,預設數值為0,表示沒有限制的意思。

如果其他幾個使用者限定值一樣,可以通過複制範本(myquota1範本)的方式設定:edquota –p myquota1 –u myquota2

edquota –p myquota1 –u myquota3

edquota –p myquota1 –u myquota4

更改群組的限定值和寬限時間:edquota –g myquotagrp

edquota -tQuota限制值的報表

Quota的報表主要有兩種模式,一是針對每個使用者或群組的quota指令,另外一個是針對整個檔案系統的repquota指令。quota:單一使用者或群組的quota報表#quota [-uvs] [username]

#quota [-gvs] [groupname]

選項與參數:

-u:加username表示該使用者的限制值,不加username表示目前使用者限制值

-g:加groupname表示該群組的限制值

-v:顯示每個使用者在filesystem的限制值-s:使用1024為倍數指定機關,顯示M的機關

本例中,使用者的限制值顯示指令如下:[[email protected] /]# quota -uvs myquota1 myquota2

Disk quotas for user myquota1 (uid 503):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sda6    121M* 100000    147M  13days       9       0       0

Disk quotas for user myquota2 (uid 504):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sda6    121M* 100000    147M  13days       9       0       0

[[email protected] /]#repquota:針對檔案系統的限額做報表#repquota –a [-vugs]

選項與參數:

-a:直接查找/etc/mtab檔案中有quota配置的檔案系統,并報告結果;

-v:輸出更詳細的filesystem的相關資訊;

-u:顯示使用者的quota限值(這是預設值);

-g:顯示出個别群組的quota限值;-s:以M,G為機關顯示結果;測試與管理:測試myquota1使用者的限制值設定效果

在myquota1使用者下,使用dd指令建立大檔案,測試quota配置效果。warnquota:對超過限額者發出警告信

warnquota通過/etc/warnquota.conf配置檔案,找出磁盤用量超出soft值的使用者,通過emai發送警告資訊到使用者的郵箱。warnquota預設需要手動執行。如果需要自動執行,可以在/etc/cron.daily目錄下建立warnquota檔案,添加内容:/usr/sbin/warnquota,并且修改權限:chmod 755 /etc/cron.daily/warnquotasetquota:直接通過指令修改限額(不用vi模式),适用于寫入腳本中

用法:setquota [-u|-g] 名稱block(soft) block(hard) inode(soft) inode(hard) 檔案系統

比如:要設定myquota5使用者的限額,指令:setquota -u myquota5 100000 150000 0 0 /home