1. 程式人生 > >centos7.x的磁盤限額配置

centos7.x的磁盤限額配置

linux磁盤配額設置

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的磁盤限額配置