配置配額系統
綜述
在內核中執行
以文件系統(磁盤分區)為單位啟用
對不同組或者用戶的策略不同
根據塊或者節點進行限制
執行軟限制(soft limit)
硬限制(hard limit)
1、初始化
1.1、編輯/etc/fstab,添加分區掛載選項:usrquota、grpquota
1.2、mount -o remount /dev/sda6 #重新掛載分區使生效
1.3初始化數據庫:quotacheck -cug /home
注意:這里可能會報錯(SELinux導致的,先臨時關閉setenforce 0,再重新執行)
quotacheck -cug /home
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
2、quotaon、quotaoff #啟用|禁用配額系統
2.1、啟用/home上的磁盤配額功能:quotaon /home
打印狀態:quotaon -p /home
3、設置
3.1、編輯配額(默認使用vim編輯器):edquota username
前三個字段決定空間限制(默認單位kibibyte (1024 bytes),可以使用K,M,G,T),后三個字段決定創建文件數限制(可以使用k,m,g,t代表10^3,10^6,10^9,10^12):
3.2、也可以使用命令設置配額:setquota usename 4096 5120 40 50 /home
3.3、查看配額信息:quota username
注意:達到soft限制后有個寬限期grace,達到寬限期后,也會緊禁止再繼續使用磁盤
4、驗證
su – wang #目標用戶登錄
驗證blocks配額:使用dd命令創建大文件,達到soft,報警,達到Hard,禁止再繼續使用磁盤
驗證inodes配額:for i in {1..200};do touch file$i;echo file$i is created;done
5、定義原始標準用戶(將user1的用戶配額設置復制到user2)
edquota -p user1 user2
6、edquota -g groupname #配置所有屬組為groupname的文件加起來的磁盤配額
7、取消磁盤配額:
7.1、quotaoff /home #禁用磁盤配額
7.2、rm -rf /home/a.quota* #刪除磁盤配額數據庫
7.3、vim /etc/fstab
7.4、mount -o remount /home
8、報告
用戶調查:quota username
配額概述:repquota /mountpoint
其它工具:warnquota
獨立磁盤的冗余陣列
RAID:Redundant Arrays of Inexpensive(Independent) Disks
1988年由加利福尼亞大學伯克利分校(University of California-Berkeley) “A Case for Redundant
Arrays of Inexpensive Disks”
多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提供
提高IO能力:磁盤并行讀寫
提高耐用性:磁盤冗余來實現
RAID實現的方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器,安裝OS前在BIOS里配置RAID
軟件RAID:通過軟件實現
RAID級別:
多塊磁盤組織在一起的工作方式不同
RAID-0:條帶卷,strip
RAID-1: 鏡像卷,mirror
…
RAID-4:多塊數據盤異或運算值,存于專用校驗盤
RAID-5:帶奇偶校驗的條帶卷,校驗位分散存放于各個硬盤上
RAID-6:
RAID-10:
RAID-01:
RAID-0:
讀、寫性能提升;
可用空間:N*min(S1,S2,…)
無容錯能力
最少磁盤數:2, 2+
RAID-1:
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,…)
有冗余能力:防止物理損壞,不能防止誤刪除,鏡像不是歷史快照
最少磁盤數:2, 2N
RAID-5:
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:允許最多1塊磁盤損壞,生產中常額外分配一塊空的備用磁盤sparedisk
最少磁盤數:3, 3+
RAID-6:
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+
RAID-10:
讀、寫性能提升
可用空間:N*min(S1,S2,…)/2
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4, 4+
RAID-01、RAID-50
RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,…)
常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
軟RAID:
mdadm:為軟RAID提供管理界面
結合內核中的md(multi devices)
RAID設備可命名為/dev/md0、/dev/md1、/dev/md2、/dev/md3等等
mdadm命令 :manage MD devices aka Linux Software RAID (aka:as known as)
模塊化工具
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
mdadm [mode] <raiddevice> [options] <component-devices>
模式[mode]:
裝配:-A, –assemble
建造:-B, –build
創建:-C, –create
監控:-F, –follow, –monitor
增長:-G, –grow
增量:-I, –incremental
管理:–manage(可省略), -f,–force; -r,–remove;-c, –config=; -a, –auto={ no,yes,md,mdp,part}; -s, –scan;
<raiddevice>: /dev/md# 或者 /dev/md/NAME
<component-devices>: 塊設備,磁盤或分區
-C: 創建模式
-l, –level=:RAID級別
-n, –raid-devices=: 組裝RAID的設備數量
-x, –spare-devices=:分配給RAID的空閑設備數量
-a {yes|no}:自動應答創建目標RAID設備的設備文件
-c, –chunk=: 塊大小,單位kiBytes
-D:顯示RAID詳細信息
mdadm -D|–detail /dev/md/raid
-G,–grow:增長模式
–manage:管理模式
-f: 標記指定磁盤為損壞
-a: 添加磁盤
-r: 移除磁盤
從內存觀察md狀態:
cat /proc/mdstat
示例:
創建RAID步驟:
創建并定義RAID設備:mdadm -C /dev/md/raid -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
等同于: mdadm --create /dev/md/raid --auto=yes --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{b,c,d,e}1
對整個RAID設備創建文件系統:mkfs.ext4 /dev/md/raid
掛載分區:mkdir /mnt/raid && mount /dev/md/raid /mnt/raid
檢查RAID設備的狀況:mdadm -D /dev/md/raid 或 cat /proc/mdstat
生成配置文件:mdadm -D -s >> /etc/mdadm.conf
開機自動掛載:echo "`blkid /dev/md/md_raid | cut -d' ' -f2` /mnt/raid ext4 defaults 0 0" >> /etc/fstab
軟RAID測試和修復:
標記故障設備為faulty #mdadm /dev/md/raid -f /dev/sdb1 移除故障設備 #mdadm /dev/md/raid -r /dev/sdb1 添加新設備 #mdadm /dev/md/raid -a /dev/sdb9
軟RAID管理:
生成配置文件:mdadm -D -s >> /etc/mdadm.conf
停止RAID:mdadm -S /dev/md/raid
掃描配置文件/etc/mdadm.conf并組裝RAID:mdadm -As /dev/md/raid
強制運行:mdadm -R /dev/md/raid
增加新的設備成員(不可逆):mdadm /dev/md/raid -G -n 4 -a /dev/sdf1
刪除RAID步驟:
卸載RAID掛載點:umount devicename|mountpoint 停止RAID:mdadm -S /dev/md/raid 清空RAID信息:mdadm --zero-superblock /dev/sdb1 移除磁盤或者刪除分區:fdisk或dd if=/dev/zero of=/dev/sdb1 bs=512 count=1 && partx -d /dev/sdb 刪除mdadm配置信息:sed -i '/md0/d' /etc/mdadm.conf 刪除fsatb配置信息:sed -i '/md0/d' /etc/fstab
TIPS:
#準備實驗用分區#創建擴展分區echo -e "n\ne\n4\n\n+20G\nw\n" | fdisk /dev/sdb#創建邏輯分區for (( i = 0; i < 3; i++ )); do echo -e "n\nl\n\n+1G\nw\n" |fdisk /dev/sdb; done#更改分區的ID為“fd Linux raid auto”for i in {5..7}; do echo -e "t\n$i\nfd\nw\n" |fdisk /dev/sdb; done
練習:
1:創建一個可用空間為1G的RAID1設備,文件系統為ext4,有一個空閑盤,開機可自動掛載至/mnt/raid1目錄
#創建RAID1mdadm -C /dev/md/raid1 -a yes -l1 -n2 -x1 /dev/sdb[5-7]mkfs.ext4 /dev/md/raid1 -L raid1mkdir -p /mnt/raid1 && mount /dev/md/raid1 /mnt/raid1#生成配置文件mdadm -D -s >> /etc/mdadm.conf#添加fstab條目開機自動掛載echo "`blkid /dev/md/raid1 | cut -d' ' -f2` /mnt/raid1 ext4 defaults 0 0" >> /etc/fstab
2:創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mnt/raid5目錄
#創建RAID5mdadm -C /dev/md/raid5 -a yes -l5 -c 256 -n3 /dev/sd{c,d,e}mkfs.ext4 /dev/md/raid5 -L raid5mkdir -p /mnt/raid5 && mount /dev/md/raid5 /mnt/raid5#生成配置文件mdadm -D -s >> /etc/mdadm.conf#添加fstab條目開機自動掛載echo "`blkid /dev/md/raid5 | cut -d' ' -f2` /mnt/raid5 ext4 defaults 0 0" >> /etc/fstab
LVM:邏輯卷管理器
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
將設備指定為物理卷
用一個或者多個物理卷來創建一個卷組
物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
在物理卷上創建的邏輯卷是由物理區域(PE)組成
可以在邏輯卷上創建文件系統
LVM: Logical Volume Manager, Version: 2
dm: device mapper:將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
軟鏈接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM可以彈性的更改LVM的容量
通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV的容量,或將其他設備中的PE加到LV中以加大容量
pv管理工具
顯示物理卷信息
pvs:簡要顯示物理卷信息
pvdisplay
創建物理卷
pvcreate PhysicalVolume [PhysicalVolume…]
vg管理工具
顯示卷組
vgs
vgdisplay
創建卷組
vgcreate [-s #[bBsSkKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
管理卷組
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
刪除卷組
先做pvmove,再做vgremove
lv管理工具
顯示邏輯卷
lvs
Lvdisplay
創建邏輯卷
lvcreate -L #[bBsSkKmMgGtTpPeE] -n NAME VolumeGroup
-l:PE塊個數;-L:空間大小;-n:名字
刪除邏輯卷
lvremove /dev/VG_NAME/LV_NAME
重設文件系統大小
fsadm [options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
擴展邏輯卷:
# lvextend|lvresize -r -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #-r選項同時調整文件系統 # resize2fs /dev/VG_NAME/LV_NAME #擴容后單獨調整文件系統 撐滿空閑PE空間:# lvextend|lvresize -r -L +100%FREE /dev/VG_NAME/LV_NAME
縮減邏輯卷:(注意ext4可以縮減,但必須離線縮減,xfs不能縮減)
# umount /dev/VG_NAME/LV_NAME # fsck -f /dev/VG_NAME/LV_NAME #檢查文件系統 # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #擴容前單獨調整文件系統 # lvreduce|lvresize -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #-r選項同時調整文件系統 # mount /dev/VG_NAME/LV_NAME MOUNTPOINT
創建邏輯卷lv:
創建物理卷 pvcreate /dev/sda3 從物理卷創建卷組 vgcreate vg0 -s 16M /dev/sda3 從卷組創建邏輯卷 lvcreate -L 256M -n lv1 vg0 為邏輯卷創建文件系統 mkfs.ext4 /dev/vg0/lv1 掛載邏輯卷 mkdir /mnt/lv1 && mount /dev/vg0/lv1 /mnt/lv1 開機自動掛載邏輯卷 echo -e "`blkid /dev/vg0/lv1 | cut -d' ' -f2` /mnt/lv1 ext4 defaults 0 0" >> /etc/fstab
邏輯卷管理器快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
快照只有在它們和原來的邏輯卷不同時才會消耗空間。
在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間
當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。
快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快照中更改的數據
建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享
由于快照區與原本的LV共用很多PE的區塊,因此快照區與被快照的LV必須在同一個VG.系統恢復的時候的文件數量不能高于快照區的實際容量.
使用LVM快照:
為現有邏輯卷創建快照 #lvcreate -s -n lv1_snap -l 64 -p r /dev/vg0/lv1 掛載快照 #mkdir -p /mnt/lv1_snap #mount -o ro /dev/vg0/lv1_snap /mnt/lv1_snap 刪除快照 #umount /mnt/lv1_snap #lvremove /dev/vg0/lv1_snap
TIPS:
#準備實驗用分區#創建擴展分區echo -e "n\ne\n4\n\n\nw\n" | fdisk /dev/sdb#創建邏輯分區for (( i = 0; i < 3; i++ )); do echo -e "n\nl\n\n+1G\nw\n" |fdisk /dev/sdb; done#更改分區的ID為“8e Linux LVM”for i in {5,6}; do echo -e "t\n$i\n8e\nw\n" |fdisk /dev/sdb; done
練習:
1、創建一個至少有兩個PV組成的大小為20G的名為vgtest的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷lvtest;掛載至/users目錄
pvcreate /dev/sdb{5,6}vgcreate -s 16M vgtest /dev/sdb{5,6}lvcreate -L 5G -n lvtest vgtestmkfs.ext4 /dev/vgtest/lvtest -L vgtest-lvtestmkdir -p /users && mount /dev/vgtest/lvtest /users
2、 新建用戶archlinux,要求其家目錄為/users/archlinux ,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
useradd archlinux -d /users/archlinuxsu - archlinuxcp /etc/pam.d ~
3、擴展lvtest至7G,要求archlinux用戶的文件不能丟失
lvextend -L 7G /dev/vgtest/lvtestresize2fs /dev/vgtest/lvtest
4、收縮lvtest至3G,要求archlinux用戶的文件不能丟失
umount /dev/vgtest/lvtest fsck -f /dev/vgtest/lvtest#resize2fs /dev/vgtest/lvtest 3Glvresize -r -L 3G /dev/vgtest/lvtestmount /dev/vgtest/lvtest /users
5、對lvtest創建快照,并嘗試基于快照備份數據,驗證快照的功能
lvcreate -s -L 1G -p r -n lvtest_snap /dev/vgtest/lvtestmkdir /mnt/lvtest_snap && mount /dev/vgtest/lvtest_snap /mnt/lvtest_snap
原創文章,作者:Leion,如若轉載,請注明出處:http://www.www58058.com/71179
贊一個,繼續努力哦
@馬哥教育:
Thanks!