您好,登錄后才能下訂單哦!
Linux入門之磁盤管理(6)磁盤配額
在linux中使用向磁盤中存入數據時,如果有多個用戶對同個磁盤進行操作,其中一個用戶放了很大數據的文件導致硬盤容量用光,那么其他用戶將無法再存入數據,這時就需要對每個用戶進行存入數據大小的限制,linux中提供了一種磁盤配額的功能來實現。
初始化:
添加分區掛載選項:usrquota、grpquota
初始化數據庫:quotacheck 命令
使用命令
開啟或取消配額:quotaon、quotaoff
直接編譯配額:edquota [username]
案例說明:
創建配額數據庫
#/home目錄會存放不同用戶的文件,大小會相互受影響,因此需要將/home目錄變成分區,這里準備好一個創建好文件系統的分區。
[root@mzf ~]# blkid /dev/sda5 /dev/sda5: LABEL="myhome" UUID="97f71277-7b31-4bb6-ae0f-949cf8c18e6f" TYPE="ext4"
#對其進行掛載使用
[root@mzf ~]# mkdir /mnt/myhome [root@mzf ~]# mount /dev/sda5 /mnt/myhome/ [root@mzf ~]# df | grep 'myhome' /dev/sda5 2004852 3096 1896584 1% /mnt/myhome
#先將/home下文件的文件進行遷移
[root@mzf ~]# ls /home/ hadoop mzf tom u1 u2 [root@mzf ~]# mv /home/* /mnt/myhome/ [root@mzf ~]# ls /mnt/myhome/ hadoop lost+found mzf tom u1 u2
#然后將/dev/sda5再次掛載到/home目錄下,并添加用戶和組的磁盤配額功能
[root@mzf ~]# mount -L myhome -o usrquota,grpquota /home/ [root@mzf ~]# df | grep 'home' /dev/sda5 2004852 3288 1896392 1% /mnt/myhome /dev/sda5 2004852 3288 1896392 1% /home
#卸載掉在/mnt/myhome下的掛載點
[root@mzf ~]# umount /mnt/myhome/
#這里我們再次掛載指定的用戶磁盤配額和組磁盤配合選項以及添加
[root@mzf ~]# mount | grep 'home' /dev/sda5 on /home type ext4 (rw,usrquota,grpquota)
#當然也可以寫入/etc/fstab文件進行重新掛載。如,加入內容:
[root@mzf home]# cat /etc/fstab | grep '/home'
#然后檢查分區并創建配額數據庫文件
[root@mzf home]# quotacheck -cgu /dev/sda5 quotacheck: Cannot create new quotafile /home/aquota.user.new: Permission denied quotacheck: Cannot initialize IO on new quotafile: Permission denied quotacheck: Cannot create new quotafile /home/aquota.group.new: Permission denied quotacheck: Cannot initialize IO on new quotafile: Permission denied
解析:這里提示沒有權限,可能是linux內核中默認開啟的selinux安全機制控制導致的,這里我們可以先將其關閉:
#查看當前setlinux是否開啟
[root@mzf home]# getenforce Enforcing#表示已經啟用 [root@mzf home]# setenforce 0 #設置參數為0表示禁用 [root@mzf home]# getenforce #再次查看已經顯示為禁用 Permissive
#再次進行磁盤配額數據庫文件創建
[root@mzf home]# quotacheck -cug /dev/sda5
#查看指定分區單獨掛載點目錄下是否生成了磁盤配額數據庫文件
[root@mzf home]# ls /home | grep '^aquota\.\<\(user\|group\)\>' aquota.group aquota.user
說明:如果要開啟磁盤配額,內核模塊必須檢查該掛載點中是否有磁盤配額數據庫文件的存在,否則無法開啟或設置成功。
啟用磁盤配額:
#開啟指定分區的磁盤配額
[root@mzf home]# quotaon /dev/sda5
#添加默認磁盤配額成員
[root@mzf home]# edquota -p mzf tom hadoop
#設置指定成員配額
[root@mzf home]# edquota hadoop
#進入vim編輯界面
解析:其中第一行表示為哪個用戶設置磁盤配額,下面分為多列,第一列為指定的文件系統,后面6列每3列為一組,blocks表示已經存放的文件大小,默認為k,indodes表示為已經創建了多少個文件,soft表示為軟限制,存放大小超過soft指定將出現警報,hard為硬限制,如果達到此限制,將無法再次寫入數據。
#按文件所占大小設置配額,軟限制為5M,硬限制為10M
#切換到設置配額的成員hadoop用戶
[root@mzf home]# su - hadoop
#此目錄已經用了64K,這里我們添加 5M數據
[hadoop@mzf ~]$ dd if=/dev/zero of=/home/hadoop/temp.log bs=5M count=1 sda5: warning, user block quota exceeded. 1+0 records in 1+0 records out 5242880 bytes (5.2 MB) copied, 0.130323 s, 40.2 MB/s
注意:這里soft已經超過,開始了警報,顯示用戶塊數據配額,但是如果使用echo進行一些小規模數據追加,磁盤配額是不會警報的:
#顯示出文件多少個字節
[hadoop@mzf ~]$ ls -l /home/hadoop/temp.log -rw-rw-r--. 1 hadoop hadoop 5242912 Aug 17 23:51 /home/hadoop/temp.log
#追加字節
[hadoop@mzf ~]$ echo "***************" >> /home/hadoop/temp.log
#再次顯示大小已經增加,但是磁盤配額沒有警報
[hadoop@mzf ~]$ ls -l /home/hadoop/temp.log -rw-rw-r--. 1 hadoop hadoop 5242928 Aug 17 23:51 /home/hadoop/temp.log
解析:如果再用dd命令對temp.log文件寫入5M是無法寫入的,那么再寫一個5M的新文件進行測試:
#再創建一個5M,那么應該已經達到了10M
[hadoop@mzf ~]$ dd if=/dev/zero of=/home/hadoop/temp2.log bs=5M count=1 sda5: write failed, user block limit reached. dd: writing `/home/hadoop/temp2.log': Disk quota exceeded 1+0 records in 0+0 records out 5185536 bytes (5.2 MB) copied, 0.00903 s, 574 MB/s
解析:這里已經顯示了寫入數據錯誤,數據塊配額已經被使用完
#這時寫入一個字節內容的文件都寫入不了了。
[hadoop@mzf ~]$ echo "1" > file1 -bash: echo: write error: Disk quota exceeded
其它磁盤配額管理工具
quota 查看配額信息
[root@mzf home]# quota hadoop Disk quotas for user hadoop (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda5 10240* 5120 10240 6days 17 0 0
解析:grace表示為寬限期,及文件大小到到soft指定大小6天后,soft將變成硬限制,將再也無法創建文件和寫入數據了。
requota #查看指定信息
warnquota #檢查警告
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。