Linux的磁盤配額

一、介紹

   磁盤配額(quota)就字面意義來看,就是限額的意思。即對Linux的容量空間而言,就是有多少容量限制的意思。

   磁盤配額在使用上也有一些限制:

l                僅針對整個分區:磁盤配額實際運行時,是針對整個分區進行限制的,例如,如果/dev/hda5載入在/home下,那麼,在/home下面的所有目錄都會受到限制。

l                只針對一般身份用戶有效,root用戶就不能設置磁盤配額,應爲他擁有整個系統所有的數據。

磁盤配額程序針對整個分區的限制主要分爲下面幾個部分:

l                最低限制(soft): 這是最低限制容量的意思,用戶在寬限期間之內,其容量可以超過soft,但需要寬限時間之內將磁盤容量降低到soft的容量限制之下

l                最高限制(hard):最高限制就是絕對不能超過的容量。通常最高限制會比最低限制高

 例如網絡磁盤空間爲30MB ,那麼hard就設置爲30MB,但爲了讓用戶注意,所以當使用空間超過25MB時,如用戶使用了27MB的空間時,那麼系統就會警告用戶,讓用戶可在寬限時間內將他的文件容量降低至25MB(亦即是soft)之內。也就是說,softhard之間的容量其實就是寬限的容量
l                寬限時間:當用戶使用的空間超過了soft,卻還沒有到達hard時,那麼在這個寬限時間之內,就必需要請用戶將使用的磁盤容量降低到soft之下。而當用戶將磁盤容量使用情況超過soft時,寬限時間就會自動被啓動,而在使用者將容量降低到soft之下,那麼寬限時間就會自動的取消。

二、 實例講解

  整個範例的說明如下:

  我們假設主機裏頭有quser1quser2這兩個用戶,且他們兩個都掛在qgroup這個用戶組下;    

   每個用戶總共有50MB的磁盤空間(不考慮inode)限制。並且soft45MB 

   而寬限時間設定爲1天,也就是說,這兩人可以突破45MB的限制,但是在一天之內必須要將多餘的文件刪除,否則將無法使用剩下的空間; 

   gquota這個用戶組考慮最大限額,所以設定爲90MB

1.     準備好測試環境,建立用戶與用戶組

[root@redflag ~]# groupadd qgroup


[root@redflag ~]# useradd -g qgroup quser1


[root@redflag ~]# useradd -g qgroup quser2


[root@redflag ~]# passwd quser1


[root@redflag ~]# passwd quser2

2.      建立文件系統的磁盤配額支持

  由於需要在ext2/ext3Linux擴展格式文件系統,纔可以啓動磁盤配額完整的支持,所以,建議將準備啓用磁盤配額的磁盤啓動參數寫入磁盤配額的磁盤設置(/etc/fstab)。必須注意,最好不要以根目錄進行磁盤配額,另外,不要針對root做磁盤配額。

    這裏需要補充一個知識點,一般來說我們是通過編輯/etc/fstab後,再重新載入文件系統的方法。通過編輯/etc/fstab來,改變/etc/mtab

 [root@redflag ~]df

 文件系統             1K-        已用           可用       已用%    掛載點

 /dev/sda3          7516200        4181780       2946452      59%      /

/dev/sda1          101086         16915         78952        18%      /boot

tmpfs              127820         0             127820        0%      /dev/shm

/dev/sdb1          972404         17648         905360        2%      /mnt/disk2

  我的/mnt/disk2是獨立的分區,並且它的設備名爲/dev/sdb1。那麼,我必須啓動/mnt/disk2這個/dev/sdb1的磁盤配額文件格式。通過vi編輯/etc/fstab文件來實現。

 

 [root@redflag ~]# vi /etc/fstab

 LABEL=/                 /                       ext3    defaults        1 1

  LABEL=/boot             /boot                   ext3    defaults        1 2

 tmpfs                   /dev/shm                tmpfs   defaults        0 0

 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

 sysfs                   /sys                    sysfs   defaults        0 0

 proc                    /proc                   proc    defaults        0 0

 LABEL=SWAP-sda2         swap                    swap    defaults        0 0

 /dev/sdb1     /mnt/disk2     ext3    defaults,usrquota,grpquota         1 2

  這樣就加入了磁盤配額的磁盤格式了。不過,由於真正的磁盤配額在讀取時是讀取/etc/mtab文件,這個文件需要重新啓動之後才能使用/etc/fstab的新數據改寫,所以這個時候可以選擇:

l                重新啓動 (reboot)

l              重新載入文件系統來驅動設置值,操作如下:

 

 [root@redflag ~]# umount /dev/sdb1
[root@redflag ~]# mount -a 


[root@redflag ~]# grep '/mnt/disk2' /etc/mtab


/dev/sdb1 /mnt/disk2 ext3 rw,usrquota,grpquota 0 0


 
3.     掃描磁盤的用戶使用狀況,併產生重要的aquota.groupaquota.user

   命令介紹:

   [root@redflag ~]# quotacheck [-avug] [/mount_point]

       參數:

       -a:掃描所有在/etc/mtab內含有磁盤配額支持的文件系統,加上此參數後,/mount_point可不必寫,因爲掃描所有的文件系統了

       -u:針對用戶掃描文件與目錄的使用情況,會建立aquota.user

       -g:針對用戶組掃描文件與目錄的使用情況,會建立aquota.group

       -v:顯示掃描過程的信息。

 [root@redflag ~]# quotacheck –avug

quotacheck: Scanning /dev/sdb1 [/mnt/disk2] done

quotacheck: Checked 3 directories and 4 files

[root@redflag ~]# ll /mnt/disk2/

總計 32

 -rw------- 1 root root  7168 04-04 20:28 aquota.group

 -rw------- 1 root root  7168 04-04 20:28 aquota.user

 drwx------ 2 root root 16384 03-25 11:48 lost+found

   4.     啓動磁盤配額的限額

   下面就要啓動磁盤配額。

 [root@redflag ~]# quotaon –avug
/dev/sdb1 [/mnt/disk2]: group quotas turned on
/dev/sdb1 [/mnt/disk2]: user quotas turned on 
參數說明:
  -u:針對用戶啓動磁盤配額
  -g: 針對用戶組啓動磁盤配額
  -v:顯示啓動過程的相關信息
  -a:根據/etc/mtab內的文件系統設置啓動有關的磁盤配額

   5.     編輯用戶與用戶組的可使用空間

   命令介紹:

   [root@redflag ~]# edquota [-u user] [-g group] [-t] 

   [root@redflag ~]# edquota -p user_demo -u user 

   參數說明: 

      -u:編輯 user quota     -g:編輯 group quota 

      -t:編輯寬限時間(就是超過 quota 值後,還能使用硬盤的寬限期限) 

      -pcopy 模板(以建立好的用戶或用戶組)到另一個用戶(或用戶組

 [root@redflag ~]# edquota -u quser1
         Disk quotas for user quser1 (uid 514):
         Filesystem     blocks    soft     hard     inodes     soft     hard
         /dev/sdb1      0      45000      50000          0        0        0
        [root@redflag ~]# edquota -p quser1 quser2
        [root@redflag ~]# edquota -g qgroup
         Disk quotas for group qgroup (gid 514):
         Filesystem    blocks    soft      hard     inodes     soft     hard
         /dev/sdb1      0      80000      90000          0        0        0
        [root@redflag ~]# edquota –t
         Grace period before enforcing soft limits for users:
         Time units may be: days, hours, minutes, or seconds
         Filesystem             Block grace period     Inode grace period
         /dev/sdb1                     1days                  7days
6.     設置啓動時啓動磁盤配額

   [root@redflag ~]# vi /etc/rc.d/rc.local

   /sbin/quotaon –avug

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章