Linux磁盤配額,RAID,LVM
磁盤配額,就是妥善的分配系統資源
quota比較常用的情況
針對 www server 例如:每個人的網頁空間的容量限制
針對 mail server 例如:每個人的郵件空間限制
針對 file server 例如:每個人最大的可用網絡磁盤空間
quota的使用限制
僅針對整個文件系統:如果你的/dev/sda5是掛載在/home底下,那麼在/home底下的所在目錄都會受到限制
核心必須支持quota : 也就是說linux核心必須支持quota這個功能才行,而由舊版本的quota可以籍由convertquota這個程序來轉換
成新幫本的aquota的
只針對一般身份使用者有效:例如root就不能設定quota,因為整個系統的數據幾乎都是他的
所以不能針對【某個目錄】來進行quota的設計,但可以針對【某個文件系統】來設定,
quota的規范設定項目:quota針對整個文件系統的限制項目主要分為底下幾個部分‘
1可以管理inode(檔案數量)和block的數量(管理用戶磁盤容量的限制)
2柔性勸導與硬性規定(soft/hard) ,通常hard限制要比soft高,若限制項目為block,可以限制hard為500MBytes而soft為400MByte
hard代表硬性規定,絕對不允許超個的限制值,如若超過則系統會鎖住該用戶的磁盤使用權
soft 代表軟性規定,如果超過了軟性的限制,但是低於硬性的限制,每次用戶登錄系統時,系統會主動發出磁盤即將爆滿
的警告信息,且會給予一個寬限時間,不過,若使用者在寬限時間倒數期間將容量再次降低與soft限制之下,則寬限時間會停止
3會倒數計時的寬限時間 這個寬限時間用於磁盤用量在soft到hard之間時,才會出現,soft就是為了提醒用戶注意這個磁盤配額的問題
一般寬限時間為7天,如果7天內你都不進行任何磁盤管理,那麼soft限制值會即可取代hard限制來作為quota的限制,此時
你的磁盤使用權就會被封鎖住而無法新增檔案了
一個quota實例
有五個賬戶,且每個用戶的初始群組都是myquotagrp,其他的帳號屬性則使用默認值,每個用戶能夠使用300MBytes的磁盤使用量(hard)
250MBytes的磁盤使用量(soft),群組限制,針對myquotagrp這個群組最多僅能使用1GByte的容量,這個時候就會使群組的設定和用戶的
設定產生一定的問題,最後那個寬限時間為14天
在操作之前,先得查看一下,/home是否是一個獨立的filesystem
df -h /home,接著查看文件系統的類型,由於VFAT文件系統並不支持Linux Quota的功能,使用mount | grep home來查看/home的文件系統類型
接下來可以使用如下的方法加入quota的支持mount -o remount,usrquota,grpquota /home,接著再執行mount | grep home就可以看到這個文件系統上
已經加入usrquota,grpquota的支持到你所想要設定的系統中了,另外使用者與群組的quota文件系統支持的參數為: usrquota grpquota
若希望下次開機的時候自動的掛載該文件系統,可以直接修改/etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
mount -a 的意思是將fstab中的文件系統重新的掛載
接著建立quota記錄文件
使用quotacheck:掃描文件系統並建立Quota的記錄文件
quotacheck [-avugfM] [/mount_point]
選項和參數
-a :掃瞄所有在 /etc/mtab 內,含有 quota 支持的 filesystem,加上此參數後,
-u : 針對用戶掃描檔案與目錄的使用情況,會建立aquota.user
-g :針對群組掃描檔案與目錄的使用情況,會建立 aquota.group
-v :顯示掃瞄過程的信息;
-f :強制掃瞄文件系統,幵寫入新的 quota 配置文件 (危險)
-M :強制以讀寫的方式掃瞄文件系統,只有在特殊情況下才會使用。
quotacheck -avug僅針對整個系統含有usrquota, grpquota參數的文件系統進行quotacheck掃描
由於/home目錄支持usrquota和grpquota,所以搜索結果會將兩個記錄文件放在/home底下,這兩個檔案就是quota最重要的信息
因為特殊需求需要強制掃瞄已掛載的文件系統時,使用quotacheck -avug -mf
這兩個文件不是純文本,是quota自己的數據文件,且該檔案會一直變動,這個因為當你對/home這個文件系統進行操作時
你操作的結果會影響磁盤,所以當然會記載到這兩個檔案中的,所以要建立aquota.user 和 aquota.group 記得使用quotacheck指令
不要手動編輯
制作好quota配置文件,接著要啟動quota了,使用quotaon和quotaoff進行開啟和關閉
啟動quota的服務
-u :針對使用者啟動 quota (aquota.user)
-g :針對群組啟動 quota (aquota.group)
-v :顯示啟動過程的相關訊息;
-a :根據 /etc/mtab 內的 filesystem 設定啟動有關的 quota ,若不加 -a 的話, 則後面就需要加上特定的那個 filesystem 喔!
由於我們要啟動usr/group的quota,所以執行quotaon -avug ,由於只有在第一次啟動quota時才需要進行這個命令,因此等到下次重啟系統時
系統的/etc/rc.d/rc.sysinit這個初始化腳本就會自動的下達這個命令了,因此你只要在這次實例中進行一次即可,未來不需要自行啟動quota的
quotaoff :關閉 quota 的朋務
-a :全部的 filesystem 的 quota 都關閉 (根據 /etc/mtab)
-u :僅針對後面接的那個 /mount_point 關閉 user quota
-g :僅針對後面接的那個 /mount_point 關閉 group quota
edquota :編輯賬號/群組的限值與寬限時間
edquota [-u username] [-g groupname] -u進入quota的編輯頁面去設定username的限制值
edquota -t <==修改寬限時間 -g 可以進入quota的編輯頁面去設定groupname的限制值
edquota -p 范本賬號 -u 新賬號 將范本賬號這個人的quota限制值復制給新帳號,進入quota的編輯頁面去設定username的限制值
例如設定myquota1這個用戶的限額設定 執行命令edquota -u myquota1
畫面中的第一行為說明針對哪個帳號進行quota的限制設定,第二行則是標頭行,共分七個字段 1,文件系統或分區
2 磁盤容量(blocks) 3soft 磁盤容量(blocks) 4 hard block的hard限制值 5檔案數量 6 inode的soft限制值 7 inode的hard限制值
當 soft/hard 為 0 時,表示沒有限制的意思,
目前先設定號myquota1,接著執行 edquota -p myquota1 -u myquota2 賦給myquota2 一直到myquota5就行了
接著再設定去組 edquota -g myquotagrp ,最後edquota -t 來將寬限時間改為14天
查看限制值的報表 quota的報表主要有兩種模式,一種是針對每個個人或群組quota指令,一個是針對整個文件系統的
repquota指令,
先看quota : 單一用戶的quota報表
quota [-gvs] [groupname]
選項和參數:
-u : 後面可以接username,表示顯示該用戶的quota限制值,若不接username表示顯示出執行者的quota的限制值
-g : 後面可接 groupname ,表示顯示出該群組的 quota 限制值。
-v :顯示每個用戶在 filesystem 的 quota 值;
-s :使用 1024 為倍數來指定單位,會顯示如 M 之類的單位!
quota -uvs myquota1 myquota2的含義是顯示這兩個用戶在所以文件系統中的quota值,大小以M為單位顯示
顯示出 myquotagrp 的群組限額
quota -gvs myquotagrp 顯示這個群組在所有文件系統中的quota值,大小以M為單位顯示
如果要針對整個 filesystem 列出報表時, 那個可愛的 repquota 就派上用場啦!
repquota :針對文件系統的限額做報表
repquota -a [-vugs]
-a :直接到 /etc/mtab 搜尋具有 quota 標志的 filesystem ,並報告 quota 的結果;
-v :輸出的數據將含有 filesystem 相關的細部信息;
-u :顯示出用戶的 quota 限值 (這是默認值);
-g :顯示出個別群組的 quota 限值。
-s :使用 M, G 為單位顯示結果
查詢本案例中所有使用者的 quota 限制情況:
執行repquota -auvs,查詢出mtab中含有quota的文件系統的所有用戶的限定值,輸出的結果含有firstsystem相關的細部信息
並且以M,G為單位顯示結果
quota的測試與管理
首先建置一個270MB的大檔案,觀察結果
dd if=/dev/zero of=bigfile bs=1M count=250 接著會看到警告warning的訊息
repquota -auv 查看所有/etc/mtab文件系統中,用戶的磁盤配額的使用情況,並且將文件系統的相關細部信息一並輸出
此時看到grace出現,並且開始倒數了
此時再建立一個大檔案,讓總容量超過300M,接著看到的訊息不一樣了,提示沒有辦法寫入了,
du -sk 查看果然到了極限了
如果在寬限時間歸零之前不做任何處理,那麼到歸零之後通過repquota -au進行查看時,就會發現grace的部分變成none啦,不繼續倒數了
有時候使用者不知道系統出了什麼問題,最好寄一些警告信(email)給用戶比較妥當,透過warnquota來處理即可
warnquota :對超過限額者發出警告信
這是根據/etc/warnquota.conf的設定,然後找出系統上面quota用量超過soft的賬號,透過email的功能將警告信發送到用戶的電子郵件信箱
warnquota不會自動執行,我們需要手動執行,單純執行warnquota之後,他會發送兩封信出去,一封給root
一封給這個使用者
執行warnquota可能不會產生任何訊息以及信件,因為只有當使用者quota有超過soft,warnquota才會發送警告信
信件內容中,包括標題、信息內容說明、簽名文件等數據放在/etc/warnquota中,你也可以更改其中的內容
不過這個發送信件的方式並不適用在/var/spool/mail也爆掉的quota控管中,因為這個系統的容量已經爆掉了,那麼
新的信件當然就收不下來的,我們需要讓系統自動的執行warnquota
vi /etc/cron.daily/warnquota 編輯每天的執行任務,讓固定的時間去執行/usr/sbin/warnquota指令
chmod 755 /etc/cron.daily/warnquota
setquota :直接於指令中設定 quota 限額
如果你想要使用 script 的方法來建立大量的賬號,並且所有的賬號都在建立時就給予 quota
可以有兩個方法
1 先建立一個原始quota 使用 edquota -p quota賬號 -u new賬號, 寫入腳本中
2 直接以 setquota 建立用戶的 quota 設定值
不同於edquota是呼叫vi來進行設定,setquota直接由指令輸入所必須要的各項限制值
命令結構:
setquota [-u|-g] 名稱 block(soft) block(hard) inode(soft) inode(hard)
quota -uv myquota5
setquota -u myquota5 100000 200000 0 0 /home
quota -uv myquota5
這樣可以看到結果的改變
不更改既有系統的 quota 實例
例如設定郵件主機,原先沒有規劃將信箱所在的/var/spool/mail 目錄獨立成一個parition,那麼可以通過讓
使用者的郵件信箱與家目錄的總體磁盤使用量為固定,由於/home以及/var/spool/mail根本不在一個文件系統中
1. 將 /var/spool/mail 這個目錄完整的移懂到 /home 底下;
2. 利用 ln -s /home/mail /var/spool/mail 來建立鏈接數據;
3. 將 /home 進行 quota 限額設定