RAID
創建RAID5
- 新建/dev/sdb1、/dev/sdb2、/dev/sdb3、/dev/sdb4、/dev/sdb6、/dev/sdb7分區,大小為10G,并設置分區類型為Linux raid autodetect。過程依次如下
- mdadm -C /dev/md0 -n 3 -l 5 -a yes -X 1 /dev/sdb{1,2,3,5} 新建raid5,-n為三塊盤組成raid5,-X為一塊熱備盤,-a為自動創建,-l指定raid類型
- mdadm -D /dev/md0 查看md0設備的創建信息
-
mdadm -Ds /dev/md0 > /etc/mdadm.conf 生成raid的配置文件,用于raid設備的開機自啟
- mkfs.ext4 -L md0 /dev/md0 格式化md0設備為ext4文件系統,并設置卷標為md0
- mkdir /app/md0
- vim /etc/fstab 掛載信息寫入fatab文件,開機自啟
- mount -a 掛載生效
- df 查看md0設備的空間大小為20G
- dd if=/dev/zero of=/app/md0/file1 bs=1M count=1024
dd if=/app/md0/file1 of=/dev/null bs=1M count=1024 測試md0設備和普通分區的讀寫速度
創建RAID10
① mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb{1,2} 先分別創建raid1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,5}
mddadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md{0,1} 在創建raid0
② mdadm -C /dev/md0 -a yes -l 10 -n 4 /dev/sdb{1,2,3,5}
硬盤損壞時
- mdadm /dev/md0 -f /dev/sdb3 模擬/dev/sdb3設備損壞
- mdamd -D /dev/md0 查看md0設備的狀態,/dev/sdb3損壞,/dev/sdb5熱備盤自動添加進md0組,并自動raid重構,重構完成后,不影響raid設備的使用
mdadm /dev/md0 -r /dev/sdb3 將損壞的/dev/sdb3磁盤從raid組中移除
mdadm /dev/md0 -f /dev/sdb2 將/dev/sdb2設備移除后,raid級別將下降
-
mdadm -D /dev/md0 查看raid的狀態
-
dd if=/dev/zero of=/app/md0/file2 bs=1M count=1024
dd if=/app/md0/file2 of=/dev/null bs=1M count=1024 讀性能下降
- 修復raid
- mdadm /dev/md0 -a /dev/sdb6 將/dev/sdb6磁盤添加進/dev/md0組,會自動重構
-
mdadm -D /dev/md0 查看md0設備的信息,發現/dev/sdb6正在重構
- mdadm /dev/md0 -a /dev/sdb7 將/dev/sdb7添加進md0組中,自動成為熱備盤
- mdadm -D /dev/md0 查看md0設備的相信信息
添加新的成員進RAID組中
- mdadm -G /dev/md0 -n4 -a /dev/sdb2 添加新的成員/dev/sdb2到raid5設備md0中,raid成員變為4個,-n 4表示為四個成員
- mdadm -D /dev/md0 查看/dev/md0設備的狀態
- dd if=/dev/zero of=/app/md0/file2 bs=1M count=1024
dd if=/app/md0/file2 of=/dev/null bs=1M count=1024 再次測試讀寫性能
停止raid設備的使用
- umount /dev/md0 先卸載md0設備
- mdadm -S /dev/md0 停止md0設備
- mv /etc/mdadm.conf /etc/mdadm.conf.bak 將mdadm.conf配置文件移除,下次將不會再啟用
- mdadm -D /dev/md0
激活raid設備
- mv /etc/mdadm.conf.bak /etc/mdadm.conf
- mdadm -A /dev/md0 激活設備
- mdadm -R /dev/md0 強制激活設備
刪除RAID
- umount /dev/md0 先卸載/dev/md0設備
- mdadm -S /dev/md0 停止/de0設備
- rm -rf /etc/mdadm.conf 刪除mdadm.conf配置文件
- vim /etc/fstab 編輯fstab文件刪除/dev/md0設備的掛載信息
- mdadm --zero-superblock /dev/sdb1 清除Raid成員上超級塊raid元數據,raid成員的數據一個一個刪除,徹底清除
- dd if=/dev/zero of=/dev/sdb1 也可以清除磁盤上的raid信息
新建raid0
- mdadm -C /dev/md0 -a yes -l 0 -n 4 /dev/sdb{1,2,3,5}
- mkfs.ext4 /dev/md0
- mdadm -==Ds== /dev/md0 > /etc/mdadm.conf 生成raid0的啟動配置文件
- mount /dev/md0 /mnt/md0
- dd if=/dev/zero of=/app/md0/file3 bs=1M count=1024
dd if=/app/md0/file3 of=/dev/null bs=1M count=1024
- raid0設備刪除一塊整塊 raid將停止工作
- dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446 復制sdc的的同/dev/sdb一樣
lVM
創建LVM
- fdisk /dev/sdb新建/dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb5四個分區,分區類型為8eLVM類型。
- pvcreate /dev/sdb{1,2,3} 新建pv設備
- pvs
- pvdisplay 查看pv設備信息
- vgcreate -s 16M vg0 /dev/sdb1{1,2} 創建vg設備vg0,-s指定PE塊大小
- vgdisplay 查看vg設備
- lvcreate -n lv0 -l 100%vg vg0 -n指定lv邏輯卷名稱,-l指定PE塊的個數,100%vg為使用vg的全部PE
- lvdisplay 查看lv邏輯卷的信息
- mkfs.ext4 /dev/vg0/lv0 lv0邏輯卷格式化
- vim /etc/fstab 編輯lv0設備的掛載信息到fstab啟動文件
UUID="c338673f-ccfb-4df2-80a6-a08c8673559f" /mnt/lv0 ext4 defaults 0
- df -h 查看lv0邏輯卷的大小為20G
- dd if=/dev/zero of=/mnt/lv0/file4 bs=1M count=1024
dd if=/mnt/lv0/file4 of=/dev/null bs=1M count=1024 測試lv0設備的讀寫速度
在線拉升LVM
- pvdisplay 查看還有空閑pv設備/dev/sdb3
pvextend /dev/sdb3 若pv設備沒有空閑,則新建pv設備
- vgextend vg0 /dev/sdb3 將/dev/sdb3擴展進vg0設備
- vgdisplay 查看vg設備的容量還有20G剩余
- lvextend -L +10G /dev/vg0/lv0 增大10G到lv0設備
- lvdisplay 查看lv設備的信息和容量
- resize2fs /dev/vg0/lv0 (ext4文件系統) 同步文件系統,容量跟lv一致
xfs_growfs /dev/vg0/lv0(/mnt/lv0) (xfs文件系統) - df -h 查看lv設備的可用容量
- lvextend -r -l +100%free /dev/vg0/lv0 lv設備擴展vg剩余容量的100%,即將vg剩余的全部容量到lv設備,-r為同步文件系統,省去了resize2fs和xfs_growfs
離線減小LVM
- 先備份數據
-
umount /dev/lv0 卸載/dev/vg0/lv0 設備 3. fsck/e2fsck -f /dev/vg0/lv0
- resize2fs /dev/vg0/lv0 30G 縮減lv容量到30G
- lvreduce -L 30G /dev/vg0/lv0 減小lv0邏輯卷大小到30G
- mount /dev/vg0/lv0 /mnt/lv0 掛載設備
移除PV
- vgdisplay 查看vg設備中的空閑空間
- pvdisplay 查看PV設備中的空閑空間,將/dev/sdb空閑空間移除到其他磁盤
- pvmove /dev/sdb 將/dev/sdb磁盤上的空間移到其他設備
- vgreduce vg0 /dev/sdb 將/dev/sdb設備從vg0設備上移除
- pvremove /dev/sdb 將/dev/sdb設備從pv設備中刪除
- 卸載磁盤
卸載
- umount /dev/vg0/lv0
- lvremove /dev/vg0/game
- vgremove /dev/vg0/
- pvremove /dev/sdb
跨主機遷移LV
- 新建/dev/vg0/lv0設備
- pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc
- vgcreate -s 16M vg0 /dev/sdb1 /dev/sdb2 /dev/sdc
- lvcreate -L 20G -n lv0 vg0
- mkfs.ext4 /dev/vg0/lv0 /dev/newvg0/newlv0設備格式化文件系統
- mount /dev/vg0/lv0 /mnt/lv0 掛載lv0設備
- 將lv0設備的空間移動到可移動磁盤上
- pvdisplay 查看lv對應的卷組由幾個pv組合
image - vgdisplay 查看vg設備的信息
- pvmove /dev/sdb1 將/dev/sdb{1,2}上的數據移除到vg0的其他磁盤空間上
- vgreduce vg0 /dev/sdb1 將/dev/sdb1從vg0卷組中移除
- pvremove /dev/sdb1 將/dev/sdb1設備從pv物理卷中移除
- 查看vg名稱,確保在目標主機上不要沖突
- vgrename vg0 newvg0 將vg0的名稱更改為newvg0
- lvrename /dev/newvg0/lv0 /dev/newvg0/newlv0 修改lv設備的命令為newlv0
- 跨主機遷移先將更名后的newlv0設備導出
- umount /mnt/md0/
- vgchange -an newvg0 禁用卷組中的左右邏輯卷
- lvdisplay 查看lv邏輯卷的狀態
- vgexport newvg0 將newvg0設備導出
- vgdisplay 查看vg設備狀態
- 將設備關機取出磁盤更換到新主機上
- 已更換新主機上
- vgdisplay 查看新設備上的vg卷設備,newvg0設備自動識別,并為導出狀態
- vgimport newvg0 將newvg0設備導入進系統
- vgchange -ay newlv0 將newlv0卷激活,配合vgchange -an newlv0使用
- vgdisplay 查看newvg0導入后的狀態
- lvdisplay 查看導入后lv卷的狀態
- mount /dev/newvg0/newlv0 /mnt/lv0/ 掛載newlv0設備到/mnt/lv0下
- df -h查看newlv0設備的掛載空間和磁盤數據
快照
- 創建/dev/newg0/newlv0的快照(快照空間一般小于等于原lv卷的空間)
- lvcreate -n newlv0-snap -s -l +60%free -p r /dev/newvg0/newlv0 -n 指定快照名稱 -s 為創建快照 -l 指定快照空間為vg空閑空間的60%,-p 指定快照為只讀
- lvdisplay 查看newlv-snap快照的邏輯卷狀態
- mount /dev/newvg0/newlv0-snap /mnt/lv0-snap/ 掛載/dev/newvg0/newlv0-snap快照設備
- ls /mnt/lv0-snap /mnt/lv0 查看快照下面的數據同原lv0設備的數據一致
- rm -rf /mnt/lv0/aaa1* 刪除newlv0卷上的數據
- umount /mnt/lv0 卸載邏輯卷
- umount /mnt/lv0-snap/ 卸載邏輯卷的快照
- lvconvert ==--merge ==/dev/newvg0/newlv0-snap 由快照恢復邏輯卷數據
- mount /dev/newvg0/newlv0 /mnt/lv0 掛載邏輯卷
- ls /mnt/lv0 檢測數據是否恢復
- 刪除快照
- umount /mnt/lv0-snap
- lvremove /dev/vg0/lv0-snap