1 磁盤配額的使用限制
僅針對整個分區:磁盤配額實際運行時,是針對“整個分區”進行限制的,例如,如果/dev/hda5載入在/home下,那麼,在/home下面的所有目 錄都會受到限制。只對一般身份用戶有效:並不是所有在Linux上的賬號都可以設置磁盤配額,例如root就不能設置磁盤配額,因爲他擁有整個系統所有的 數據。
2 磁盤配額的步驟
(1) 啓動分區配額功能
(2) 生成配額信息文件
(3) 設置用戶和組配額
(4) 啓動磁盤配額服務
3 磁盤配額的具體實現
首先確認package已經安裝
[[email protected] ~]# rpm -q quota
quota-3.13-1.2.5.el5
確認內核支持quota磁盤配額。
[[email protected] ~]# grep CONFIG_QUOTA/boot/config-`uname -r`
CONFIG_QUOTA=y
CONFIG_QUOTACTL=y
插上一塊新硬盤爲5G大小隨後進入系統
Fdisk–l查看硬盤信息,因爲是第二塊硬盤所以標明/dev/sdb爲5G
Fdisk–cu /dev/sdb編輯第二塊硬盤爲其創建分區
Command(m for help):m如果是第一次使用的話點擊m查看整個菜單的詳細信息
其中的詳細內容就不在此一一解釋,後續會單獨出一片文檔講解磁盤的的使用
Command (m for help) :n 進行分區
Commandaction
E extended
P partition (1-4)
P 選擇P進行分區選擇
Partitionnumber (1-4):1 選擇分區號,如果是新硬盤第一次創建的話選擇1,如果老硬盤之前分區了幾次依次往後推,不能超過4,連按兩下enter
Lastsector, +sectors or +size{K,M,G} :+G 爲分區添加多大的空間G一定要大寫
Command(m for help ):p將之前的配置信息打印出來
Command(m for help ):w將之前配置的信息保存
Partx–a /dev/sdb 重新加載下磁盤
Mkfs.ext4/dev/sdb1選擇相應的分區號進行格式話,如果不格式話的話,不能進行掛載
Df –h使用命令查看下系統中的掛載情況
Mkdir/mnt/quota我這邊創建一個文件當做掛載地點
Mount/dev/sdb1 /mnt/quota
Df –h再次使用命令查看下掛載情況
Mount查看下掛載信息最後一行可以看到/dev/sdb1 on /mnt/quota type ext4 (rw)
Vim/etc/fstab將掛載信息寫入其中,進行開機自動掛載,在最後一行寫入
/dev/sdb1 /mnt/quota ext4 defaults,usrquota,grpquota 1 2
Mount–o remount /mnt/quota不在重啓服務器的前提下使用重新掛載分區
Mount 查看下最後一行的信息是否改變 /dev/sdb1 on /mnt/quota type ext4 (rw,usrquota,grpquota)出現了這樣的信息才說明掛載成功了
Quotacheck–cumg /mnt/quota 這個命令的主要目的是掃描某個磁盤的配額空間,它會針對分區進行掃描,並且,由於該磁盤持續欲行,可能掃描過程中文件會增加,造成磁盤配額掃描錯誤,因 此,當使用quotacheck時,該磁盤將“自動被設置爲只讀扇區”;掃描完畢後,掃描所得的磁盤空間結果會寫入該區最頂端(aquota.user與 aquota.group)
-c 代表創建
-m 代表強制執行
-u 針對用戶進行掃描文件及目錄,會建立aquota.user
-g 針對組進行掃面文件及目錄,會建立aquota.group
注意如果出現了
quotacheck: Cannot create new quotafile/mnt/quota/aquota.user.new: Permission denied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
quotacheck: Cannot create new quotafile /mnt/quota/aquota.group.new: Permissiondenied
quotacheck: Cannot initialize IO on new quotafile: Permission denied
出現以上問題是你的權限不足,此時的原因是SElinux 建議你進行關閉,使用以下命令進行關閉
Setenforce0
Quotaon–a將所有的磁盤分區都開啓
Useraddlwh 創建用戶lwh
Passwdlwh爲lwh創建密碼
Edquota–u lwh 將lwh這個用戶進行磁盤配額
Disk quotas for user lwh (uid 501):
Filesystem blocks soft hard inodes soft hard (爲其創建10M的硬設置,3個文件軟限制和4個文件硬限制)
/dev/sdb1 5 0 10240 3 4
Soft 是其軟限制如果超過了軟限制會有一個提示信息,如果在7天之內沒有將空間降到軟限制以下就不允許其使用
Hard 是其硬限制,如果到達硬限制則無法繼續使用
Edquota–t修改提示天數
Filesystem Block grace period Inode grace period
/dev/sdb1 7days 7days
inode與block使用說明
磁盤配額限制空間使用的方法有兩種,即分別對inode和block進行限制。磁盤配額可以限定用戶在分區中使用的空間大小(blocks),也可以限定
用戶可以在分區中最多創建的文件數(inodes),需要注意的是,只要用戶所創建的文件超過他可以使用的inode數額,即使這些文件是空的,他再次創
建文件的行爲也將被限制。
此處說明一下inode的概念。在Linux中創建一個文件,系統就爲該文件分配一個惟一的inode ,文件的inode用於訪問文件的屬性。也就是
說,Linux系統中每個文件都要對應一個inode,通俗點說Linux內核不認識字母,所以用戶要有UID、用戶組要有GID、進程要有PID……,
文件要有inode ,一旦inode丟失文件將無法被訪問。
在測試的過程中必須在其掛載的位子進行測試
現在測試block
Cd/mnt/quota
Chmod757 /mnt/quota 給quota的文件添加其他用戶寫的權限,或則你這後面切換到其用戶中無法寫入文件
Sulwh
Touchluowenhao
Ddif=/dev/sdb1 of=luowenhao bs=1024kcount=20480 命令將生成一個固定大小的文件。其中“if”表示輸入,僞設備/dev/zero不斷生成字符串“0”,初始化文件;“of”表示輸出,此例爲在 用戶當前 目錄下生成文件“quotatest”;“bs”爲“block size”指定數據塊大小,單位設定爲“1024k”即1MB;“count”爲總計生成的文件(“quotatest”)大小,若“bs”爲1MB,則 “10240000”爲10000GB。
會出現以下提示
Sdb1: write failed,user block limitreached.
Dd: 正在寫入“luowenhao”:超出磁盤限額
現在測試inode
Cd/mnt/quota
Sulwh
Touch 1
Touch2
Touch3
Touch4 當創建完4文件系統提示sdb1:warning, userfile quota exceeded.
Touch5 當創建5文件時提示sdb1:write failed,user file limit reached. Touch :“無法創建5”超出磁盤限額
重啓服務器過程中出現以下的一些問題的解決辦法
give root password for maintenance 當linux系統被強行關閉或者重新啓動,電腦的檔案系統便有可能受損,系統會自動檢查並修復檔案系統,當檔案系統未能自動修復,畫面便會出現上述訊息。
在服務器啓動的過程中出現以上的報錯信息,查看failed那一行出現的報錯提示 我這之前出現過,在搭建quota時在/etc/fstab添加了LABLE=/dev/sdb1開機自動掛載的命令導致服務器啓動的過程中系統不能自動加載。
常規的修復方法
Giveroot password for maintenance
(ortype Control-D to continue):輸入密碼後 出現了:
(Repairfilesystem)1 #
E2fsck–y /devsdb1選中之前出現的錯誤的分區進行修復
系統即會自動修復並於畫面顯示修復進度
完成後按exit,在reboot進行系統重啓
終極暴力方法
Giveroot password for maintenance
(ortype Control-D to continue):輸入密碼後 出現了:
(Repairfilesystem)1 #
進入/etc/fstab中將LABLE一行刪除,但是此時你進入的/etc/fstab時文件會提示當前你只有read-only(讀的權限)因此導致你刪除完後使用wq!強制保存也是不行的,只能q!退出後。使用下面的終極殺招
Mount–w –o remount /
Mount/dev/sdb1 /mnt/quota 這裏必須記住,之前在搭建quota時使用的是哪個分區而且掛載在那個路徑下我這是/mnt/quota
Vim/etc/fstab現在可以進入其中將LABLE這一行進行刪除保存退出
Reboot 就可以進行重啓