在核心中安裝 quotas
===================
在這個套件中的 diffs 是相對於本來的 1.1.16 版程式碼。
好,執行下面的步驟。
首先為舊的組件建立備份,就像這樣。
1) cd /usr/src
2) tar czvhf oldLinux.tar.gz linux
好,現在開始解開組件
3) cd /usr/src/linux
4) patch -p1 < <你放置它的地方>/kdiffs_1.1.16
檢查看看有沒有一些被拒絕執行的地方或者是不是有做一些這樣的嘗試。
5) find . -name *.rej
好,當你完成這個步驟以後我們可以把一些原先的檔案丟掉。
6) find . -name *.orig xargs rm
好,現在配置你的核心
7) cd ..
8) make config
在 Disk QUOTA support 選項上回答 yes 。
做一下驗證,然後重新制作核心。
9) make depend
10) make
現在你應該已經擁有一個新的核心映像,像平常一樣地安裝它。
好,現在制作工具程式並且安裝它們。
把這個目錄下的 mntent.h 檔案復制到 /usr/include 以便取代原先那個小的、並且會鎖住各種運作選項的那一個。
最後但是最不重要的是填寫注冊表然後以電子信件送回來給我。這能讓我得到關於多少人使用它的資訊並且讓我在做事上容易些。已經把注冊表送回來給我的人不必再寄送一次,我已經把它們存檔以便往後使用。
[ 要使用這個套件裡的 PROCESSACCOUNTING DIFFS 你需要有 GNU 的 ACCOUNTING 工具程式,這些工具程式可以在 PREP.AI.M99v.EDU 裡找到 ]
在檔案系統上啟動 quotas
=======================
要在一個檔案系統上啟動 quotas 的人應該要編輯 /etc/fstab 這個檔案並且為了 usrquota 以及 grpquota 增加一些項目。我的看起來像這樣:
# device Directory type options
/dev/hda1 / ext2 defaults
/dev/hda2 none swap sw
/dev/hda3 /usr ext2 defaults
/dev/hdb1 /usr/users ext2 defaults,usrquota,grpquota
/dev/hdb2 /usr/src ext2 defaults,usrquota
none /proc proc defaults
在每個 fstab 項目的選項欄位中,關鍵字 "usrquota" 為這個設備打開使用者的限額功能。在選項欄位裡的關鍵字 "grpquota" 則為這個設備打開使用群的限額功能。當你使用了 usrquota 以及 grpquota 選項而沒有加上 "=" 選項時,你的 quotafiles 會是在每個檔案系統的根目錄裡。一個叫做 "quota.user" 的檔案是給使用者的限額功能所使用;而一個叫做 "quota.group" 的檔案則是給使用群的限額功能所使用。
從 1.1 版開始你也能夠在裡面定義你自己的 quotafile 。就像是 "usrquota=/usr/adm/quotasrc.user" 這樣的東西。請注意你的 fstab 裡每一行的最大長度限制,參看mntent.h 裡面的定義。在你真的想要使用這個選項時,你應該用這個套件所提供的mntent.c 鏈結這些程式,因為程式庫在處理一個 fastab 檔案的剖析上有些問題。
打開 quotas 的功能
================
在你第一次安裝 quota 時執行 "quotacheck -avug" 來將所有的 quotafiles 安裝到你檔案系統的根目錄。或者是當你以 [usrgrp]quota="" 在定義你的 fstab 時所敘述的地方。當用來檢查一個設備時不要用 quotacheck 程式的 -d 旗標。因為這個只有用在除錯上而且會使得掃描非常的慢。
quotacheck 這個程式在大型的檔案系統上得花些時間,但是新的版本在我的機器上已經很可以接受了。然而當你是在 hacking 核心時,我建議不要去使用它。因為這在你每次必須得重新開機時都會花些時間。你也可以把它放在你的 rc 指令稿裡然後就像你在你的檔案系統上執行 fsck 一般,只有在 fastreboot 旗標沒有被設定的時候才會執行它。
他並沒有支援檔案系統的 parallel checking ,但是下個版本可能會有。請不要介意自己去實作它。如果沒有人要做那我就得自己來,但這樣子的話將得多花點時間,因為它現在在我的 wish list 中並不是很重要。而且它在 IDE 磁碟上做 simultaniously大概不會多快。
好,現在應該已經具備所有必須的 quotafiles 。現在你可以增加像這樣一行:
/usr/etc/quotaon -avug(或是不要加上 -v 旗標,如果你並不想看到什麽 quota 被打開了的話)。
到你的 /etc/rc 裡面去。這是用來在你啟動機器時打開 quotas 的功能。這是一個讓你不必在每次啟動你的機器時都得要自己打開它的辦法。
為 quotas 檢查檔案系統
======================
只要執行 "quotacheck -avug" 那麽 quotafiles 就會自動被更新而且核心正在使用的參考表也一樣。注意 quotacheck 程式的 "updating in core quotas" 訊息,如果它更新核心的 quotas 就會出現。
我不能充份的敘述這件事,quotafile 是以 (uid gid * sizeof(strUCt dquot))這種方式建立的,所以當你沒有 uid 65535 的人以及沒有人擁有一個檔案時你會得到很大的 quota files ,讓我們估計大概有 2 Mb 左右填滿零給沒有 quota 的使用者。所以請注意這件事而且不要把它 mail 給我。這並不是個大問題,這個檔案並非真的有那麽大所有 0 blocks 並沒有在磁碟上。
指定一個使用者或使用群的 quota
==============================
現在用 "edquota -u " 來編輯使用者的限額以及 "edquota -g " 來編輯使用群的限額。
只需編輯位於 soft 以及 hard 關鍵字後面的數字。有兩行給每個打開 quotas 的檔案系統使用。 Soft 的意思是指軟性限制,如果使用者或使用群超越了這個限制,他們會有些優待期限用來確定他們回到軟性限制的范圍內。
這是可以使用 "edquota -t" 然後輸入以日數來加以改變的。如果他們不在優待期限內刪除這些部份的話,那麽將會被當作硬性限制處理。硬性限制是他們所能分配到的絕對最大限額,如果他們想要分配更多則這些檔案會被攔腰斬斷。
說明 blocks 的那一行是一個人所能分配的區塊數目,說明 inode 的那一行是一個人所能分配的索引節點 (files/named piple/devices/etc.) 數目。
全部都以相同的限額增加使用者
============================
到 homedir 所在的地方去。對其中一個使用者執行 edquota 並且將限額改換成適當的數值。這個使用者變成所有其他使用者或使用群的原形。然後這樣做:
# edquota -p <你以正確的限額編輯過的使用者> *
這樣應該可以執行這個技術,所有的使用者現在都有他們所需要的限額,現在你可以對還有其它需要的人進行編輯。
檢驗使用者的限額
================
執行 quota 程式。這個程式的語法是:
用法:
quota [-guqv]
quota [-qv] -u 使用者名稱...
quota [-qv] -g 使用群名稱...
用 -v 來查看 quotas 在
1) 你沒有設限額的檔案系統
2) 你已經設了限額但是目前還沒有分配任何區塊的檔案系統
用 -q 只查看那些你分配了超過你的軟性限制或已經達到你的硬性限制的檔案系統。
這 -g 旗標給你你所屬的使用群的所有限額(也包括附加的使用群)。
關掉對某個使用者的限額
======================
當你想要關掉對某個使用者的限額時用限額編輯器 edquota 。鍵入 "edquota 〈使用者名稱 uid〉" 或者 "edquota -g 〈使用群名稱 gid〉" 並且將區塊的軟性限制與硬性限制以及索引節點的軟性限制與硬性限制設成零。這樣應該可以關掉對這個使用者的限額而只要這個使用者想要,分配多少區塊或索引節點都可以。
在一個檔案性統上所有使用者所使用的限額列表
==========================================
你可以使用 repquota 程式來取得一份目前的檔案系統或任何檔案系統中所有被使用的限額列表。這個程式需要讀取 quotafiles 所以我需要以超級使用者來執行它或者如果你的 quotafiles 是任何人都可以讀取則任何使用者都可以執行。不建議這樣做。
在 NFS-mounted 磁碟上使用 quotas
================================
要在 NFS 檔案系統上使用 quota 你需要把 quota 安裝到檔案伺服器上而不是 client上。客戶機器可以藉由 quota 指令取得有關限額的資訊,它會對你掛上 NFS 磁碟的檔案伺服器的 rquotad 提出查詢。所以不要對掛上的 NFS 磁碟設置任何 usrquota 或者是 grpquota 旗標。而以在你的檔案伺服器安裝 quotas 來取代。並且從你的網路 rc檔案中啟動 rpc.rquotad 。
在一個檔案性統上所有使用者所使用的限額列表
==========================================
你可以使用 repquota 程式來取得一份目前的檔案系統或任何檔案系統中所有被使用的限額列表。這個程式需要讀取 quotafiles 所以我需要以超級使用者來執行它或者如果你的 quotafiles 是任何人都可以讀取則任何使用者都可以執行。不建議這樣做。
在 NFS-mounted 磁碟上使用 quotas
================================
要在 NFS 檔案系統上使用 quota 你需要把 quota 安裝到檔案伺服器上而不是 client上。客戶機器可以藉由 quota 指令取得有關限額的資訊,它會對你掛上 NFS 磁碟的檔案伺服器的 rquotad 提出查詢。所以不要對掛上的 NFS 磁碟設置任何 usrquota 或者是 grpquota 旗標。而以在你的檔案伺服器安裝 quotas 來取代。並且從你的網路 rc檔案中啟動 rpc.rquotad 。