如何使用quota機制對用戶進行磁盤限額控制
Solaris中的quota機制是一個很有用的管理機制,它可以使系統管理員對用戶的磁盤使用限額進行有效地控制。可以控制的方式包括:限制用戶占用磁盤總容量限制用戶建立文件總數量限制某個文件系統中用戶文件的存在時間
使用quota機制時,要在需限額的各文件系統之主目錄下需事先建立quotas空文件(如無),然後使用edquota -v username命令修改指定用戶在該文件系統下的限制份額(0=無限制,單位為k),或該用戶在該文件系統下文件總個數限額。使用quotacheck命令使系統確認quotas中的新內容。最後使用quotaon命令使限額生效。檢查quota的狀態可以使用quota或repquota等命令。
前提:有多余的文件系統掛載或者對已經掛載的文件系統;本例是在ufs文件系統下實現。
下面舉一示例進行說明。示例中對用戶test在/eXPort/home 文件系統中的磁盤限額進行控制:編輯/etc/vfstab文件:#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/dsk/c0t0d0s1 - - swap - no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no - /dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes rq swap - /tmp tmpfs - yes -
然後進入要限制的文件系統:# cd /export/home # toUCh quotas ;如果該文件已經存在則不需要# edquota test ;edquota將自動啟動vi fs / blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
~這裡blocks是用戶磁盤的限額,單位為k.soft是警告額度,hard是限制額度。
如果用戶占用磁盤量超過警告額度,系統將在每次用戶進行磁盤操作或登錄時進行警告,要求用戶減少磁盤占用量至軟限制之下;如果用戶的操作會導致超過hard限制,那麼操作將失敗。
inodes是用戶文件數量,soft和hard的含義類似。
本例把該用戶的限額改變為:警告限制=1024K,硬限制=1024K. fs / blocks (soft = 1024, hard = 1024) inodes (soft = 0, hard = 0)
~;別忘存盤退出# quotacheck -a ;通知系統確認新的quota # quotaon /export/home ;打開quota機制# repquota -v /export/home ;顯示一下結果/dev/dsk/c0t0d0s0 (/):Block limits File limits User used soft hard timeleft used soft hard timeleft test —— 6 1024 1024 0 0 0
建立兩個試驗用的文件:# cd /tmp # mkfile 1000k a1000k # mkfile 1080k a1080k # chmod 666 a1000k # chmod 666 a1080k
# su - test Sun Microsystems Inc. SunOS 5.9 Generic May 2002 $ ls -l total 6 -rw-r——r—— 1 userq other 124 Mar 18 09:25 local.cshrc -rw-r——r—— 1 userq other 607 Mar 18 09:25 local.login -rw-r——r—— 1 userq other 582 Mar 18 09:25 local.profile $ cp /tmp/a1000k . $ cp /tmp/a1080k . quota_ufs: over hard disk limit (pid 1070, uid 1002, inum 371751, fs /)
cp: /tmp/a1080k: Disc quota exceeded
列目錄看看,第二個cp操作因超過硬限額而失敗。
$ ls -l total 2022 -rw-r——r—— 1 userq other 1024000 Mar 18 10:35 a1000k -rw-r——r—— 1 userq other 124 Mar 18 09:25 local.cshrc -rw-r——r—— 1 userq other 607 Mar 18 09:25 local.login -rw-r——r—— 1 userq other 582 Mar 18 09:25 local.profile $ exit
下面用edquota把test的硬限制改為2124後,再重復試驗(別忘quotacheck!):
……
$ cp /tmp/a1080k . quota_ufs: Warning: over disk limit (pid 1151, uid 1002, inum 371751, fs /)
列目錄看看,警告歸警告,可是操作還是成功了。
$ ls -l total 4198 -rw-r——r—— 1 userq other 1024000 Mar 18 10:35 a1000k -rw-r——r——
1 userq other 1105920 Mar 18 10:45 a1080k -rw-r——r—— 1 userq other 124 Mar 18 09:25 local.cshrc -rw-r——r—— 1 userq other 607 Mar 18 09:25 local.login -rw-r——r—— 1 userq other 582 Mar 18 09:25 local.profile $ exit