- 文件系統(tǒng)配額管理
- RAID
- LVM邏輯卷管理器
一、文件系統(tǒng)配額管理
文件系統(tǒng)配額:在內(nèi)核中啟用,以文件系統(tǒng)為管理單位,對不同的用戶和用戶組設(shè)置不同的配額管理策略,配額限制單位為節(jié)點和塊
軟限制 (soft limit):超出軟限制報警,但不會禁止繼續(xù)占用文件系統(tǒng)空間
硬限制 (hard limit):超出硬限制直接禁止繼續(xù)占用文件系統(tǒng)空間
-
初始化:
- 分區(qū)掛載選項:
編輯/etc/fstab文件,分區(qū)掛載選項增加usrquota(用戶配額), grpquota(用戶組配額) - 初始化數(shù)據(jù)庫:quotacheck命令
- 分區(qū)掛載選項:
-
執(zhí)行
- 開啟、取消配額:quotaon, quotaoff
- 編輯配額 edquota
實驗:實現(xiàn)在/home分區(qū)對用戶hellopeiyang的磁盤配額,達到80M時報警,最多只能使用100M磁盤空間
命令:
// step1
vim /etc/fstab
// step 2
mount -o remount /home
// step 3
setenforce 0
quotacheck -cug /home
// step 4
quotaon /home
quotaon -p /home
edquota hellopeiyang
// step 5
su - hellopeiyang
dd if=/dev/zero of=file001 bs=1M count=81
dd if=/dev/zero of=file001 bs=1M count=150

第1步,修改/etc/fstab文件掛載點為/home的條目的掛載選項,將"defaults"改為"usrquota,grpquota",表示掛載時開啟對用戶、用戶組的磁盤配額選項

第2步,重新掛載后可以看到,掛載選項新增了usrquota和grpquota選項

第3步,首先用setenforce 0命令禁用會影響磁盤配額操作的SELinux,然后初始化數(shù)據(jù)庫,成功后可以看到/home目錄下新增加的兩個數(shù)據(jù)文件

第4步,開啟配額,按照要求配置hellopeiyang用戶的配額,注意單位為KB。

第5步,切換至hellopeiyang用戶,在用戶家目錄下測試配額是否測試成功??梢钥吹絼?chuàng)建文件總?cè)萘砍?0M時有報警信息,創(chuàng)建文件總?cè)萘砍?00M時文件寫入失敗,最多只能達到配額設(shè)置的最大值。
二、RAID
(一)RAID基本概念
1. 定義:
RAID(Redundant Arrays of Independent Disks) 獨立磁盤冗余陣列,多個磁盤合成一個陣列來提供更好的性能、冗余
2. 功能:
通過磁盤并行讀寫提高IO能力,通過磁盤冗余提高耐用性
3. 實現(xiàn)方式:
- 外接式RAID:通過擴展卡提供能力
- 內(nèi)接式RAID:主板集成RAID控制器,安裝OS前在BIOS中設(shè)置
- 軟件式RAID:通過OS實現(xiàn)
4. RAID級別:多塊磁盤組織在一起的不同工作方式
主要應(yīng)用的RAID級別:
- RAID 0 ,又稱條帶卷
磁盤組織方式:

(1)讀、寫性能提升;
(2)可用空間:N*min(S1,S2,...)
(3)無容錯能力
(4)最少磁盤數(shù):2
- RAID 1 ,又稱鏡像卷
磁盤組織方式:

(1)讀性能提升、寫性能略有下降;
(2)可用空間:1*min(S1,S2,...)
(3)有冗余能力
(4)最少磁盤數(shù):2
- RAID 4
磁盤組織方式:

(1)讀、寫性能提升;
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞,但由于校驗盤故障率遠高于其他磁盤,已被RAID5取代
(4)最少磁盤數(shù):3
- RAID 5
磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞
(4)最少磁盤數(shù):3
- RAID 6
磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:(N-2)*min(S1,S2,...)
(3)有容錯能力:允許最多2塊磁盤損壞
(4)最少磁盤數(shù):4
- RAID 10
磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:每組鏡像最多只能壞一塊
(4)最少磁盤數(shù):4
- RAID 01
磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:容錯能力不及RAID10
(4)最少磁盤數(shù):4
(二)軟件RAID
1、RAID設(shè)備命名規(guī)則:
/dev/md#,#指數(shù)字,如/dev/md0, /dev/md1, /dev/md2
2、軟件RAID實現(xiàn)
mdadm 工具介紹:
Linux軟件RAID管理工具,支持的RAID級別:
RAID0, RAID1, RAID4, RAID5, RAID6, RAID10mdadm 語法格式:
mdadm [mode] <raiddevice> [options] <component-devices>mode 模式:
創(chuàng)建(Create)、裝配(Assemble)、監(jiān)控(Monitor)、管理(Manage)<raiddevice> : 設(shè)備名,如/dev/md1
<component-devices>: 任意塊設(shè)備,可以是磁盤或磁盤分區(qū)
創(chuàng)建模式
-C
-n # //使用#個塊設(shè)備來創(chuàng)建此RAID
-l # //指明要創(chuàng)建的RAID的級別
-a {yes|no} //自動創(chuàng)建目標RAID設(shè)備的設(shè)備文件
-c CHUNK_SIZE //指明塊大小
-x # //指明空閑盤的個數(shù)
顯示RAID詳細信息
-D,語法:mdadm -D /dev/md#管理模式
-f //標記指定磁盤損壞
-a //添加磁盤
-r //移除磁盤
觀察md狀態(tài):
cat /proc/mdstat生成配置文件:
mdadm -D -s >> /etc/mdadm.conf停止設(shè)備:
mdadm -S /dev/md0激活設(shè)備:
mdadm -A -s /dev/md0強制啟動:
mdadm -R /dev/md0刪除raid信息:
mdadm --zero-superblock /dev/sdb1
3、實驗:軟件RAID基本操作
- 現(xiàn)有5塊硬盤/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf,大小均為20G。
(1)將五塊硬盤分別分出1個1G大小的分區(qū),先將前四塊硬盤的第一個分區(qū)構(gòu)建RAID5,命名為/dev/md0,其中第四塊硬盤作為空閑硬盤。建立后,對RAID設(shè)備建立ext4文件系統(tǒng)。
fdisk /dev/sdb fdisk /dev/sdc... //分區(qū)時注意一定要改變system id為fd
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
// 含義:-C指創(chuàng)建,-a yes指自動創(chuàng)建RAID設(shè)備文件,-l 5指RAID級別為5,-n 3指活動設(shè)備數(shù)為3,
-x 1指空閑設(shè)備數(shù)為1

(2)檢查RAID設(shè)備情況,并將配置文件保存到/etc/mdadm.conf
mdadm -D /dev/md0
mdadm -D -s >> /etc/mdadm.conf

紅框標注中分別表示了RAID級別,活動、空閑設(shè)備數(shù)量,chunk的默認大小,每個磁盤設(shè)備的具體狀態(tài)
(3)將第五塊硬盤的第一個分區(qū)加入到/dev/md0上
mdadm –G /dev/md0 –n4 -a /dev/sdf1
//-G 指改變活動磁盤陣列的大小,-n4 指活動設(shè)備數(shù)為4,-a指添加磁盤

(4)模擬第一塊硬盤出現(xiàn)故障,查看第四塊硬盤的分區(qū)是否自動頂替故障設(shè)備
mdadm /dev/md0 -f /dev/sdb1
mdadm -D /dev/md0

紅框中顯示/dev/sdb1已經(jīng)發(fā)生故障,而之前空閑的/dev/sde1自動頂替/dev/sdb1的位置
(5)移除故障設(shè)備
mdadm /dev/md0 -r /dev/sdb1
mdadm -D /dev/md0

紅框顯示故障設(shè)備/dev/sdb1已經(jīng)被移除
(6)停止RAID設(shè)備
mdadm -S /dev/md0

三、LVM 邏輯卷管理器
(一)LVM邏輯卷管理器的基本概念
LVM是在磁盤分區(qū)和文件系統(tǒng)之間添加的一個邏輯層,來為文件系統(tǒng)屏蔽下層磁盤分區(qū)布局,提供一個抽象的存儲卷,在存儲卷上建立文件系統(tǒng)
-
LVM允許在多個物理設(shè)備間重新組織文件系統(tǒng),創(chuàng)建邏輯卷的大體過程如下:
- 將設(shè)備指定為物理卷PV(Physical Volumes)
- 物理卷用固定大小的物理區(qū)域PE(Physical Extent)定義
- 將一個或多個物理卷創(chuàng)建成為卷組VG(Volumes Group)
- 在卷組上建立的邏輯卷LV(Logical Volumes)由PE構(gòu)成
- 在邏輯卷上建立文件系統(tǒng)

- LVM彈性更改邏輯卷容量原理:
通過交換PE實現(xiàn)彈性更改容量,將邏輯卷的PE轉(zhuǎn)移到其他邏輯卷中以降低容量,從其他邏輯卷轉(zhuǎn)移PE到邏輯卷以增加容量
(二)LVM邏輯卷管理器實現(xiàn)
-
物理卷PV管理工具
- 顯示pv信息
pvs:簡要顯示pv信息
pvdisplay:詳細顯示pv信息 - 創(chuàng)建pv
pvcreate /dev/DEVICE
- 顯示pv信息
-
卷組VG管理工具
- 顯示卷組
vgs:簡要顯示vg信息
vgdisplay:詳細顯示vg信息 - 創(chuàng)建卷組
vgcreate [-s #UNIT] VG /dev/DEVICE - 管理卷組
vgextend VG /dev/DEVICE 擴充卷組
vgreduce VG /dev/DEVICE 壓縮卷組 - 刪除卷組
vgremove
- 顯示卷組
-
邏輯卷LV管理工具
- 顯示邏輯卷
lvs:簡要顯示lv信息
lvdisplay:詳細顯示lv信息 - 創(chuàng)建邏輯卷
lvcreate -L #[UNIT] -n NAME VG:-L指定大小
lvcreate -l #%{FREE | VG} -n NAME VG :-l指定百分比,后跟VG指卷組總?cè)萘?,F(xiàn)REE指卷組未用容量 - 管理邏輯卷
lvextend -L [+]#[UNIT] /dev/VG_NAME/LV_NAME
lvreduce -L [-]#[UNIT] /dev/VG_NAME/LV_NAME - 刪除邏輯卷
lvremove /dev/VG_NAME/LV_NAME - 重設(shè)文件系統(tǒng)大小
fsadm [options] resize device [new_size[UNIT]]
resize2fs [options] device [new_size]:僅用于ext2, ext3, ext4
- 顯示邏輯卷
實驗3-1:實現(xiàn)邏輯卷:
有三塊硬盤/dev/sdb(20GB), /dev/sdc(10GB), /dev/sdd(5GB)
(1)創(chuàng)建分區(qū)/dev/sdb1(1GB), /dev/sdc1(2GB)
(2)將/dev/sdb1, /dev/sdc1和/dev/sdd創(chuàng)建為物理卷
(3)將三個物理卷創(chuàng)建為卷組vg0
(4)在卷組vg0上創(chuàng)建兩個邏輯卷:第一個邏輯卷/dev/vg0/lv0(2GB),第二個邏輯卷/dev/vg0/lv1,其大小為卷組剩余空間的50%
(5)給兩個邏輯卷創(chuàng)建文件系統(tǒng),均為ext4
fdisk /dev/sdb fdisk /dev/sdc //分區(qū)時注意一定要改變system id為8e
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd //創(chuàng)建物理卷
vgcreate vg0 /dev/sdb1 /dev/sdc1 /dev/sdd //創(chuàng)建卷組vg0
lvcreate -L 2G -n lv0 vg0 //創(chuàng)建邏輯卷lv0
lvcreate -l 50%FREE -n lv1 vg0 //創(chuàng)建邏輯卷lv1
mkfs -t ext4 /dev/vg0/lv0 //建立邏輯卷lv0的文件系統(tǒng)
mkfs -t ext4 /dev/vg0/lv1 //建立邏輯卷lv1的文件系統(tǒng)

- 實驗3-2:擴展邏輯卷:
接實驗3-1,現(xiàn)在邏輯卷大?。?dev/vg0/lv0為2GB,/dev/vg0/lv1為3GB?,F(xiàn)在需要將/dev/vg0/lv0擴展至3GB,/dev/vg0/lv1擴展至6GB。當前卷組vg0大小為8GB,無法直接擴展兩個邏輯卷。另有未創(chuàng)建文件系統(tǒng)的磁盤分區(qū)/dev/sde1,大小為2GB。
(1)將/dev/sde1加入到卷組vg0中
(2)拓展邏輯卷lv0,并且擴展lv0的文件系統(tǒng)
(3)一條命令實現(xiàn)拓展邏輯卷lv1和其文件系統(tǒng)
vgdisplay //查看當前卷組容量是否滿足邏輯卷擴展要求
fdisk /dev/sde1 //改變system id為8e
pvcreate /dev/sde1 //將/dev/sde1創(chuàng)建為物理卷
vgextend vg0 /dev/sde1 //將/dev/sde1添加到卷組vg0中
lvextend -L +1G /dev/vg0/lv0 //將邏輯卷lv0大小添加1GB至3GB
resize2fs /dev/vg0/lv0 3G //將邏輯卷lv0的文件系統(tǒng)擴展大小至3GB
lvextend -r -L 6G /dev/vg0/lv1 //將邏輯卷lv1和其文件系統(tǒng)一并擴展至6GB,
-r選項指同步擴展文件系統(tǒng)大小


- 實驗3-3:縮減邏輯卷:
接實驗3-2,將邏輯卷lv1的大小縮減至5GB
fsck -f /dev/vg0/lv1 //縮減邏輯卷前必須檢查磁盤,-f指強制執(zhí)行
resize2fs /dev/vg0/lv1 5G //縮減邏輯卷文件系統(tǒng)大小
lvreduce -L 5G /dev/vg0/lv1 //縮減邏輯卷大小

- 實驗3-4:從邏輯卷中刪除正在使用的物理分區(qū)(或磁盤):
接實驗3-3,當前邏輯卷lv0大小3GB、邏輯卷lv1大小5GB,卷組vg0大小10GB,卷組空閑容量2GB。物理卷/dev/sdc1大小2GB,可以直接在邏輯卷管理中刪除此分區(qū)。
vgdisplay //查看卷組空間情況
pvdisplay //查看邏輯卷空間情況
pvmove /dev/sdc1
//雖然卷組空間滿足刪除/dev/sdc1的要求,但/dev/sdc1的PE已經(jīng)占滿,所以需要將數(shù)據(jù)移動至其他物理卷
vgreduce vg0 /dev/sdc1 //卷組中刪除物理卷/dev/sdc1
pvremove /dev/sdc1 //將物理卷/dev/sdc1刪除

紅框中顯示/dev/sdc1的PE已經(jīng)全部占滿,需要先做數(shù)據(jù)遷移,才能從卷組中刪除

- 實驗3-5:遷移邏輯卷:
接實驗3-4,將邏輯卷/dev/vg0/lv1和/dev/vg0/lv2遷移至另一個服務(wù)器系統(tǒng)中
(1)為了防止出現(xiàn)重名,將卷組改名為newvg0
(2)將邏輯卷改名:lv0改為newlv0,lv1改為newlv1
(3)凍結(jié)卷組newvg0
(4)將卷組導(dǎo)出,拆除硬盤,安裝到新的服務(wù)器中
(5)將卷組導(dǎo)入到新的服務(wù)器中
(6)啟用卷組newvg
vgrename vg0 newvg0 //卷組改名
lvrename /dev/newvg0/lv0 newlv0 //邏輯卷改名
lvrename /dev/newvg0/lv1 newlv1 //邏輯卷改名
vgchange -an newvg0 //凍結(jié)卷組
vgexport newvg0 //導(dǎo)出
------拆除硬盤,安裝至新的服務(wù)器(虛擬機以虛擬磁盤文件的剪切粘貼實現(xiàn))------
pvscan //掃描物理卷
vgimport newvg0 //導(dǎo)入卷組
vgchange -ay newvg0 //啟用卷組


- 特別注意:以上實驗均未涉及掛載過程,實際工作中邏輯卷必須掛載才能夠正常使用,所以涉及邏輯卷擴展、縮減、刪除、遷移操作前必須先卸載邏輯卷,待設(shè)置完成后再進行掛載操作,否則會導(dǎo)致嚴重的后果。
(三)LVM邏輯卷管理器快照
快照是特殊的邏輯卷
-
快照的工作邏輯:
- 生成快照時只是給快照分配一定的空間,所以快照建立時間很快
- 當原邏輯卷的內(nèi)容有改變時,將舊數(shù)據(jù)復(fù)制進快照中
- 建立的快照大小達到原邏輯卷大小的15-20%即可
快照必須與原邏輯卷同在一個卷組VG
實驗3-6:邏輯卷快照的建立和恢復(fù)
1.為現(xiàn)有邏輯卷創(chuàng)建快照
lvcreate -L 300M -s -n snap-lv0 -p r /dev/vg0/lv0
2.掛載快照
mkdir -p /mnt/snap
mount -o ro /dev/vg0/snap-lv0 /mnt/snap
3.恢復(fù)快照
umount /dev/vg0/snap-lv0
umount /dev/vg0/lv0
lvconvert --merge /dev/vg0/snap-lv0

第一個紅框顯示的是邏輯卷lv0內(nèi)文件file原內(nèi)容,之后對邏輯卷lv0進行了快照操作,然后對file文件進行了修改,第二個紅框顯示的是修改后的file文件內(nèi)容,此時恢復(fù)快照,第三個紅框顯示file文件內(nèi)容恢復(fù)至快照前的樣子。