centos7.x的磁盤限額配置
centos7.x的磁盤限額配置
1. 什麽是磁盤配額?
由於 Linux 是一個多用戶管理的操作系統,而 Linux 默認情況下並不限制每
個用戶使用磁盤空間的大小,假如某個用戶疏忽或者惡意占滿磁盤空間,將導致系
統磁盤無法寫入甚至崩潰;為了保證系統磁盤的有足夠的剩余空間,我們需要對用
戶和組進行磁盤空間使用限制。
磁盤配額:
1. 限制用戶和組對磁盤空間的使用量
2. 限制用戶和組在磁盤內創建文件的個數
註:磁盤配額是針對分區進行設置的,無法實現“某用戶在系統中共計只
能使用 50MB 磁盤空間”只能設置某用戶在/home 分區能使用 30M 這
樣的限制。
2. 磁盤配額開啟條件
內核必須支持磁盤配額
[root@localhost~]# grep CONFIG_QUOTA /boot/config-3.10.0-514.el7.x86_64
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
# CONFIG_QUOTA_DEBUGis not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y
CONFIG_QUOTACTL_COMPAT=y
[root@localhost~]# yum -y install quota 安裝quota軟件
3. 磁盤配額的 N 個基本概念
軟限制:低級限制,此限制可以被突破,但是突破後會被警告,並且最大
限度不會超過硬限制,超出部分會有寬限天數,寬限天數到期後超出部分
被清空。
硬限制:絕對限制,此限制不會被突破。
寬限天數:寬限天數默認是 7 天,當有數據超過軟限制後,超出部分會被
計時,寬限天數到期後超出部分數據將被清空。
4、磁盤配額實驗規劃:
(1)添加新的硬盤或者分區,進行格式化掛載
(2)創建被限制用戶和組,三個用戶分別是a1、b1、c1;
用戶組:abc;將三個用戶添加到 abc組內
(3)abc組的磁盤配額:硬限制為 100MB,軟限制為 90MB,
文件個數不做限制;
(4)a1 用戶硬限制為 50MB,軟限制為 40MB,文件個數硬限制為:7 個,軟限制為 5個;剩下的 b1、c1 用戶硬限制為35MB,軟限制為30MB,文件數不做限制。
三個用戶相加的總限制為 110MB 超過了abc的組限制,這樣的話肯定有一個用戶達不到自己最大的硬限制就會無法寫入了,因為,用戶限制和組限制同時存在時,越小的越先生效。
5. 用戶和組的磁盤配額配置步驟:
(1)增加一塊硬盤,創建單獨分區並格式化。創建的分區要大於三個用戶的限制的總和,不然影響實驗效果。
[root@localhost ~]# fdisk/dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x55094478 創建新的DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):
起始 扇區 (2048-4194303,默認為2048):
將使用默認值 2048
Last 扇區,+扇區 or +size{K,M,G} (2048-4194303,默認為 4194303):
將使用默認值 4194303
分區 1 已設置為 Linux 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
(2)格式化創建好的分區
[root@localhost~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
(3)創建一個分區掛載目錄abc,並把上面創建的分區掛載到abc目錄
[root@localhost ~]# mkdir/abc
[root@localhost ~]# mount/dev/sdb1 /abc
(4)臨時開啟磁盤配額方法
[root@localhost~]# mount -o remount,usrquota,grpquota /dev/sdb1
(5)永久開啟磁盤配額方法,修改/etc/fstab配置文件,添加下面的一行信息即可。
[root@localhost~]# vim /etc/fstab
/dev/sdb1 /abc xfs defaults,usrquota,grpquota 0 0
[root@localhost~]# mount –a
(6)創建用戶和組並把三個用戶加入abc組。
[root@localhost ~]# groupaddabc
[root@localhost ~]# useradd-G abc a1
[root@localhost ~]# useradd-G abc b1
[root@localhost ~]# useradd-G abc c1
[root@localhost ~]# echo‘123456‘|passwd --stdin a1
更改用戶 a1 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost ~]# echo‘123456‘|passwd --stdin b1
更改用戶 b1 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost ~]# echo‘123456‘|passwd --stdin c1
更改用戶 c1 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
註意:xfs文件系統和ext4文件系統區別是這裏不需要創建配額配置文件
(7)設置用戶和組的磁盤配額限制
[root@localhost~]# xfs_quota -x -c ‘limit bsoft=40m bhard=50m isoft=5 ihard=7 a1‘ /abc
說明:limit是設置限制的;bsoft是軟限制;bhard是硬限制;
isoft是文件個數軟限制;ihard是文件個數硬限制,a1是要配置限額的用戶
/abc為需要限制的目錄。
[root@localhost ~]# xfs_quota -x -c ‘limitbsoft=30m bhard=35m c1‘ /abc
[root@localhost ~]# xfs_quota -x -c ‘limitbsoft=30m bhard=35m b1‘ /abc
[root@localhost ~]# xfs_quota -x -c ‘limitbsoft=90m bhard=100m isoft=15 ihard=20 -g abc‘ /abc
說明:這裏是給用戶組abc設置/abc目錄的磁盤限額。
查看用戶的磁盤限額
[root@localhost ~]# edquota a1
Disk quotas for user a1 (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40960 51200 0 5 7
查看用戶組的磁盤配額
[root@localhost~]# edquota -g abc
Disk quotas forgroup abc (gid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 92160 102400 0 15 20
(8)設置用戶和組的目錄權限
[root@localhost~]# setfacl -m user:a1:rwx /abc/
[root@localhost~]# setfacl -m user:b1:rwx /abc/
[root@localhost~]# setfacl -m user:c1:rwx /abc/
[root@localhost~]# setfacl -m group:abc:rwx /abc/
(9)驗證磁盤配額是否配置成功
[root@localhost~]# su - a1
[a1@localhostabc]$ touch {1..8}.txt
touch: 無法創建"8.txt": 超出磁盤限額
[a1@localhostabc]$ ls
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt
[a1@localhostabc]$ rm -f *
[a1@localhostabc]$ dd if=/dev/zero of=/abc/1.txt bs=1M count=60
dd: 寫入"/abc/1.txt" 出錯: 超出磁盤限額
記錄了51+0的讀入
記錄了50+0的寫出
52428800字節(52 MB)已復制,0.742934 秒,70.6 MB/秒
[a1@localhostabc]$ ls -lh
總用量50M
-rw-rw-r-- 1 a1 a1 50M 11月 10 16:35 1.txt
可以看到上面a1用戶只能創建我們限定的7個文件,也只能創建50M的大小,這說明我們的磁盤配額限制成功了,其他用戶這裏就不再演示了。
6、最後附上相關命令的參數:
(1)設置用戶和組的磁盤配額限制
edquota 選項 用戶名或組名
-u 用戶名
-g 組名
-t 設定寬限時間
-p 復制磁盤配額規則,不需要每一個用戶或者組都手動設置一遍
(2)啟動磁盤配額
quotaon 選項 分區名
-a 根據/etc/mtab 文件啟動所有分區的磁盤配額
-u 啟動用戶的磁盤配額
-g 啟動組的磁盤配額
-v 顯示啟動過程信息
(3)關閉磁盤配額
quotaoff 選項 分區名
-a 根據/etc/mtab 文件關閉所有分區的磁盤配額
-u 關閉用戶的磁盤配額
-g 關閉組的磁盤配額
(4)查詢用戶或組的配額
quota 選項 用戶或組名
-u 用戶名
-g 組名
-v 顯示詳細信息
-s 以常見單位顯示大小
(5)查詢文件系統配額
repquota 選項 分區名
-a 根據/etc/mtab 文件查詢所有分區的磁盤配額
-u 查詢用戶配額
-g 查詢組配額
-v 顯示詳情
-s 以常見單位顯示
(8)非交互設置磁盤配額
setquota -u 用戶名 軟限制(容) 硬限制(容) 軟限制(數)\
硬限制(數) 分區名
本文出自 “成長中的強大” 博客,請務必保留此出處http://longlei.blog.51cto.com/12685458/1980720
centos7.x的磁盤限額配置