1. 程式人生 > >centos用戶磁盤使用配額

centos用戶磁盤使用配額

磁盤空間 用戶 配額 限制

磁盤配額是對每個用戶可以使用的磁盤空間進行限制,限制每個用戶可以使用的磁盤空間的大小。磁盤配額的設定對象是能夠實施讀寫操作的塊設備,而且必須要有正確的文件系統。磁盤配額可以限制用戶和組的訪問行為,比如為指定用戶限制磁盤使用量,通過磁盤空間進行限制(一個block的限制,代表1KB存儲空間)或者通過inode進行限制。也可以直接通過組的方式來限制指定組中所有成員的磁盤使用量的總和。

在進行磁盤配額的限制的時候可以有兩種方式,第一種比較人性化,叫做soft limit——軟限制,這種限制是當用戶的磁盤使用量達到軟配額限制,將會啟動寬限期倒計時;在倒計時歸0之前,用戶可以正常使用剩余的配額量,但一旦倒計時歸0,用戶將不能繼續使用磁盤空間,除非將數據進行清理,低於軟限制,而後可以繼續使用磁盤空間。也就是說當一個用戶使用的磁盤空間達到了限制的上限之後,先進行提醒,如果一段時間之後還是沒有改變,再對其進行處理。與此相對的就是

hard limit——硬限制了,這種限制是用戶所能夠使用的磁盤空間的真正上限,一旦達到這個上限了,不再提醒,直接對用戶進行處理,處理的方法可以是關閉用戶使用磁盤的權利。一般來講,軟限制要比硬限制的數值要小一些,比如軟限制可以是90M,硬限制可以是120M。一般在一個系統中軟、硬限制都會存在,也就是先對用戶進行提醒,用戶可以繼續使用,但是用戶不能達到硬限制。 在Linux中默認的寬限期為7天,當一個用戶達到了軟限制,還能夠在這7天中繼續使用磁盤,直到到了7天這個期限之後,就會強制的對用戶進行處理。

如果想要讓分區或卷能夠支持磁盤配額的設定,需要單獨的掛載選項,也就是在掛載的時候加上usrquota和grpquota這兩個選項


首先建立一個能夠掛載的磁盤,比如在我的系統中有磁盤/dev/sdc,在這個磁盤中使用fdisk /dev/sdc 命令來建立一個 /dev/sdc1 磁盤:

[[email protected] ~]# fdisk /dev/sdc
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0x9de7a864 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認為 41943039):
將使用默認值 41943039
分區 1 已設置為 Linux 類型,大小設為 20 GiB
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[[email protected]
/* */ ~]#


在建立之後將其進行格式化,裝上ext4文件系統:

[[email protected] ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系統標簽=
OS type: Linux
塊大小=4096 (log=2)
分塊大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一個數據塊=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000
Allocating group tables: 完成                            
正在寫入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

然後建立一個掛載點:

[[email protected] ~]# mkdir /tmp/sdc


在建立之後就可以將剛才的磁盤掛載到這個掛載點上,但是在這裏需要註意的是必須加上usrquota和grpquota選項才能使用用戶配額,格式如下:

~]# mount -o usrquota,grpquota DEVICE MOUNT_POINT

或者在/etc/fstab文件中寫入以下內容:

DEVICE MOUNT_POINT FSTYPE defaults,usrquota,grpquota 0 0


舉例如下:

[[email protected] ~]# mount -o usrquota,grpquota /dev/sdc1 /tmp/sdc/

此時使用mount命令查看掛載的詳細內容就會發現多了/dev/sdc1的掛載信息,並且有了usrquota和grpquota選項:

[[email protected] ~]# mount | grep "/sdc1"
/dev/sdc1 on /tmp/sdc type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)
[[email protected] ~]#


在進行了以上的掛載操作之後就可以在這塊磁盤上進行用戶的配額管理了。進行配額管理使用需要兩個重要的文件,一個是aquota.group,這個文件是為了對組進行配額;另一個是aquota.user,這個文件是為了對用戶進行配額。在一個磁盤新掛載的之後是沒有這兩個文件的,需要使用下面這個命令來進行創建:

quotacheck命令:

quotacheck - scan a filesystem for disk usage, create, check and repair quota files

選項:

-v, --verbose:顯示整個操作過程的詳細信息

-u, --user:創建,檢測和修復用戶配額文件

-g, --group:創建,檢測和修復組配額文件

-c, --create-files:經過檢測,如果沒有用戶配額文件和或組配額文件,就安裝用戶給定的選項來進行文件的創建;

-a, --all:所有的在/etc/fstab文件中包含了與配額有關的掛載選項的設備上,是否有對應選項的配額文件;


在使用了這個命令之後就會產生兩個文件:

[[email protected] ~]# quotacheck -u -g /tmp/sdc/
[[email protected] ~]# ls /tmp/sdc/
aquota.group  aquota.user  lost+found
[[email protected] ~]#


這兩個文件分別有自己的功能,當然如果只是需要對用戶進行配額,則不需要aquota.group這個文件,反過來也是,在使用的時候根據自己的需要來進行命令的使用。

在這兩個文件創建完畢了之後,就可以對用戶或組進行磁盤配額了,使用的命令是:

edquota

-u, --user:編寫用戶配額,默認的功能;

-g, --group:編寫組配額,不推薦使用;

-t, --edit-period:設置超出軟限制的寬限期;默認7天,可以選擇以秒,分鐘,小時,天等時間單位;


在使用這個命令時,比如為一個用戶“test”的配額進行限制:

[[email protected] ~]# edquota -u test

在這條命令執行之後就會進入vim的界面,我們可以在這個界面中對用戶的配額進行修改:

Disk quotas for user test (uid 1006):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdc1                        0         0         0        0        0        0
~                                                                                                                                                                          
~                                                                                                                                                                          
~


在這個vim界面中我們可以看到能夠修改的選項有塊數(文件的大小,單位是KB)的軟限制和硬限制還有inode的軟限制和硬限制,在這裏我對塊數的軟限制和硬限制進行修改,修改的方法是直接對數值進行修改,然後保存這個文件即可:

Disk quotas for user test (uid 1006):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdc1                       0       1000       2000        0        0        0
~                                                                                                    
~                                                                                                    
~

在進行了修改保存後,必須使用以下命令來使配額功能生效或失效:

quotaon(是配額功能生效), quotaoff(是配額功能失效)

quotaon, quotaoff - turn filesystem quotas on and off


第一種用法是不指定磁盤:

[[email protected] ~]# quotaon -avug
/dev/sdc1 [/tmp/sdc]: group quotas turned on
/dev/sdc1 [/tmp/sdc]: user quotas turned on
[[email protected] ~]#
[[email protected] ~]# quotaoff -avug
/dev/sdc1 [/tmp/sdc]: group quotas turned off
/dev/sdc1 [/tmp/sdc]: user quotas turned off
[[email protected] ~]#

或者直接指定磁盤:

quotaon|quotaoff /dev/sdb1


查看配額的使用情況

quota:顯示用戶的磁盤配額,後頭要跟上用戶的名稱

quota - display disk usage and limits

[[email protected] sdc]# quota test
Disk quotas for user test (uid 1006): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdc1    2000*   1000    2000   6days       2       0       0        
[[email protected] sdc]#



在這個例子中,我將塊數的軟限制改為1M,硬限制改為2M,在保存之後將當前用戶切換到test,之後可以使用這個用戶通過dd命令建立一個1M的文件(在創建之前首先要確保這個用戶對這個文件擁有寫入權限,如果沒有要賦予):

[[email protected] sdc]$ dd if=/dev/zero bs=1024 count=2000 of=/tmp/sdc/FILE1_2M
記錄了2000+0 的讀入
記錄了2000+0 的寫出
2048000字節(2.0 MB)已復制,0.00675606 秒,303 MB/秒


此時在/tmp/sdc文件中test用戶使用的磁盤空間就占去了2M的空間,如果再次使用這個命令就會報錯:

[[email protected] sdc]$ dd if=/dev/zero bs=1024 count=2000 of=/tmp/sdc/FILE2_2M
sdc1: write failed, user block limit reached.
dd: 寫入"/tmp/sdc/FILE2_2M" 出錯: 超出磁盤限額
記錄了1+0 的讀入
記錄了0+0 的寫出
0字節(0 B)已復制,0.000285576 秒,0.0 kB/秒
[[email protected] sdc]$



repquota:查看磁盤配額的使用情況,只有root用戶可以使用

repquota - summarize quotas for a filesystem

[[email protected] sdc]# repquota -avug
*** Report for user quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0      0               2    0     0       
test      +-     2000    1000    2000  6days      2    0     0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
*** Report for group quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    1020       0      0            3    0    0       
test      --    2000      0      0            2    0    0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
[[email protected] sdc]#

註意:在使用磁盤配額的時候,無論進行怎樣的操作, root都不受磁盤配額限制,最多只能對root用戶進行提醒,所以root的權限是非常大的,在沒有必要的時候盡量不要使用root用戶進行登陸。



centos用戶磁盤使用配額