linux學(xué)習(xí)日記十二 磁盤(pán)配額(quota)
磁盤(pán)配額(quota)比較常用的幾個(gè)情況是:
* 針對(duì)WWW server,例如:每個(gè)人的網(wǎng)頁(yè)空間的容量限制
* 針對(duì)mail server,例如:每個(gè)人的郵件空間限制
* 針對(duì)file server:每個(gè)人最大的可用網(wǎng)絡(luò)硬盤(pán)空間(教學(xué)環(huán)境中比較常見(jiàn))
上面的是針對(duì)網(wǎng)絡(luò)服務(wù)的設(shè)計(jì),如果是針對(duì)linux系統(tǒng)主機(jī)上面的設(shè)置,用途有下面這些:
* 限制某一用戶組最大磁盤(pán)配額,可用設(shè)置普通用戶組和VIP用戶組,有點(diǎn)類似會(huì)員制,VIP用戶相應(yīng)的磁盤(pán)空間大小比較大些,普通用戶想成為VIP,嘿嘿,交會(huì)費(fèi)就行。
* 限制某一用戶磁盤(pán)配額,在對(duì)用戶組進(jìn)行限制后,繼續(xù)對(duì)該用戶組的每個(gè)用戶進(jìn)行設(shè)置,可以使用戶組下有更公平的分配。
* 以Link方式使郵件可以作為限制的配額(更改/var/spool/mail這個(gè)路徑)
====Quota的規(guī)范設(shè)置選項(xiàng)====
* 限制文件數(shù)量或者容量(inode或者block),以block設(shè)置為常見(jiàn)
* soft/hard,hard > soft,超過(guò)soft后,在grace time(寬限時(shí)間)內(nèi)登陸系統(tǒng)后會(huì)給出磁盤(pán)爆滿的警告
* 會(huì)倒計(jì)時(shí)的寬限時(shí)間 grace time,如果過(guò)了這個(gè)時(shí)間還沒(méi)降到比soft低,直接鎖定磁盤(pán)使用,并且hard減少為soft值。
坐而言不如起而行,先來(lái)設(shè)計(jì)一個(gè)實(shí)際的quota例子:
* 五個(gè)人的賬號(hào)分別為user1,user2,user3,user4,user5,密碼都是123456,初始用戶組都為quotagroup,其他賬號(hào)屬性為默認(rèn)。
* 賬號(hào)的磁盤(pán)容量限制:五個(gè)用戶都能夠取得300MB的磁盤(pán)使用量(hard),文件數(shù)量不予限制。此外,只要容量超過(guò)250MB時(shí)候給予警告(soft)
* 用戶組的限額:由于我的系統(tǒng)里面可能還有其他用戶存在,我僅承認(rèn)quotagroup這個(gè)組最多使用1GB的容量。也就是說(shuō),如果user1,user2,user3都用了280MB的空間,那么user4,user5就只能使用1000MB – 280MB*3 = 160MB的空間了。
* 寬限日期:14天,達(dá)到250MB的soft值后,14天內(nèi)給予警告,如果14天內(nèi)磁盤(pán)容量還沒(méi)降到比250MB低,直接鎖定用戶。丫的叫你放電影到硬盤(pán)上又不刪。
建立5個(gè)賬號(hào)的shell腳本:
#!/bin/bash
# 使用script新建實(shí)驗(yàn)quota所需的環(huán)境
groupadd quotagroup
for username in user1 user2 user3 user4 user5
do
useradd -g quotagroup $username
echo "123456" | passwd --stdin $username
done
接下來(lái)實(shí)踐下quota流程:
# df -h /home
文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/sda3 69G 4.4G 62G 7% /
因?yàn)槲矣玫奶摂M機(jī),自動(dòng)被分區(qū),只有一個(gè)根分區(qū)/掛載sda3文件系統(tǒng),所以我會(huì)針對(duì)/來(lái)進(jìn)行,不過(guò)一般來(lái)講不建議直接在/下面設(shè)置quota。
# mount | grep ‘\s/\s’
/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered)
通過(guò)查看/dev/sda3的數(shù)據(jù)知道是哦那個(gè)ext4文件系統(tǒng),那么肯定支持quota
修改配置文件/etc/fstab,讓/支持quota:
UUID=2f08675e-289a-404a-a13e-4802dec910e9 / ext4 defaults,usrquota,grpquota 1 1
重點(diǎn)在上面粗體顯示的usrquota,grpquota
# umount / (我勒個(gè)擦,根目錄你怎么umount,還是重啟吧)
# mount -a
# mount | grep “\s/\s”
/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered,usrquota,grpquota)
看到了吧,可以針對(duì)用戶組和用戶進(jìn)行磁盤(pán)配額了。
====新建quota配置文件====
# quotacheck [-avugfM] [/mount_point]
-a:掃描所有在/etc/mtab內(nèi),含有quota支持的文件系統(tǒng),加上此參數(shù)后,后面的/mount_point就不用寫(xiě)了
-u:針對(duì)用戶掃描文件與目錄使用情況,會(huì)新建aquota.user
-g:針對(duì)用戶組掃描文件與目錄使用情況,會(huì)新建aquota.group
-v:顯示掃描過(guò)程信息
-f:強(qiáng)制掃描文件系統(tǒng),并寫(xiě)入quota配置文件(危險(xiǎn),慎用)
-M:強(qiáng)制以讀寫(xiě)方式掃描文件系統(tǒng),只有在特殊情況下才會(huì)使用。
實(shí)際上只需要記住前面四個(gè)參數(shù) -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
不要手動(dòng)去修改這兩個(gè)quota配置文件啊,這個(gè)是quota自己去更新的。
====quota啟動(dòng)、關(guān)閉與限制值的設(shè)置====
# quotaon [-avug] <===啟動(dòng)quota服務(wù)
# quotaon [-vug] /mount_point
上面的參數(shù)跟之前的一模一樣,這個(gè)命令只需要執(zhí)行一次,下次系統(tǒng)啟動(dòng)后會(huì)自動(dòng)再執(zhí)行的
# quotaoff [-a] <===關(guān)閉quota服務(wù)
# quotaoff [-ug] /mount_point
# edquota [-u username] [-g groupname] <===編輯quota的寬限值
# edquota -t <===修改寬限時(shí)間
# edquota -p 范本賬號(hào) -u 新賬號(hào)
這些都很簡(jiǎn)單,不解釋
# 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
解釋下這七個(gè)字段:
1,文件系統(tǒng),或者是partition
2,磁盤(pán)容量(blocks):這個(gè)是quota自己自動(dòng)算出來(lái)的,單位為KB,不要改動(dòng)它
3,soft:磁盤(pán)容量(block)的soft限制值,單位為KB
4,hard:block的hard限制值,單位為KB
5,文件數(shù)量(inodes):這個(gè)也是quota自己自動(dòng)算出來(lái)的,單位為個(gè),不要改動(dòng)它
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,方便點(diǎn),其實(shí)真正的250MB = 250 * 1024KB,這么說(shuō)你了解麼 o(╯□╰)o
還有其他四個(gè)用戶,直接參考copy user1的設(shè)置就可以了。
# 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
最后,將寬限時(shí)間改成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
到這步,所有的設(shè)置都已經(jīng)完成,接下來(lái)驗(yàn)收成果:
====quota限制值的報(bào)表====
單一用戶/用戶組的quota報(bào)表:
# quota [-uvs] username列表
# quota [-gvs] groupname列表
-u:后接用戶名,不填表示當(dāng)前用戶
-g:后接用戶組
-v:顯示每個(gè)用戶或者用戶組在文件系統(tǒng)中的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
針對(duì)整個(gè)文件系統(tǒng)的報(bào)表:
# repquota -a [-vugs]
-a:直接到/etc/mtab查詢具有quota標(biāo)志的文件系統(tǒng),并報(bào)告quota結(jié)果
-v:輸出的數(shù)據(jù)將含有文件系統(tǒng)相關(guān)的詳細(xì)信息
-u:顯示出用戶的quota限制(這個(gè)是默認(rèn)值)
-g:顯示個(gè)別用戶組的quota限制值
-s:使用K,M,G的單位顯示
測(cè)試下實(shí)際效果:
# 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: 正在寫(xiě)入”bigfile2″: 超出磁盤(pán)限額
記錄了23+0 的讀入
記錄了22+0 的寫(xiě)出
24047616字節(jié)(24 MB)已復(fù)制,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
當(dāng)用戶超過(guò)了soft,然后再寬限日期又沒(méi)有刪除空間,導(dǎo)致用戶的hard變成了原來(lái)的soft,用戶再也使用不了磁盤(pán),那么怎么辦呢。當(dāng)然是進(jìn)去刪除文件就行了啊。不過(guò)很多用戶不知道怎么回事,最好在用戶超過(guò)限額(soft)后給用戶發(fā)警告信:
# warnquota (fedora上面沒(méi)有這個(gè)命令,囧?。?/p>
==== 不改動(dòng)既有系統(tǒng)的quota實(shí)例(link方式)====
如果/var/spool/mail不是一個(gè)獨(dú)立分區(qū),你想讓用戶郵件信箱與主文件夾的總體 磁盤(pán)使用量固定,但/home是單獨(dú)的文件系統(tǒng),跟/var/spool/mail不一樣。
可以這樣解決:
1,將/var/spool/mail這個(gè)目錄整個(gè)完整的移動(dòng)到/home下面
2,建立連接 # ln -s /home/mail /var/spool/mail,那么現(xiàn)在所有往/var/spool/mail里面放的數(shù)據(jù)全部放到/home/mail里面去了。
3,將/home/進(jìn)行quota限額設(shè)置
注意,進(jìn)行以上設(shè)置的時(shí)候,可能需要關(guān)閉SELinux
====軟件磁盤(pán)陣列(Software RAID)====
請(qǐng)參考下一篇文章。哈哈 ……+……
===================================END==============================
相關(guān)文章

集成系統(tǒng)級(jí)Claw模式! Deepin 官宣發(fā)布 25.1 版本
deepin操作系統(tǒng)發(fā)布了最新的 25.1 版本更新,該版本基于 deepin 25 正式版積累的多輪內(nèi)測(cè)成果,在 AI 能力、內(nèi)核版本、桌面環(huán)境、文件管理器以及系統(tǒng)安全等方面進(jìn)行了更新2026-04-13
又一代老硬件退場(chǎng)! Linux 內(nèi)核正式放棄Intel 486 CPU
在過(guò)去的幾十年間,CPU 的架構(gòu)已經(jīng)經(jīng)歷了飛速發(fā)展,x86 系列就是其中之一,而 i486 則屬于該系列中的一個(gè),當(dāng)前,i486 的CPU處理器已經(jīng)夠老,從 Linux 7.1 開(kāi)始將不再有對(duì)2026-04-09
趕緊收藏! 全網(wǎng)最全 Linux 命令總結(jié)
我把 Linux 中最常用、最實(shí)用、最常被問(wèn)到的命令按照實(shí)際使用場(chǎng)景分類整理,方便你快速查閱和記憶,內(nèi)容覆蓋日常運(yùn)維、開(kāi)發(fā)調(diào)試、性能分析、文件處理、網(wǎng)絡(luò)、安全、系統(tǒng)管2026-04-08
一分鐘內(nèi)檢查L(zhǎng)inux服務(wù)器性能? 9個(gè)性能檢測(cè)常用的基本命令
今天我們來(lái)看看Linux系統(tǒng)中用于性能監(jiān)控的一系列命令,這些命令可以快速查看機(jī)器的負(fù)載情況,詳細(xì)請(qǐng)看下文介紹2026-03-18
從零基礎(chǔ)到精通! 適合高級(jí)用戶的15款Linux發(fā)行版推薦
Linux作為操作系統(tǒng)領(lǐng)域靈活性和可定制性的基石,提供了大量滿足不同用戶需求的發(fā)行版,今天分享適合高級(jí)用戶的15款Linux發(fā)行版2026-03-10
開(kāi)箱即用? 這4個(gè)高手級(jí)Linux發(fā)行版遠(yuǎn)沒(méi)你想象的那么安全易用
如果你正在糾結(jié)用哪個(gè)發(fā)行版?零基礎(chǔ)新手別被“高端”“極客”“聲明式”這些詞沖昏頭腦,先用好用的,再慢慢進(jìn)階2026-03-10
這幾款SSH工具真的夠用了! Linux好用的ssh工具推薦
在Linux上使用SSH,您需要安裝一個(gè)SSH客戶端,今天整理找到的8 款 SSH / 終端工具,從免費(fèi)開(kāi)源到企業(yè)級(jí)商用,從輕量化命令行到一站式工具箱,每款都做了介紹與對(duì)比,希望能2026-03-09
在Linux系統(tǒng)下有兩種用戶,即高級(jí)用戶root,普通用戶,高級(jí)用戶root可以在系統(tǒng)中做任何事情,普通用戶僅可在Linux系統(tǒng)中做有限的事情,下面我們就來(lái)看看切換方法2026-02-28
揭秘當(dāng)前登錄用戶的身份! Linux中使用logname命令的技巧
logname命令就是這樣一個(gè)簡(jiǎn)單但強(qiáng)大的工具,它能幫助我們輕松獲取當(dāng)前登錄用戶的用戶名,今天,我們就來(lái)深入探索一下這個(gè)命令的工作原理、使用方法和最佳實(shí)踐2026-02-26
在 Linux 系統(tǒng)中,DNS 緩存是一種將域名和 IP 地址映射關(guān)系緩存在本地的機(jī)制,可以加快域名解析速度,并減輕 DNS 服務(wù)器的負(fù)載2026-02-26



