|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1675178
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2005/2/25 14:59 |
- Webmaster
- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]Quota 管理磁盤配額
- 在網絡管理的工作中,由于硬盤的資源是有限的,常常需要為多用戶的服務器設定用戶的磁盤配額。這個功能對公用的多用戶服務器(免費的或者收費的)來說,更是非常必要的。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 的行,例如: [code:1:2b3d8be0c6]/dev/sda5/home ext2 defaults 1 2 /dev/sda7/wwwext2 defaults 1 2[/code:1:2b3d8be0c6]
在 /home 里實現用戶級的磁盤配額,所以對 sda5 行的挂裝選項域做如下修改: [code:1:2b3d8be0c6]/dev/sda5/home ext2 defaults,usrquota 1 2[/code:1:2b3d8be0c6]
注意,是 usrquota 哦。類似的,我們可以如下修改 /www 行: [code:1:2b3d8be0c6]/dev/sda7/wwwext2 defaults,grpquota 1 2[/code:1:2b3d8be0c6]
◆第二步,修改 /etc/rc.d/rc.local 腳本,添加如下腳本: [code:1:2b3d8be0c6]############################# #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 #############################[/code:1:2b3d8be0c6]
這一段腳本在裝載完文件系統后運行,它將對磁盤配額的情況進行檢查并激活磁盤配額功能。
◆第三步,為每一個實行配額控制的分區創建配額文件。
如下創建磁盤配額配置文件: [code:1:2b3d8be0c6]touch /home/quota.user touch /www/quota.group[/code:1:2b3d8be0c6]
修改這兩個文件的許可屬性,使它只對 root 用戶有讀和寫的許可。
◆第四步,重新啟動系統。
這樣系統在運行配額檢查的時候,會在配額文件中創建磁盤使用信息。到這里,我們已經完成磁盤配額所需要的系統級的支持配置。接著,我們就可以將配額分配給用戶了。
設置用戶和組配額的分配量
對磁片配額的限制一般是從一個用戶佔用磁片大小和所有文件的數量兩個方面來進行的。在具體操作之前,我們先瞭解一下磁片配額的兩個基本概念:軟限制和硬限制。
軟限制:一個用戶在文件系統可擁有的最大磁盤空間和最多文件數量,在某個寬限期內可以暫時超過這個限制。
硬限制:一個用戶可擁有的磁盤空間或文件的絕對數量,絕對不允許超過這個限制。
◆使用編輯配額命令 edquota 為用戶配置定額
在重新啟動系統之后,我們假設lanf是需要定額的系統帳戶,可以使用如下命令來為用戶分配磁盤配額: [code:1:2b3d8be0c6]edquota -u lanf[/code:1:2b3d8be0c6]
這個命令將啟動默認文本編輯器(如 vi 或其他由 $EDITOR 環境變量指定的編輯器),其內容如下所示: [code:1:2b3d8be0c6]Quotas for user lanf: /dev/sda5:blocks in use:0,limits(soft = 0,hard = 0) inodes in use:0,limits(soft = 0,hard = 0)[/code:1:2b3d8be0c6]
這表示 lanf 用戶在 /dev/sda5 分區(該分區已經在 usrquota 的控制之下)中迄今使用了 0 個數據塊(以 K 為單位),并且沒有設限制(包括軟限制 soft 和硬限制 hard),同樣,lanf 在這個分區也沒有任何文件和目錄,并且也沒有任何軟硬限制。
如果,我們想對用戶進行磁盤容量的限制的話,只需要修改 blocks 行的 limits 部分就可以了,注意單位使用的是 K。例如要為 lanf 分配 100M 磁盤的軟限制,400M 硬限制,可以使用如下的設置: [code:1:2b3d8be0c6]Quotas for user lanf: /dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800) inodes in use:0,limits(soft = 0,hard = 0)[/code:1:2b3d8be0c6]
同樣的,要對文件目錄的數量限制可以相應的修改 inodes 行。我們也可以同時對這兩項都作出限制。只需要如下的修改 [code:1:2b3d8be0c6]Quotas for user lanf: /dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800) inodes in use:0,limits(soft = 12800,hard = 51200)[/code:1:2b3d8be0c6]
這表示除了相應的容量的限制外,還對文件/目錄的數量做了 12800 個的軟限制和 51200 個的硬限制。在保存了新的配置后,該用戶的磁盤使用就不能超過硬限制。如果用戶試圖超過這個限制,該操作將被取消,然后得到一個錯誤信息。
但是,如果每個用戶都要這麼麻煩的設置的話,那這種重復的體力勞動實在有點令人不寒而栗,而且也太浪費時間了。幸好 edquota 還有個 -q 參數(prototype)可以對已有的用戶設置進行拷貝。例如,我們想對 Jack、Tom、Chen 三個用戶使用和 lanf 一樣的限額配置,可以使用如下的命令: [code:1:2b3d8be0c6]edquota -p lanf -u Jack Tom Chen[/code:1:2b3d8be0c6]
這樣一來,這三個用戶就被賦予了和 lanf 一樣的磁盤配額。
對組的配額,除了 edquota 命令中對應-u參數的改為-g參數,例如下面對 webterm1 組的操作: [code:1:2b3d8be0c6]edquota -g webterm1[/code:1:2b3d8be0c6]
實際上,以上的限制只是對用戶設定的硬限制在起作用。如果需要使軟限制也起作用的話,還需要對用戶的軟限制設定寬限期??缺省的,軟限制的寬限期是無窮大??這可以使用edquota命令的-t選項來實現。運行下面的命令: [code:1:2b3d8be0c6]edquota -t[/code:1:2b3d8be0c6]
edquota 將打開缺省編輯器顯示如下內容: [code:1:2b3d8be0c6]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[/code:1:2b3d8be0c6]
可以使用天、小時、分、秒為單位來設定寬限期。例如,在下面這個例子中,磁盤空間限制的寬限期為兩天,而文件數量限制的寬限期只有6個小時。 [code:1:2b3d8be0c6]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[/code:1:2b3d8be0c6]
◆查看用戶磁盤使用情況
要查明某一個用戶使用了多少磁盤空間,例如lanf,可以使用如下的命令: [code:1:2b3d8be0c6]quota -u lanf[/code:1:2b3d8be0c6]
顯示: [code:1:2b3d8be0c6]Disk quotas for user lanf(uid 503): Filesystem blocksquotalimit grace file quota limit grace /dev/sda5 3 102400 4098001 12800 51200[/code:1:2b3d8be0c6]
同樣,可以使用 quota -g groupname 命令來參看某個組的磁盤使用情況。
注意: 1、如果該用戶沒有配置磁片限額的話,輸出顯示如下: [code:1:2b3d8be0c6]Disk quotas for user hujm (uid 503): none[/code:1:2b3d8be0c6]
2、如果不帶任何參數運行quota的話,查看的是你自己的配額使用情況。
原文出處 : 網路農夫
|
|
|
|