一、RAID与LVM

1. RAID

  • 作用:RAID独立磁盘冗余阵列,使用多块硬盘,组成大容量的硬盘组,将数据分成多个片段同时进行读写,以提高读写速度,并通过冗余备份实现数据安全性

  • RAID0

    • 原理:将至少两块硬盘通过硬件或软件方式 “串联” 起来,组成一个大的硬盘卷组,将数据一次写入各个硬盘中
    • 图:
    • 特点
      • 优点:数据同步传输,读取/写入分开,性能提升较大
      • 缺点:任意一块硬盘损坏,整个系统数据无法使用
      • 硬盘使用率100%,至少2块硬盘才可组建
  • RAID1

    • 原理:把至少两块硬盘 “并联” 起来,写入数据时,数据同时写入到另一硬盘中
    • 图:
    • 特点
      • 优点:使用硬盘镜像功能,提高数据安全性
      • 缺点:硬盘利用率50%,使用两块硬盘,一块存储,一块备份,成本较大
  • RAID5

    • 产生原因:兼顾读写速度及数据安全,是一种折中方式
    • 原理:至少使用三块硬盘,将数据分化存储到不同硬盘中,硬盘中必须存储其他硬盘的校验数据
    • 图:
    • 特点:
      • 优点:兼顾性能,通过 “奇偶校验” 来替代 “镜像备份”
      • 缺点:硬盘数据安全性较低,硬盘使用率(n-1)*n,硬盘数据出现问题会自动校验恢复
  • RAID10(主流)

    • 本质:RAID1+RAID0
    • 原理:至少需要四块硬盘,先制作两两硬盘的RAID1阵列,以保证数据安全性,在两两制作RAID0以提高读写性能
  • mdadm命令

    • 作用:管理系统中的RAID磁盘阵列

    • 格式:mdadm -模式参数 RAID设备文件名 -性能参数 磁盘成员文件名

    • 参数:

      • -C:创建RAID
      • -D:查看RAID详细信息
      • -Q:查看摘要信息
      • -S:停止RAID工作
      • -a:检测设备名称,添加新硬盘
      • -n:指定硬盘数量
      • -l:指定RAID级别
      • -v:显示过程
      • -f:模拟设备损坏
      • -r:移除RAID中的硬盘设备
    • 例:创建RAID10

      • mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

      • 分析

        -Cv:创建RAID并显示过程

        /dev/md0:创建的RAID设备文件名

        -a yes:检测RAID设备名并确认

        -n 4:参与制作的硬盘个数

        -l 10:RAID级别为RAID10

        最后为参与制作RAID10的硬盘文件名

      image-20201011165519217
      • 格式化:mkfs.xfs /dev/md0
      • 建立挂载点目录:mkdir -p /RAID
      • 挂载RAID设备:mount /dev/md0 /RAID
      • 查看RAID信息:mdadm -D /dev/md0
      • 开机挂载:vim /etc/fstab
      • 添加新行:/dev/md0 /RAID xfs defaults 0 0
      • reboot重启
      • df -h查看信息
    • RAID10 制作小结

      • mdadm 命令制作

        mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde

      • mkfs.xfs 格式化

      • 建立挂载点目录

      • mount 挂载

      • vim /etc/fstab 开机挂载

      • mdadm -D 查看信息

  • 解散当前RAID

    • 注意:在生产环境中若要取消RAID,必须先进行数据备份,否则已存在数据无法使用
    • 第一步:备份数据
    • 第二步:取消挂载状态 umount /dev/md0
    • 第三步:删除开机挂载信息
    • 第四步:停止 RAID10 mdadm -S /dev/md0
    • 第五步:重启 reboot
  • RAID损坏修复功能

    • 模拟某个硬盘损坏:mdadm /dev/md0 -f /dev/sdb
    • 查看信息:mdadm -D /dev/md0
    • 卸载RAID:umount /RAID
    • 添加新硬盘:mdadm /dev/md0 -a /dev/sdf
    • 查看信息:mdadm -D /dev/md0
  • RAID备份技术

    • 原理:在RAID10中添加一块大容量硬盘,通过新硬盘进行备份数据,防止2块硬盘同时故障,若某块硬盘故障,备份盘会同步恢复,无需人工干预

    • 例:创建RAID10+备份盘阵列系统

      • 创建RAID10+备份盘:

        mdadm -Cv /dev/md1 -a yes -n 4 -l 10 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

        注意:-x 1表示备份盘 ,且为1块硬盘,一般命令的最后一个硬盘为备份盘

      • 查看信息:mdadm -D /dev/md1

      • 格式化:mkfs.ext4 /dev/md1

      • 模拟硬盘损坏:mdadm /dev/md1 -f /dev/sdb

      • 注意:/dev/sdf会自动补上,并且自动同步数据

2. LVM逻辑卷管理器

  • 产生原因:硬盘分区及RAID部署后再修改空间大小时就十分不方便,甚至数据会丢失,用户需要动态灵活调整硬盘分区大小时,需要通过LVM技术实现

  • 原理:LVM在磁盘分区与文件系统之间添加一个逻辑层,以提供一个抽象的卷组,使得管理者可以忽略底层磁盘布局,从而实现对分区的灵活调整

  • 图:

  • 分析

    • PE:数据基本块,默认为4MB大小
    • PV:物理卷,由整个硬盘或分区组成
    • VG:卷组,由一个或多个物理卷组成
    • LV:逻辑卷,从卷组中切割出的空间,用于创建文件系统,供用户使用
  • 命令:

    功能/命令 物理卷(PV) 卷组(VG) 逻辑卷(LV)
    扫描 pvscan vgscan lvscan
    建立 pvcreate vgcreate lvcreate
    显示 pvdisplay vgdisplay lvdisplay
    删除 pvremove vgremove lvremove
    扩大 vgextend lvextend
    缩小 vgreduce lvreduce
  • LV使用过程

    • 将硬盘设置为物理卷 -> 创建卷组 -> 将物理卷加入卷组 -> 切割指定大小的逻辑卷 -> 格式化逻辑卷 -> 创建挂载目录 -> 挂载逻辑卷 -> 添加开机挂载项

    • 例1:系统中添加两个硬盘,创建物理卷及卷组,划分150MB的逻辑卷并格式化挂载使用

      • 创建物理卷: pvcreate /dev/sdb /dev/sdc

      • 创建卷组并将物理卷加入:vgcreate /dev/VG1 /dev/sdb /dev/sdc

      • 显示卷组信息:vgdisplay /dev/VG1

      • 切割150MB的逻辑卷:lvcreate -n lv1 -L 150M /dev/VG1

        注意:lv1逻辑卷默认路径为卷组目录,使用相对路径即可

      • 查看逻辑卷信息:lvdisplay /dev/VG1/lv1

      • 格式化逻辑卷:mkfs.xfs /dev/VG1/lv1

      • 创建挂载目录:mkdir -p /lvm1

      • 挂载:mount /dev/VG1/lv1 /lvm1

      • 开机挂载:添加新行 /dev/VG1/lv1 /lvm1 xfs defaults 0 0

    • 例2:基于上例,划分出200MB的逻辑卷使用

      • 划分200M的lv:lvcreate -n lv2 -l 50 /dev/VG1

        注意:-n为新建参数,-l为PE(4MB)的个数,-L为实际容量

      • 格式化:mkfs.xfs /dev/VG1/lv2

      • 建立挂载点目录:mkdir -p /lvm2

      • 挂载:mount /dev/VG1/lv2 /lvm2

      • 开机挂载:/dev/VG1/lv2 /lvm2 xfs defaults 0 0

    • 逻辑卷的扩容

      • 过程:
        • 卸载设备 -> 扩容到指定容量 -> 重新格式化 -> 重新挂载
      • 例:对lv1逻辑卷扩容到300M
        • 查看lv1信息:lvdisplay /dev/VG1/lv1
        • 卸载设备:umount /dev/VG1/lv1
        • 扩容:lvextend -L 300M /dev/VG1/lv1
        • 格式化:mkfs.xfs -f /dev/VG1/lv1
        • 重新挂载:mount /dev/VG1/lv1 /lvm1
        • 查看信息:lvdisplay /dev/VG1/lv1
      • 注意:
        • 扩容前必须先卸载设备
        • 扩容时注意容量单位换算(-L与-l的区别)
        • 扩容后未格式化,则容量不变
    • 逻辑卷的缩容

      • 原则:相对扩容,逻辑卷缩容有风险,需提前备份,缩容前需对逻辑卷进行文件系统完整性检查,以保证数据安全

      • 过程:

        • 卸载设备 -> 文件完整性检查 -> 缩容 -> 重新格式化 -> 重新挂载
      • 例:同上例,对lv2缩容到100MB

        • 卸载设备:umount /dev/VG1/lv2
        • 文件完整性检查:xfs_repair -n /dev/VG1/lv2
        • 缩容:lvreduce -l 25 /dev/VG1/lv2(需要输入y确认,-l 25为物理块个数)
        • 查看信息:lvdisplay /dev/VG1/lv2
        • 重新强制格式化:mkfs.xfs -f /dev/VG1/lv2
        • 挂载:mount /dev/VG1/lv2 /lvm2
        • 查看信息:lsblk
    • 删除逻辑卷

      • 删除顺序:逻辑卷 -> 卷组 -> 物理卷(顺序不能错乱)
      • 注意:
        • 删除前必须备份数据
        • 删除时需要输入“y”来确认
      • 过程:
        • 卸载设备 -> 清除fstab开机挂载中的对应数据 -> lvremove删除逻辑卷 -> vgremove删除卷组 -> pvremove删除物理卷
        • 例:将上例所有的LVM数据删除
          • 卸载:umount /dev/VG1/lv1 umount /dev/VG1/lv2
          • 清除fstab对应信息:vim /etc/fstab 删除对应行
          • 删除逻辑卷:lvremove /dev/VG1/lv1 lvremove /dev/VG1/lv2(输入y确认)
          • 删除卷组:vgremove /dev/VG1
          • 删除物理卷:pvremove /dev/sdb /dev/sdc(取消硬盘对物理卷技术的支持)
          • 查看信息:lsblk

原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://zhiyuandnc.github.io/13bSfXXJ9/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息