1. 程式人生 > >磁盤配額(Quota)的應用與實踐

磁盤配額(Quota)的應用與實踐

登錄系統 你是 查看 配額 vfat sda 希望 文件夾 影響

1》什麽是Quota

   在Linux中,由於是多用戶,多任務的環境,所以會有多用戶共同使用一個硬盤空間的情況發生,如果其中有少數幾個用戶大量占用掉了硬盤空間的話,那肯定影響其他用戶的使 用權限,因此管理員應該適當限制硬盤的空間給用戶,以妥善分配系統資源,使磁盤的容量使用較為公平;舉例來說,我們用戶的默認主文件夾都是在/home下面,如果/home是個 獨立的分區,假設這個分區有10G,而/home下面共有30個賬戶,也就是說,每個用戶平均應該會有333MB的空間才對,偏偏有個用戶在他的主文件夾下面下了好多電影,占用了 8G的空間,這樣會造成其他正常用戶的不便,如果想要讓磁盤的容量公平分配,這個時候就得要靠quota的幫忙;

    1>Quota的一般用途:quota比較常使用的幾個情況是:

       針對WWW Server:列如每個人的網頁空間的容量限制;

        針對MAIL Server: 例如每個人的郵件空間限制;

        針對FILE Server:列如每個人最大的可用網絡硬盤空間(教學環境中最常見);

      上面講的是針對網絡服務的設計,如果是針對Linux系統主機上面的設置,用途有下面這些:

         1)限制某一用戶組所能使用的最大磁盤配額(使用用戶組限制);

          2)限制某一用戶所能使用的最大磁盤配額(使用用戶限制);

         3)以Link的方式來使郵件可以作為限制的配額(更改/var/spool/mail這個路徑);

    2>Quota的使用限制:雖然quota很好用,但是使用上還是有些限制要先了解的;

          1)僅能針對整個文件系統:

              quota實際在運行的時候,是針對整個文件系統進行限制的,列如:如果你的/dev/sda5是掛載在/home下面,那麽在/home下面的所有目錄都會受到限 制;        

           2)內核必須支持quota:

               Linux內核必須支持quota這個功能才行,如果你是使用CentOS 5.x的默認內核,那你的系統已經默認支持quota這個功能,如果你是自行編譯內核 的,那麽請特別留意你是否已經真的打開了quota這個功能;

          3)Quota的日誌文件:

               目前新版的Linux操作系統使用的是Kernel 2.6.xx的內核版本,這個內核版本支持新的quota模塊,使用的默認文件(aquota.user,apuota.group)將 不同於舊版本的quota.user,quota.group,而由舊版本的quota可以通過convertquota這個程序來轉換;

          4)只對一般身份用戶有效:

                並不是所有在Linux上面的賬號都可以設置quota,列如root就不能設置quota,因為整個系統所有的數據幾乎都是它的,所以你不能針對某個目錄 來進行quota的設計,但你可以針對某個文件系統來設置;

    3>Quota的規範設置選項:quota針對整個文件系統的限制項目主要分為下面幾個部分:

          1)容量限制或文件數量限制:

                文件系統主要規劃為存放屬性的inode與實際文件數據的block塊,Quota既然是管理文件系統,所以當然可以管理inode或block,這兩個管理的功能 為:

                 限制inode用量:管理用戶可以新建的文件數量;

                 限制block用量:管理用戶磁盤容量的限制,較常見的為這種方式;

          2)soft/hard:

               既然是規範,當然就有限制值,不管是inode/block,限制值都有兩個,分別是soft與hard;通常hard限制值要比soft還要高,舉例來說,若限制項目 為block,可以限制hard為500MB,而soft為400MB,這兩個限制值的意義為:  

                hard:表示用戶的用量絕對不會超過這個限制值,以上面的設置為例,用戶所能使用的磁盤容量絕對不會超過500MB,若超過這個值則系統會鎖住 該用戶的磁盤使用權;

                soft:表示用戶在低於soft的限值時,可以正常使用磁盤,但若超過soft且低於hard的值時,每次用戶登錄系統時,系統會主動發出磁盤即將爆滿的 警告信息,且會給予一個寬限時間(gracetime),不過,若用戶在寬限時間倒數期間就將容量再次低於soft限值下,則寬限時間會停止;

          3)會倒計時的寬限時間(grace time)

                這個寬限時間只有在用戶的磁盤用量介於soft到hard之間時,才會出現且會倒數的一個時間,由於達到hard限值時,用戶的磁盤使用權可能會被鎖 住,為了擔心用戶沒有註意到這個磁盤配額的問題,因此設計了soft,當你的磁盤用量即將到達hard且超過soft時,系統會給予警告,但也會給一段時間 讓用戶自行管理磁盤,一般默 認的寬限時間為7天,如果7天內你都不進行任何磁盤管理,那麽soft限制值會即刻替代hard限值來作為quota的限值;

2》Quota實例:

    1>案例描述及創建用戶:

      目的與賬號:現在我們讓五個人為一組,這五個人的賬戶分別是myquota1,myquota2,myquota3,myquota4,myquota5,這五個用戶的密碼都是password,且這五個用戶所 屬的初始用戶組都是myquotagrp,其他的賬號屬性則使用默認值;

      賬號的磁盤容量限制值:我們想讓這五個用戶都能夠取得300MB的磁盤使用量(hard),文件數量則不予限制,此外,只要容量使用率超過250MB(soft),就予以警告 (soft);

      用戶組的限額:由於我的系統裏面還有其他用戶存在,因此我僅承認myquotagrp這個用戶組最多僅能使用1GB的容量,這也就是說,如果其中三個用戶都用了280MB的 容量,那麽其他兩人最多只能使用160MB的磁盤容量,這就是用戶組與用戶同時設置時會產生的結果;

      寬限時間的限制:最後,我們希望每個用戶在超過soft限制值之後,都還能夠有14天的寬限時間,

         創建用戶:

             技術分享

    2>文件系統支持:

          要使用Quota必須要內核與文件系統支持才行,我們已經使用了默認支持Quota的內核,那麽接下來就是要啟動文件系統的支持,不過由於Quota僅針對整個文 件系統來進行規劃,所以我們得先查一下/home是否是個獨立的文件系統;此外,由於VFAT文件系統並不支持Linux Quota功能,所以我們必須查詢一下/home的文件 系統,看看是否是ext2/ext3,這樣才能夠支持quota功能;

           技術分享

         1)如果只是想要在這次開機中實驗Quota,那麽可以使用如下的方式來手動加入quota的支持:

              技術分享 

          2)事實上,當你重新掛載時,系統會同步更新/etc/mtab這個文件,所以我們必須確定/etc/mtab已經加入usrquota,grpquota的支持到你所想要設置的文件系統 中,另外也要強調用戶與用戶組的quota文件系統支持參數分別是usrquota和grpquota,千萬不可寫錯了,不過手動掛載的數據在下次重新掛載時就會消失,因 此最好寫入配置文件中,直接修改/etc/fstab;

               技術分享

    3>新建Quota配置文件:

          其實Quota是通過分析整個文件系統中每個用戶(用戶組)擁有的文件總數與總容量,再將這些數據記錄在該文件系統的最頂層目錄,然後在該配置文件中再 使用每個賬號(或用戶組)的限制值去規定磁盤使用量的,所以構建這個Quota配置文件就非常重要了,掃描有支持Quota參數(usrquota,grpquota)的文件系統,就 使用quotacheck這個命令,此命令語法如下:

        quotacheck [-avugfM] [/mount_point]

        參數:

             -a: 掃描所有在/etc/mtab內,含有quota支持的文件系統,加上此參數後,/mount_point可以不必寫,因為掃描所有的文件系統了;

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

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

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

             -f:強制掃描文件系統,並寫入新的quota配置文件(危險);

             -M:強制以讀寫的方式掃描文件系統,只有在特殊情況下才會使用;

            技術分享    

    4>Quota啟動,關閉與限制值設置

         制作好quota配置文件後,接下來就是要啟動quota了,啟動的方式很簡單,使用quotaon,至於關閉就用quotaoff即可;

      quotaon [-vug] [/mount_point]

      參數:

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

        -g:針對用戶組啟動quota(quota.group)

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

        -a:根據/etc/mtab內的文件系統設置啟動有關的quota,若不加-a的話,則後面就需要加上特定的那個文件系統;

       因為我們需要啟動user/group的quota,所以使用下面的語法:

          技術分享

       特殊用法,假如你要啟動/var的quota支持,那麽僅啟動user quota時:

          #quotaon -uv /var

            這個"quotaon -avug"的命令幾乎只在第一次啟動quota時才需要進行,因為下次等你重新啟動系統時,系統的/etc/rc.d/rc.sysinit這個初始化腳本就會自動的執 行這個命令了,因此你只要在這次實例中進行一次即可,將來都不需要自行啟動quota;  

       quotaoff:關閉quota服務

       quotaoff [-a]

       quotaoff [-ug] [/mount_point]

       參數:

          -a:全部的文件系統的quota都關閉(根據/etc/mtab);

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

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

      edquota:編輯賬號/用戶組的限值與寬限時間,edquota是editquota的縮寫,所以就是用來編輯用戶或者是用戶組限額的命令;

      edquota [-u username] [-g groupname]

      edquota -t 修改寬限時間;

      edquota -p 範本賬號 -u 新賬號

        參數:

           -u:後面接賬號名稱,可以進入quota的編輯界面去設置username的限值;

          -g:後面接組名,可以進入quota的編輯界面去設置groupname的限值;

          -t:可以修改寬限時間;

          -p:復制範本,那個範本賬號為已經存在並且已設置好quota的用戶;意義為將範本賬號這個人的quota限值復制給新賬號;

        設置用戶myquota1的限值:

             技術分享

        七個字段的意義分別為:

            文件系統:說明該限值時針對哪個文件系統的;

            磁盤容量:這個數值是quota自己算出來的,單位為KB,不要修改它;

            soft:磁盤容量(block)的soft限值,單位為KB;

            hard:block的hard限值,單位為KB;

            文件數量:這是quota自己算出來的,單位 為個數,不要修改;

            soft:inode的soft限值;

            hard:inode的hard限值;

        *******當soft/hard為0時,表示沒有限制的意思;

         設置其他用戶的限值:

              技術分享

         設置用戶組的限額:

               技術分享

         將寬限時間改為14天:

              技術分享

    5>Quota限制值的報表:

          quota的報表主要有兩種模式,一種是針對每個個人或用戶組的quota命令,一個是針對整個文件系統的repquota命令,

        1)quota:單一用戶的quota報表;

             quota [-uvs] [username]

             quota [-gvs] [groupname]

           參數:

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

             -g:後面可接groupname,表示顯示出該用戶的quota限值;

             -v:顯示每個用戶在文件系統中的quota值;

             -s:使用1024為倍數來指定單位,會顯示如M之類的單位;    

                技術分享     

        2)repquota:針對文件系統的限額做報表;

          repquota -a [-vugs]

          參數:

             -a:直接到/etc/mtab查詢具有quota標誌的文件系統,並報告quota的結果;

             -v:輸出的數據將含有文件系統相關的詳細信息;

             -u:顯示出用戶的quota限值(這是默認值);

             -g:顯示出個別用戶組的quota限值;

             -s:使用M,G為單位顯示結果;

          查詢本例中所有用戶的quota限制情況:

             技術分享            

          

     6>測試與管理:

          1)利用myquota1的身份,創建一個270MB的大文件,並查看quota結果;

                技術分享

                技術分享

          2)再創建另外一個大文件,讓總容量超過300MB;

               技術分享        

          3)warnquota:對超過限額這發出警告信:

                此命令可以依據/etc/warnquota.conf的設置,然後找出目前系統上面quota用量超過soft的賬號,通過Email的功能將警告信件發送到用戶的電子郵 件信箱,warnquota並不會自動執行,所以我們需要手動去執行,執行之後它會發送兩封信出去,一封給myquota1,一封給root;

             可以進入/var/spoll/mail中查看:

                  技術分享

          可以在/etc/warnquota.conf文件中更改提示信息,改成中文也行;

         4)setquota:直接於命令中設置quota限額;

           setquota [-u|-g] 名稱 block (soft) block(hard) inode(soft) inode(hard) 文件系統

           查看原始的myquota5限值,並給予soft/hard 分別為100000/200000:

               技術分享

3》不改動既有系統的Quota實例:

       如果你的主機原先沒有想到要設置成為郵件主機,所以並沒有規劃將郵件信箱所在的/var/spool/mail目錄獨立成為一個分區,然後目前你的主機已經沒有辦法新增或分 出任何新的分區了,我們知道quota是針對整個文件系統進行設計的,因此你是否就無法針對mail的使用量給予quota的限制呢;此外,如果你想要讓用戶的郵件信箱與主文件 夾的總體磁盤使用量為固定,那又該如何是好,由於/home及/var/spool/mail根本不可能是同一個文件系統(除非是都不分區,使用根目錄,才有可能整合在一起),所以該如 何進行這樣的quota限制呢?

       其實沒有那麽難,既然quota是針對整個文件系統來進行限制,假設你又已經有/home這個獨立的分區了,那麽你只要:

        1)將/var/spool/mail這個目錄完整地移動到/home下面;

        2)利用ln -s /home/mail /var/spool/mail 來新建連接數據;

        3)將/home進行quota限額設置; 

磁盤配額(Quota)的應用與實踐