linux中RAID的实现和LVM逻辑卷管理

本文介绍了硬盘管理中的RAID技术,包括RAID0,RAID1,RAID5,RAID6的特性与用途。接着讲解了mdadm工具的使用,如创建、管理RAID阵列。然后阐述了LVM的概念,如物理卷、卷组、逻辑卷,并展示了如何通过LVM进行磁盘管理。最后,文章演示了如何组建RAID5阵列,并结合LVM进行磁盘管理和扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬盘管理讲解

RAID

各自的区别

RAID硬盘数量磁盘利用率能否校验保护能力读写性能
RAID0N(任意)N单个硬盘的N倍
RAID1N(偶数)N/2允许一个设备故障需写两对存储设备,互为主备
RAID5N>=3(N-1)/2允许一个设备故障需写计算校验
RAID6N>=4(N-2)/2允许两个设备故障需双重写计算校验
RAID10N>=4(偶数)N/2允许两个基组中各坏一个N/2块盘同时写入

mdadm

# 查看指定raid设备
mdadm -D /dev/md1
# 增加热备盘
mdadm /dev/md1 -a /dev/sdb4
# 使磁盘失效
mdadm /dev/md1 -f /dev/sdb1
# 移除某个磁盘
mdadm /dev/md1 -r /dev/sdb1
# 停止raid阵列
mdadm -S /dev/md1
# 增加raid工作盘数到4个
mdadm -G /dev/md1 -n 4

LVM

名词解释

物理卷:physical volume PV
卷组:vlolume groap VG
物理分区:physical partition PP
逻辑卷:logical volume LV
逻辑分区:logical partition LP

物理卷:不能调整文件系统大小
卷组:将一块或多块硬盘融合成一块
逻辑卷:逻辑卷才能建立文件系统,逻辑卷支持扩容(在线扩容),可用来实现对分区的动态扩展。

添加硬盘、创建物理卷、合成卷组、划分逻辑卷
mkdir建立挂载点目录、mfks格式化、挂载

LVM命令

  • 命令一览表

    功能物理卷管理卷组管理逻辑卷管理
    scan扫描pvscanvgscanlvscan
    create创建pvcreatevgcreatelvcreate
    display显示pvdisplayvgdisplaylvdisplay
    remove删除pvremovevgremovelvremove
    extend扩展vgextendlvextend
    reduce缩减vgreducelvreduce
  • 部分命令参数

    格式:lvcreate -L 容量大小 -n 逻辑卷名  卷组名
    

fdisk

  • 常用参数

    -b	指定每个分区的大小
    -l	列出指定的外围设备的分区表状况
    -s	将指定的分区大小输出到标准输出上,单位为区块
    -u	搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
    -v	显示版本信息
    -m	查看全部可用参数
    -n	添加新的分区
    -d	删除某个分区信息
    -t	改变某个分区的类型
    -p	查看分区表信息
    -w	保存并退出
    -q	不保存直接退出
    

lsblk

  • 常用选项

    -d ∶仅列出磁盘本身,并不会列出该磁盘的分区数据
    -f ∶同时列出该磁盘内的文件系统名称
    -i∶使用 ASCII的线段输出,不要使用复杂的编码(在某些环境下很有用)
    -m ∶同时输出该装置在 /dev 底下的权限数据(rwx的数据)
    -p ∶列出该装置的完整文件名!而不是仅列出最后的名字而已。
    -t ∶列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等
    
  • 常见用法

    [root@localhost data]# lsblk -p
    NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    /dev/sda                      8:0    0   20G  0 disk 
    ├─/dev/sda1                   8:1    0  300M  0 part /boot
    ├─/dev/sda2                   8:2    0    2G  0 part [SWAP]
    └─/dev/sda3                   8:3    0 17.7G  0 part /
    /dev/sdb                      8:16   0   20G  0 disk 
    └─/dev/mapper/datavg-datalv 253:0    0   40G  0 lvm  /data
    /dev/sdc                      8:32   0   20G  0 disk 
    └─/dev/mapper/datavg-datalv 253:0    0   40G  0 lvm  /data
    /dev/sr0                     11:0    1 1024M  0 rom  
    /dev/sr1                     11:1    1 1024M  0 rom 
    
    NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
    sda                                                                      
    ├─sda1          xfs               a79b326d-6ed3-46e3-ac2f-60a785fa0860   /boot
    ├─sda2          swap              44b2debe-5c86-48ee-a961-7f8ed1456912   [SWAP]
    └─sda3          xfs               3d8eec79-159d-4de2-bdc7-2f1395c64c9b   /
    sdb             LVM2_member       xwqQiK-H20V-g3bI-VFQn-EPiB-6b4F-3vd8yp 
    └─datavg-datalv xfs               dc4c4145-5b3e-495e-a2f4-1f9b03e5ccb0   /data
    sdc             LVM2_member       6OJZ9f-HBVU-xIzH-3zbq-z2My-VlfX-rE8UVV 
    └─datavg-datalv xfs               dc4c4145-5b3e-495e-a2f4-1f9b03e5ccb0   /data
    sr0                                                                      
    sr1 
    

mdadm

  • mdadm模式

    模式名字主要功能(对于存储管理系统)
    Create使用空闲的设备创建一个新的阵列,每个设备具有元数据块创建RAID时使用的命令
    Assemble将原来属于一个阵列的每个块设备组装为阵列在存储管理系统一般不使用该模式
    Build创建或组装不需要元数据的阵列,每个设备没有元数据块在存储管理系统一般不使用该模式
    Manage管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘用于增加热备盘移除失效盘
    Misc报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息用于查询RAID信息
    Grow改变阵列中每个设备被使用的容量或阵列中的设备的数目,改变阵列属性(不能改变阵列的级别)在存储管理系统一般不使用该模式
    Monitor监控一个或多个阵列,上报指定的事件,可以实现全局热备监控RAID,写入日志
  • 概念讲解

    /proc/mdstat		当前md(软RAID)的状态信息
    /etc/mdadm.conf		mdadm的配置文件
    Active devices		RAID中的活动组件设备
    Faulty device		RAID中失效的设备
    Spare device		RAID中热备盘
    Device Names		RAID设备名、标准格式是”/dev/mdNN”或者”/dev/md/NN”
    md					Multiple Devices虚拟块设备(利用底层多个块设备虚拟出一个新的虚拟块设备)
    md driver			MD的驱动
    Array				阵列,跟RAID意思相同
    Raid				不解释
    md device			就是使用MD创建的软件RAID
    md array			同上
    md设备			  同上
    

组建RAID5并通过LVM管理磁盘

组建RAID5

  • 添加硬盘并重启后,查看硬盘是否添加成功

    [root@localhost dev]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0  300M  0 part /boot
    ├─sda2   8:2    0    2G  0 part [SWAP]
    └─sda3   8:3    0 17.7G  0 part /
    sdb      8:16   0   20G  0 disk 
    sdc      8:32   0   20G  0 disk 
    sdd      8:48   0   20G  0 disk 
    sde      8:64   0   20G  0 disk 
    sr0     11:0    1 1024M  0 rom  
    sr1     11:1    1 1024M  0 rom 
    
  • 将新添加的硬盘全部格式化,并且更改为Linux raid autodetect模式

    [root@localhost dev]# fdisk -l | grep /dev
    Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
    /dev/sda1   *        2048      616447      307200   83  Linux
    /dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
    /dev/sda3         4810752    41943039    18566144   83  Linux
    Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors
    /dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect
    Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
    /dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
    /dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
    /dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect
    
  • 使用mdadm命令创建RAID5阵列

    [root@localhost dev]# mdadm --create -l5 -n4 /dev/md5 /dev/sd[bcde]1 
    # -x选项为设置热备盘数量和指定热备盘
    # mdadm --create -l5 -n4 /dev/md5 /dev/sd[bcde]1 -x1 /dev/sdf1
    mdadm: /dev/sdb1 appears to be part of a raid array:
           level=raid5 devices=3 ctime=Tue Jan 10 00:47:24 2023
    mdadm: /dev/sdc1 appears to be part of a raid array:
           level=raid5 devices=3 ctime=Tue Jan 10 00:47:24 2023
    mdadm: /dev/sdd1 appears to be part of a raid array:
           level=raid5 devices=3 ctime=Tue Jan 10 00:47:24 2023
    mdadm: /dev/sde1 appears to be part of a raid array:
           level=raid5 devices=3 ctime=Tue Jan 10 00:47:24 2023
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md5 started.
    
  • 通过cat /proc/mdstatlsblk查看

    [root@localhost dev]# lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda       8:0    0   20G  0 disk  
    ├─sda1    8:1    0  300M  0 part  /boot
    ├─sda2    8:2    0    2G  0 part  [SWAP]
    └─sda3    8:3    0 17.7G  0 part  /
    sdb       8:16   0   20G  0 disk  
    └─sdb1    8:17   0   20G  0 part  
      └─md5   9:5    0   60G  0 raid5 
    sdc       8:32   0   20G  0 disk  
    └─sdc1    8:33   0   20G  0 part  
      └─md5   9:5    0   60G  0 raid5 
    sdd       8:48   0   20G  0 disk  
    └─sdd1    8:49   0   20G  0 part  
      └─md5   9:5    0   60G  0 raid5 
    sde       8:64   0   20G  0 disk  
    └─sde1    8:65   0   20G  0 part  
      └─md5   9:5    0   60G  0 raid5 
    sr0      11:0    1 1024M  0 rom   
    sr1      11:1    1 1024M  0 rom 
    
    [root@localhost dev]# cat /proc/mdstat
    Personalities : [raid6] [raid5] [raid4] 
    md5 : active raid5 sde1[4] sdd1[2] sdc1[1] sdb1[0]
          62859264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
          [==================>..]  recovery = 90.4% (18946560/20953088) finish=0.1min speed=199648K/sec
          
    unused devices: <none>
    
  • mdadm -D /dev/md5查看详细信息

    [root@localhost dev]# mdadm -D /dev/md5
    /dev/md5:
               Version : 1.2
         Creation Time : Tue Jan 10 01:07:40 2023
            Raid Level : raid5
            Array Size : 62859264 (59.95 GiB 64.37 GB)
         Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
          Raid Devices : 4
         Total Devices : 4
           Persistence : Superblock is persistent
    
           Update Time : Tue Jan 10 01:09:26 2023
                 State : clean 
        Active Devices : 4
       Working Devices : 4
        Failed Devices : 0
         Spare Devices : 0
    
                Layout : left-symmetric
            Chunk Size : 512K
    
    Consistency Policy : resync
    
                  Name : localhost.localdomain:5  (local to host localhost.localdomain)
                  UUID : 9844ba4c:54e8f6f0:cbe47468:8b42b638
                Events : 18
    
        Number   Major   Minor   RaidDevice State
           0       8       17        0      active sync   /dev/sdb1
           1       8       33        1      active sync   /dev/sdc1
           2       8       49        2      active sync   /dev/sdd1
           4       8       65        3      active sync   /dev/sde1
    

通过LVM管理

  • 创建pv并查看

    [root@localhost dev]# pvcreate pvdata /dev/md5
      Device pvdata not found.
      Physical volume "/dev/md5" successfully created.
    [root@localhost dev]# pvscan
      PV /dev/md5   VG vgdata          lvm2 [<59.95 GiB / <59.95 GiB free]
      Total: 1 [<59.95 GiB] / in use: 1 [<59.95 GiB] / in no VG: 0 [0   ]
    [root@localhost dev]# pvdisplay
      --- Physical volume ---
      PV Name               /dev/md5
      VG Name               vgdata
      PV Size               <59.95 GiB / not usable 2.00 MiB
      Allocatable           yes 
      PE Size               4.00 MiB
      Total PE              15346
      Free PE               15346
      Allocated PE          0
      PV UUID               W7GcWu-z462-yTNK-GEO1-4l8F-QQMU-TtPAv7
    
  • 创建vg并查看

    [root@localhost dev]# vgcreate vgdata /dev/md5
      Volume group "vgdata" successfully created
    [root@localhost dev]# vgscan 
      Reading volume groups from cache.
      Found volume group "vgdata" using metadata type lvm2
    [root@localhost dev]# vgdisplay
      --- Volume group ---
      VG Name               vgdata
      System ID             
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               <59.95 GiB
      PE Size               4.00 MiB
      Total PE              15346
      Alloc PE / Size       0 / 0   
      Free  PE / Size       15346 / <59.95 GiB
      VG UUID               tVG08I-KUA2-pgDW-v9xG-wWMq-UG46-C8RbSK
    
  • 创建lv并查看

    [root@localhost dev]# lvcreate -l15346 -n lvdata vgdata
      Logical volume "lvdata" created.
    [root@localhost dev]# lvscan
      ACTIVE            '/dev/vgdata/lvdata' [<59.95 GiB] inherit
    [root@localhost dev]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/vgdata/lvdata
      LV Name                lvdata
      VG Name                vgdata
      LV UUID                OMYZYy-haTg-L8Hy-tAYN-Mced-HcOv-ayh0pk
      LV Write Access        read/write
      LV Creation host, time localhost.localdomain, 2023-01-10 01:18:23 -0800
      LV Status              available
      # open                 0
      LV Size                <59.95 GiB
      Current LE             15346
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
    
  • 查看lv

    [root@localhost dev]# lsblk
    NAME                MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda                   8:0    0   20G  0 disk  
    ├─sda1                8:1    0  300M  0 part  /boot
    ├─sda2                8:2    0    2G  0 part  [SWAP]
    └─sda3                8:3    0 17.7G  0 part  /
    sdb                   8:16   0   20G  0 disk  
    └─sdb1                8:17   0   20G  0 part  
      └─md5               9:5    0   60G  0 raid5 
        └─vgdata-lvdata 253:0    0   60G  0 lvm   
    sdc                   8:32   0   20G  0 disk  
    └─sdc1                8:33   0   20G  0 part  
      └─md5               9:5    0   60G  0 raid5 
        └─vgdata-lvdata 253:0    0   60G  0 lvm   
    sdd                   8:48   0   20G  0 disk  
    └─sdd1                8:49   0   20G  0 part  
      └─md5               9:5    0   60G  0 raid5 
        └─vgdata-lvdata 253:0    0   60G  0 lvm   
    sde                   8:64   0   20G  0 disk  
    └─sde1                8:65   0   20G  0 part  
      └─md5               9:5    0   60G  0 raid5 
        └─vgdata-lvdata 253:0    0   60G  0 lvm   
    sr0                  11:0    1 1024M  0 rom   
    sr1                  11:1    1 1024M  0 rom  
    
  • 创建分区,格式化并查看信息

    fdisk /dev/vgdata/lvdata
    
    Disk /dev/mapper/vgdata-lvdata: 64.4 GB, 64365789184 bytes, 125714432 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 524288 bytes / 1572864 bytes
    Disk label type: dos
    Disk identifier: 0x5eb23829
    
                        Device Boot      Start         End      Blocks   Id  System
    /dev/mapper/vgdata-lvdata1            3072   125714431    62855680   83  Linux
    
    [root@localhost vgdata]# mkfs.xfs -f /dev/vgdata/lvdata
    meta-data=/dev/vgdata/lvdata     isize=512    agcount=16, agsize=982144 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=15714304, imaxpct=25
             =                       sunit=128    swidth=384 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=7680, version=2
             =                       sectsz=512   sunit=8 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
  • 挂载目录

    [root@localhost vgdata]# mount /dev/vgdata/lvdata /data
    [root@localhost vgdata]# df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   1.9G     0  1.9G   0% /dev
    tmpfs                      1.9G     0  1.9G   0% /dev/shm
    tmpfs                      1.9G   13M  1.9G   1% /run
    tmpfs                      1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/sda3                   18G  4.9G   13G  28% /
    /dev/sda1                  297M  164M  134M  55% /boot
    tmpfs                      378M   12K  378M   1% /run/user/42
    tmpfs                      378M     0  378M   0% /run/user/0
    /dev/mapper/vgdata-lvdata   60G   33M   60G   1% /data
    
  • 开机启动

    # 保存RAID5配置信息
    mdadm -vDs  > /etc/mdadm.conf
    # 找到设备的UUID
    mdadm --misc --detail /dev/md5
    UUID : 9844ba4c:54e8f6f0:cbe47468:8b42b638
    # 写入/etc/fstab
    vim /etc/fstab
    UUID=44b2debe-5c86-48ee-a961-7f8ed1456912 swap                    swap    defaults        0 0
    

模拟磁盘损坏

  • 移除硬盘

    [root@localhost events.d]# mdadm /dev/md5 -r /dev/sdc1   //-r参数移出磁盘
    mdadm: hot removed /dev/sdc1 from /dev/md5
    [root@localhost events.d]# mdadm /dev/md5 -a /dev/sdf1	//-a参数添加磁盘
    mdadm: added /dev/sdf1
    [root@localhost events.d]# mdadm -D /dev/md5			//查看
    
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1
    
       5       8       81        -      spare   /dev/sdf1			//sdf1已成为备份
    
  • 模拟损坏

    [root@localhost events.d]# mdadm -f /dev/md5 /dev/sdc1  //模拟sdc1损坏
    mdadm: set /dev/sdc1 faulty in /dev/md5
    [root@localhost events.d]# mdadm -D /dev/md5	//查看raid 5情况
    
    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1	//正在同步数据
       4       8       49        2      active sync   /dev/sdd1
    
       1       8       33        -      faulty   /dev/sdc1			//损坏
    

删除RAID5

# 取消挂载
umount /dev/md5
# 删除RAID5
mdadm --manage --stop /dev/md5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值