『學了就忘』Linux檔案系統管理 — 64、磁碟配額的配置步驟

繁華似錦Fighting發表於2021-12-06

上一篇文章已經做了磁碟配額實踐的大概規劃,下面我們就開始一步一步的來實踐一下。

1、手工建立一個5GB的分割槽

手工建立一個5GB的分割槽/dev/sdb2,掛載到/disk目錄下。

手工建立分割槽看之前使用fdisk命令進行手工分割槽文章可解決。

檢視系統分割槽,可以看到/dev/sdb2分割槽已經掛載。

image

檢視/dev/sdb2分割槽大小,約為5GB。

如下圖所示:

image

2、建立需要做限制的三個使用者

如下所示:

[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# passwd user1
[root@localhost ~]# passwd user2
[root@localhost ~]# passwd user3

3、在分割槽上開啟磁碟配額功能

重新掛載/disk分割槽,並加入使用者和使用者組的磁碟配額功能,執行下面命令:

[root@localhost ~]# mount -o(開啟) remount(重新掛載),usrquota(使用者配額),grpquota(組配額) /disk

檢視系統分割槽,我們可以看到命令生效了,/dev/sdb2分割槽已經增加了磁碟配額許可權。

image

以上操作只是臨時生效,要想永久生效,則需要修改/etc/fstab檔案,改成如下:

[root@localhost ~]# vi /etc/fstab
/dev/sdb1   /disk   ext4    defaults,usrquota,grpquota    0 0

注意:
修改配置檔案如果想要生效,必須重啟系統,否則需要把分割槽重新掛載一遍。
執行命令:[root@localhost ~]# mount -o remount /disk

4、建立磁碟配額的配置檔案

需執行如下命令:

[root@localhost ~]# quotacheck [選項] [分割槽名]

選項:

  • -a:掃描/etc/mtab檔案中所有啟用磁碟配額功能的分割槽。如果加入此引數,命令後面就不需要加入分割槽名了。
  • -c:不管原有的配置檔案,重新掃描並建立新的配置檔案。
  • -u:建立使用者配額的配置檔案,也就是生成aquota.user檔案。
  • -g:建立組配額的配置檔案,會生成aquota.group檔案。
  • -v:顯示掃描過程。
  • -m:強制以讀寫的方式掃描檔案系統,和-M類似。一般掃描根分割槽時使用。
  • -f:強制掃描檔案系統,並寫入新的配置檔案。一般掃描新新增的硬碟分割槽時使用

常用選項[root@localhost ~]# quotacheck -avug

提示:執行quotacheck命令前,需要關閉SELinux,否則會報錯。

執行命令:[root@localhost ~]# getenforce

getenforce命令是查詢當前系統下SELinux的狀態,Enforcing表示強制生效中。

  • 關閉方式一(臨時)
    [root@localhost ~]# getenforce 0(關)/1(開)
  • 關閉方式二(永久)
    [root@localhost ~]# vim /etc/selinux/config(修改配置檔案)
    image
    Enforcing換成disabled,就是永久生效了。但是永久生效需要重啟系統。

使用臨時關閉方式,再次檢視SELinux狀態

執行命令:[root@localhost ~]# getenforce

顯示Permissive,寬容的意思,就是我不會在管你,但是有危險操作會提醒你。

關閉SELinux,就可以執行quotacheck命令了,因為不用組配額,

執行命令:[root@localhost ~]# quotacheck -avu

結果如下:

image

出現了很多內容,但是命令已經生效了,Scanning /dev/sdb2 [/disk] done說明磁碟已掃描完成。其他內容說的是沒有找到一些舊檔案。

我們進入/disk目錄,如果看到aquota.user檔案,就說明使用者配額配置檔案已經建立。(同理aquota.group代表組配額配置檔案)

image

注意:如果需要給根分割槽開啟配額功能,需要進行如下操作:

# 開啟分割槽的配額功能
[root@localhost ~]# vi /etc/fstab 
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2  /  ext4  defaults,usrquota,grpquota  1 1

# 重新掛載分割槽
[root@localhost ~]# mount -o remount /

# 建立磁碟配額的配置檔案的時候多加一個m選項
[root@localhost ~]# quotacheck -avum

說明:
如果我們自動掃描/分割槽建立配額配置檔案時,因為/分割槽已經掛載成讀寫系統,而quotacheck需要把分割槽先掛載成只讀分割槽,然後建立配置檔案,最後再掛載回來,所以不能直接在/分割槽建立配置檔案。這時就需要使用-m強制以讀寫方式掃描檔案系統。

5、開始設定使用者和組的配額限制

實現磁碟配的命令如下:

[root@localhost ~]# edquota [選項] [使用者名稱或組名]

選項:

  • -u使用者名稱:設定使用者配額。
  • -g組名:設定組配額。
  • -t:設定寬限時間。
  • -p:複製配額限制。如果已經設定好某個使用者的配額限制,其他使用者的配額限制如果和這個使用者相同,那麼可以直接複製配額限制,而不用都手工指定。

需求:我們給user1使用者設定的配額限制是:磁碟空間軟限制是40MB,硬限制是50MB;檔案個數的軟限制是8個,硬限制是11個(稍微小一點,一會測試時方便測試)。

執行命令:[root@localhost ~]# edquota -u user1

edquota命令進入之後,就是標準的vim操作方法,內容如下:

#磁碟配額是設定使用者user1(UID是500)
Disk quotas for user user1(uid 500):

#分割槽名   已佔用容量  軟限制  硬限制  己佔用檔案數  軟限制  硬限制
Filesystem blocks    soft    hard     inodes     soft    hard
/dev/sdb2    0        0        0        0         0        0

說明

  • 進入edquota命令後的內容說明:針對user1使用者的磁碟配額,user1的使用者ID是500。user1針對/dev/sdb2分割槽進行磁碟配額,之後就是6項就是針對容量和檔案數的配額設定。
  • 特別注意:blocksinodes兩個選項一定不能手動修改,這兩項是系統檢測出來user1使用者在/dev/sdb2分割槽上所佔用的空間和所佔用的檔案數。需要我們手動配置的是後兩項 soft軟限制和hard硬限制。
  • 提示:[root@localhost ~]# edquota -u user1命令直接寫使用者名稱就可以,後邊不用接任何引數,不用你再指定哪個分割槽,因為哪些分割槽開啟了磁碟配額,再上面/etc/fstab檔案中寫的很清楚。還有我們進入到edquota命令之後,開啟磁碟配額的分割槽情況都寫的很清楚,如上面內容。

開始進行配置,按照上面的需求配置如下:

Disk quotas for user user1(uid 500):

#分割槽名   已佔用容量  軟限制  硬限制  己佔用檔案數  軟限制  硬限制
Filesystem blocks    soft    hard     inodes     soft    hard
/dev/sdb2    0       40000  50000       0          8      11

# 注意:容量預設單位是KB。還有在修改檔案的時候不用對齊,是七列就行。

退出方式和vim編輯器一樣。

6、啟動和關閉配額

(1)啟動配額

配額的配置完成,接下來只需要啟動配額就大功告成了。

啟動命令如下:

[root@localhost ~]# quotaon [選項] [分割槽名]

選項:

  • -a:依據/etc/mtab檔案啟動所有的配額分割槽。如果不加-a,後面就一定要指定分割槽名。
  • -u:啟動使用者配額。
  • -g:啟動組配額。
  • -v:顯示啟動過程的資訊。
#啟動/disk 分割槽的配額
[root@localhost ~]# quotaon -avu /disk/
/dev/sdb2[/disk]:user quotas turned on(意思是針對/dev/sdb2分割槽的使用者配置已經開啟)

# 如果有組,還會有一條提示:/dev/sdb2[/disk]:group quotas turned on

(2)關閉配額

命令如下:

[root@localhost ~]# quotaoff [選項] [分割槽名]

選項

  • -a:依據/etc/mtab檔案,關閉所有的配額分割槽。如果不加-a,後面就一定要指定分割槽名。
  • -u:關閉使用者配額。
  • -g:關閉組配額。

例如:依據/etc/mtab檔案關閉配額分割槽。

執行命令:[root@localhost ~ ] # quotaoff -a

7、磁碟配額的查詢

(1)quota命令查詢使用者或使用者組配額:

[root@localhost ~]# quota [選項] [使用者名稱或組名]

選項:

  • -u使用者名稱:查詢使用者配額。
  • -g組名:查詢組配額。
  • -v:顯示詳細資訊。
  • -s:以習慣單位顯示容量大小,如M,G。

執行命令:[root@localhost ~]# quota -uvs user1

結果如下圖:

image

(2)repquota命令查詢分割槽的檔案系統配額

[root@localhost ~]# repquota [選項] [分割槽名]

選項:

  • -a:依據/etc/mtab檔案查詢配額。如果不加-a選項,就一定要加分割槽名。
  • -u:查詢使用者配額。
  • -g:查詢組配額。
  • -v:顯示詳細資訊。
  • -s:以習慣單位顯示容量大小。

執行命令:[root@localhost ~]# repquota -auvs

結果如下圖:

image

可以看到上圖,在哪一個分割槽上,所有使用者的配額情況。

兩個命令,習慣用哪個都行。

8、對配置的磁碟配額進行測試

測試的前提,用user1使用者,進入到/disk目錄進行測試,user1使用者對/disk目錄要有讀寫許可權。

執行命令:建立test檔案,指定大小60MB。

[user1@localhost disk]$ dd if=/dev/zero of=/disk/test bs=1M count=60

命令說明:dd命令是做磁碟對拷的。其實可以把dd命令看成是cp命令,dd命令功能更多一些,比如可以指定複製檔案的大小等。if表示原始檔,of是目標檔案,就是說要把if的檔案複製到of的位置。bs是一次複製1MB,執行60次。這就是上邊命令的意思。

執行命令結果如下:

image

檢視test檔案的大小,可以看到test檔案並沒有超過50MB。

image

我們再來檢視一下user1使用者的磁碟配額

image

可以看到使用者的容量配額已經被佔滿了。

檔案個數的測試就不記錄了。

自己建立檔案測試一下即可。

9、配額複製(擴充套件1)

user2使用者的配額值和user1使用者完全一樣,我們就可以使用user1使用者作為模板進行復制。這樣我們如果需要建立大量的配額值一致的使用者時,就會非常方便,不用一個個手工建立了。

配額複製命令如下:

# 命令 -p 源使用者 -u 目標使用者
[root@localhost ~]# edquota -p user1 -u user2

再來檢視一下user2使用者的磁碟配額,發現user2使用者的磁碟配額已經被改變,和user1使用者的一樣了。

image

注意:

如果需要批量配置使用者的磁碟配額,這種方式也不太好用,因為你需要先有一個使用者配額模板,才可以批量配額給使用者。但是這個使用者模板需要手動建立,因為執行edquota命令,進入磁碟配額編輯的時候是和vim操作一樣的,不能通過命令執行的,這點需要注意一下。下面的非互動設定使用者磁碟配額可以很好的解決上面問題。

10、非互動設定使用者磁碟配額(擴充套件2)

命令格式如下:

[root@localhost ~]# setquota -u 使用者名稱 容量軟限制 容量硬限制 個數軟限制 個數硬限制 分割槽名

執行命令如下:

# 建立使用者
[root@localhost ~]#useradd user3
[root@localhost ~]#passwd user3

#設定使用者在/disk 分割槽的容量軟限制為40MB,硬限制50MB。檔案個數軟限制8個,硬限制10個。
[root@localhost ~]#setquota -u user3 40000 50000 8 10 /disk

再來檢視一下user3使用者的磁碟配額,已經生效了。

如下圖所示:

image

這個命令在寫指令碼批量設定時更加方便。當然寫指令碼時也可以先建立一個模板的使用者,設定好磁碟配額,再進行配額複製,也是可以的。

來個小總結:配置磁碟配額的方式有三種

  • edquota命令方式,基本方式。
  • 配額複製的方式。
  • 非互動設定使用者磁碟配額。

11、修改寬限時間

很簡單的,我們要求把寬限時間改為8天。

修改命令:[root@localhost ~]# edquota -t

vim編輯器的操作模式一樣進行修改,如下圖所示:

image

相關文章