RAID及LVM技術的實現

RAID

創建RAID5

  1. 新建/dev/sdb1、/dev/sdb2、/dev/sdb3、/dev/sdb4、/dev/sdb6、/dev/sdb7分區,大小為10G,并設置分區類型為Linux raid autodetect。過程依次如下
  1. 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類型
  1. mdadm -D /dev/md0 查看md0設備的創建信息
  2. mdadm -Ds /dev/md0 > /etc/mdadm.conf 生成raid的配置文件,用于raid設備的開機自啟


  3. mkfs.ext4 -L md0 /dev/md0 格式化md0設備為ext4文件系統,并設置卷標為md0
  4. mkdir /app/md0
  5. vim /etc/fstab 掛載信息寫入fatab文件,開機自啟
  6. mount -a 掛載生效
  7. df 查看md0設備的空間大小為20G
  8. 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}

硬盤損壞時

  1. mdadm /dev/md0 -f /dev/sdb3 模擬/dev/sdb3設備損壞
  2. mdamd -D /dev/md0 查看md0設備的狀態,/dev/sdb3損壞,/dev/sdb5熱備盤自動添加進md0組,并自動raid重構,重構完成后,不影響raid設備的使用
  1. mdadm /dev/md0 -r /dev/sdb3 將損壞的/dev/sdb3磁盤從raid組中移除

  2. mdadm /dev/md0 -f /dev/sdb2 將/dev/sdb2設備移除后,raid級別將下降

  3. mdadm -D /dev/md0 查看raid的狀態

  4. 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

  1. mdadm /dev/md0 -a /dev/sdb6 將/dev/sdb6磁盤添加進/dev/md0組,會自動重構
  2. mdadm -D /dev/md0 查看md0設備的信息,發現/dev/sdb6正在重構


  3. mdadm /dev/md0 -a /dev/sdb7 將/dev/sdb7添加進md0組中,自動成為熱備盤
  4. mdadm -D /dev/md0 查看md0設備的相信信息

添加新的成員進RAID組中

  1. mdadm -G /dev/md0 -n4 -a /dev/sdb2 添加新的成員/dev/sdb2到raid5設備md0中,raid成員變為4個,-n 4表示為四個成員
  2. mdadm -D /dev/md0 查看/dev/md0設備的狀態
  3. 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設備的使用

  1. umount /dev/md0 先卸載md0設備
  2. mdadm -S /dev/md0 停止md0設備
  3. mv /etc/mdadm.conf /etc/mdadm.conf.bak 將mdadm.conf配置文件移除,下次將不會再啟用
  4. mdadm -D /dev/md0

激活raid設備

  1. mv /etc/mdadm.conf.bak /etc/mdadm.conf
  2. mdadm -A /dev/md0 激活設備
  3. mdadm -R /dev/md0 強制激活設備

刪除RAID

  1. umount /dev/md0 先卸載/dev/md0設備
  2. mdadm -S /dev/md0 停止/de0設備
  3. rm -rf /etc/mdadm.conf 刪除mdadm.conf配置文件
  4. vim /etc/fstab 編輯fstab文件刪除/dev/md0設備的掛載信息
  5. mdadm --zero-superblock /dev/sdb1 清除Raid成員上超級塊raid元數據,raid成員的數據一個一個刪除,徹底清除
  1. dd if=/dev/zero of=/dev/sdb1 也可以清除磁盤上的raid信息

新建raid0

  1. mdadm -C /dev/md0 -a yes -l 0 -n 4 /dev/sdb{1,2,3,5}
  2. mkfs.ext4 /dev/md0
  3. mdadm -==Ds== /dev/md0 > /etc/mdadm.conf 生成raid0的啟動配置文件
  4. mount /dev/md0 /mnt/md0
  5. dd if=/dev/zero of=/app/md0/file3 bs=1M count=1024
    dd if=/app/md0/file3 of=/dev/null bs=1M count=1024
  1. raid0設備刪除一塊整塊 raid將停止工作
  • dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446 seek=446 復制sdc的的同/dev/sdb一樣

lVM

創建LVM

  1. fdisk /dev/sdb新建/dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb5四個分區,分區類型為8eLVM類型。
  2. pvcreate /dev/sdb{1,2,3} 新建pv設備
  3. pvs
  4. pvdisplay 查看pv設備信息
  5. vgcreate -s 16M vg0 /dev/sdb1{1,2} 創建vg設備vg0,-s指定PE塊大小
  6. vgdisplay 查看vg設備
  7. lvcreate -n lv0 -l 100%vg vg0 -n指定lv邏輯卷名稱,-l指定PE塊的個數,100%vg為使用vg的全部PE
  8. lvdisplay 查看lv邏輯卷的信息
  9. mkfs.ext4 /dev/vg0/lv0 lv0邏輯卷格式化
  10. vim /etc/fstab 編輯lv0設備的掛載信息到fstab啟動文件
    UUID="c338673f-ccfb-4df2-80a6-a08c8673559f" /mnt/lv0 ext4 defaults 0
  1. df -h 查看lv0邏輯卷的大小為20G
  2. 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

  1. pvdisplay 查看還有空閑pv設備/dev/sdb3
    pvextend /dev/sdb3 若pv設備沒有空閑,則新建pv設備
  2. vgextend vg0 /dev/sdb3 將/dev/sdb3擴展進vg0設備
  3. vgdisplay 查看vg設備的容量還有20G剩余
  4. lvextend -L +10G /dev/vg0/lv0 增大10G到lv0設備
  5. lvdisplay 查看lv設備的信息和容量
  6. resize2fs /dev/vg0/lv0 (ext4文件系統) 同步文件系統,容量跟lv一致
    xfs_growfs /dev/vg0/lv0(/mnt/lv0) (xfs文件系統)
  7. df -h 查看lv設備的可用容量
  8. lvextend -r -l +100%free /dev/vg0/lv0 lv設備擴展vg剩余容量的100%,即將vg剩余的全部容量到lv設備,-r為同步文件系統,省去了resize2fs和xfs_growfs

離線減小LVM

  1. 先備份數據
  2. umount /dev/lv0 卸載/dev/vg0/lv0 設備 3. fsck/e2fsck -f /dev/vg0/lv0


  3. resize2fs /dev/vg0/lv0 30G 縮減lv容量到30G
  1. lvreduce -L 30G /dev/vg0/lv0 減小lv0邏輯卷大小到30G
  2. mount /dev/vg0/lv0 /mnt/lv0 掛載設備

移除PV

  1. vgdisplay 查看vg設備中的空閑空間
  2. pvdisplay 查看PV設備中的空閑空間,將/dev/sdb空閑空間移除到其他磁盤
  3. pvmove /dev/sdb 將/dev/sdb磁盤上的空間移到其他設備
  4. vgreduce vg0 /dev/sdb 將/dev/sdb設備從vg0設備上移除
  5. pvremove /dev/sdb 將/dev/sdb設備從pv設備中刪除
  6. 卸載磁盤

卸載

  1. umount /dev/vg0/lv0
  2. lvremove /dev/vg0/game
  3. vgremove /dev/vg0/
  4. pvremove /dev/sdb

跨主機遷移LV

  • 新建/dev/vg0/lv0設備
  1. pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc
  2. vgcreate -s 16M vg0 /dev/sdb1 /dev/sdb2 /dev/sdc
  3. lvcreate -L 20G -n lv0 vg0
  4. mkfs.ext4 /dev/vg0/lv0 /dev/newvg0/newlv0設備格式化文件系統
  5. mount /dev/vg0/lv0 /mnt/lv0 掛載lv0設備
  • 將lv0設備的空間移動到可移動磁盤上
  1. pvdisplay 查看lv對應的卷組由幾個pv組合
    image
    image
  2. vgdisplay 查看vg設備的信息
  3. pvmove /dev/sdb1 將/dev/sdb{1,2}上的數據移除到vg0的其他磁盤空間上
  4. vgreduce vg0 /dev/sdb1 將/dev/sdb1從vg0卷組中移除
  5. pvremove /dev/sdb1 將/dev/sdb1設備從pv物理卷中移除
  • 查看vg名稱,確保在目標主機上不要沖突
  1. vgrename vg0 newvg0 將vg0的名稱更改為newvg0
  2. lvrename /dev/newvg0/lv0 /dev/newvg0/newlv0 修改lv設備的命令為newlv0
  • 跨主機遷移先將更名后的newlv0設備導出
  1. umount /mnt/md0/
  2. vgchange -an newvg0 禁用卷組中的左右邏輯卷
  3. lvdisplay 查看lv邏輯卷的狀態
  4. vgexport newvg0 將newvg0設備導出
  5. vgdisplay 查看vg設備狀態
  6. 將設備關機取出磁盤更換到新主機上
  • 已更換新主機上
  1. vgdisplay 查看新設備上的vg卷設備,newvg0設備自動識別,并為導出狀態
  2. vgimport newvg0 將newvg0設備導入進系統
  3. vgchange -ay newlv0 將newlv0卷激活,配合vgchange -an newlv0使用
  4. vgdisplay 查看newvg0導入后的狀態
  5. lvdisplay 查看導入后lv卷的狀態
  6. mount /dev/newvg0/newlv0 /mnt/lv0/ 掛載newlv0設備到/mnt/lv0下
  7. df -h查看newlv0設備的掛載空間和磁盤數據

快照

  • 創建/dev/newg0/newlv0的快照(快照空間一般小于等于原lv卷的空間)
  1. lvcreate -n newlv0-snap -s -l +60%free -p r /dev/newvg0/newlv0 -n 指定快照名稱 -s 為創建快照 -l 指定快照空間為vg空閑空間的60%,-p 指定快照為只讀
  2. lvdisplay 查看newlv-snap快照的邏輯卷狀態
  3. mount /dev/newvg0/newlv0-snap /mnt/lv0-snap/ 掛載/dev/newvg0/newlv0-snap快照設備
  4. ls /mnt/lv0-snap /mnt/lv0 查看快照下面的數據同原lv0設備的數據一致
  1. rm -rf /mnt/lv0/aaa1* 刪除newlv0卷上的數據
  1. umount /mnt/lv0 卸載邏輯卷
  2. umount /mnt/lv0-snap/ 卸載邏輯卷的快照
  3. lvconvert ==--merge ==/dev/newvg0/newlv0-snap 由快照恢復邏輯卷數據
  4. mount /dev/newvg0/newlv0 /mnt/lv0 掛載邏輯卷
  5. ls /mnt/lv0 檢測數據是否恢復
  • 刪除快照
  1. umount /mnt/lv0-snap
  2. lvremove /dev/vg0/lv0-snap
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容