鳥(niǎo)哥的 Linux 與 ADSL 私房菜
|
Linux 磁盤(pán)配額( Quota )最近更新日期:2003/02/10 什么是 quota 基本的 quota 指令: quota, quotacheck, edquota, quotaon, quotaoff, 動(dòng)手作 quota 使用郵件主機(jī)進(jìn)行 quota 的實(shí)例 本章習(xí)題練習(xí)
什么是 quota?quota 就字面上的意思來(lái)看,呵呵!就是有多少『限額』的意思啦!如果是用在零用錢(qián)上面,就是『有多少零用錢(qián)一個(gè)月』的意思之類(lèi)的。如果是在容量空間上面呢?以 Linux 來(lái)說(shuō),呵呵!就是有多少容量限制的意思。 在 Linux 系統(tǒng)中,由于是多人多任務(wù)的環(huán)境,所以會(huì)有多人共同使用一個(gè)硬盤(pán)空間的情況發(fā)生,如果其中有少數(shù)幾個(gè)使用者大量的占掉了硬盤(pán)空間的話(huà),那勢(shì)必壓縮其它使用者 的使用權(quán)力!因此管理員應(yīng)該適當(dāng)?shù)拈_(kāi)放硬盤(pán)的權(quán)限給使用者,以妥善的分配系統(tǒng)資源!避免有人抗議呀!比較常使用的幾個(gè)情況是:- (1) 例如每個(gè)人的網(wǎng)頁(yè)空間的容量限制!
- (2) 每個(gè)人的郵件空間限制。
在 Linux 當(dāng)中,使用來(lái)作為硬盤(pán)空間管理的就是所謂的 quota 這個(gè)咚咚啦!使用這個(gè)模塊要有幾個(gè)步驟,底下就分別說(shuō)說(shuō)吧!另外要特別注意的是,使用 quota 時(shí)有幾個(gè)基本的限制需要談一談:- quota 實(shí)際在運(yùn)作的時(shí)候,是針對(duì)『整個(gè) partition』進(jìn)行限制的,例如:如果你的 /dev/hda5 是掛載在 /home 底下,那么在 /home 底下的所有目錄都會(huì)受到限制!
- Linux 系統(tǒng)核心必須有支持 quota 這個(gè)模塊才行:如果您是使用 Mandrake 的預(yù)設(shè)核心,嘿嘿!那恭喜你了,你的系統(tǒng)已經(jīng)預(yù)設(shè)有開(kāi)放 quota 這個(gè)模塊啰!如果您是自行編譯核心的,那么請(qǐng)?zhí)貏e留意您是否已經(jīng)『真的』開(kāi)啟了 quota 這個(gè)模塊?否則底下的功夫?qū)⑷慷家暈椤喊坠ぁ?。至于核心編譯的過(guò)程我們會(huì)在未來(lái)進(jìn)行說(shuō)明呦!
- 目前新版的 Linux distributions 如: Mandrake 9.0 與 Red Hat 8.0 等使用的是 Kernel 2.4.xx 的核心版本,這個(gè)核心版本支持新的 quota 模塊,使用的預(yù)設(shè)檔案( aquota.user, aquota.group )將不同于舊版本的 quota.user, quota.group !(多了一個(gè) a 呦?。┒膳f版本的 quota 可以藉由 convertquota 這個(gè)程序來(lái)轉(zhuǎn)換呢!
quota 這支程序的限制內(nèi)容主要分為底下幾個(gè)部分:- soft :這是最低限制容量的意思,使用者在寬限期間之內(nèi),他的容量可以超過(guò) soft ,但必需要寬限時(shí)間之內(nèi)將磁盤(pán)容量降低到 soft 的容量限制之下!
- hard :這是『絕對(duì)不能超過(guò)』的容量!跟 soft 相比的意思為何呢?通常 hard limit 會(huì)比 soft limit 為高,例如網(wǎng)絡(luò)磁盤(pán)空間為 30 MB ,那么 hard limit 就設(shè)定為 30MB ,但是為了讓使用者有一定的警戒心,所以當(dāng)使用空間超過(guò) 25 MB 時(shí),例如使用者使用了 27 MB 的空間時(shí),那么系統(tǒng)就會(huì)警告使用者,讓使用者可以在『寬限時(shí)間內(nèi)』將他的檔案量降低至 25 MB ( 亦即是 soft limit )之內(nèi)!也就是說(shuō), soft 到 hard 之間的容量其實(shí)就是寬限的容量啦!可以達(dá)到針對(duì)使用者的『警示』作用!
- 寬限時(shí)間:那么寬限時(shí)間就可以很清楚的知道含意是什么了!也就是當(dāng)您的使用者使用的空間超過(guò)了 soft limit ,卻還沒(méi)有到達(dá) hard limit 時(shí),那么在這個(gè)『寬限時(shí)間』之內(nèi),就必需要請(qǐng)使用者將使用的磁盤(pán)容量降低到 soft limit 之下!而當(dāng)使用者將磁盤(pán)容量使用情況超過(guò) soft limit 時(shí),『寬限時(shí)間』就會(huì)自動(dòng)被啟動(dòng),而在使用者將容量降低到 soft limit 之下,那么寬限時(shí)間就會(huì)自動(dòng)的取消啰!
基本的 quota 指令:在開(kāi)始進(jìn)行 quota 的實(shí)作之前,我們得來(lái)了解一下 quota 要使用的指令啰!基本上分為兩種,一種是查詢(xún)功能(quota, quotacheck, quotastats, warnquota, repquota),另一種則是編輯 quota 的內(nèi)容( edquota, setquota )。底下我們來(lái)談一談這些基本的指令吧! quota 語(yǔ)法:[root @test /root ]# quota [-guvs] [user,group] 參數(shù)說(shuō)明: -g :顯示 group 群組 -u :顯示 user -v :顯示 quota 的值 -s :選擇 inod 或 硬盤(pán)空間來(lái)顯示 范例: [root @test /root ]# quota -guvs <==顯示目前執(zhí)行者(就是 root )的 quota 值 [root @test /root ]# quota -uvs test <==顯示 test 這個(gè)使用者的 quota 值 | 說(shuō)明: 這個(gè)指令僅是使用來(lái)『顯示(display)』目前某個(gè)群組或者某個(gè)使用者的 quota 限值!您可以使用來(lái)觀察一下呦!
quotacheck 語(yǔ)法:[root @test /root ]# quotacheck [-auvg] /yourpath 參數(shù)說(shuō)明: -a :掃瞄所有在 /etc/mtab 里頭已經(jīng) mount 的具有 quota 支持的磁盤(pán) -u :掃瞄使用者的檔案與目錄 -v :顯示掃瞄過(guò)程 -g :掃瞄群組使用的檔案與目錄 -m?。簭?qiáng)制進(jìn)行 quotacheck 范例: 范例一、要針對(duì) /home 這個(gè) partition 進(jìn)行 quota 的規(guī)劃: [root@test root ]# quotacheck -uvg /home <==開(kāi)始掃瞄 /home 這一個(gè)獨(dú)立扇區(qū)的目錄 quotacheck: Scanning /dev/hda3 [/home] done <==顯示 /home 扇區(qū)為 /dev/hda3 ! quotacheck: Checked 35 directories and 342 files <==掃瞄完畢,有 35 目錄與 342 檔案。 [root@test root ]# ls -l /home <==查看一下 /home 這個(gè)目錄底下,兩個(gè)檔案產(chǎn)生了! -rw------- 1 root root 7168 May 6 18:37 aquota.group -rw------- 1 root root 7168 May 6 18:37 aquota.user 關(guān)于 quotacheck 發(fā)生錯(cuò)誤的解決方法: # 有些時(shí)候,在新版的 Linux distribution 當(dāng)中,進(jìn)行 quotacheck 時(shí),可能會(huì)出現(xiàn) # quotacheck: Cannot get quotafile name for /dev/hda3 # quotacheck: Cannot get quotafile name for /dev/hda3 # 這可能是新版的 quota 在設(shè)計(jì)時(shí)的小問(wèn)題,解決的方法有兩個(gè): [root@test root]# quotacheck -uvgm # 加上 -m 的參數(shù)來(lái)強(qiáng)制進(jìn)行,或者是: [root@test root]# touch /home/aquota.user; touch /home/aquota.group [root@test root]# quotacheck -uvg # 既然 quotacheck 找不到 quotafile ,那么我就手動(dòng)將 quotafile 建立起來(lái)即可! # 然后再重新進(jìn)行 quotacheck 一次即可! # 注意喔!因?yàn)槲业?/dev/hda3 對(duì)應(yīng)到 /home ,所以當(dāng)然就是在 /home 底下建立起 qoutafile 了! | 說(shuō)明: 這這個(gè)指令主要的目的在掃瞄某一個(gè)磁盤(pán)的 quota 空間,他會(huì)針對(duì)該磁盤(pán)進(jìn)行掃瞄,并且,由于該磁盤(pán)若持續(xù)運(yùn)作時(shí),可能掃瞄的過(guò)程中,檔案可能會(huì)增減,造成 quota 掃瞄的錯(cuò)誤發(fā)生,因此,當(dāng)使用 quotacheck 時(shí),該磁盤(pán)將『自動(dòng)被設(shè)定成為唯獨(dú)扇區(qū)(read-only);至于掃瞄完畢之后,掃瞄所得的磁盤(pán)空間結(jié)果會(huì)寫(xiě)入該扇區(qū)最頂端(例如:在我的例子中,掃瞄 /home 這個(gè) /dev/hda3 的扇區(qū),如果是初次掃瞄,那么掃瞄完畢之后會(huì)產(chǎn)生 aquota.user 與 aquota.group ,會(huì)放置在 /home/aquota.xxx 底下!而如果是建立 quota 后的掃瞄,那么就會(huì)更新這兩個(gè)檔案!)另外, Linux 也特別強(qiáng)調(diào) quota 在使用的時(shí)候,需要特別注意在 reboot 時(shí),得先將 quota 關(guān)閉才好! 此外,由于新版的 Linux distribution 在 quota 的設(shè)計(jì)上似乎有點(diǎn)小問(wèn)題,有時(shí)候無(wú)法完整的進(jìn)行 quotacheck ,發(fā)生如同上表的情況,解決的方法就是主動(dòng)手動(dòng)的建立 quotafile 即可喔!
edquota 語(yǔ)法:[root @test /root ]# edquota [-u user] [-g group] [-t] [root @test /root ]# edquota -p user_demo -u user 參數(shù)說(shuō)明: -u :編輯 user 的 quota -g :編輯 group 的 quota -t :編輯寬限時(shí)間(就是超過(guò) quota 值后,還能使用硬盤(pán)的寬限期限) -p :copy 模板(以建立好的使用者或群組)到另一個(gè)使用者(或群組) 范例: [root @test /root ]# edquota -u test <==設(shè)定 test 這個(gè)使用者的 quota 數(shù)值,會(huì)直接進(jìn)入 vi 畫(huà)面 Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 0 0 5 0 0 修改一下成為: Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 50005000 5 50005000[root @test /root ]# edquota -p test -u test2 <==將 test 這個(gè)人的 quota 資料復(fù)制給 test2 這個(gè)人! [root @test /root ]# edquota -t <==設(shè)定寬限時(shí)間,也就是超過(guò) quota 值之后的修正時(shí)間啦! Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda3 0minutes 0minutes 上面的 0minutes 可以改成 60minutes 即可!也就是 60 分鐘之內(nèi)必須要趕快整理硬盤(pán)的意思! | 說(shuō)明: 這個(gè)指令就是在編輯每一個(gè)『個(gè)人』或者是『群組』的 quota 數(shù)值!通常我們以 edquota -u username 或者是 edquota -g groupname 來(lái)編輯個(gè)人與群組的 quota 設(shè)定值。不過(guò),或許您會(huì)覺(jué)得一個(gè)一個(gè)分配似乎很慢的樣子!那么您也可以直接 copy 一個(gè)人的設(shè)定值給其它人,就如同上面第二個(gè)例子,利用已經(jīng)建立好的 test 來(lái)建立 test2 這個(gè)人的 quota 限額!這個(gè)指令可是很重要的呦!另外,上面有幾個(gè)重要的信息,我們來(lái)談一談吧:- filesystem:這個(gè)是那個(gè) partition 的意思!以上面來(lái)說(shuō),就是 /dev/hda3 啰!
- blocks:這個(gè)是目前使用者 test ( uid 501 )在 /dev/hda3 這個(gè) filesystem (參考上面一個(gè)信息),所耗掉的磁盤(pán)容量,也就是目前的使用掉的空間啦!單位是 Kbytes 喔!這個(gè)信息是 quota 程序自己計(jì)算出來(lái)的,所以請(qǐng)不要修改他!
- soft 與 hard :這個(gè)是目前的 test 在這個(gè) filesystem 之內(nèi)的 quota 限制值!至于 soft 與 hard 的意思就如同 14-1 節(jié)最后面提的那個(gè)意思啦!當(dāng) soft 與 hard 數(shù)值為 0 的時(shí)候,表示『沒(méi)有限制』的意思!而數(shù)值的單位仍是 Kbytes 喔!
- inodes :是目前使用掉 inode 的狀態(tài),也是 quota 自己計(jì)算出來(lái)而得到的,所以不要去變更他。一般而言, inode 不容易控制,所以您可以不必去限制 inode 呢!
quotaon 語(yǔ)法:[root @test /root ]# quotaon [-a] [-uvg directory] 參數(shù)說(shuō)明: -a :全部的 quota 設(shè)定都啟動(dòng)(會(huì)自動(dòng)去尋找 /etc/mtab 的設(shè)定) -u :使用者的 quota 啟動(dòng) -g :群組的 quota 設(shè)定啟動(dòng) -s :顯示訊息 范例: [root @test /root ]# quotaon -a <==全部的 quota 限制都啟動(dòng) [root @test /root ]# quotaon -uv /home <==只有激活 /home 底下的使用者 quota 限額,group 不激活! | 說(shuō)明: 這個(gè)指令是在啟動(dòng) quota 的!不過(guò),由于這個(gè)指令是啟動(dòng) aquota.group 與 aquota.user 的,所以您就必須要先完成 qutoacheck 的工作了!然后簡(jiǎn)單的下達(dá) quotaon -a 即可啟動(dòng)!
quotaoff 語(yǔ)法:[root @test /root ]# quotaoff -a 參數(shù)說(shuō)明: -a :全部的 quota 設(shè)定都關(guān)閉(會(huì)自動(dòng)去尋找 /etc/mtab 的設(shè)定) 范例: [root @test /root ]# quotaoff -a <==全部的 quota 限制都關(guān)閉了! | 說(shuō)明: 這個(gè)指令就是關(guān)閉了 quota 的限制啦!
動(dòng)手作 quota:quota 可以作用的功能有很多,包括了: - 限制某一群組所能使用的最大磁盤(pán)配額(使用 群組 限制):你可以將你的主機(jī)上的使用者分門(mén)別類(lèi),有點(diǎn)像是目前很流行的付費(fèi)與免付費(fèi)會(huì)員制的情況,你比較喜好的那一群的使用配額就可以給高一些!呵呵! ^_^...
- 限制某一使用者的最大磁盤(pán)配額(使用 使用者 限制):在限制了群組之后,您也可以再繼續(xù)針對(duì)個(gè)人來(lái)進(jìn)行限制,使得同一群組之下還可以有更公平的分配!
- 以 Link 的方式,來(lái)使郵件可以作為限制的配額(更改 /var/spool/mail 這個(gè)路徑):如果是分為付費(fèi)與免付費(fèi)會(huì)員的『郵件主機(jī)系統(tǒng)』,是否需要重新再規(guī)劃一個(gè)硬盤(pán)呢?也不需要啦!直接使用 Link 的方式指向 /home (或者其它已經(jīng)做好的 quota 磁盤(pán))就可以啦!
底下先列出幾個(gè)主要的步驟來(lái)說(shuō)明: - 開(kāi)啟磁盤(pán)的 quota 功能:編輯 /etc/fstab ,使得準(zhǔn)備要開(kāi)放的 quota 磁盤(pán)可以支持 quota 啰;
- 預(yù)掃瞄磁盤(pán)的使用情況:使用 quotacheck 來(lái)掃瞄一下我們要使用的磁盤(pán)啰;
- 建立使用者的 quota :使用 edquota 來(lái)編輯每個(gè)使用者或群組的可使用空間啰;
- 啟動(dòng) quota :使用 quotaon 吧!
整個(gè)步驟大致上就只有這幾步,我們來(lái)瞧一瞧如何使用吧!!底下我們以一個(gè)簡(jiǎn)單的范例來(lái)進(jìn)行 quota 的說(shuō)明啰!整個(gè)范例的說(shuō)明如下: - 我們假設(shè) test 這部主機(jī)里頭有 test 與 test2 這兩個(gè)使用者,且他們兩個(gè)都掛在 test 這個(gè)群組下;
- 每個(gè)使用者總共有 50MB 的磁盤(pán)空間(不考慮 inode )限制!并且 soft limit 為 45 MB;
- 而寬限時(shí)間設(shè)定為 1 天,也就是說(shuō),這四個(gè)人可以突破 40MB 的限制,但是在一天之內(nèi)必須要將多余的檔案砍掉,否則將無(wú)法使用剩下的空間(也就是說(shuō),這個(gè)賬號(hào)大概就不能使用了?);
- test 這個(gè)群組考慮最大限額,所以設(shè)定為 90 MB 好了!
整個(gè)執(zhí)行步驟可以照下面來(lái)執(zhí)行看看: - 建立 test2 這個(gè)使用者:
由于我們之前只有 test 這個(gè)使用者掛在 test 群組之中,所以必需要先設(shè)定一下 test2 這個(gè)使用者!因?yàn)樗娜航M必需是 test 這個(gè),而我們?nèi)ゲ榱艘幌?/etc/group 發(fā)現(xiàn) test 的 uid 為 501 ,因此,我們可以這樣來(lái)設(shè)定 test2 呢! [root @test root]# useradd –m –g 501 test2 [root @test root]# passwd test2 Changing password for user test2. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. | - 開(kāi)啟磁盤(pán)的 quota 功能:
由于 quota 需要在 ext 的 Linux 延伸格式檔案才可以啟動(dòng),所以你就必須要將準(zhǔn)備開(kāi)啟 quota 的磁盤(pán)啟動(dòng)參數(shù),寫(xiě)進(jìn)入 quota 的磁盤(pán)設(shè)定才行 ( /etc/fstab )!以我的例子而言,我想要在 /home 底下進(jìn)行 quota 的限制test, test2 這兩個(gè)人!正巧 /home 是一個(gè)獨(dú)立的扇區(qū),這可以使用 df 來(lái)查詢(xún):此外,必需要特別留意的是,最好不要以根目錄亦即是 / 進(jìn)行 quota 啦!否則容易有些問(wèn)題呢!另外,不要針對(duì) root 做 quota 喔! [root @test root]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 1904920 1088136 720020 61% / /dev/hdb1 976344 71504 854444 8% /backup /dev/hdb2 101540 4252 92048 5% /home | 嗯!我的 home 是獨(dú)立的 partition ,并且他的裝置名為 /dev/hdb2 ,好了!那么我就必須要啟動(dòng) /home 這個(gè) /dev/hdb2 的 quota 檔案格式,好了!那么由于檔案格式的設(shè)定是寫(xiě)在 /etc/fstab 里頭,所以我們以 vi 來(lái)編輯他吧!只要在 /etc/fstab 里頭增加了 usrquota, grpquota 就可以啦!『注:請(qǐng)?zhí)貏e留意,這兩個(gè)項(xiàng)目請(qǐng)『務(wù)必』不要寫(xiě)錯(cuò)了!請(qǐng)?jiān)賹?xiě)入 /etc/fstab 之前好好的再次檢查,因?yàn)閷?xiě)錯(cuò)之后,很有可能造成系統(tǒng)無(wú)法開(kāi)機(jī)(雖然機(jī)率不高,但是有可能!?)』 [root @test root]# vi /etc/fstab # device MountPoint filesystem parameters dump fsck /dev/hda1 / ext3 defaults 1 1 /dev/hda2 swap swap defaults 0 0 /dev/hdb1 /backup ext3 defaults 1 1 /dev/hdb2 /home ext3 defaults 1 1 none /dev/pts devpts mode=0620 0 0 none /proc proc defaults 0 0上面的黃色字體改成底下的樣子! /dev/hdb2 /home ext3 defaults,usrquota,grpquota 1 1 | 多了 usrquota,grpquota 注意,由 defaults,usrquota,grpquota 之間都沒(méi)有空格! 這樣就算加入了 quota 的磁盤(pán)格式了!不過(guò),由于真正的 quota 在讀取的時(shí)候是讀取 /etc/mtab 這個(gè)檔案的,偏偏這一個(gè)檔案需要重新開(kāi)機(jī)之后才能夠以 /etc/fstab 的新數(shù)據(jù)進(jìn)行改寫(xiě)!所以這個(gè)時(shí)候你可以選擇: (1)重新開(kāi)機(jī)==>reboot;也可以選擇 (2)重新 remount filesystem 來(lái)驅(qū)動(dòng)設(shè)定值! 我是不太喜歡重新開(kāi)機(jī)的人啦!所以我就這么做: [root@test /]# umount /dev/hdb2 [root@test /]# mount -a [root@test /]# more /etc/mtab /dev/hda1 / ext3 rw 0 0 none /proc proc rw 0 0 none /proc/bus/usb usbdevfs rw 0 0 none /dev devfs rw 0 0 none /dev/pts devpts rw,mode=0620 0 0 /dev/hdb1 /backup ext3 rw 0 0 /dev/hdb2 /home ext3 rw,usrquota,grpquota 0 0或者以下列的方式重新 mount 所有的磁盤(pán): [root @test /root ]# mount -a -o remount <==這個(gè)指令可以重新將 /etc/fstab 的咚咚 mount 下來(lái)! | 嘿嘿嘿嘿!這樣我們就已經(jīng)成功的將 quota 的功能寫(xiě)入 partition 當(dāng)中啰!另外,我們這里是以 ext3 這個(gè)磁盤(pán)格式來(lái)測(cè)試 quota 的呦! - 掃瞄磁盤(pán)的使用者使用狀況,并產(chǎn)生重要的 aquota.group 與 aquota.user:
接著下來(lái)就是要來(lái)掃瞄一下我們所需要的磁盤(pán)到底有沒(méi)有多余的空間可以讓我們來(lái)設(shè)定 quota 呢?并且將掃瞄的結(jié)果輸出到這個(gè)磁盤(pán)的最頂層去(也就是 /home 底下)這個(gè)時(shí)候就需要 quotacheck 這個(gè)指令的幫忙了!使用 quotacheck 就可以輕易的將所需要的數(shù)據(jù)給他輸出了!現(xiàn)在就 OK 啦!并且在 /home 底下會(huì)產(chǎn)生 aquota.group 與 aquota.user 這兩個(gè)檔案! [root@test /]# quotacheck -avug quotacheck: Scanning /dev/hdb2 [/home] done quotacheck: Checked 10 directories and 22 files [root@test /]# ll /home total 44 -rw------- 1 root root 7168 Oct 28 14:05 aquota.group -rw------- 1 root root 7168 Oct 28 14:05 aquota.user drwx------ 2 root root 16384 Oct 22 16:54 lost+found/ drwxr-xr-x 3 test test 4096 Oct 28 01:45 test/ drwxr-xr-x 3 test2 test 4096 Oct 28 13:37 test2/ | 使用 quotacheck 就可以輕易的將所需要的數(shù)據(jù)給他輸出了!現(xiàn)在就 OK 啦!并且在 /home 底下會(huì)產(chǎn)生 aquota.group 與 aquota.user 這兩個(gè)檔案!注:但是很奇怪的是,在某些 Linux 版本中,我不能夠以 aquota.user(group) 來(lái)啟動(dòng)我的 quota ,真的是很奇怪呢!所以我就另外做了一個(gè) link 檔案來(lái)欺騙 quota 啰: [root @test /root ]# cd /home [root @test /root ]# ls -l aquota* -rw------- 1 root root 7168 May 6 22:16 aquota.group -rw------- 1 root root 7168 May 6 22:16 aquota.user [root @test /root ]# ln -s aquota.group quota.group [root @test /root ]# ln -s aquota.user quota.user | - 啟動(dòng) quota 的限額!
再來(lái)就是要啟動(dòng) quota 啦!啟動(dòng)的方式也是很簡(jiǎn)單的!就是使用 quotaon -av 即可: [root@test /]# quotaon -av /dev/hdb2 [/home]: group quotas turned on /dev/hdb2 [/home]: user quotas turned on | 注意:要看到上面有個(gè) turned on 的出現(xiàn),才是真的成功了! - 編輯使用者的可使用空間:
由于我們有兩個(gè)使用者要設(shè)定,先來(lái)設(shè)定 test 好了,使用 edquota 就對(duì)了 [root @test /]# edquota –u test Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 32 0 0 8 0 0將上面的原本設(shè)定改為底下的模樣: Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 32 40000 50000 8 0 0 | 要特別留意的是,上面的黑體數(shù)值代表的是 KB 呦!轉(zhuǎn)成 MB 是需要乘上 1024 倍,這里簡(jiǎn)單的計(jì)算一下就好了!這樣就算編輯完畢了!接下來(lái)我們就需要將這個(gè)設(shè)定同時(shí)復(fù)制給 test2 這個(gè)家伙! [root@test /]# edquota -p test test2 | 接下來(lái)要來(lái)設(shè)定寬限時(shí)間,還是使用 edquota ! [root@test /]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hdb2 1days 1days | 將時(shí)間改為 1 天(原本是 7days 改成 1days ),好了!查詢(xún)一下是否真的有設(shè)定進(jìn)去呢?使用 quota -v 來(lái)查詢(xún) [root@test /]# quota –vu test test2 Disk quotas for user test (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 32 40000 50000 8 0 0 Disk quotas for user test2 (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 28 40000 50000 7 0 0 | 特別注意到,由于我們的使用者尚未超過(guò) 40 MB,所以 grace ( 寬限時(shí)間 )就不會(huì)出現(xiàn)啦!這樣很夠清楚了吧?! - 編輯群組使用空間:
其實(shí)也差不多,還是使用 edquota: [root@test /]# edquota -g test Disk quotas for group test (gid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 60 0 0 15 0 0修改成底下這樣: Disk quotas for group test (gid 501): Filesystem blocks soft hard inodes soft hard /dev/hdb2 60 80000 90000 15 0 0 [root@test /]# quota -vg test Disk quotas for group test (gid 501): Filesystem blocks quota limit grace files quota limit grace /dev/hdb2 60 80000 90000 15 0 0 | - 設(shè)定開(kāi)機(jī)時(shí)啟動(dòng):
開(kāi)機(jī)的時(shí)候自動(dòng)啟動(dòng)的設(shè)定在哪里還記得嗎?沒(méi)錯(cuò)!就是在 /etc/rc.d/rc.local 底下:所以你可以使用 vi 在這個(gè)檔案的最后面加上一行: [root @test /root ]# vi /etc/rc.d/rc.local /sbin/quotaon -aug | 如果要關(guān)閉 qutoa 就是用 quotaoff 吧!沒(méi)錯(cuò)!這樣就將 quota 設(shè)定完畢了!很簡(jiǎn)單吧??!
使用郵件主機(jī)進(jìn)行 quota 的實(shí)例:好了,我們前面 賬號(hào)管理 的部分曾經(jīng)提到 e-mail 這個(gè)東西嘛!好了,如果我們要設(shè)定一個(gè)對(duì)外開(kāi)啟的郵件主機(jī)的時(shí)候,那么最好對(duì)于郵件空間有點(diǎn)限制比較好,免得如同上面提到的一些問(wèn)題一樣,造成使用者的使用權(quán)不一!所以說(shuō),使用 quota 確實(shí)是一個(gè)好建議!這個(gè)時(shí)候該怎么辦呢?什么怎么辦?嗯!是這樣的,由于 quota 『只能針對(duì)一個(gè) partition 進(jìn)行整體的磁盤(pán)配額,無(wú)法針對(duì)某個(gè)目錄進(jìn)行磁盤(pán)配額!』針對(duì)這個(gè)觀念,我們不難發(fā)現(xiàn),『(1)將郵件存在個(gè)人的家目錄與 (2)將郵件統(tǒng)一放在 /home 下的一個(gè)共享目錄』是一樣的!為什么呢?這是因?yàn)?quota 針對(duì)的是一個(gè)磁盤(pán)呀!呵呵!所以啰,您必須先確定『您的 /home 是一個(gè)獨(dú)立的 partition 』才行!當(dāng)然啰,您也可以使用其它的獨(dú)立的 partition 來(lái)進(jìn)行底下的步驟!但是在這里,我們預(yù)設(shè)以 /home 這一個(gè)目錄來(lái)假定這一個(gè)目錄是一個(gè)獨(dú)立的 partition ! 如此則在 /home 底下,由于每個(gè)人的磁盤(pán)配額已經(jīng)設(shè)定好了!所以當(dāng)然啰!該信件就可以得到完整的 quota 限額的限制了!所以呢,就需要進(jìn)行下面的步驟: - 以 上面設(shè)定 的方式設(shè)定好使用者 quota 的所有工作(即是在 /home 這個(gè) partition );
- 將 /var/spool/mail 這個(gè)郵件預(yù)設(shè)的數(shù)據(jù)夾備份到其它的目錄去;
- 建立 /home/mail,這是因?yàn)榧僭O(shè)我們的郵件放置在這個(gè)目錄中;
- 修改 /home/mail 的屬性,使成為 擁有者 root ,群組 mail ,及屬性為 775 才行!
- 將 /home/mail 給他 Link 到 /var/spool/mail 去即可!
- 以后每個(gè)人的郵件將都會(huì)放置 /home/mail 這個(gè)目錄中!
1. 建立并修改 /home/mail 這個(gè)目錄: [root @test /root ]# mkdir /home/mail [root @test /root ]# chown root:mail /home/mail [root @test /root ]# chmod 775 /home/mail2. 備份并移動(dòng)原本的 mail 到 /home/mail 底下去: [root @test /root ]# cp -r /var/spool/mail /var/spool/mail.back [root @test /root ]# mv /var/spool/mail/* /home/mail [root @test /root ]# rmdir /var/spool/mail 3. 建立連結(jié): [root @test /root ]# ln -s /home/mail /var/spool/mail |
只要這樣的一個(gè)小步驟,嘿嘿!您家主機(jī)的郵件就有一定的限額啰!當(dāng)然啰!您也可以依據(jù)不同的使用者與群組來(lái)設(shè)定 quota 然后同樣的以上面的方式來(lái)進(jìn)行 link 的動(dòng)作!嘿嘿嘿!就有不同的限額針對(duì)不同的使用者提出啰!很方便吧?。?^_^
本章習(xí)題練習(xí) ( 要看答案請(qǐng)將鼠標(biāo)移動(dòng)到『答:』底下的空白處,按下左鍵圈選空白處即可察看 )- 如果我有一個(gè) Linux 主機(jī),未來(lái)想要對(duì)外提供 mail 與 WWW 的服務(wù),同時(shí)預(yù)計(jì)提供個(gè)人網(wǎng)頁(yè)空間的服務(wù),然而我希望 mail 提供 30 MB 而 WWW 則提供 20MB 的空間,那么我應(yīng)該如何規(guī)劃我的主機(jī)?
答:在 quota 的限制中,由于他限制的是整個(gè) partition 呢!所以既然要分為兩個(gè)服務(wù)來(lái)限制,就需要設(shè)定成兩個(gè) partition 了!這個(gè)案例當(dāng)中是以 Linux 為新架設(shè)的角度來(lái)看,所以我們的規(guī)劃就較為簡(jiǎn)單!假設(shè)我的硬盤(pán)為 30GB 的硬盤(pán),那么我可以這樣設(shè)定:/ 256 GB Swap 2 * RAM /usr 3~5 GB /backup 5GB 其它的空間平均分給這樣就可以啦!然后安裝完成之后,套用 quota 的設(shè)定,即可做好限制啰!很是方便的!
2002/07/14:第一次完成 2003/02/10:重新編排與加入 FAQ 2003/09/02:加入 quotacheck 發(fā)生錯(cuò)誤時(shí)的解決方法。
鳥(niǎo)哥的 Linux 與 ADSL 私房菜
Designed by VBird during 2001-2004. Aerosol Lab. |
|