歡迎您光臨本站 註冊首頁

Linux磁碟配額Quota配置詳解(1)

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  Quota一直就是個很有用的東西!怎麼說呢?舉個例子來說明,如果您曾經申請過網路的mail服務時,那麼肯定就會明白什麼是20MB的郵件空間、 30MB的免費網頁空間,好了,這個20MB,30MB是怎樣定義出來的呢?哈哈!沒錯,就是quota這個東西搞出來的!如果我們要限制用戶使用硬碟的 容量使用大小,嗯!來這裡看看就對了!

  什麼是quota

  『quota』就字面上的意思來看,呵呵!就是有多少『限額』的意思啦!如果是用在零用錢上面,就是類似『有多少零用錢一個月』的意思之類的.如果是在容量空間上面呢?以Linux來說,呵呵!就是有多少容量限制的意思.

  在Linux系統中,由於是多人多任務的環境,會有多人共同使用一個硬碟空間的情況發生,如果其中有少數幾個使用者大量的佔掉了硬碟空間的話,那勢必 壓縮其它使用者的使用權力!因此管理員應該適當的開放硬碟的許可權給使用者,以妥善的分配系統資源!避免有人抗議呀!舉例來說,我們使用者的預設家目錄都是 在/home底下,如果/home是個獨立的partition,他大概有10G好了,而/home底下共有30個人,也就是說,每個使用者平均應該會有 333MB的空間才對.偏偏有個使用者在他的家目錄底下塞了好多隻影片,佔掉了8GB的空間,想想看,是否造成其它正常使用者的不便呢?這個時候就得要靠 『quota』的幫忙了!

  Quota的一般用途

  quota比較常使用的幾個情況是:

  針對Web伺服器,例如:每個人的網頁空間的容量限制!

  針對Mail伺服器,例如:每個人的郵件空間限制.

  針對File伺服器,例如:每個人最大的可用網路硬碟空間.

  在Linux當中,使用來作為硬碟空間管理的就是所謂的quota這個東東啦!

  Quota的使用限制

  使用這個模塊要有幾個步驟,底下就分別說說吧!另外要特別注意的是,使用quota時有幾個基本的限制需要談一談:

  僅針對整個partition:

  quota實際在運作的時候,是針對『整個partition』進行限制的,例如:如果你的/dev/hda5是掛載在/home底下,那麼在/home底下的所有目錄都會受到限制!

  核心必須支持quota:

  Linux系統核心必須有支持quota這個模塊才行:如果您是使用FC4的預設核心,嘿嘿!那恭喜你了,你的系統已經預設有開放quota這個模塊啰! 如果您是自行編譯核心的,那麼請特別留意您是否已經『真的』開啟了quota這個模塊?至於核心編譯的過程我們會在未來進行說明!

  Quota的記錄文件:

  目前新版的Linux distributions如:Fedora Core 4與SuSE Server9等使用的是Kernel2.6.xx的核心版本,這個核心版本支持新的quota模塊,使用的預設檔案 (aquota.user,aquota.group)將不同於舊版本的quota.user,quota.group!(多了一個a!)而由舊版本的 quota可以藉由convertquota這個程序來轉換呢!

  只對一般身份使用者有效:

  這就有趣了!並不是所有在Linux上面的賬號都可以設定quota呢,例如root就不能設定quota,整個系統所有的數據幾乎都是他的!^_^

  quota這支程序對硬碟配額的限制項目:

  quota這個程序針對整個partition的限制項目主要分為底下幾個部分:

  soft:

  這是最低限制容量的意思,使用者在寬限期間之內,他的容量可以超過soft,但必需要寬限時間之內將磁碟容量降低到soft的容量限制之下!

  hard:

  這是『絕對不能超過』的容量!跟soft相比的意思為何呢?通常hardlimit會比softlimit為高,例如網路磁碟空間為30MB,那麼 hardlimit就設定為30MB,但是為了讓使用者有一定的警戒心,當使用空間超過25MB時,例如使用者使用了27MB的空間時,那麼系統就會 警告使用者,讓使用者可以在『寬限時間內』將他的檔案量降低至25MB(亦即是softlimit)之內!也就是說,soft到hard之間的容量其實就 是寬限的容量啦!可以達到針對使用者的『警示』作用!

  寬限時間:

  那麼寬限時間就可以很清楚的知道含意是什麼了!也就是當您的使用者使用的空間超過了softlimit,卻還沒有到達hardlimit時,那麼在這個 『寬限時間』之內,就必需要請使用者將使用的磁碟容量降低到softlimit之下!而當使用者將磁碟容量使用情況超過softlimit時,『寬限時 間』就會自動被啟動,而在使用者將容量降低到softlimit之下,那麼寬限時間就會自動的取消!

  基本的quota命令介紹

  在開始進行quota的實踐之前,我們得來了解一下quota要使用的指令!基本上分為兩種,一種是查詢功能(quota、quotacheck、 quotastats、warnquota、repquota),另一種則是編輯quota的內容(edquota、setquota).下面我們來談一 談這些基本的指令吧!

  /etc/mtab

  怪了!不是說好要說明quota相關指令的嗎?幹嘛提這個檔案系統(Filesystem)實際掛載的記錄文件?呵呵!要注意了~當我們使用quota的 時候,基本上,系統會去搜尋:『系統上具有quota參數的partition』啰,當我們要使用quota的功能時,我們的Filesystem必 須已經支持quota才行.一般來說,我們是以編輯/etc/fstab后,再重新掛載Filesystem的方法來讓系統的Filesystem支持 quota的!這個概念可是很重要的喔!^_^

  quota

  [root@linux~]# quota [-uvsl] [username]

  [root@linux~]# quota [-gvsl] [groupname]

  參數:

  -u :後面可以接username,表示顯示出該使用者的quota限制值.若不接username,表示顯示出執行者的quota限制值.

  -g :後面可接groupname,表示顯示出該群組的quota限制值.

  -v :顯示每個filesystem的quota值;

  -s :可選擇以inode或磁碟容量的限制值來顯示;

  -l :僅顯示出目前本機上面的filesystem的quota值.

  範例:

  範例一:秀出目前root自己的quota限制值:

  [root@linux~]# quota -guvs

  範例二:秀出dmtsai這個使用者的磁碟配額

  [root@linux~]# quota -vs -udmtsai

  注意一下這兩個範例,如果您的系統上面尚未有任何的quota支持的filesystem時,

  使用這兩個範例時,『不會有任何信息列出來』!不要以為發生錯誤了!

  這個命令僅是使用來『顯示(display)』目前某個群組或者某個使用者的 quota 限值!您可以使用來觀察一下!

  quotacheck

  [root@linux ~]# quotacheck [-avug] [/mount_point]

  參數:

  -a :掃瞄所有在/etc/mtab內,含有quota支持的filesystem,加上此參數后,/mount_point可不必寫,掃描所有的filesystem了嘛!

  -u :針對使用者掃描文件與目錄的使用情況,會建立aquota.user

  -g :針對群組掃描文件與目錄的使用情況,會建立aquota.group

  -v :顯示掃描過程的信息;

  -M :『強制』進行quotacheck的掃描.

  範例:

  範例一:將所有的在/etc/mtab內,含有quota支持的partition進行掃描

  [root@linux ~]# quotacheck -avug

  quotacheck: Can't find filesystem to check or filesystem not mounted with quota option.

  不要緊張,這是正常的現象~您尚未啟用quota的參數!

  關於quota參數的下達方法,我們會在稍後說明.如果正常的進行掃描,會像下面這樣:

  [root@linux ~]# quotacheck -avug

  quotacheck: Scanning /dev/hdb1 [/disk2] done

  quotacheck: Checked 3 directories and 4 files

  [root@linux ~]# ll /disk2

  total 32

  -rw------- 1 root root 6144 Sep 5 14:56 aquota.group

  -rw------- 1 root root 6144 Sep 5 14:56 aquota.user

  drwx------ 2 root root 16384 Jun 25 16:22 lost found

  第一次操作quotacheck可能會有一些錯誤訊息發生,那應該是正常的!

  如果使用ls -l去查閱一下有quota支持的那個mount point,若有出現aquota.group及aquota.user,那應該就是已經建立好了quota記錄文件了!

  範例二:強制掃描已掛載的filesystem

  [root@linux ~]# quotacheck -avug -m

  有些時候,在某些Linux distributions上面,進行quotacheck時,可能會出現如下的錯誤訊息:

  quotacheck: Cannot get quotafile name for /dev/hda3

  quotacheck: Cannot get quotafile name for /dev/hda3

  果真如此的話,那麼你可以如同上面一般,加上-m的參數來『強制』掃描.

  也可以手動先建立記錄文件,然後再掃描,如下所示:

  [root@linux ~]# touch /disk2/aquota.user; touch /disk2/aquota.group

  [root@linux ~]# quotacheck -avug

  必須要注意的是,我這裡是以/disk2作為一個測試的mount point,您的掛載點不一定會和範例一樣!

  這個命令主要的目的在掃描某一個磁碟的quota空間,他會針對該partitions進行掃描,並且,由於該磁碟若持續運作時,可能掃描的過程中,文件 可能會增減,造成quota掃描的錯誤發生,因此,當使用quotacheck時,該磁碟將『自動被設定成為只讀扇區(read-only)』;至於掃描 完畢之後,掃瞄所得的磁碟空間結果會寫入該扇區最頂端.(例如:在例子中,掃描/disk2這個/dev/hdb1的扇區,如果是初次掃描,那麼掃描完畢 之後會產生aquota.user與aquota.group,會放置在/disk2/aquota.user與/disk2/aquota.group 底下!而如果是建立quota后的掃描,那麼就會更新這兩個文件!)另外,Linux也特彆強調quota在使用的時候,需要特別注意在reboot時, 得先將quota關閉才好!

  此外,由於新版的Linux distribution在quota的設計上似乎有點小問題,有時候無法完整的進行quotacheck,發生如同上表的情況,解決的方法就是主動手動的建立quotafile即可!例如上面的範例二所顯示的.

  edquota

  [root@linux ~]# edquota [-u username] [-g groupname]

  [root@linux ~]# edquota -t <==修改寬限時間

  [root@linux ~]# edquota -p username_demo -u username

  參數:

  -u :後面接賬號名稱.可以進入quota的編輯畫面(vi)去設定username的限制值;

  -g :後面接群組名稱.可以進入 quota 的編輯畫面(vi)去設定groupname的限制值;

  -t :可以修改寬限時間(就是超過quota的soft limit值后,還能使用硬碟的寬限期限)

  -p :複製範本.那個username_demo為已經存在並且已設定好quota的使用者,

  意義為『將username_demo這個人的quota限制值複製給username』!

  範例:

  範例一:設定dmtsai這個用戶的quota限制值

  [root@linux ~]# edquota -u dmtsai

  Disk quotas for user dmtsai (uid 501):

  Filesystem blocks soft hard inodes soft hard

  /dev/hdb1 0 0 0 0 0 0

  進入編輯畫面后,以vi的相關行為進行編輯喔!

  我們可以看到被編輯的用戶是dmtsai,

  而下面共有七個欄位,每個欄位的意義我們將在底下的說明繼續介紹.而假設我們對於dmtsai的限制是30MB的話,那麼:

  Disk quotas for user dmtsai (uid 501):

  Filesystem blocks soft hard inodes soft hard

  /dev/hdb1 0 25000 30000 0 0 0

  然後就可以儲存后離開!

  範例二:將dmtsai的quota限制值(30MB)複製給vbird1這個用戶

  [root@linux ~]# edquota -p dmtsai -u vbird1

  範例三:修訂寬限時間

  [root@linux ~]# 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/hdb1 7days 7days

  預設的恕限時間是7天!你當然可以修訂時間!

  這個命令就是在編輯每一個『個人』或者是『群組』的quota數值!通常我們以edquota –u username或者是edquota -g groupname來編輯個人與群組的quota設定值.不過,或許您會覺得一個一個分配似乎很慢的樣子!那麼您也可以直接copy一個人的設定值給其它 人,就如同上面第二個例子,利用已經建立好的dmtsai來建立vbird1這個人的quota限額!這個指令可是很重要的呦!另外,範例一當中出現的那 七個欄位代表的意義我們得要談一談啊:

  filesystem:

  代表這個quota是針對哪一個partition的意思.以範例一的情況來說,指的是/dev/hdb1啰!也就是/disk2那個目錄底下的quota限制值啦!

  blocks:

  這個是目前使用者dmtsai(uid501)在/dev/hdb1這個filesystem(參考上面一個信息),所消耗的磁碟容量,也就是目前的使用掉的空間啦!單位是Kbytes喔!這個信息是quota程序自己計算出來的,請不要修改他!

  soft與hard:

  這個是目前的dmtsai使用者在這個filesystem之內的quota限制值!至於soft與hard的意思就如同前一節面提的那個意思 啦!soft代表的是一個『警告』限值,hard則是一個『不可超過的限值』,soft與hard中間的差值則為寬限的數值.而當soft與hard數值 為0的時候,表示『沒有限制』的意思!而數值的單位仍是Kbytes喔!

  inodes:

  是目前使用掉inode的狀態,也是quota自己計算出來而得到的,不要去變更他.一般而言,inode不容易控制,您可以不必去限制inode呢!

  quotaon

  [root@linux ~]# quotaon [-avug]

  [root@linux ~]# quotaon [-vug] [/mount_point]

  參數:

  -u :針對用戶啟動quota(aquota.user)

  -g :針對群組啟動 quota(aquota.group)

  -v :顯示啟動過程的相關訊息;

  -a :根據/etc/mtab內的filesystem設定啟動有關的quota,若不加-a的話,

  則後面就需要加上特定的那個filesystem!

  範例:

  範例一:啟動所有的具有quota的filesystem

  [root@linux ~]# quotaon -auvg

  /dev/hdb1 [/disk2]: group quotas turned on

  /dev/hdb1 [/disk2]: user quotas turned on

  範例二:僅啟動/disk2裡面的user quota設定值:

  [root@linux ~]# quotaon -uv /disk2

  這個命令是在啟動quota的!不過,由於這個指令是啟動aquota.group與aquota.user的,您就必須要先完成quotacheck的工作了!然後簡單的下達quotaon -a即可啟動!

  quotaoff

  [root@linux ~]# quotaoff [-a]

  [root@linux ~]# quotaoff [-ug] [/mount_point]

  參數:

  -a :全部的filesystem的quota都關閉(根據/etc/mtab)

  -u :僅針對後面接的那個/mount_point關閉user quota

  -g :僅針對後面接的那個/mount_point關閉group quota

  範例:

  範例一:

  [root@linux ~]# quotaoff -a

  這個命令就是關閉了quota的限制啦!


[火星人 ] Linux磁碟配額Quota配置詳解(1)已經有740次圍觀

http://coctec.com/docs/linux/show-post-51866.html