溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中如何給磁盤配額

發(fā)布時(shí)間:2021-10-15 09:50:04 來源:億速云 閱讀:143 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“l(fā)inux中如何給磁盤配額”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中如何給磁盤配額”這篇文章吧。

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

* 針對(duì)WWW server,例如:每個(gè)人的網(wǎng)頁空間的容量限制

* 針對(duì)mail server,例如:每個(gè)人的郵件空間限制

* 針對(duì)file server:每個(gè)人最大的可用網(wǎng)絡(luò)硬盤空間(教學(xué)環(huán)境中比較常見)

上面的是針對(duì)網(wǎng)絡(luò)服務(wù)的設(shè)計(jì),如果是針對(duì)linux系統(tǒng)主機(jī)上面的設(shè)置,用途有下面這些:

* 限制某一用戶組最大磁盤配額,可用設(shè)置普通用戶組和VIP用戶組,有點(diǎn)類似會(huì)員制,VIP用戶相應(yīng)的磁盤空間大小比較大些,普通用戶想成為VIP,嘿嘿,交會(huì)費(fèi)就行。

*  限制某一用戶磁盤配額,在對(duì)用戶組進(jìn)行限制后,繼續(xù)對(duì)該用戶組的每個(gè)用戶進(jìn)行設(shè)置,可以使用戶組下有更公平的分配。

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

 ====Quota的規(guī)范設(shè)置選項(xiàng)====

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

* soft/hard,hard > soft,超過soft后,在grace time(寬限時(shí)間)內(nèi)登陸系統(tǒng)后會(huì)給出磁盤爆滿的警告

* 會(huì)倒計(jì)時(shí)的寬限時(shí)間 grace time,如果過了這個(gè)時(shí)間還沒降到比soft低,直接鎖定磁盤使用,并且hard減少為soft值。

坐而言不如起而行,先來設(shè)計(jì)一個(gè)實(shí)際的quota例子:

* 五個(gè)人的賬號(hào)分別為user1,user2,user3,user4,user5,密碼都是123456,初始用戶組都為quotagroup,其他賬號(hào)屬性為默認(rèn)。

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

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

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

建立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

接下來實(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ì)/來進(jìn)行,不過一般來講不建議直接在/下面設(shè)置quota。

# mount | grep ‘\s/\s’

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

通過查看/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)行磁盤配額了。

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

# quotacheck [-avugfM] [/mount_point]

-a:掃描所有在/etc/mtab內(nèi),含有quota支持的文件系統(tǒng),加上此參數(shù)后,后面的/mount_point就不用寫了

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

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

-v:顯示掃描過程信息

-f:強(qiáng)制掃描文件系統(tǒng),并寫入quota配置文件(危險(xiǎn),慎用)

-M:強(qiáng)制以讀寫方式掃描文件系統(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,磁盤容量(blocks):這個(gè)是quota自己自動(dòng)算出來的,單位為KB,不要改動(dòng)它

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

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

5,文件數(shù)量(inodes):這個(gè)也是quota自己自動(dòng)算出來的,單位為個(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,這么說你了解麼 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)完成,接下來驗(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 &ndash; 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&Prime;: 超出磁盤限額
記錄了23+0 的讀入
記錄了22+0 的寫出
24047616字節(jié)(24 MB)已復(fù)制,0.648835 秒,37.1 MB/秒

# du -sk

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

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

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

# warnquota  (fedora上面沒有這個(gè)命令,囧?。?/p>

==== 不改動(dòng)既有系統(tǒng)的quota實(shí)例(link方式)====

如果/var/spool/mail不是一個(gè)獨(dú)立分區(qū),你想讓用戶郵件信箱與主文件夾的總體 磁盤使用量固定,但/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

以上是“l(fā)inux中如何給磁盤配額”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI