• linux Raid 和 Lvm 高级磁盘管理


    1、 Raid 介绍

      Raid:Redundant Arrays of Inexpensive(Independent)Disks,多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

      提高 IO 能力:
        磁盘并行读写

      提高耐用性:
        磁盘冗余来实现

      级别:多块磁盘组织在一起的工作方式有所不同
        Raid-0、Raid-1、Raid-2 … Raid-5、Raid-6、Raid-10、Raid-01

      Raid 实现的方式:
        外接式磁盘阵列:通过扩展卡提供适配能力
        内接式 Raid:主板集成 Raid 控制器,安装 OS 前在 BIOS 里配置
        软件 Raid:通过 OS 实现

    2、Raid 的工作原理

      Raid-0(条带卷):

      

      Raid-1、Raid-4:

      

      Raid-5:

      

      Raid-6:

      

      Raid-10:

      

      Raid-01:

      

      Raid-50:

      

      JBOD:

      

      Raid-7:

      可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的 RAID 模式。

      常用级别:

      Raid-0、Raid-1、Raid-5、Raid-10、Raid-50、JBOD

    3、软 Raid 的实现

      1> mdadm:为软 Raid 提供管理界面
        为空余磁盘添加冗余
        结合内核中的 md(multi devices)
        Raid 设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3 等

      2> mdadm:模式化的工具

    mdadm [mode] <raiddevice> [options] <component-devices>
    支持的 Raid 级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
    模式:
    创建模式:-C
      -n #            使用#个设备来创建此 RAID
      -l #            指明要创建的 RAID 的级别
      -a {yes|no}     自动创建目标 RAID 设备的设备文件
      -c CHUNK_SIZE   指明块大小,单位 K
      -x #            指明空闲盘的个数
    装配:-A
    监控:-F
    显示:-D            # 显示 RAID 的详细信息(mdadm -D /dev/md#)
    管理:
      -f:标记指定磁盘为损坏
      -r:移除磁盘
      -a:添加磁盘
    
    观察 md 的状态:
    cat /proc/mdstat <raiddevice>:/dev/md# <component-devices>:任意块设备

      3> 软 RAID 配置示例

      (1)使用 mdadm 创建并定义 RAID 设备

    mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}1

      (2)用文件系统对每个 RAID 设备进行格式化

    mkfs.xfs /dev/md0

      (3)测试 RAID 设备
      (4)使用 mdadm 检查 RAID 设备的状况

    mdadm-D/dev/md0

      (5)增加新的成员

    mdadm -G /dev/md0 -n4 -a /dev/sdf1

      4> 软 RAID 测试和修复

      (1)模拟磁盘故障

    mdadm /dev/md0 -f /dev/sda1    # 标记指定磁盘为损坏

      (2)移除磁盘

    mdadm /dev/md0 -r /dev/sda1

      (3)从软件 RAID 磁盘修复磁盘故障
        替换出故障的磁盘然后开机
        在备用驱动器上重建分区

    mdadm /dev/md0 -a /dev/sda1    # 添加磁盘

      (4)mdadm、/proc/mdstat 及系统日志信息

      5> 软 RAID 管理

      生成配置文件:mdadm -D -s >> /etc/mdadm.conf
      停止设备:mdadm -S /dev/md0
      激活设备:mdadm -A -s /dev/md0 激活
      强制启动:mdadm -R /dev/md0
      删除 RAID 信息:mdadm –zero-superblock /dev/sdb1

    4、逻辑卷管理器(LVM)

      允许对卷进行方便操作的抽象层,包括重新设定文件系统大小
      允许在多个物理设备间重新组织文件系统
      将设备指定为物理卷
      用一个或者多个物理卷来创建一个卷组
      物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
      在物理卷上创建的逻辑卷是由物理区域(PE)组成
      可以在逻辑卷上创建文件系统

      设置卷组的时候要设置 PE 大小,卷组显示有多少 PE,扩的时候也要以 PE 往进添加。底层硬盘设置 RAID。

      1> LVM 介绍
      LVM:Logical Volume Manager,Version 2
      dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
      设备名:/dev/dm-#
      软链接:
        /dev/mapper/vg_name-lv_name
          /dev/mapper/vol0-root
        /dev/vg_name/lv_name
          /dev/vol0/root

      2> LVM 更改文件系统的容量
      LVM 可以弹性的更改 LVM 的容量,通过交换 PE 来进行资料的转换,将原来 LV 内的 PE 转移到其他的设备中以降低 LV 的容量,或将其他设备中的 PE 加到 LV 中以加大容量。

      3> 创建逻辑卷(分区和硬盘的组合→物理卷→卷组→逻辑卷)
      创建新分区(要想使用分区当逻辑卷来用,要改 id 为 8e [t 选项]),硬盘不用;
      将分区、硬盘变成物理卷:

    pvs                     # 查看当前物理卷
    pvdisplay               # 查看当前物理卷
    pvcreate /dev/sd{b1,c}  # 将/dev/sdb1 和 /dev/sdc 变成物理卷
    pvs                     # 或者 pvdisplay 查看当前所创建的物理卷

      将所创建的物理卷变成卷组:

    vgs                     # 查看当前卷组
    vgdisplay               # 查看当前卷组
    vgcreate [卷组名] [物理卷 pv1 pv2…] [-s 6M 指定 PE 大小默认 4M]   # 创建卷组
    vgcreate vg0 /dev/sd{b1,c}   # 将/dev/sdb1 和 /dev/sdc 创建为卷组
    vgs 或 vgdisplay 查看 vg0 卷组
    在/dev/vg0

      创建逻辑卷:

    lvs                     # 或者 lvdisplay 查看当前逻辑卷
    lvcreate -n [lvname] -L [指定多大的逻辑卷] [vg 卷组名]     # -l [以 PE 个数为单位]
    lvcreate -n mysql -L 8G vg0
    lvs                     # 或者 lvdisplay 查看当前逻辑卷
    /dev/vg0/mysql 等同于 /dev/mapper/vg0-mysql

      创建文件系统:

    mkfs.xfs /dev/vg0/mysql

      挂载:

    mount /de/vg0/mysql /mnt/mysql

      4> 扩展逻辑卷(将卷组剩余的空间给逻辑卷分配)

    lvextend -l +100%free /dev/vg0/mysql   # 将卷组剩余空间100%全给 mysql 逻辑卷
    vgdisplay                              # 查看卷组,发现空间全用光了
    加了空间,新加的空间没有文件系统,所以 df 看不到,需要同步文件系统
    同步文件系统:
    xfs_growfs /dev/vg0/mysql              # 同步新添的逻辑卷空间
    
    如果卷组上也没空间了,新添硬盘,将新添硬盘先变成物理卷 pvcreate /dev/sdd
    将物理卷加入卷组 vg0 vgextend vg0
    /dev/sdd # 将 vg0 扩展至/dev/sdd
    再新建一个逻辑卷 lvcreate -n binlog -L 10G vg0 lvs 或 lvdisplay # 查看新添逻辑卷
    格式化:
    mkfs.ext4 /dev/vg0/binlog 挂载:
    mount /de/vg0/binlog /mnt/binlog 再扩展:
    lvextend
    -l 1000 /dev/vg0/binlog # 扩展前看一下卷组有多少剩余空间
    df 看不到,同步文件系统: resize2fs /dev/vg0/binlog
    扩展并同步文件系统: lvextend
    -r -l +500 /dev/vg0/mysql # 加 -r 选项
    缩减逻辑卷:(xfs 文件系统不能缩减,ext 系列可以),缩减必须离线缩减(取消挂载) 先缩文件系统大小,在缩减逻辑卷大小 resize2fs /dev/vg0/binlog 10G # 缩减文件系统到 10G lvreduce -L 10G /dev/vg0/binlog # 缩减逻辑卷大小
    缩减完再挂载

      5> 跨主机迁移卷组
      源主机上:

    在旧系统中,umount 所有卷组上的逻辑卷
    禁用卷组: vgchange
    -an vg0 lvdisplay
    导出卷组: vgexport vg0 pvscan vgdisplay 拆下旧硬盘

      目标主机上:

    在新系统中安装旧硬盘,并导入卷组:vgimport vg0
    vgchange -ay vg0
    mount 所有卷组上的逻辑卷

      6> 将卷组上的硬盘搬家

    pvmove /dev/sdd         # 将 pv 逻辑卷 sdd 搬家到同一卷组上的其他 pv 成员上(先看现有卷组空间够不够)
    vgreduce vg0 /dev/sdd   # 将/devsdd 从 vg0 中移除
    pvremove /dev/sdd       # 将/dev/sdd 从物理卷中移除

      7> 删除逻辑卷

      先取消挂载,删逻辑卷(lvremove),再删除卷组(vgremove),再删物理卷 pvremove

      8> 逻辑卷管理器:快照

      快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝;
      对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择;
      快照只有在它们和原来的逻辑卷不同时才会消耗空间
        在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间;
        当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中;
        快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据;
        建立快照的卷大小小于等于原始逻辑卷,也可以使用 lvextend 扩展快照

      使用 LVM 快照:

    为现有逻辑卷创建快照:
    lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data
    
    挂载快照:
    mkdir -p /mnt/snap mount -o ro /dev/vg0/data-snapshot /mnt/snap
    恢复快照:
    umount /dev/vg0/data-snapshot umount /dev/vg0/data lvconvert --merge /dev/vg0/data-snapshot
    删除快照:
    umount /mnt/databackup lvremove /dev/vg0/databackup

      xfs 快照实验:

    lvcreate -s -n mysql_snapshot -L 1G /dev/vg0/mysql             # -s:snapshot,-n:起个名字,针对于/dev/vg0/mysql 创建快照
    mount -o nouuid /dev/vg0/mysql_snapshot /mnt/mysql_snapshot/   # 挂载查看数据(可以指定-p r 只读不能挂载;快照的 uuid 和原本 lv 逻辑卷一样)
    更改数据,取消逻辑卷和快照的挂载
    lvconvert --merge /dev/vg0/mysql_snapshot                      # 合并逻辑卷和快照
    再挂载逻辑卷

      ext4 快照实验:

    lvcreate -s -n binlog_snapshot -L 1G -p r /dev/vg0/binlog
    mount /dev/vg0/binlog_snapshot /mnt/binlog_snapshot            # ext4 允许 uuid 重复
    更改数据,取消逻辑卷和快照的挂载
    lvconvert –merge /dev/vg0/binlog_snapshot                      # 合并逻辑卷和快照
    再挂载逻辑卷
  • 相关阅读:
    判断操作系统
    Oracle之初体验
    判断PDF文件是否相同(通过二进制流判断)
    jQuery基础 html+css3+jquery 点击按钮切换内容
    Jquery基础,点击事件click,鼠标移入事件mouseover。通过事件改变DOM结构
    Jquery教学基础,简单的淡入淡出,隐藏显示,改变CSS等
    Vuex的高级使用及localStorage
    Vuex实现数据共享
    Vue项目代码结构简单介绍
    Vue项目环境准备
  • 原文地址:https://www.cnblogs.com/zyybky/p/12803982.html
Copyright © 2020-2023  润新知