Llinux 磁盤配額的搭建和常規問題解答

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 就可以進行重啓


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