【BASH】回顧與知識點梳理(二十七)

【BASH】回顧與知識點梳理 二十七

    • 二十七. 磁盤配額(Quota)
      • 27.1 磁盤配額 (Quota) 的應用與實作
        • 什么是 Quota
        • Quota 的一般用途
        • Quota 的使用限制
        • Quota 的規范設定項目
      • 27.2 一個 XFS 文件系統的 Quota 實作范例
        • 實作 Quota 流程:設定賬號
        • 實作 Quota 流程-1:文件系統的支持與觀察
        • 實作 Quota 流程-2:觀察 Quota 報告資料
        • 實作 Quota 流程-3:限制值設定方式
        • 實作 Quota 流程-4:project 的限制 (針對目錄限制) (Optional)
      • 27.3 XFS quota 的管理與額外指令對照表
      • 27.4 不更動既有系統的 quota 實例

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

二十七. 磁盤配額(Quota)

如果您的 Linux 服務器有多個用戶經常存取數據時,為了維護所有用戶在硬盤容量的公平使用,磁盤配額 (Quota) 就是
一項非常有用的工具!另外,如果你的用戶常常抱怨磁盤容量不夠用,那么更進階的文件系統就得要學習學習。

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

Quota 這個玩意兒就字面上的意思來看,就是有多少『限額』的意思啦!如果是用在零用錢上面, 就是類似『有多少零用錢一個月』的意思之類的。如果是在計算機主機的磁盤使用量上呢?以 Linux 來說,就是有多少容量限制的意思啰。我們可以使用 quota 來讓磁盤的容量使用較為公平, 底下我們會介紹什么是 quota ,然后以一個完整的范例來介紹 quota 的實作喔!

什么是 Quota

在 Linux 系統中,由于是多人多任務的環境,所以會有多人共同使用一個硬盤空間的情況發生, 如果其中有少數幾個使用者大量的占掉了硬盤空間的話,那勢必壓縮其他使用者的使用權力! 因此管理員應該適當的限制硬盤的容量給用戶,以妥善的分配系統資源!避免有人抗議呀!

舉例來說,我們用戶的默認家目錄都是在 /home 底下,如果 /home 是個獨立的 partition , 假設這個分區槽有 10G 好了,而 /home 底下共有 30 個賬號,也就是說,每個用戶平均應該會有 333MB 的空間才對。 偏偏有個用戶在他的家目錄底下塞了好多只影片,占掉了 8GB 的空間,想想看,是否造成其他正常使用者的不便呢? 如果想要讓磁盤的容量公平的分配,這個時候就得要靠 quota 的幫忙啰

Quota 的一般用途

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

  • 針對 WWW server ,例如:每個人的網頁空間的容量限制!
  • 針對 mail server,例如:每個人的郵件空間限制。
  • 針對 file server,例如:每個人最大的可用網絡硬盤空間 (教學環境中最常見!)

上頭講的是針對網絡服務的設計,如果是針對 Linux 系統主機上面的設定那么使用的方向有底下這一些:

  • 限制某一群組所能使用的最大磁盤配額 (使用群組限制):
    你可以將你的主機上的用戶分門別類,有點像是目前很流行的付費與免付費會員制的情況, 你比較喜好的那一群的使用配額就可以給高一些!呵呵! ^_^
  • 限制某一用戶的最大磁盤配額 (使用用戶限制):
    在限制了群組之后,你也可以再繼續針對個人來進行限制,使得同一群組之下還可以有更公平的分配!
  • 限制某一目錄 (directory, project) 的最大磁盤配額針對目錄限制):
    在舊版的 CentOS 當中,使用的預設文件系統為 EXT 家族,這種文件系統的磁盤配額主要是針對整個文件系統來處理,所以大多針對『掛載點』進行設計。 新的 xfs 可以使用 project 這種模式,就能夠針對個別的目錄 (非文件系統喔) 來設計磁盤配額耶!超棒的!

大概有這些實際的用途啦!基本上,quota 就是在回報管理員磁盤使用率以及讓管理員管理磁盤使用情況的一個工具就是了! 比較特別的是,XFS 的 quota 是整合到文件系統內,并不是其他外掛的程序來管理的,因此,透過 quota 來直接回報磁盤使用率,要比 unix 工具來的快速! 舉例來說, du 這東西會重新計算目錄下的磁盤使用率,但 xfs 可以透過 xfs_quota 來直接回報各目錄使用率,速度上是快非常多!

查看預設文件系統,筆者有兩臺服務器,一臺是centos,另一臺是ubuntu,可以看到預設的文件系統是不同的

[root@node-135 ~]# df -T
Filesystem              Type     1K-blocks     Used Available Use% Mounted on
..
/dev/mapper/centos-root xfs       28289540 12538576  15750964  45% /
/dev/sda1               xfs        1038336   185460    852876  18% /boot
...
test@linux-qianxc:~$ df -T
文件系統       類型         1K-塊      已用      可用 已用% 掛載點
...
/dev/sdb1      ext4     480588496 349458784 106694104   77% /
...

Quota 的使用限制

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

  • 在 EXT 文件系統家族僅能針對整個 filesystem
  • 核心必須支持 quota
  • 只對一般身份使用者有效
  • 若啟用 SELinux,非所有目錄均可設定 quota,quota 似乎僅能針對 /home 進行設定而已

不同的文件系統在 quota 的處理情況上不太相同,因此這里要特別強調,進行 quota 前,先確認你的文件系統吧!

Quota 的規范設定項目

quota 這玩意兒針對 XFS filesystem 的限制項目主要分為底下幾個部分:

  • 分別針對用戶、群組或個別目錄 (user, group & project)
    XFS 文件系統的 quota 限制中,主要是針對群組、個人或單獨的目錄進行磁盤使用率的限制!

  • 容量限制或文件數量限制 (block 或 inode):
    文件系統主要規劃為存放屬性的 inode 與實際文件數據的block 區塊,Quota 既然是管理文件系統,所以當然也可以管理 inode 或 block 啰! 這兩個管理的功能為:

    • 限制 inode 用量:可以管理使用者可以建立的『文件數量』
    • 限制 block 用量:管理用戶磁盤容量的限制,較常見為這種方式
  • 柔性勸導與硬性規定 (soft/hard):
    這個設定和ulimit很相似
    既然是規范,當然就有限制值。不管是 inode/block ,限制值都有兩個,分別是 soft 與 hard。 通常 hard 限制值要比 soft 還要高。舉例來說,若限制項目為 block ,可以限制 hard 為 500MBytes 而 soft 為 400MBytes。這兩個限值的意義為:

    • hard:表示使用者的用量絕對不會超過這個限制值,以上面的設定為例, 用戶所能使用的磁盤容量絕對不會超過 500Mbytes ,若超過這個值則系統會鎖住該用戶的磁盤使用權;
    • soft:表示使用者在低于 soft 限值時 (此例中為 400Mbytes),可以正常使用磁盤,但若超過 soft 且低于 hard 的限值 (介于 400~500Mbytes 之間時),每次用戶登入系統時,系統會主動發出磁盤即將爆滿的警告訊息,且會給予一個寬限時間 (grace time)。不過,若使用者在寬限時間倒數期間就將容量再次降低于 soft 限值之下,則寬限時間會停止。
  • 會倒數計時的寬限時間 (grace time):
    這個寬限時間只有在用戶的磁盤用量介于 soft 到 hard 之間時,才會出現且會倒數的一個咚咚! 由于達到 hard 限值時,用戶的磁盤使用權可能會被鎖住。為了擔心用戶沒有注意到這個磁盤配額的問題, 因此設計了 soft 。當你的磁盤用量即將到達 hard 且超過 soft 時,系統會給予警告,但也會給一段時間讓用戶自行管理磁盤。 一般預設的寬限時間為七天,如果七天內你都不進行任何磁盤管理,那么 soft 限制值會即刻取代 hard 限值來作為 quota 的限制。
    在這里插入圖片描述

27.2 一個 XFS 文件系統的 Quota 實作范例

坐而言不如起而行啊,所以這里我們使用一個范例來設計一下如何處理 Quota 的設定流程。

  • 目的與賬號:現在我想要讓我的專題生五個為一組,這五個人的賬號分別是 myquota1, myquota2, myquota3, myquota4, myquota5,這五個用戶的密碼都是 password ,且這五個用戶所屬的初始群組都是 myquotagrp 。其他的賬號屬性則使用默認值。
  • 賬號的磁盤容量限制值:我想讓這五個用戶都能夠取得 300MBytes 的磁盤使用量(hard),文件數量則不予限制。 此外,只要容量使用率超過 250MBytes ,就予以警告 (soft)。
  • 群組的限額 (option 1):由于我的系統里面還有其他用戶存在,因此我僅承認 myquotagrp 這個群組最多僅能使用 1GBytes 的容量。這也就是說,如果 myquota1, myquota2, myquota3 都用了 280MBytes 的容量了,那么其他兩人最多只能使用 (1000MB - 280x3 = 160MB) 的磁盤容量啰!這就是使用者與群組同時設定時會產生的后果。
  • 共享目錄限額 (option 2):另一種設定方式,每個用戶還是具有自己獨立的容量限止,但是這五個人的專題共享目錄在 /home/myquota 這里,該目錄請設定為其他人沒有任何權限的共享目錄空間,僅有 myquotagrp群組擁有全部的權限。 且無論如何,該目錄最多僅能夠接受500MBytes 的容量。請注意,群組 (group) 的限制與目錄 (directory/project) 無法同時并存喔! 所以底下的流程中,我們會先以群組來設計,然后再以目錄限制來進一步說明!
  • 寬限時間的限制:最后,我希望每個使用者在超過 soft 限制值之后,都還能夠有 14 天的寬限時間。

好了,那你怎么規范賬號以及相關的 Quota 設定呢?首先,在這個小節我們先來將賬號相關的屬性、參數及其他環境搞定再說吧!

實作 Quota 流程:設定賬號

# 制作賬號環境時,由于有五個賬號,因此鳥哥使用 script 來建立環境!
[root@study ~]# vim addaccount.sh
#!/bin/bash
# 使用 script 來建立實驗 quota 所需的環境
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
useradd -g myquotagrp $username
echo "password" | passwd --stdin $username
done
mkdir /home/myquota
chgrp myquotagrp /home/myquota
chmod 2770 /home/myquota
[root@study ~]# sh addaccount.sh

接下來,就讓我們來實作 Quota 的練習吧!

實作 Quota 流程-1:文件系統的支持與觀察

不要在根目錄底下進行 quota 設計喔!因為文件系統會變得太復雜!因此,底下我們是以 /home 這個 xfs 文件系統為例的! 當然啦,首先就是要來檢查看看!

[root@study ~]# df -hT /home
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-home xfs 5.0G 67M 5.0G 2% /home 

從上面的數據來看,鳥哥這部主機的 /home 確實是獨立的 filesystem,而且確實是使用了 xfs 文件系統!所以可以使用底下的流程啰! 此外,由于 VFAT 文件系統并不支持 Linux Quota 功能,所以我們得要使用 mount 查詢一下 /home 的文件系統為何才行啊!

在過去的版本中,管理員似乎可以透過mount -o remount的機制來重新掛載啟動 quota 的功能,不過 XFS 文件系統的 quota 似乎是在掛載之初就宣告了, 因此無法使用 remount 來重新啟動 quota 功能,一定得要寫入 /etc/fstab 當中,或者是在初始掛載過程中加入這個項目, 否則不會生效喔!那就來瞧瞧鳥哥改了 fstab 成為怎樣吧!

[root@study ~]# vim /etc/fstab
/dev/mapper/centos-home /home xfs defaults,usrquota,grpquota 0 0
# 其他項目鳥哥并沒有列出來!重點在于第四字段!于 default 后面加上兩個參數!
[root@study ~]# umount /home
[root@study ~]# mount -a
[root@study ~]# mount | grep home
/dev/mapper/centos-home on /home type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

基本上,針對 quota 限制的項目主要有三項,如下所示:

  • uquota/usrquota/quota:針對使用者賬號的設定
  • gquota/grpquota:針對群組的設定
  • pquota/prjquota:針對單一目錄的設定,但是不可與 grpquota 同時存在!

還是要再次的強調,修改完 /etc/fstab 后,務必要測試一下!若有發生錯誤得要趕緊處理! 因為這個文件如果修改錯誤,是會造成無法開機完全的情況啊!切記切記!最好使用 vim 來修改啦! 因為會有語法的檢驗,就不會讓你寫錯字了!此外,由于一般用戶的家目錄在 /home 里面,因此針對這個項目的卸除時, 一定要將所有一般賬號的身份注銷,否則肯定無法卸除喔!留意留意!

實作 Quota 流程-2:觀察 Quota 報告資料

制作文件系統支持之后,當然得要來瞧一瞧到底有沒有正確的將 quota 的管理數據列出來才好!這時我們得要使用 xfs_quota 這個指令才行!這個指令真的是挺復雜的,因為全部的 quota 實作都是這個指令耶!所以里面的參數有夠多! 不過稍微觀察一下即可!先讓我們來談談觀察目前 quota 的報告內容吧!

[root@study ~]# xfs_quota -x -c "指令" [掛載點]
選項與參數:
-x :專家模式,后續才能夠加入 -c 的指令參數喔!
-c :后面加的就是指令,這個小節我們先來談談數據回報的指令指令:print :單純的列出目前主機內的文件系統參數等資料df :與原本的 df 一樣的功能,可以加上 -b (block) -i (inode) -h (加上單位) 等report:列出目前的 quota 項目,有 -ugr (user/group/project)-bi 等資料state :說明目前支持 quota 的文件系統的信息,有沒有起動相關項目等
# 范例一:列出目前系統的各的文件系統,以及文件系統的 quota 掛載參數支持
[root@study ~]# xfs_quota -x -c "print"
Filesystem Pathname
/ /dev/mapper/centos-root
/srv/myproject /dev/vda4
/boot /dev/vda2
/home /dev/mapper/centos-home (uquota, gquota) # 所以這里就有顯示支持啰# 范例二:列出目前 /home 這個支持 quota 的載點文件系統使用情況
[root@study ~]# xfs_quota -x -c "df -h" /home
Filesystem Size Used Avail Use% Pathname
/dev/mapper/centos-home5.0G 67.0M 4.9G 1% /home
# 如上所示,其實跟原本的 df 差不多啦!只是會更正確就是了。# 范例三:列出目前 /home 的所有用戶的 quota 限制值
[root@study ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 	4K 		0 	0 	00 [------] 4 	0 	0 	00 [------]
dmtsai 34.0M 0 		0 	00 [------] 432 0 	0 	00 [------]
.....(中間省略).....
myquota1 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota2 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota3 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota4 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
myquota5 12K 0 		0 	00 [------] 7 	0 	0 	00 [------]
# 所以列出了所有用戶的目前的文件使用情況,并且列出設定值。注意,最上面的 Block
# 代表這個是 block 容量限制,而 inode 則是文件數量限制喔。另外,soft/hard 若為 0,代表沒限制# 范例四:列出目前支持的 quota 文件系統是否有起動了 quota 功能?
[root@study ~]# xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home)Accounting: ON # 有啟用計算功能Enforcement: ON # 有實際 quota 管制的功能Inode: #1568 (4 blocks, 4 extents) # 上面四行說明的是有激活 user 的限制能力
Group quota state on /home (/dev/mapper/centos-home)Accounting: ONEnforcement: ONInode: #1569 (5 blocks, 5 extents) # 上面四行說明的是有激活 group 的限制能力
Project quota state on /home (/dev/mapper/centos-home)Accounting: OFFEnforcement: OFFInode: #1569 (5 blocks, 5 extents) # 上面四行說明的是 project 并未支持
Blocks grace time: [7 days 00:00:30] # 底下則是 grace time 的項目
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]

在默認的情況下, xfs_quota 的 report 指令會將支持的 user/group/prject 相關數據列出來,如果只是想要某個特定的項目, 例如我們上面要求僅列出用戶的數據時,就在 report 后面加上-u(-g,-p)即可喔!這樣就能夠觀察目前的相關設定信息了。 要注意,限制的項目有 block/inode 同時可以針對每個項目來設定 soft/hard 喔!接下來實際的設定看看吧!

實作 Quota 流程-3:限制值設定方式

確認文件系統的 quota 支持順利啟用后,也能夠觀察到相關的 quota 限制,接下來就是要實際的給予用戶/群組限制啰! 回去瞧瞧,我們需要每個用戶 250M/300M 的容量限制,群組共 950M/1G 的容量限制,同時 grace time 設定為 14 天喔! 實際的語法與設定流程來瞧瞧:

[root@study ~]# xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"
[root@study ~]# xfs_quota -x -c "timer [-ug] [-bir] Ndays"
選項與參數:
limit :實際限制的項目,可以針對 user/group 來限制,限制的項目有bsoft/bhard : block 的 soft/hard 限制值,可以加單位isoft/ihard : inode 的 soft/hard 限制值name : 就是用戶/群組的名稱啊!
timer :用來設定 grace time 的項目喔,也是可以針對 user/group 以及 block/inode 設定
# 范例一:設定好用戶們的 block 限制值 (題目中沒有要限制 inode 啦!)
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota1" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota2" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota3" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota4" /home
[root@study ~]# xfs_quota -x -c "limit -u bsoft=250M bhard=300M myquota5" /home
[root@study ~]# xfs_quota -x -c "report -ubih" /home
User quota on /home (/dev/mapper/centos-home)Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquota1 12K 250M 300M 00 [------] 7 0 0 00 [------]# 范例二:設定好 myquotagrp 的 block 限制值
[root@study ~]# xfs_quota -x -c "limit -g bsoft=950M bhard=1G myquotagrp" /home
[root@study ~]# xfs_quota -x -c "report -gbih" /home
Group quota on /home (/dev/mapper/centos-home)Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotagrp 60K 950M 1G 00 [------] 36 0 0 00 [------]# 范例三:設定一下 grace time 變成 14 天吧!
[root@study ~]# xfs_quota -x -c "timer -ug -b 14days" /home
[root@study ~]# xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)
.....(中間省略).....
Blocks grace time: [14 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]# 范例四:以 myquota1 用戶測試 quota 是否真的實際運作呢?
[root@study ~]# su - myquota1
[myquota1@study ~]$ dd if=/dev/zero of=123.img bs=1M count=310
dd: error writing ‘123.img’: Disk quota exceeded
300+0 records in
299+0 records out
314552320 bytes (315 MB) copied, 0.181088 s, 1.7 GB/s
[myquota1@study ~]$ ll -h
-rw-r--r--. 1 myquota1 myquotagrp 300M Jul 24 21:38 123.img
[myquota1@study ~]$ exit
[root@study ~]# xfs_quota -x -c "report -ubh" /home
User quota on /home (/dev/mapper/centos-home)Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquota1 300M 250M 300M 00 [13 days]
myquota2 12K 250M 300M 00 [------]
# 因為 myquota1 的磁盤用量已經破表,所以當然就會出現那個可怕的 grace time 啰!

實作 Quota 流程-4:project 的限制 (針對目錄限制) (Optional)

這個項目不可以跟group 同時設定喔! 因此我們得要取消 group 設定并且加入 project 設定才行。

  • 修改 /etc/fstab 內的文件系統支持參數
    首先,要將 grpquota 的參數取消,然后加入 prjquota ,并且卸除 /home 再重新掛載才行!那就來測試看看!
# 1. 先修改 /etc/fstab 的參數,并啟動文件系統的支持
[root@study ~]# vim /etc/fstab
/dev/mapper/centos-home /home xfs defaults,usrquota,<grpquota刪除>, prjquota 0 0
# 記得, grpquota 與 prjquota 不可同時設定喔!所以上面刪除 grpquota 加入 prjquota
[root@study ~]# umount /home
[root@study ~]# mount -a
[root@study ~]# xfs_quota -x -c "state"
User quota state on /home (/dev/mapper/centos-home)Accounting: ONEnforcement: ONInode: #1568 (4 blocks, 4 extents)
Group quota state on /home (/dev/mapper/centos-home)Accounting: OFF <==已經取消啰!Enforcement: OFFInode: N/A
Project quota state on /home (/dev/mapper/centos-home)Accounting: ON <==確實啟動啰!Enforcement: ONInode: N/A
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
  • 規范目錄、項目名稱(project)與項目 ID
    目錄的設定比較奇怪,他必須要指定一個所謂的『項目名稱、項目標識符』來規范才行!而且還需要用到兩個配置文件! 這個讓鳥哥覺得比較怪一些就是了。現在,我們要規范的目錄是/home/myquota 目錄,這個目錄我們給個 myquotaproject 的項目名稱, 這個專案名稱給個 11 的標識符,這個都是自己指定的,若不喜歡就自己指定另一個吧!鳥哥的指定方式如下:
# 2.1 指定項目標識符與目錄的對應在 /etc/projects
[root@study ~]# echo "11:/home/myquota" >> /etc/projects
# 2.2 規范專案名稱與標識符的對應在 /etc/projid
[root@study ~]# echo "myquotaproject:11" >> /etc/projid
# 2.3 初始化專案名稱
[root@study ~]# xfs_quota -x -c "project -s myquotaproject"
Setting up project myquotaproject (path /home/myquota)...
Processed 1 (/etc/projects and cmdline) paths for project myquotaproject with recursion
depth infinite (-1). # 會閃過這些訊息!是 OK 的!別擔心!
[root@study ~]# xfs_quota -x -c "print " /home
Filesystem Pathname
/home /dev/mapper/centos-home (uquota, pquota)
/home/myquota /dev/mapper/centos-home (project 11, myquotaproject)
# 這個 print 功能很不錯!可以完整的查看到相對應的各項文件系統與 project 目錄對應!
[root@study ~]# xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotaproject 0 0 0 00 [------] 1 0 0 00 [------]
# 喔耶!確定有抓到這個項目名稱啰!接下來準備設定吧!
  • 實際設定規范與測試
    依據本章的說明,我們要將 /home/myquota 指定為 500M 的容量限制,那假設到 450M 為 soft 的限制好了! 那么設定就會變成這樣啰:
# 3.1 先來設定好這個 project 吧!設定的方式同樣使用 limit 的 bsoft/bhard 喔!:
[root@study ~]# xfs_quota -x -c "limit -p bsoft=450M bhard=500M myquotaproject" /home
[root@study ~]# xfs_quota -x -c "report -pbih " /home
Project quota on /home (/dev/mapper/centos-home)Blocks Inodes
Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
myquotaproject 0 450M 500M 00 [------] 1 0 0 00 [------]
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=510
dd: error writing '/home/myquota/123.img': No space left on device
501+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.96296 s, 544 MB/s
# 你看!連 root 在該目錄底下建立文件時,也會被擋掉耶!這才是完整的針對目錄的規范嘛!贊!

這樣就設定好了啰!未來如果你還想要針對某些個目錄進行限制,那么就修改 /etc/projects, /etc/projid 設定一下規范, 然后直接處理目錄的初始化與設定,就完成設定了!好簡單!

27.3 XFS quota 的管理與額外指令對照表

不管多完美的系統,總是需要可能的突發狀況應付手段啊!所以,接下來我們就來談談,那么萬一如果你需要暫停 quota 的限制,或者是重新啟動 quota 的限制時,該如何處理呢?還是使用 xfs_quota 啦!增加幾個內部指令即可:

  • disable:暫時取消 quota 的限制,但其實系統還是在計算 quota 中,只是沒有管制而已!應該算最有用的功能啰!
  • enable:就是回復到正常管制的狀態中,與 disable 可以互相取消、啟用!
  • off:完全關閉 quota 的限制,使用了這個狀態后,你只有卸除再重新掛載才能夠再次的啟動 quota 喔!也就是說, 用了 off 狀態后,你無法使用 enable 再次復原 quota 的管制喔!注意不要亂用這個狀態!一般建議用 disable 即可,除非你需要執行 remove 的動作!
  • remove:必須要在 off 的狀態下才能夠執行的指令~這個 remove 可以『移除』quota 的限制設定,例如要取消 project 的設定, 無須重新設定為 0 喔!只要 remove -p 就可以了!
# 1. 暫時關閉 XFS 文件系統的 quota 限制功能
[root@study ~]# xfs_quota -x -c "disable -up" /home
[root@study ~]# xfs_quota -x -c "state" /home
User quota state on /home (/dev/mapper/centos-home)Accounting: ONEnforcement: OFF <== 意思就是有在計算,但沒有強制管制的意思Inode: #1568 (4 blocks, 4 extents)
Group quota state on /home (/dev/mapper/centos-home)Accounting: OFFEnforcement: OFFInode: N/A
Project quota state on /home (/dev/mapper/centos-home)Accounting: ONEnforcement: OFFInode: N/A
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
520+0 records in
520+0 records out # 見鬼!竟然沒有任何錯誤發生了!
545259520 bytes (545 MB) copied, 0.308407 s, 180 MB/s
[root@study ~]# xfs_quota -x -c "report -pbh" /home
Project quota on /home (/dev/mapper/centos-home)Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquotaproject 520M 450M 500M 00 [-none-]
# 其實,還真的有超過耶!只是因為 disable 的關系,所以沒有強制限制住就是了!
[root@study ~]# xfs_quota -x -c "enable -up" /home # 重新啟動 quota 限制
[root@study ~]# dd if=/dev/zero of=/home/myquota/123.img bs=1M count=520
dd: error writing ‘/home/myquota/123.img’: No space left on device
# 又開始有限制!這就是 enable/disable 的相關對應功能喔!暫時關閉/啟動用的!
# 完全關閉 quota 的限制行為吧!同時取消 project 的功能試看看!
[root@study ~]# xfs_quota -x -c "off -up" /home
[root@study ~]# xfs_quota -x -c "enable -up" /home
XFS_QUOTAON: Function not implemented
# 您瞧瞧!沒有辦法重新啟動!因為已經完全的關閉了 quota 的功能!所以得要 umouont/mount 才行!
[root@study ~]# umount /home; mount -a
# 這個時候使用 report 以及 state 時,管制限制的內容又重新回來了!好!來瞧瞧如何移除 project
[root@study ~]# xfs_quota -x -c "off -up" /home
[root@study ~]# xfs_quota -x -c "remove -p" /home
[root@study ~]# umount /home; mount -a
[root@study ~]# xfs_quota -x -c "report -phb" /home
Project quota on /home (/dev/mapper/centos-home)Blocks
Project ID Used Soft Hard Warn/Grace
---------- ---------------------------------
myquotaproject 500M 0 0 00 [------]
# 嘿嘿!全部歸零!就是『移除』所有限制值的意思!

請注意上表中最后一個練習,那個 remove -p 是『移除所有的 project 控制列表』的意思!也就是說,如果你有在 /home 設定多個 project 的限制, 那么 remove 會刪的一個也不留喔!如果想要回復設定值,那…只能一個一個重新設定回去了!沒有好辦法!

相關的參考指令/配置文件案對照參考

設定流程項目XFS 文件系統EXT 家族
/etc/fstab 參數設定usrquota/grpquota/prjquotausrquota/grpquota
quota 配置文件不需要quotacheck
設定用戶/群組限制值xfs_quota -x -c “limit…”edquota 或 setquota
設定 grace timexfs_quota -x -c “timer…”edquota
設定目錄限制值xfs_quota -x -c “limit…”
觀察報告xfs_quota -x -c “report…”repquota 或 quota
啟動與關閉 quota 限制xfs_quota -x -c “[disable|enable]…”quotaoff, quotaon
發送警告信給用戶目前版本尚未支持warnquota

27.4 不更動既有系統的 quota 實例

想一想,如果你的主機原先沒有想到要設定成為郵件主機,所以并沒有規劃將郵件信箱所在的/var/spool/mail/ 目錄獨立成為一個 partition ,然后目前你的主機已經沒有辦法新增或分區出任何新的分區槽了。那我們知道 quota 的支持與文件系統有關, 所以并無法跨文件系統來設計 quota 的project 功能啊!因此,你是否就無法針對 mail 的使用量給予 quota 的限制呢?

此外,如果你想要讓使用者的郵件信箱與家目錄的總體磁盤使用量為固定,那又該如何是好? 由于/home 及 /var/spool/mail 根本不可能是同一個 filesystem (除非是都不分區,使用根目錄,才有可能整合在一起), 所以,該如何進行這樣的 quota 限制呢?

其實沒有那么難啦!既然 quota 是針對 filesystem 來進行限制,假設你又已經有 /home 這個獨立的分區槽了,那么你只要:

  1. 將 /var/spool/mail 這個目錄完整的移動到 /home 底下;
  2. 利用ln -s /home/mail /var/spool/mail來建立鏈接數據;
  3. 將 /home 進行 quota 限額設定

只要這樣的一個小步驟,嘿嘿!您家主機的郵件就有一定的限額啰!當然啰!您也可以依據不同的使用者與群組來設定 quota 然后同樣的以上面的方式來進行 link 的動作!嘿嘿嘿!就有不同的限額針對不同的使用者提出啰!很方便吧!^_^

朋友們需要注意的是,由于目前新的 distributions 大多有使用 SELinux 的機制, 因此你要進行如同上面的目錄搬移時,在許多情況下可能會有使用上的限制喔!或許你得要先暫時關閉 SELinux 才能測試, 也或許你得要自行修改 SELinux 的規則才行喔!

該系列目錄 --> 【BASH】回顧與知識點梳理(目錄)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jenkins gitlab 安裝

目錄 一 準備安裝環境 二 安裝gitlab軟件 三 配置gitlab 四 重新加載配置啟動gitlab 五 修改密碼 五 創建用戶組 一 準備安裝環境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安裝 Postfix 郵件服務器&#xff0c;以便 Git…

qt事件系統源碼-----定時器

qt定時器的使用一般有以下幾種方式&#xff1a; 1、直接使用QTimer對象&#xff0c;綁定定時器的timeout信號&#xff1b; 2、使用QTimer的靜態方法singleshot方法&#xff0c;產生一個一次性的定時事件 3、在QObject子類中&#xff0c;調用startTimer方法&#xff0c;產生定…

矢量繪圖UI設計軟件Sketch mac中文版軟件說明

Sketch mac是一款適用于 UI/UX 設計、網頁設計、圖標制作等領域的矢量繪圖軟件。 Sketch mac軟件特點 1. 簡單易用的界面設計&#xff1a;Sketch 的用戶界面簡潔明了&#xff0c;使得用戶可以輕松上手操作&#xff0c;不需要復雜的學習過程。 2. 強大的矢量繪圖功能&#xff1a…

flinksql實時統計程序背壓延遲優化

問題&#xff1a; flinkcdcflinksql做實時讀取sls日志和實時統計業務指標&#xff0c;今天發現程序背壓了&#xff0c;業務延遲了6個小時。解決辦法&#xff1a; 1、資源優化 作業并發大時&#xff1a;在作業的高級配置的資源配置中&#xff0c;增加JobManager的資源&#xf…

香港服務器三網直連內地線路什么意思?好用嗎?

?  三網直連內地是指香港服務器可以直接連接中國內地的電信、聯通和移動三大運營商網絡&#xff0c;避免了中間網絡干線的支持。這樣可以實現直接、快速、穩定的網絡訪問&#xff0c;提高用戶對網絡訪問的效率&#xff0c;減少網絡訪問問題和擁堵的現象。 香港服務器直連內地…

XSS 跨站腳本攻擊

XSS(DOM) XSS 又稱CSS(Cross Site Scripting)或跨站腳本攻擊&#xff0c;攻擊者在網頁中插入由JavaScript編寫的惡意代碼&#xff0c;當用戶瀏覽被嵌入惡意代碼的網頁時&#xff0c;惡意代碼將會在用戶的瀏覽器上執行。 XSS攻擊可分為三種&#xff1a;分別為反射型(Reflected…

線程|線程的使用、四種實現方式

1.線程的實現方式 1.用戶級線程 開銷小&#xff0c;用戶空間就可以創建多個。缺點是&#xff1a;內核無法感知用戶級多個線程的存在&#xff0c;把其當作只有一個線程&#xff0c;所以只會提供一個處理器。 2.內核級線程 相對于用戶級開銷稍微大一點&#xff0c;可以利用多…

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 目錄 Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 一、簡單介紹 二、實現原理 三、注意事項 四、實現步驟 五、關鍵代碼 一、簡…

01- vdom 和模板編譯源碼

組件渲染的過程 template --> ast --> render --> vDom --> 真實的Dom --> 頁面 Runtime-Compiler和Runtime-Only的區別 - 簡書 編譯步驟 模板編譯是Vue中比較核心的一部分。關于 Vue 編譯原理這塊的整體邏輯主要分三個部分&#xff0c;也可以說是分三步&am…

《vue3實戰》運用radio單選按鈕或Checkbox復選框實現單選多選的試卷制作

文章目錄 目錄 系列文章目錄 1.《Vue3實戰》使用axios獲取文件數據以及走馬燈Element plus的運用 2.《Vue3實戰》用路由實現跳轉登錄、退出登錄以及路由全局守護 3.《vue3實戰》運用Checkbox復選框實現單選多選的試卷展現&#xff08;本文&#xff09; 文章目錄 前言 radio是什…

Java中List排序的4種方法

開發過程中經常會遇到讀取文件內容的情況&#xff0c;需要判斷文件是否為文本文件&#xff0c;及文件編碼格式&#xff0c;防止無法讀取內容或亂碼出現情況。 我們可以通過 java.io.File 類包找出文件是目錄還是常規文件。java.io.File 類包含兩種方法&#xff0c;它們分別是&…

TCP服務器—實現數據通信

目錄 前言 1.接口介紹 2.編寫服務器 3.編寫客戶端 4.編譯鏈接 5.測試 6.總結 前言 今天我們要介紹的是使用TCP協議實現數據通信&#xff0c;相比于之前寫的UDP服務器實現數據信&#xff0c;在主體邏輯上并沒有差別。客戶端向服務器發送信息&#xff0c;服務器接受信息并回…

JavaEE初階:多線程 - Thread 類的基本用法

上次我們了解了多線程的五種創建方法&#xff0c;今天來學習Thread的基本用法。 目錄 run和start Thread常見的構造方法 Thread的幾個常見屬性 后臺線程 是否存活 線程終止 1.使用標志位 2.使用Thread自帶的標志 等待線程 run和start 首先需要理解Thread的run和star…

JavaWeb-Listener監聽器

目錄 監聽器Listener 1.功能 2.監聽器分類 3.監聽器的配置 4.ServletContext監聽 5.HttpSession監聽 6.ServletRequest監聽 監聽器Listener 1.功能 用于監聽域對象ServletContext、HttpSession和ServletRequest的創建&#xff0c;與銷毀事件監聽一個對象的事件&#x…

Python源碼05:使用Pyecharts畫詞云圖圖

**Pyecharts是一個用于生成 Echarts 圖表的 Python 庫。Echarts 是一個基于 JavaScript 的數據可視化庫&#xff0c;提供了豐富的圖表類型和交互功能。**通過 Pyecharts&#xff0c;你可以使用 Python 代碼生成各種類型的 Echarts 圖表&#xff0c;例如折線圖、柱狀圖、餅圖、散…

Glide 的超時控制相關處理

作者&#xff1a;newki 前言 Glide 相信大家都不陌生&#xff0c;各種源碼分析&#xff0c;使用介紹大家應該都是爛熟于心。但是設置 Glide 的超時問題大家遇到過沒有。 我遇到了&#xff0c;并且掉坑里了&#xff0c;情況是這樣的。 調用接口從網絡拉取用戶頭像&#xff0c…

3.微服務概述

1.大型網絡架構變遷 SOA與微服務最大的差別就是服務拆分的細度&#xff0c;目前大多數微服務實際上是SOA架構&#xff0c;真正的微服務應該是一個接口對應一個服務器&#xff0c;開發速度快、成本高&#xff1b; 微服務SOA能拆分的就拆分是整體的&#xff0c;服務能放一起的都…

自動駕駛HMI產品技術方案

版本變更 序號 日期 變更內容 編制人 審核人 文檔版本 1 2 1.

【計算機網絡】13、ARP 包:廣播自己的 mac 地址和 ip

機器啟動時&#xff0c;會向外廣播自己的 mac 地址和 ip 地址&#xff0c;這個即稱為 arp 協議。范圍是未經過路由器的部分&#xff0c;如下圖的藍色部分&#xff0c;范圍內的設備都會在本地記錄 mac 和 ip 的綁定信息&#xff0c;若有重復則覆蓋更新&#xff08;例如先收到 ma…

【Spring】深入理解 Spring 事務及其傳播機制

文章目錄 一、Spring 事務是什么二、Spring 中事務的實現方法2.1 Spring 編程式事務&#xff08;手動&#xff09;2.1.1 編程式事務的使用演示2.1.2 編程式事務存在的問題 2.2 Spring 聲明式事務&#xff08;自動&#xff09;2.2.1 Transactional 作用范圍2.2.2 Transactional …