Linux使用者磁碟空間配額的管理 Linux下要實現磁碟空間限制,需要安裝 quota 套件來實現。使用者磁碟空間限制是以檔案系統(分區)為單位的,想要限制在/home目錄空間大小,那麼必須為/home單獨掛載一個分區。 一、規劃檔案系統 1.1、查看檔案系統的容量等資訊 Java代碼 df -h / 1.2、查看檔案系統是否已加入quota支援 Java代碼 mount | grep / 1.3、為檔案系統添加quota支援 編輯fstab檔案,選擇要設定 Quota 的檔案系統,然後加入 usrquota 和 grpquota 選項: Java代碼 vim /etc/fstab /dev/sda1 / ext3 defaults,usrquota,grpquota 1 1 其中 /dev/sda1 可以用 uuid 標識資訊來代替 Java代碼 UUID=a8454012-1fff-4d33-baa5-b57fb7d3e1e2 / ext3 defaults,usrquota,grpquota 1 1 那如何查看磁碟與分區的標識資訊? Java代碼 ls -all /dev/disk/by-uuid 1.4、臨時添加quota支援(選做) Java代碼 mount -o remount,usrquota,grpquota / 1.5、重新掛載檔案系統 Java代碼 mount -o remount / 1.6、查看檔案系統掛載是否正確 Java代碼 mount -a 1.7、添加新硬碟掛載到/home目錄(選做) 如果你/home目錄沒有獨立掛載一個分區,後期你可能想增加一個新的分區 Java代碼 mkfs.ext3 /dev/sda6 #格式化並載入一個新分區 mkdir /media/home mount /dev/sda1 /media/home cp -rf /media/home/* /home #複製舊/home的內容到新/home目錄 umound /media/home fdisk -l #查看硬碟數及分區情況 fdisk /dev/sda #操作硬碟的命令 d:刪除分區、l:列出所有分區類型、m:列出協助資訊、n:添加一個分區、p:列出分區表資訊、q:不儲存退出、t:改變分區類型、w:把分區表寫入硬碟並退出 二、安裝、初始化、啟動、關閉 Quota 2.1、安裝硬碟 quota 套件 Java代碼 aptitude install quota quotatool 其中 quotatool 是一個基於命令列的磁碟配額設定和管理工具 2.2、初始化 quota 規則檔案 quotacheck -avugm chmod 600 /quota.* #修改規則檔案許可權 -a 為所有添加了quota支援的檔案系統,建立 quota 規則檔案 -v 顯示建立 quota 規則檔案過程中的資訊 -u 建立 aquota.user 規則檔案 -g 建立 aquota.group 規則檔案 -m 強制初始化 2.3、啟動關閉 quota 的服務 Java代碼 quotaon -avug #啟動 quota 的服務 quotaoff -auvg #關閉 quota 的服務 三、配置 Quota 規則 3.1、為使用者/組設定磁碟空間限額: Java代碼 edquota -u username edquota -g groupname filesystem:說明該限制值是針對哪個分區,例如""/"或"/home" blocks:使用者已使用的磁碟區塊數量,該值由quota自動算出 soft:單位為KB,一個非強制性磁碟空間限額 hard:單位為KB,一個強制性磁碟空間限額 inodes:使用者已使用的檔案數目 soft:非強制性的inode的限制 hard:強制性的inode的限制 3.2、為批量使用者複製規則 Java代碼 edquota -p group1 user1,user2,user3 .. 3.3、為使用者/組設定寬限期 通常將 hard 值設定大於 soft 值,就是為了讓寬限期發揮作用,預設超額寬限期為7天。 edquota -t 四、Quota 報表 4.1、使用者/組限額報表 -s 使用1024倍數來指定單位,會顯示如M 之類的單位。 Java代碼 quota -uvs user1 user2 user3 quota -gvs group1 group2 group3 4.2、檔案系統限額報表 查看所有使用者的 quota 限制情況 Java代碼 repquota -auvs 五、Quota 測試與管理 1、切換到user1使用者 2、向目前的目錄的bigfile檔案寫入10次,每次1m的資料 3、如果寫入大小沒有超過 hard 值,那麼進入寬限期倒計時。 4、如果寫入超過hard值,那麼寫入失敗。 Java代碼 su user1 dd if=/dev/zero of=bigfile bs=1M count=10