unix限制使用者硬碟使用空間

polestar123發表於2009-03-04

限制使用者硬碟使用空間

UNIX作為一種多使用者系統,它允許多個使用者共同使用系統的資源,包括系統的記憶體,CPU和硬碟。在預設情況下,系統並不會限制每個使用者可以使用硬 盤空間的大小,所以如果使用者惡意使用硬碟,或使用者由於疏忽,將硬碟空間全部佔用,將導致其他使用者無法使用硬碟,從而使系統效能下降,甚至有崩潰的危險。

其實,UNIX提供的quota系列命令可以幫助我們解決這個問題,這些命令包括:
quota : 顯示使用者的硬碟限額和使用情況。
edquota : 為每個使用者設定硬碟限額。
quotaon: 啟動檔案系統硬碟限額服務
quotaoff : 關閉檔案系統硬碟限額服務
repquota : 顯示當前硬碟限額狀態
配置這項服務的方法很簡單。但在使用硬碟限額服務之前,我們要明白硬限制和軟限制這兩個概念。所謂硬限制是指對資源節點和資料塊的絕對限制,在任何情況下 都不允許使用者超過這個限制;而軟限制是指使用者可以在一定時間範圍內(預設時為一週,在/usr/include/sys/fs/ufs_quota.h文 件中設定)超過軟限制的額度,在硬限制的範圍內繼續申請資源,同時系統會在使用者登入時給出警告資訊和仍可繼續申請資源剩餘時間。如果達到時間期限,使用者的 硬碟使用仍超過軟限制的額度,則系統將不允許使用者再申請硬碟資源。

明白了這兩個概念,我們就可以配置硬碟限額服務了,首先我們必須在要限制的檔案系統的根目錄下建立一名字為quotas的檔案,該檔案的所有者應是root,且其它使用者不可以對它進行寫操作。方法是:
# cd /home (進入檔案系統根目錄,注意並不是系統根目錄,本例為/home目錄)
# touch quotas(建立一名字為quotas的空檔案)
# chmod 644 quotas (更改檔案屬性,使只有root可以對它進行寫操作)

然後,我們編輯/etc/vfstab檔案,找到要進行硬碟限額服務的檔案系統,並將
mount option欄位的值設為rq,然後並存檔退出。

完成這兩步後,我們使用edquota命令為每個使用者設定硬碟限額,在root許可權下輸入以下命令:
#edquota username
這時系統會自動生成一個臨時檔案,並且有如下內容:
fs /users blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
其中fs欄位表明使用硬碟限額的檔案系統,本例為/users,block和inodes表明使用者可以使用的硬碟千位元組數和I節點數,即使用者可使用的硬碟空間和可建立的檔案數,soft和hard分別對於前面提及的軟限制和硬限制。

編輯這個檔案,把軟,硬限制設定到合適的數值,然後存檔退出。這時我們可以看到quotas檔案的大小已經被改變,說明使用者的限額已經儲存。重複這 條命令,給每一個使用者都配置硬碟限額。另外,如果我們分配給使用者的硬碟限額都相同,我們可以使用 “-p” 引數而不用為每個使用者都編輯一個檔案,它的使用方法是:
#edquota -p reference-usernameusername

編輯完檔案後,我們就可以用quotaon來啟動服務了,在root許可權下輸入
#quotaon /users
就可以啟動限額服務。如果我們要檢視各個使用者的當前使用情況,可以使用
repquota 命令,在root許可權下輸入:
#repquota /users
系統會顯示:
。。。

從中我們可以很容易看到使用者的硬碟和檔案的使用情況以及超過軟限制後仍可申請資源的時間等等。

當然我們可以用quotaoff取消硬碟限額服務。另外,系統還提供quotacheck 命令對限額的一致性進行檢查。

[@more@]

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

相關文章