安裝及使用quota管理磁碟配額(轉)

post0發表於2007-08-09
安裝及使用quota管理磁碟配額(轉)[@more@]

在網路管理的工作中,由於硬碟的資源是有限的,常常需要為多使用者的伺服器設定使用者的磁碟配額。這個功能對公用的多使用者伺服器(免費的或者收費的)來說,更是非常必要的。Quota就是在Red Hat linux下實現磁碟配額的工具。

Quota的安裝

在正式的RHLinux的光碟的/RedHat/RPMS目錄下,都有相應不同版本的quota軟體包,可以用ls quota*檢視相關的資訊,如版本號。當然你可以方便的透過Tab鍵獲得軟體包的全名,使用如下命令安裝:

rpm -ivh quota-2.00pre3-7.i386.rpm

當然,這裡給出的版本號只是為了方便說明而已,這個版本是隨RH7一起提供的。更新的版本請關注RedHat的官方站點。安裝好軟體包後,就可以對磁碟配額進行配置了。

配置系統的磁碟配額支援

首先,磁碟配額是區域性的,我們可以決定哪塊分割槽進行磁碟配額,哪塊分割槽不用(自然也就不用配置了)。一般而言,作為一臺web虛擬主機伺服器, /home和/www(或者類似的)是供使用者存放資源的分割槽,所以可以對這兩個分割槽進行磁碟配額。假定我們需要對/home分割槽實現使用者級的限制,而對 /www進行每個組的使用者配額。

◆第一步,vi /etc/fstab。(對了,你是管理員嗎?^&^)

找到對應於/home和/www的行,例如:

/dev/sda5 /home ext2 defaults 1 2

/dev/sda7 /www ext2 defaults 1 2

在/home裡實現使用者級的磁碟配額,所以對sda5行的掛裝選項域做如下修改:

/dev/sda5 /home ext2 defaults,usrquota 1 2

注意,是usrquota哦。類似的,我們可以如下修改/www行:

/dev/sda7 /www ext2 defaults,grpquota 1 2

◆第二步,修改/etc/rc.d/rc.local指令碼,新增如下指令碼:

#############################

#check quota and turn quota on

if [-x /sbin/quotacheck ];then

echo "Checking quotas,This may take some time ... "

/sbin/quotacheck -avug

echo "Done."

fi

if[ -x /sbin/quotaon ];then

echo "Enabling disk quota ... "

/sbin/quotaon -avug

echo "Done."

fi

#############################

這一段指令碼在裝載完檔案系統後執行,它將對磁碟配額的情況進行檢查並啟用磁碟配額功能。

◆第三步,為每一個實行配額控制的分割槽建立配額檔案。

如下建立磁碟配額配置檔案:

touch /home/quota.user

touch /www/quota.group

修改這兩個檔案的許可屬性,使它只對root使用者有讀和寫的許可。

◆第四步,重新啟動系統。

這樣系統在執行配額檢查的時候,會在配額檔案中建立磁碟使用資訊。到這裡,我們已經完成磁碟配額所需要的系統級的支援配置。接著,我們就可以將配額分配給使用者了。

設定使用者和組配額的分配量

對磁碟配額的限制一般是從一個使用者佔用磁碟大小和所有檔案的數量兩個方面來進行的。在具體操作之前,我們先了解一下磁碟配額的兩個基本概念:軟限制和硬限制。

軟限制:一個使用者在檔案系統可擁有的最大磁碟空間和最多檔案數量,在某個寬限期內可以暫時超過這個限制。

硬限制:一個使用者可擁有的磁碟空間或檔案的絕對數量,絕對不允許超過這個限制。

◆使用編輯配額命令edquota為使用者配置定額

在重新啟動系統之後,我們假設lanf是需要定額的系統帳戶,可以使用如下命令來為使用者分配磁碟配額:

edquota -u lanf

這個命令將啟動預設文字編輯器(如vi或其他由$EDITOR 環境變數指定的編輯器),其內容如下所示:

Quotas for user lanf:

/dev/sda5:blocks in use:0,limits(soft = 0,hard = 0)

inodes in use:0,limits(soft = 0,hard = 0)

這表示lanf使用者在/dev/sda5分割槽(該分割槽已經在usrquota的控制之下)中迄今使用了0個資料塊(以K為單位),並且沒有設限制(包括軟限制soft和硬限制hard),同樣,lanf在這個分割槽也沒有任何檔案和目錄,並且也沒有任何軟硬限制。

如果,我們想對使用者進行磁碟容量的限制的話,只需要修改blocks行的limits部分就可以了,注意單位使用的是K。例如要為lanf分配100M磁碟的軟限制,400M硬限制,可以使用如下的設定:

Quotas for user lanf:

/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800)

inodes in use:0,limits(soft = 0,hard = 0)

同樣的,要對檔案目錄的數量限制可以相應的修改inodes行。我們也可以同時對這兩項都作出限制。只需要如下的修改

Quotas for user lanf:

/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800)

inodes in use:0,limits(soft = 12800,hard = 51200)

這表示除了相應的容量的限制外,還對檔案/目錄的數量做了12800個的軟限制和51200個的硬限制。在儲存了新的配置後,該使用者的磁碟使用就不能超過硬限制。如果使用者試圖超過這個限制,該操作將被取消,然後得到一個錯誤資訊。

但是,如果每個使用者都要這麼麻煩的設定的話,那這種重複的體力勞動實在有點令人不寒而慄,而且也太浪費時間了。幸好edquota還有個-q引數(prototype)可以對已有的使用者設定進行複製。例如,我們想對Jack、Tom、Chen三個使用者使用和lanf一樣的限額配置,可以使用如下的命令:

edquota -p lanf -u Jack Tom Chen

這樣一來,這三個使用者就被賦予了和lanf一樣的磁碟配額。

對組的配額,除了edquota命令中對應-u引數的改為-g引數,例如下面對webterm1組的操作:

edquota -g webterm1

實際上,以上的限制只是對使用者設定的硬限制在起作用。如果需要使軟限制也起作用的話,還需要對使用者的軟限制設定寬限期——預設的,軟限制的寬限期是無窮大——這可以使用edquota命令的-t選項來實現。執行下面的命令:

edquota -t

edquota將開啟預設編輯器顯示如下內容:

Time units may be:days,hours,minutes,or seconds

Grace period before enforcing soft limits for users:

/dev/sda5:block grace period:0 days,file grace period:0 days

可以使用天、小時、分、秒為單位來設定寬限期。例如,在下面這個例子中,磁碟空間限制的寬限期為兩天,而檔案數量限制的寬限期只有6個小時。

Time units may be:days,hours,minutes,or seconds

Grace period before enforcing soft limits for users:

/dev/sda5:block grace period:2 days,file grace period:6 hours

◆檢視使用者磁碟使用情況

要查明某一個使用者使用了多少磁碟空間,例如lanf,可以使用如下的命令:

quota -u lanf

顯示:

Disk quotas for user lanf(uid 503):

Filesystem blocks quota limit grace file quota limit grace

/dev/sda5 3 102400 409800 1 12800 51200

同樣,可以使用quota -g groupname命令來參看某個組的磁碟使用情況。

注意: 1、如果該使用者沒有配置磁碟限額的話,輸出顯示如下:

Disk quotas for user hujm (uid 503): none

2、如果不帶任何引數執行quota的話,檢視的是你自己的配額使用情況

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章