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

来源:http://www.cnblogs.com/xiaocheche/archive/2017/11/10/7816739.html
-Advertisement-
Play Games

1》什麼是Quota 在Linux中,由於是多用戶,多任務的環境,所以會有多用戶共同使用一個硬碟空間的情況發生,如果其中有少數幾個用戶大量占用掉了硬碟空間的話,那肯定影響其他用戶的使 用許可權,因此管理員應該適當限制硬碟的空間給用戶,以妥善分配系統資源,使磁碟的容量使用較為公平;舉例來說,我們用戶的默 ...


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限額設置; 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本篇文章主要介紹了"Spring+Redis集成+關係型資料庫持久化",主要涉及到Spring+Redis集成+關係型資料庫持久化方面的內容,對於Spring+Redis集成+關係型資料庫持久化感興趣的同學可以參考一下。上海尚學堂大數據培訓組原作spring文章,陸續大數據相關技術文章奉上,請多關註 ...
  • SQL Server 2008添加欄位成功顯示列名無效,SQL Server的intellisense完美解決問題! ...
  • 先簡單放一下用到的: MYSQL : 5.6版本 python3 powershell。 將csv導入mysql,主要就是用mysql的load data功能實現,其他前輩也都講得很清楚了,這裡簡單列一下語句(註意enclosed只有一個雙引號,此外‘忽略’那裡,rows表示的是列,lines表示的 ...
  • oracle資料庫管理系統常見的錯誤之一如下: Listener refused the connection with the following error:ORA-12519, TNS:no appropriate service handler foundThe Connection des ...
  • 一、Oracle資料庫操作 1、創建資料庫 create database databasename 2、刪除資料庫 drop database dbname 3、備份資料庫 完全備份 exp demo/demo@orcl buffer=1024 file=d:\back.dmp full=y de ...
  • SQL函數 coalesce 功能: 返回參數中第一個非null的值。 語法: coalesce(參數1,參數2,參數3,...);返回第一個非null的值。 一般情況下會與Nullif()函數一起使用。 ...
  • 1、獲取信息 2、篩選信息 3、整理數據 例如用Excel整理記憶體使用情況,這裡把獲取的時間和記憶體信息放在Excel內部,並把記憶體列用Excel分列,用時間和使用的記憶體大小列可以製作出一張記憶體使用趨勢圖;同理也可以製作CPU、cached及各個微服務的CPU和記憶體趨勢圖。 ...
  • Shell按行讀取文件的方法有很多,下麵寫出三種方法: 寫法一: 寫法二: 寫法三: 註:for迴圈讀行操作,與while讀行的區別 while是完全按行讀取,不管行內有多少段文字; for是按行讀取,如果行內文字有空格,則分開讀取,即一次讀取一個字元串。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...