RAID技術
硬RAID
名稱 |
讀寫性能 |
容錯/校驗位 |
磁盤利用率 |
最小磁盤數 |
raid0 |
讀寫性能提升 |
無 |
100% |
1 |
raid1 |
讀提升,寫下降 |
有冗余 1 |
1/2 |
2 |
raid5 |
讀寫性能提升 |
容錯1 校驗1 |
n-1/n |
3 |
raid6 |
讀寫性能提升 |
容錯2 校驗2 |
n-2/n |
4 |
raid10 |
讀寫性能提升 |
每組鏡像1個 |
1/2 |
4 |
raid01 |
讀寫性能提升 |
比不上raid10 |
1/2 |
4 |
raid50 |
讀寫性能提升 |
非常高 |
1/3 |
9 |
spare disk 備用盤
軟RAID
mdadm:為軟RAID提供管理界面
生成的設備為:/dev/md0、/dev/md1、/dev/md2等
md:multi devices
軟件RAID的實現
mdadm:模式化的工具
命令的語法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
創建:-C
裝配:? ?-A
監控:? ?-F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意塊設備
-C: 創建模式
-n #: 使用#個塊設備來創建此RAID
-l #:指明要創建的RAID的級別
-a {yes|no}:自動創建目標RAID設備的設備文件
-c CHUNK_SIZE: 指明塊大小,單位k
-x #: 指明空閑盤的個數
-D:顯示raid的詳細信息
mdadm-D /dev/md#
管理模式:
-f: 標記指定磁盤為損壞
-a: 添加磁盤
-r: 移除磁盤
觀察md的狀態:
cat /proc/mdstat
軟RAID實驗
軟件實現RAID5
實驗環境Centos6
1、分區(fd),磁盤大小一致
fdisk? /dev/sdb
t fd
后面的分區可以直接復制分區表實現:
dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446
partx -a /dev/sdc
最少4塊磁盤
2、mdadm -C /dev/md0 -a yes -l 5 -c 32 -n 3 -x 1 /dev/sd{b,c,d,e}1
mdadm -D /dev/md0
3、mkfs.ext4 /dev/md0 -L raid5
4、vim /etc/fstab
UUID=….???? /mnt/raid?? ext4??? defaults????? 0???? 0
mkdir /mnt/raid
mount -a
5、創建配置文件,如果無,禁用再啟用后會提示無法找到配置文件
mdadm -Ds /dev/md0 > /etc/mdadm.conf
6、mdadm -S /dev/md0 停止(umount)
7、mdadm -A /dev/md0 激活
8、mdadm /dev/md0 -f /dev/sde1?? 損壞
9、mdadm /dev/md0 -r /dev/sde1?? 刪除
10、mdadm /dev/md0 -a /dev/sde1 加
作業:實現raid10
方法一:
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c}
mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e}
mdadm -C /dev/md2 -a yes -l1 -n2 /dev/md{0,1}
方法二:
mdadm -C /dev/md0 -a yes -110 -n4 /dev/sd{b,c,d,e}
同步raid分區所有的文件系統,只適合ext文件系統
resize2fs /dev/md0
xfs文件系統用以下命令:
xfa_growfs /mnt/raid
RAID擴展增加新成員
mdadm -G /dev/md0 -n4 -a /dev/sdf1
resize2fs /dev/md0??????? 同步文件系統ext文件系統版
xfs_growfs /mnt/raid???? 同步xfs文件系統(后面跟的是掛載點)
查看RAID信息? ? ? cat /proc/mdstat
刪除RAID
1、umount? /mnt/raid/
2、如果有人在用先? ? fuser -km /mnt/raid/
3、修改/etc/fstab
4、確定成員數mdadm -D /dev/md0
5、rm -f /etc/mdadm.conf
6、mdadm -S /dev/md0
7、徹底清除RAID信息? ? mdadm –zero-superblock /dev/sdb1? 或者? ?dd if=/dev/zero of=/dev/sdb1
8、刪除成員分區
邏輯卷管理
LVM
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小,允許在多個物理設備間重新組織文件系
統將設備指定為物理卷用一個或者多個物理卷來創建一個卷組,物理卷是用固定大小的物理區域(Physical
Extent,PE)來定義的,在物理卷上創建的邏輯卷是由物理區域(PE)組成可以在邏輯卷上創建文件系
統。
LVM: Logical Volume Manager,Version: 2
dm: device mapper:將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
創建邏輯卷
1、創建物理卷
pvcreate /dev/sd{b,c}1
pvs
pvdisplay
2、創建卷組
vgs
vgdisplay
vgcreate? -s 16M vg0 /dev/sd{b,c}1
3、創建邏輯卷(-L 容量為單位 -l PE個數為單位)
lvcreate -n lv0 -l 100 vg0???? (lv0為設定邏輯卷名,為軟鏈接,真名為dm-0)
lvs
lvdisplay
創建lv1,并用光所有空間
lvcreate -n lv1 -l 100%FREE vg0
ll /dev/mapper/vg0-lv0
ll /dev/mapper/vg0-lv1
或者
ll /dev/vg0/lv0
ll /dev/vg0/lv0
4、創建文件系統
mkfs.ext4 /dev/vg0/lv0
mkfs.ext4 /dev/vg0/lv0
5、掛載
mkdir /mnt/lv0
mkdir /mnt/lv1
vim /etc/fstab
UUID=….????????? /mnt/lv0? ext4?? defaults?? 0?? 0
UUID=….????????? /mnt/lv1? ext4?? defaults?? 0?? 0
mount -a
邏輯卷空間擴展
這種擴展屬于在線擴展,不會影響現有用戶的使用。
1、增加空間(加分區或者增加物理硬盤)
插上硬盤
echo ‘- – -‘ > /sys/class/scsi_host/host2/scan
直接增加硬盤不用分區
2、創建物理卷
pvcreate /dev/sdd
pvs
3、加入卷組
vgextend vg0? /dev/sdd
注意:
最好在增加容量的同時,同步文件系統(-r)
lvextend -r -l +100%FREE /dev/vg0/lv0
4、擴展邏輯卷空間(-l +200??? -L +5G這里為增加,-l 200 -L 5G這里表示增加到,增加全部剩余空間 -l
+100%FREE)
lvextend -L +5G? /dev/vg0/lv0
5、同步文件系統(xfs文件系統:xfs_growfs)
resize2fs /dev/vg0/lv0
調整邏輯卷大?。s減邏輯卷空間)
確?,F有數據能放得下的情況縮,在縮減之前先備份(tar)
ext文件系統可以縮減,xfs文件系統不能縮減(除非格式化)
1、取消掛載(只能在無用戶在線下縮減,fuser -km)
umount /mnt/lv0
2、縮減文件系統
fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 10G????? (縮到10G)
3、縮減邏輯卷
lvreduce -L 10G /dev/vg0/lv0
4、掛載分區
mount -a
硬盤老化報警,需要更換硬盤,邏輯卷如何處理?
pvdisplay
Allocated PE 540
1、首先要找到能代替的空間(新加硬盤或者分區)
fdisk /dev/sdc
2、創建物理卷
pvcreate /dev/sdc2
3、加入卷組
vgextend vg0 /dev/sdc2
4、移動數據
pvmove /dev/sdd
5、移除卷組
vgreduce vg0 /dev/sdd
pvdisplay
pvremove /dev/sdd
遷移邏輯卷到新的機器
1、先把已使用的邏輯卷空間集中在某一物理硬盤
pvdisplay
pvmove /dev/sda7
2、減少對應的卷組
vgreduce /dev/sda7
3、如果新機器上有同名的邏輯卷那怎么辦?
先改名
卷組:
vgrename vg0 centos6vg0
邏輯卷:
lvrename? /dev/centos6vg0/lv0? /dev/centos6vg0/centos6lv0
lvrename? /dev/centos6vg0/lv0 /dev/centos6vg1/centos6lv1
4、取消掛載
umount /mnt/lv0
5、禁用卷組
vgchange -an centos6vg0
6、導出卷組
vgexport centos6vg0
確認導出狀態
vgdisplay
pvdisplay
7、拆除并移動磁盤
8、識別磁盤
echo ‘- – -‘ > /sys/clsss/scsi_host/host2/scan
9、導入硬盤
vgimport centos6vg0
10、啟用卷組
vgchange -ay centos6vg0
11、掛載
mkdir /mnt/centos6lv0
mount /dev/centos6vg0/centos6lv0 /mnt/centos6lv0
邏輯卷快照
不能完全代替備份,例如同一硬盤上的快照,創建快照就立即在卷組中分配一塊空間,邏輯卷快照和原邏
輯卷在同一卷組中,快照大小可以和原邏輯卷相同也可以不同。當原邏輯卷數據發生修改時,才會把舊數
據寫入快照(修改,刪除都會,而且不管修改多少次,永遠保留最舊的那個)如果原邏輯卷數據沒發生改
動,沒有改動的區域則由快照區和文件系統共享,快照中只含有原來的邏輯卷中更改的數據或者自生成快
照后的快照中更改的數據,建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了,也可以使用lvextend放
大快照。
例如如果mysql數據庫要進行備份,大小100G,在cp期間很可能數據發生變化,那就可以利用快照,這樣
備份時,就不怕數據被改變。
實驗:邏輯卷的快照
1、檢查空間是否足夠? ? ?vgdisplay
2、創建快照
lvcreate -n centos6lv0-snapshot -s -L 1G
/dev/centos6vg0/centos6lv0
lvdisplay
3、掛載并查看快照內容
mkdir /mnt/snap
mount /dev/centos6vg0/centos6lv0-snapshot /mnt/snap
4、由于掛載快照有可能會誤刪快照文件,導致備份失效,所以建議在建立快照時加入-p r 選項
lvcreate -n centos6lv0-snapshot -s -L 1G -p r /dev/centos6vg0/centos6lv0
5、掛載
mount /dev/centos6vg0/centos6lv0-snapshot? /mnt/snap
如果創建時未加-p r,也可以在掛載時修改成只讀屬性
mount -o ro /dev/centos6vg0/centos6lv0-snapshot /mnt/snap
注意:
ext4必須要加-p r 選項
xfs不能加-p r選項
否則恢復合并會不成功!
5、利用快照恢復
umount /mnt/snap/
umount /mnt/centos6lv0/
lvconvert –merge /dev/centos6vg0/centos6lv0
(如果在快照創建時沒有加-p r選項會導致不能合并!這時只能用復制)
在Centos7上建立快照
lvcreate -n lv0-snapshot -L 1G -s /dev/vg0/lv0
xfs文件系統不允許相同UUID的設備同時掛載,所以無法掛載快照,所以想掛載必須:
mount -o nouuid /dev/vg0/lv0-snapshot /mnt/lv0-snap
快照恢復數據:
unmount /mnt/lv0
lvconvert –merge /dev/vg0/lv0-snapshot
mount /dev/vg0/lv0 /mnt/lv0
注意: 一旦還原數據,快照自動刪除
刪除帶有快照邏輯卷:
umount /mnt/centos6lv0
lvremove /dev/centos6vg0/centos6lv0
會提示是否先刪除快照,直接選y即可
只刪除快照,不刪除邏輯卷:
一樣操作,先取消掛載,然后刪除
umount /mnt/lv0-snap
lvremove /dev/vg0/lv0-snapshot
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100764