引言
這篇文章介紹一下磁盤配額疚俱;利用磁盤配額這種技術(shù)劝术,系統(tǒng)管理員可以限制某個用戶在某個硬盤分區(qū)可使用的大小,和可以創(chuàng)建文件數(shù)量的多少呆奕;目前Linux系統(tǒng)和Windows系統(tǒng)都支持這種技術(shù)养晋。
文章目錄
- 0×1.磁盤配額術(shù)語介紹
- 0×2.Linux磁盤配額實例
a.實驗環(huán)境介紹
b.修改/etc/fstab添加支持磁盤配額選項
c.創(chuàng)建磁盤配額配置文件
d.實現(xiàn)磁盤配額限制
e.關(guān)閉磁盤配額
0×1.磁盤配額術(shù)語介紹
磁盤配額使用條件:
磁盤配額實施的對象是硬盤分區(qū),并且Linux的內(nèi)核必須支持磁盤配額這種技術(shù)梁钾,本例所使用的CentOS7是完全支持的绳泉;
磁盤配額的記錄文件保存在開啟磁盤配額分區(qū)的根目錄下面,它們是aquota.user和aquota.group姆泻;
磁盤配額只對一般身份用戶有效零酪,對root權(quán)限用戶無效;
磁盤配額的相關(guān)術(shù)語:
最低限制(軟限制拇勃,soft):最低限制容量(可以被超過四苇,但會出現(xiàn)警告,超過的部分會保存到寬限時間到期)方咆;
最高限制(硬限制月腋,hard): 不能被超越的限制;
寬限時間:當用戶使用的空間超過了最低限制但還沒到達最高限制時,在這個寬限時間到期前必須將超額的數(shù)據(jù)降低到最低限制以下(默認為7天)榆骚,當寬限時間到期片拍,系統(tǒng)將自動清除超出的數(shù)據(jù);
0×2.Linux磁盤配額實例
a.實驗環(huán)境介紹
系統(tǒng):CentOS7妓肢;
所用軟件:quota捌省,CentOS7默認已安裝,CentOS6可能需要yum在線安裝此軟件碉钠,前面的文章已經(jīng)介紹過yum的使用方法纲缓,這里不再贅述;
硬盤及分區(qū):/dev/sda1(系統(tǒng)所在分區(qū))放钦,/dev/sdb1(20G)色徘,已經(jīng)格式化為ext4文件系統(tǒng);
所有的磁盤配額操作都在/dev/sdb1中進行操禀;
b.修改/etc/fstab添加支持磁盤配額選項
首先在系統(tǒng)新建一個用于掛載分區(qū)的目錄,然后修改/etc/fstab添加一條自動掛載分區(qū)條目:
#使用管理員權(quán)限在系統(tǒng)根目錄横腿,新建一個目錄sdb1(并非一定要在根目錄創(chuàng)建掛載目錄)
qing@qingsword.com:~$ sudo mkdir /sdb1
#使用vi編輯/etc/fstab颓屑,在末尾添加一行自動掛載,支持quota
qing@qingsword.com:~$ sudo vi /etc/fstab
#將下面這一行添加到末尾,第一個字段為被掛載的分區(qū)耿焊,第二個字段為掛載的目錄揪惦,第三個字段是被掛載的分區(qū)的文件系統(tǒng)類型,后面的幾個字段是支持quota的參數(shù)罗侯。各字段用空格分隔
/dev/sdb1 /sdb1 ext4 defaults,usrquota,grpquota 0 0
#保存器腋,重新啟動計算機,查看sdb1掛載信息
qing@qingsword.com:~$ mount | grep /dev/sdb1
.....
#只要括號里面顯示"usrquota,grpquota"钩杰,說明可以使用磁盤配額了
/dev/sdb1 on /sdb1 type ext4 (rw,usrquota,grpquota)
c.創(chuàng)建磁盤配額配置文件
#為了讓其他用戶可以使用這個分區(qū)纫塌,先將這個實驗用的分區(qū)權(quán)限修改成777
qing@qingsword.com:~$ sudo chmod 777 /sdb1
#創(chuàng)建磁盤配額配置文件,命令參數(shù)解釋如下:
#-v 顯示掃描過程讲弄;
#-u 針對掃描情況與目錄的使用情況建立aquota.user措左;
#-g 針對用戶掃描文件與使用情況建立aquota.group;
qing@qingsword.com:~$ sudo quotacheck -vug /sdb1
#接著就能看到分區(qū)目錄中自動生成了兩個配置文件
qing@qingsword.com:~$ ls /sdb1
aquota.group aquota.user
d.實現(xiàn)磁盤配額限制
#創(chuàng)建普通測試用戶qingsword避除,配置密碼
qing@qingsword.com:~$ sudo useradd qingsword
qing@qingsword.com:~$ sudo passwd qingsword
#配置qingsword用戶使用/dev/sdb1分區(qū)的限額
qing@qingsword.com:~$ sudo edquota -u qingsword
#輸入上面的命令后怎披,會進入一個vi編輯界面
#對其中各字段解釋如下:
#Filesystem下顯示實現(xiàn)磁盤配額的分區(qū);
#blocks下為當前已經(jīng)使用的大小瓶摆,不用修改凉逛;
#soft為軟限制,超出后會給出警告群井,超出的部分默認會保存7天状飞;
#hard為硬限制,不可超越的限制(軟硬限制默認單位都是KB);
#后面的兩個相同的soft昔瞧、hard分別表示分區(qū)中這個用戶可以創(chuàng)建的文件數(shù)目軟硬限制指蚁;
#本例中設(shè)置,qingsword可以使用/dev/sdb1分區(qū)的軟限制大小10KB自晰,硬限制20KB凝化,可創(chuàng)建的文件個數(shù)軟限制是3個,硬限制5個酬荞;
Disk quotas for user qingsword (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 10 20 0 3 5
#修改保存退出后搓劫,開啟這個分區(qū)的磁盤配額
qing@qingsword.com:~$ sudo quotaon /sdb1
如果操作無誤,現(xiàn)在磁盤配額就已經(jīng)開始起作用了混巧,使用qingsword用戶登錄測試如下:
#切換到qingsword用戶
qing@qingsword.com:~$ su qingsword
#進入/dev/sdb1分區(qū)
qingsword@qingsword.com:~$ cd /sdb1
#使用dd命令進行文件寫入測試枪向,
# if=/dev/zero 表示從"/dev/zero"文件輸出,of=/sdb1/testfile1 表示輸入到"/sdb1/testfile1"文件中咧党,也就是秘蛔,從/dev/zero這個文件中讀取垃圾數(shù)據(jù)寫入/sdb1/testfile1這個文件中;
# bs=1K 表示一次讀取寫入的大小是1KB傍衡,count=12 表示讀取12次深员;
#所以理論上最后寫入/sdb1/testfile1的數(shù)據(jù)應(yīng)該是12KB
qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile1 bs=1K count=12
sdb1: warning, user block quota exceeded.
#因為針對qingsword用戶在這個分區(qū)的軟限制設(shè)置是10KB,所以這里給出了警告信息
12+0 records in
12+0 records out
12288 bytes (12 kB) copied
#可以查看到testfile1的大小是12KB
qingsword@qingsword.com:/sdb1$ ls -l testfile1
-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:24 testfile1
#測試向第二個文件/sdb1/testfile2寫入10KB垃圾數(shù)據(jù)
qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile2 bs=1K count=10
sdb1: write failed, user block limit reached.
dd: writing `/sdb1/testfile2': Disk quota exceeded
#出現(xiàn)了一個警告蛙埂,并且下方顯示只有8K的數(shù)據(jù)被復制倦畅,這是因為我們設(shè)置的硬限制是20KB
9+0 records in
8+0 records out
8192 bytes (8.2 kB) copied
#第一個文件已經(jīng)占用了12KB的數(shù)據(jù),第二個文件僅寫入了8KB的數(shù)據(jù)绣的,硬限制是不能被超越的叠赐,而軟限制10KB是可以被超越的,超越的數(shù)據(jù)屡江,會在這個分區(qū)中默認保存7天芭概,然后系統(tǒng)將自動刪除這些數(shù)據(jù)
qingsword@qingsword.com:/sdb1$ ls -l testfile1 testfile2
-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:33 testfile1
-rw-rw-r--. 1 qingsword qingsword 8192 Jan 13 16:33 testfile2
#下面測試文件數(shù)量限制,按照前面的介紹和我們的配置盼理,超過3個文件的軟限制時會給出警告谈山,而無法超過5個文件的硬限制,使用touch來創(chuàng)建空文件
qingsword@qingsword.com:/sdb1$ touch testfile3
#超過3個文件時出現(xiàn)了警告
qingsword@qingsword.com:/sdb1$ touch testfile4
sdb1: warning, user file quota exceeded.
qingsword@qingsword.com:/sdb1$ touch testfile5
#touch第6個文件的時候提示創(chuàng)建失敗
qingsword@qingsword.com:/sdb1$ touch testfile6
sdb1: write failed, user file limit reached.
touch: cannot touch `testfile6': Disk quota exceeded
#超過文件數(shù)量軟限制的部分同樣會被保存7天宏怔,然后被系統(tǒng)自動刪除
qingsword@qingsword.com:/sdb1$ ls
aquota.group testfile2 testfile4
aquota.user testfile1 testfile3 testfile5
#查看當前用戶的磁盤配額使用情況奏路,兩個已經(jīng)超出的配置分別是文件大小和文件數(shù)量,寬限時間還有6天
qingsword@qingsword.com:/sdb1$ quota -vugs
Disk quotas for user qingsword (uid 1002):
Filesystem space quota limit grace files quota limit grace
dev/sdb1 20K* 10K 20K 6days 5* 3 5 6days
#可以使用root權(quán)限修改寬限時間
qing@qingsword.com:~$ sudo edquota -t
e.關(guān)閉磁盤配額
#關(guān)閉單個磁盤的磁盤配額
qing@qingsword.com:~$ sudo quotaoff /sdb1
#關(guān)閉所有已經(jīng)開啟的磁盤配額
qing@qingsword.com:~$ sudo quotaoff -a
#反之臊诊,開啟所有磁盤配額
qing@qingsword.com:~$ sudo quotaon -a
#如果不再使用磁盤配額鸽粉,可以將配置文件也刪除
qing@qingsword.com:~$ sudo rm -rf /sdb1/aquota.*
#最后刪除/etc/fstab中的自動掛載即可