- 文件系統配額管理
- RAID
- LVM邏輯卷管理器
一、文件系統配額管理
文件系統配額:在內核中啟用,以文件系統為管理單位,對不同的用戶和用戶組設置不同的配額管理策略,配額限制單位為節點和塊
軟限制 (soft limit):超出軟限制報警,但不會禁止繼續占用文件系統空間
硬限制 (hard limit):超出硬限制直接禁止繼續占用文件系統空間
-
初始化:
- 分區掛載選項:
編輯/etc/fstab文件,分區掛載選項增加usrquota(用戶配額), grpquota(用戶組配額) - 初始化數據庫:quotacheck命令
- 分區掛載選項:
-
執行
- 開啟、取消配額:quotaon, quotaoff
- 編輯配額 edquota
實驗:實現在/home分區對用戶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,然后初始化數據庫,成功后可以看到/home目錄下新增加的兩個數據文件
第4步,開啟配額,按照要求配置hellopeiyang用戶的配額,注意單位為KB。
第5步,切換至hellopeiyang用戶,在用戶家目錄下測試配額是否測試成功。可以看到創建文件總容量超出80M時有報警信息,創建文件總容量超出100M時文件寫入失敗,最多只能達到配額設置的最大值。
二、RAID
(一)RAID基本概念
1. 定義:
RAID(Redundant Arrays of Independent Disks) 獨立磁盤冗余陣列,多個磁盤合成一個陣列來提供更好的性能、冗余
2. 功能:
通過磁盤并行讀寫提高IO能力,通過磁盤冗余提高耐用性
3. 實現方式:
- 外接式RAID:通過擴展卡提供能力
- 內接式RAID:主板集成RAID控制器,安裝OS前在BIOS中設置
- 軟件式RAID:通過OS實現
4. RAID級別:多塊磁盤組織在一起的不同工作方式
主要應用的RAID級別:
- RAID 0 ,又稱條帶卷
磁盤組織方式:
(1)讀、寫性能提升;
(2)可用空間:N*min(S1,S2,...)
(3)無容錯能力
(4)最少磁盤數:2
- RAID 1 ,又稱鏡像卷
磁盤組織方式:
(1)讀性能提升、寫性能略有下降;
(2)可用空間:1*min(S1,S2,...)
(3)有冗余能力
(4)最少磁盤數:2
- RAID 4
磁盤組織方式:
(1)讀、寫性能提升;
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞,但由于校驗盤故障率遠高于其他磁盤,已被RAID5取代
(4)最少磁盤數:3
- RAID 5
磁盤組織方式:
(1)讀、寫性能提升
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞
(4)最少磁盤數:3
- RAID 6
磁盤組織方式:
(1)讀、寫性能提升
(2)可用空間:(N-2)*min(S1,S2,...)
(3)有容錯能力:允許最多2塊磁盤損壞
(4)最少磁盤數:4
- RAID 10
磁盤組織方式:
(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:每組鏡像最多只能壞一塊
(4)最少磁盤數:4
- RAID 01
磁盤組織方式:
(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:容錯能力不及RAID10
(4)最少磁盤數:4
(二)軟件RAID
1、RAID設備命名規則:
/dev/md#,#指數字,如/dev/md0, /dev/md1, /dev/md2
2、軟件RAID實現
mdadm 工具介紹:
Linux軟件RAID管理工具,支持的RAID級別:
RAID0, RAID1, RAID4, RAID5, RAID6, RAID10mdadm 語法格式:
mdadm [mode] <raiddevice> [options] <component-devices>
mode 模式:
創建(Create)、裝配(Assemble)、監控(Monitor)、管理(Manage)<raiddevice> : 設備名,如/dev/md1
<component-devices>: 任意塊設備,可以是磁盤或磁盤分區
創建模式
-C
-n # //使用#個塊設備來創建此RAID
-l # //指明要創建的RAID的級別
-a {yes|no} //自動創建目標RAID設備的設備文件
-c CHUNK_SIZE //指明塊大小
-x # //指明空閑盤的個數
顯示RAID詳細信息
-D
,語法:mdadm -D /dev/md#
管理模式
-f //標記指定磁盤損壞
-a //添加磁盤
-r //移除磁盤
觀察md狀態:
cat /proc/mdstat
生成配置文件:
mdadm -D -s >> /etc/mdadm.conf
停止設備:
mdadm -S /dev/md0
激活設備:
mdadm -A -s /dev/md0
強制啟動:
mdadm -R /dev/md0
刪除raid信息:
mdadm --zero-superblock /dev/sdb1
3、實驗:軟件RAID基本操作
- 現有5塊硬盤/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf,大小均為20G。
(1)將五塊硬盤分別分出1個1G大小的分區,先將前四塊硬盤的第一個分區構建RAID5,命名為/dev/md0,其中第四塊硬盤作為空閑硬盤。建立后,對RAID設備建立ext4文件系統。
fdisk /dev/sdb fdisk /dev/sdc... //分區時注意一定要改變system id為fd
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
// 含義:-C指創建,-a yes指自動創建RAID設備文件,-l 5指RAID級別為5,-n 3指活動設備數為3,
-x 1指空閑設備數為1
(2)檢查RAID設備情況,并將配置文件保存到/etc/mdadm.conf
mdadm -D /dev/md0
mdadm -D -s >> /etc/mdadm.conf
紅框標注中分別表示了RAID級別,活動、空閑設備數量,chunk的默認大小,每個磁盤設備的具體狀態
(3)將第五塊硬盤的第一個分區加入到/dev/md0上
mdadm –G /dev/md0 –n4 -a /dev/sdf1
//-G 指改變活動磁盤陣列的大小,-n4 指活動設備數為4,-a指添加磁盤
(4)模擬第一塊硬盤出現故障,查看第四塊硬盤的分區是否自動頂替故障設備
mdadm /dev/md0 -f /dev/sdb1
mdadm -D /dev/md0
紅框中顯示/dev/sdb1已經發生故障,而之前空閑的/dev/sde1自動頂替/dev/sdb1的位置
(5)移除故障設備
mdadm /dev/md0 -r /dev/sdb1
mdadm -D /dev/md0
紅框顯示故障設備/dev/sdb1已經被移除
(6)停止RAID設備
mdadm -S /dev/md0
三、LVM 邏輯卷管理器
(一)LVM邏輯卷管理器的基本概念
LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的存儲卷,在存儲卷上建立文件系統
-
LVM允許在多個物理設備間重新組織文件系統,創建邏輯卷的大體過程如下:
- 將設備指定為物理卷PV(Physical Volumes)
- 物理卷用固定大小的物理區域PE(Physical Extent)定義
- 將一個或多個物理卷創建成為卷組VG(Volumes Group)
- 在卷組上建立的邏輯卷LV(Logical Volumes)由PE構成
- 在邏輯卷上建立文件系統
- LVM彈性更改邏輯卷容量原理:
通過交換PE實現彈性更改容量,將邏輯卷的PE轉移到其他邏輯卷中以降低容量,從其他邏輯卷轉移PE到邏輯卷以增加容量
(二)LVM邏輯卷管理器實現
-
物理卷PV管理工具
- 顯示pv信息
pvs:簡要顯示pv信息
pvdisplay:詳細顯示pv信息 - 創建pv
pvcreate /dev/DEVICE
- 顯示pv信息
-
卷組VG管理工具
- 顯示卷組
vgs:簡要顯示vg信息
vgdisplay:詳細顯示vg信息 - 創建卷組
vgcreate [-s #UNIT] VG /dev/DEVICE - 管理卷組
vgextend VG /dev/DEVICE 擴充卷組
vgreduce VG /dev/DEVICE 壓縮卷組 - 刪除卷組
vgremove
- 顯示卷組
-
邏輯卷LV管理工具
- 顯示邏輯卷
lvs:簡要顯示lv信息
lvdisplay:詳細顯示lv信息 - 創建邏輯卷
lvcreate -L #[UNIT] -n NAME VG:-L
指定大小
lvcreate -l #%{FREE | VG} -n NAME VG :-l
指定百分比,后跟VG指卷組總容量,FREE指卷組未用容量 - 管理邏輯卷
lvextend -L [+]#[UNIT] /dev/VG_NAME/LV_NAME
lvreduce -L [-]#[UNIT] /dev/VG_NAME/LV_NAME - 刪除邏輯卷
lvremove /dev/VG_NAME/LV_NAME - 重設文件系統大小
fsadm [options] resize device [new_size[UNIT]]
resize2fs [options] device [new_size]:僅用于ext2, ext3, ext4
- 顯示邏輯卷
實驗3-1:實現邏輯卷:
有三塊硬盤/dev/sdb(20GB), /dev/sdc(10GB), /dev/sdd(5GB)
(1)創建分區/dev/sdb1(1GB), /dev/sdc1(2GB)
(2)將/dev/sdb1, /dev/sdc1和/dev/sdd創建為物理卷
(3)將三個物理卷創建為卷組vg0
(4)在卷組vg0上創建兩個邏輯卷:第一個邏輯卷/dev/vg0/lv0(2GB),第二個邏輯卷/dev/vg0/lv1,其大小為卷組剩余空間的50%
(5)給兩個邏輯卷創建文件系統,均為ext4
fdisk /dev/sdb fdisk /dev/sdc //分區時注意一定要改變system id為8e
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd //創建物理卷
vgcreate vg0 /dev/sdb1 /dev/sdc1 /dev/sdd //創建卷組vg0
lvcreate -L 2G -n lv0 vg0 //創建邏輯卷lv0
lvcreate -l 50%FREE -n lv1 vg0 //創建邏輯卷lv1
mkfs -t ext4 /dev/vg0/lv0 //建立邏輯卷lv0的文件系統
mkfs -t ext4 /dev/vg0/lv1 //建立邏輯卷lv1的文件系統
- 實驗3-2:擴展邏輯卷:
接實驗3-1,現在邏輯卷大小:/dev/vg0/lv0為2GB,/dev/vg0/lv1為3GB。現在需要將/dev/vg0/lv0擴展至3GB,/dev/vg0/lv1擴展至6GB。當前卷組vg0大小為8GB,無法直接擴展兩個邏輯卷。另有未創建文件系統的磁盤分區/dev/sde1,大小為2GB。
(1)將/dev/sde1加入到卷組vg0中
(2)拓展邏輯卷lv0,并且擴展lv0的文件系統
(3)一條命令實現拓展邏輯卷lv1和其文件系統
vgdisplay //查看當前卷組容量是否滿足邏輯卷擴展要求
fdisk /dev/sde1 //改變system id為8e
pvcreate /dev/sde1 //將/dev/sde1創建為物理卷
vgextend vg0 /dev/sde1 //將/dev/sde1添加到卷組vg0中
lvextend -L +1G /dev/vg0/lv0 //將邏輯卷lv0大小添加1GB至3GB
resize2fs /dev/vg0/lv0 3G //將邏輯卷lv0的文件系統擴展大小至3GB
lvextend -r -L 6G /dev/vg0/lv1 //將邏輯卷lv1和其文件系統一并擴展至6GB,
-r選項指同步擴展文件系統大小
- 實驗3-3:縮減邏輯卷:
接實驗3-2,將邏輯卷lv1的大小縮減至5GB
fsck -f /dev/vg0/lv1 //縮減邏輯卷前必須檢查磁盤,-f指強制執行
resize2fs /dev/vg0/lv1 5G //縮減邏輯卷文件系統大小
lvreduce -L 5G /dev/vg0/lv1 //縮減邏輯卷大小
- 實驗3-4:從邏輯卷中刪除正在使用的物理分區(或磁盤):
接實驗3-3,當前邏輯卷lv0大小3GB、邏輯卷lv1大小5GB,卷組vg0大小10GB,卷組空閑容量2GB。物理卷/dev/sdc1大小2GB,可以直接在邏輯卷管理中刪除此分區。
vgdisplay //查看卷組空間情況
pvdisplay //查看邏輯卷空間情況
pvmove /dev/sdc1
//雖然卷組空間滿足刪除/dev/sdc1的要求,但/dev/sdc1的PE已經占滿,所以需要將數據移動至其他物理卷
vgreduce vg0 /dev/sdc1 //卷組中刪除物理卷/dev/sdc1
pvremove /dev/sdc1 //將物理卷/dev/sdc1刪除
紅框中顯示/dev/sdc1的PE已經全部占滿,需要先做數據遷移,才能從卷組中刪除
- 實驗3-5:遷移邏輯卷:
接實驗3-4,將邏輯卷/dev/vg0/lv1和/dev/vg0/lv2遷移至另一個服務器系統中
(1)為了防止出現重名,將卷組改名為newvg0
(2)將邏輯卷改名:lv0改為newlv0,lv1改為newlv1
(3)凍結卷組newvg0
(4)將卷組導出,拆除硬盤,安裝到新的服務器中
(5)將卷組導入到新的服務器中
(6)啟用卷組newvg
vgrename vg0 newvg0 //卷組改名
lvrename /dev/newvg0/lv0 newlv0 //邏輯卷改名
lvrename /dev/newvg0/lv1 newlv1 //邏輯卷改名
vgchange -an newvg0 //凍結卷組
vgexport newvg0 //導出
------拆除硬盤,安裝至新的服務器(虛擬機以虛擬磁盤文件的剪切粘貼實現)------
pvscan //掃描物理卷
vgimport newvg0 //導入卷組
vgchange -ay newvg0 //啟用卷組
- 特別注意:以上實驗均未涉及掛載過程,實際工作中邏輯卷必須掛載才能夠正常使用,所以涉及邏輯卷擴展、縮減、刪除、遷移操作前必須先卸載邏輯卷,待設置完成后再進行掛載操作,否則會導致嚴重的后果。
(三)LVM邏輯卷管理器快照
快照是特殊的邏輯卷
-
快照的工作邏輯:
- 生成快照時只是給快照分配一定的空間,所以快照建立時間很快
- 當原邏輯卷的內容有改變時,將舊數據復制進快照中
- 建立的快照大小達到原邏輯卷大小的15-20%即可
快照必須與原邏輯卷同在一個卷組VG
實驗3-6:邏輯卷快照的建立和恢復
1.為現有邏輯卷創建快照
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.恢復快照
umount /dev/vg0/snap-lv0
umount /dev/vg0/lv0
lvconvert --merge /dev/vg0/snap-lv0
第一個紅框顯示的是邏輯卷lv0內文件file原內容,之后對邏輯卷lv0進行了快照操作,然后對file文件進行了修改,第二個紅框顯示的是修改后的file文件內容,此時恢復快照,第三個紅框顯示file文件內容恢復至快照前的樣子。