歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux學習日記十二 磁盤配額(quota)

linux學習日記十二 磁盤配額(quota)

日期:2017/3/1 18:03:39   编辑:Linux技術

磁盤配額(quota)比較常用的幾個情況是:

* 針對WWW server,例如:每個人的網頁空間的容量限制

* 針對mail server,例如:每個人的郵件空間限制

* 針對file server:每個人最大的可用網絡硬盤空間(教學環境中比較常見)

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

* 限制某一用戶組最大磁盤配額,可用設置普通用戶組和VIP用戶組,有點類似會員制,VIP用戶相應的磁盤空間大小比較大些,普通用戶想成為VIP,嘿嘿,交會費就行。

* 限制某一用戶磁盤配額,在對用戶組進行限制後,繼續對該用戶組的每個用戶進行設置,可以使用戶組下有更公平的分配。

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

====Quota的規范設置選項====

* 限制文件數量或者容量(inode或者block),以block設置為常見

* soft/hard,hard > soft,超過soft後,在grace time(寬限時間)內登陸系統後會給出磁盤爆滿的警告

* 會倒計時的寬限時間 grace time,如果過了這個時間還沒降到比soft低,直接鎖定磁盤使用,並且hard減少為soft值。

坐而言不如起而行,先來設計一個實際的quota例子:

* 五個人的賬號分別為user1,user2,user3,user4,user5,密碼都是123456,初始用戶組都為quotagroup,其他賬號屬性為默認。

* 賬號的磁盤容量限制:五個用戶都能夠取得300MB的磁盤使用量(hard),文件數量不予限制。此外,只要容量超過250MB時候給予警告(soft)

* 用戶組的限額:由於我的系統裡面可能還有其他用戶存在,我僅承認quotagroup這個組最多使用1GB的容量。也就是說,如果user1,user2,user3都用了280MB的空間,那麼user4,user5就只能使用1000MB – 280MB*3 = 160MB的空間了。

* 寬限日期:14天,達到250MB的soft值後,14天內給予警告,如果14天內磁盤容量還沒降到比250MB低,直接鎖定用戶。丫的叫你放電影到硬盤上又不刪。

建立5個賬號的shell腳本:


復制代碼代碼如下:
#!/bin/bash
# 使用script新建實驗quota所需的環境
groupadd quotagroup
for username in user1 user2 user3 user4 user5
do
useradd -g quotagroup $username
echo "123456" | passwd --stdin $username
done


接下來實踐下quota流程:

# df -h /home

文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 69G 4.4G 62G 7% /

因為我用的虛擬機,自動被分區,只有一個根分區/掛載sda3文件系統,所以我會針對/來進行,不過一般來講不建議直接在/下面設置quota。

# mount | grep ‘\s/\s’

/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered)

通過查看/dev/sda3的數據知道是哦那個ext4文件系統,那麼肯定支持quota

修改配置文件/etc/fstab,讓/支持quota:

UUID=2f08675e-289a-404a-a13e-4802dec910e9 / ext4 defaults,usrquota,grpquota 1 1

重點在上面粗體顯示的usrquota,grpquota

# umount / (我勒個擦,根目錄你怎麼umount,還是重啟吧)

# mount -a

# mount | grep “\s/\s”

/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered,usrquota,grpquota)

看到了吧,可以針對用戶組和用戶進行磁盤配額了。

====新建quota配置文件====

# quotacheck [-avugfM] [/mount_point]

-a:掃描所有在/etc/mtab內,含有quota支持的文件系統,加上此參數後,後面的/mount_point就不用寫了

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

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

-v:顯示掃描過程信息

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

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

實際上只需要記住前面四個參數 -augv即可。

# ll -d /a*

-rw——-. 1 root root 8192 10月 27 02:06 /aquota.group
-rw——-. 1 root root 7168 10月 27 02:06 /aquota.user

不要手動去修改這兩個quota配置文件啊,這個是quota自己去更新的。

====quota啟動、關閉與限制值的設置====

# quotaon [-avug] <===啟動quota服務

# quotaon [-vug] /mount_point

上面的參數跟之前的一模一樣,這個命令只需要執行一次,下次系統啟動後會自動再執行的

# quotaoff [-a] <===關閉quota服務

# quotaoff [-ug] /mount_point

# edquota [-u username] [-g groupname] <===編輯quota的寬限值

# edquota -t <===修改寬限時間

# edquota -p 范本賬號 -u 新賬號

這些都很簡單,不解釋

# edquota -u user1

Disk quotas for user user1 (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 28 0 0 8 0 0

解釋下這七個字段:

1,文件系統,或者是partition

2,磁盤容量(blocks):這個是quota自己自動算出來的,單位為KB,不要改動它

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

4,hard:block的hard限制值,單位為KB

5,文件數量(inodes):這個也是quota自己自動算出來的,單位為個,不要改動它

6,soft:inode的soft值

7,hard:inode的hard值

我把它修改成如下的:

Disk quotas for user user1 (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 28 250000 300000 8 0 0

注意:我用的1000去近似1024,方便點,其實真正的250MB = 250 * 1024KB,這麼說你了解麽 o(╯□╰)o

還有其他四個用戶,直接參考copy user1的設置就可以了。

# edquota -p user1 -u user2

# edquota -p user1 -u user3

# edquota -p user1 -u user4

# edquota -p user1 -u user5

更改用戶組的quota限額:

# edquota -g quotagroup

Disk quotas for group quotagroup (gid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 140 900000 1000000 35 0 0

最後,將寬限時間改成14天吧:

# 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/sda3 14days 7days

到這步,所有的設置都已經完成,接下來驗收成果:

====quota限制值的報表====

單一用戶/用戶組的quota報表:

# quota [-uvs] username列表

# quota [-gvs] groupname列表

-u:後接用戶名,不填表示當前用戶

-g:後接用戶組

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

-s:使用好看的單位,比如M之類的

# quota -uvs user1 user2

Disk quotas for user user1 (uid 1002):
Filesystem space quota limit grace files quota limit grace
/dev/sda3 28K 245M 293M 8 0 0
Disk quotas for user user2 (uid 1003):
Filesystem space quota limit grace files quota limit grace
/dev/sda3 28K 245M 293M 8 0 0

針對整個文件系統的報表:

# repquota -a [-vugs]

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

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

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

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

-s:使用K,M,G的單位顯示

測試下實際效果:

# su – user1

# dd if=/dev/zero of=bigfile bs=1M count=270

# repquota -auv

dd if=/dev/zero of=bigfile2 bs=1M count=300

dd: 正在寫入”bigfile2″: 超出磁盤限額
記錄了23+0 的讀入
記錄了22+0 的寫出
24047616字節(24 MB)已復制,0.648835 秒,37.1 MB/秒

# du -sk

300000 . <===果然到了極限

[user1@(none) ~]$ ll
總用量 299968
-rw-r–r–. 1 user1 quotagroup 283115520 10月 27 02:42 bigfile
-rw-r–r–. 1 user1 quotagroup 24047616 10月 27 02:44 bigfile2

當用戶超過了soft,然後再寬限日期又沒有刪除空間,導致用戶的hard變成了原來的soft,用戶再也使用不了磁盤,那麼怎麼辦呢。當然是進去刪除文件就行了啊。不過很多用戶不知道怎麼回事,最好在用戶超過限額(soft)後給用戶發警告信:

# warnquota (fedora上面沒有這個命令,囧!)

==== 不改動既有系統的quota實例(link方式)====

如果/var/spool/mail不是一個獨立分區,你想讓用戶郵件信箱與主文件夾的總體 磁盤使用量固定,但/home是單獨的文件系統,跟/var/spool/mail不一樣。

可以這樣解決:

1,將/var/spool/mail這個目錄整個完整的移動到/home下面

2,建立連接 # ln -s /home/mail /var/spool/mail,那麼現在所有往/var/spool/mail裡面放的數據全部放到/home/mail裡面去了。

3,將/home/進行quota限額設置

注意,進行以上設置的時候,可能需要關閉SELinux

====軟件磁盤陣列(Software RAID)====

請參考下一篇文章。哈哈 ……+……

===================================END==============================

Copyright © Linux教程網 All Rights Reserved