一、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://blog.zyblog.xyz/archives/linuxming-ling-xue-xi-wu
版权声明:本文为博主原创文章,转载请注明原文链接作者信息