浅谈RAID的分类以及配合LVM的用法(附带实验)

本文深入探讨了RAID(磁盘阵列)的各种类型及其优势,如大容量、高性能、可靠性和可管理性,并详细介绍了逻辑卷管理(LVM)的概念与操作,包括创建、扩展和缩减逻辑卷的具体步骤。

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

浅谈RAID的分类以及配合LVM的用法(附带实验)


  RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID(即 RAID0)
  RAID 主要优势有如下:

  • 1.大容量
    这是 RAID 的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。
  • 2.高性能
    RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。
  • 3.可靠性
    可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。
  • 4.可管理性
    实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

常见的RAID类型比较

RAID等级RAID 0RAID1RAID5RAID6RAID10RAID01
别名条带镜像分布奇偶校验条带双重奇偶校验条带镜像加条带条带加镜像
容错性
冗余类型
热备盘
读性能
随机写性能一般一般一般
连续写性能一般一般一般
随机写性能一般
需要磁盘数n>=12n(n>=1)n>=3n>=42n(n>=2)>=42n(n>=2)>=4
可用容量100%50%n-1/nn-2/n50%50%

注意:RAID10 根RAID01的区别是容错率,当一块磁盘坏了后,RAID10的容错率是1/3,RAID01的容错率是2/3


关于RAID参数调优

通常情况下建议系统(RAID1)与数据(RAID[5|10])分离,这里引用一段话:

  1. 使用SSD或者PCIe SSD设备,至少获得数百倍甚至万倍的IOPS提升
  2. 购置阵列卡同时配备CACHE及BBU模块,可明显提升IOPS(主要是指机械盘,SSD或PCIe SSD除外。同时需要定期检查CACHE及BBU模块的健康状况,确保意外时不至于丢失数据)
  3. 有阵列卡时,设置阵列写策略为WB,甚至FORCE WB(若有双电保护,或对数据安全性要求不是特别高的话),严禁使用WT策略。并且闭阵列预读策略
  4. 尽可能选用RAID-10,而非RAID-5
  5. 使用机械盘的话,尽可能选择高转速的,例如选用15KRPM,而不是7.2KRPM的盘,不差几个钱的;

逻辑管理卷 LVM

  LVM允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小。

  • 允许在多个物理设备间重新组织文件系统
    • 将设备指定为物理卷
    • 用一个或者多个物理卷来创建一个卷组
    • 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
    • 在物理卷上创建的逻辑卷,是由物理区域(PE)组成
    • 可以在逻辑卷上创建文件系统
    概念抽象图如下:
    在这里插入图片描述
  • LVM可以弹性的更改LVM的容量,通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
    在这里插入图片描述

逻辑卷管理工具分三层

  • PV管理工具

    显示pv信息
    pvs:简要pv信息显示
    pvdisplay
    创建pv
    pvcreate /dev/DEVICE
    删除pv
    pvremove /dev/DEVICE
    
  • VG管理工具

    显示卷组
    vgs
    vgdisplay 
    创建卷组
    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName
    PhysicalDevicePath [PhysicalDevicePath...]
    管理卷组
    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    删除卷组
    先做pvmove,再做vgremove
    
  • LV管理工具

    显示逻辑卷
    lvs
    Lvdisplay
    创建逻辑卷
    lvcreate -L #[mMgGtT] -n NAME VolumeGroup
    lvcreate -l 60%VG -n mylv testvg
    lvcreate -l 100%FREE -n yourlv testvg
    删除逻辑卷
    lvremove /dev/VG_NAME/LV_NAME
    重设文件系统大小
    fsadm [options] resize device [new_size[BKMGTEP]]
    resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
    xfs_growfs /mountpoint
    

扩展和缩减逻辑卷

  • 扩展逻辑卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
  • 缩减逻辑卷:
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount

#创建逻辑卷示例过程

  • 创建物理卷
    pvcreate /dev/sda3
  • 为卷组分配物理卷
    vgcreate vg0 /dev/sda3
  • 从卷组创建逻辑卷
    lvcreate -L 256M -n data vg0
    mkfs.xfs /dev/vg0/data
  • 挂载
    mount /dev/vg0/data /mnt/data

示例开始如下:

  • 给虚拟机增加两块硬盘,一块20G 一块10G硬盘
    在这里插入图片描述
  • 找到这两块硬盘
echo '- - -' > /sys/class/scsi_host/host0/scan
echo '- - -' > /sys/class/scsi_host/host1/scan
lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk 
sdb           8:16   0   10G  0 disk 
sr0          11:0    1  6.7G  0 rom  
nvme0n1     259:0    0  200G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
├─nvme0n1p2 259:2    0  100G  0 part /data
├─nvme0n1p3 259:3    0   50G  0 part /
├─nvme0n1p4 259:4    0    1K  0 part 
└─nvme0n1p5 259:5    0    2G  0 part [SWAP]
  • 创建物理卷
pvcreate /dev/sda /dev/sdb      #建立PV
  Physical volume "/dev/sda" successfully created.
  Physical volume "/dev/sdb" successfully created.
pvs                              #查看PV情况
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sda      lvm2 ---  20.00g 20.00g
  /dev/sdb      lvm2 ---  10.00g 10.00g
pvdisplay                        #详细查看PV情况
  "/dev/sda" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               0VDyT6-3f8v-u8dV-YF8b-LpsY-35ac-yIb8k3
   
  "/dev/sdb" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               k9LyQy-BFHe-iCTQ-uwf3-83NK-ejmf-xrsfOS

  • 创建卷组 vg 名称为 vg0,指定 pe 为 16M
vgcreate -s 16m vg0 /dev/sda /dev/sdb      #创建卷组vg0 pe为16M
  Volume group "vg0" successfully created
vgs                                        #简单查看
  VG  #PV #LV #SN Attr   VSize   VFree  
  vg0   2   0   0 wz--n- <29.97g <29.97g
vgdisplay                                  #详细查看
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               <29.97 GiB
  PE Size               16.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / <29.97 GiB
  VG UUID               9LOCEJ-rhyq-cLSJ-3aAg-3K2d-qYXW-J3dxBR
  • 创建逻辑卷 LV 名称为 lv0,指定大小为10G
lvcreate -L 10G -n lv0 vg0    #创建 10G大小的逻辑卷
  Logical volume "lv0" created.
vs                            #简单查看
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0 -wi-a----- 10.00g
lvdisplay                     #详细查看
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                jGsXHB-WvZx-2yzp-JLGy-fJIS-PsoQ-IkFLiU
  LV Write Access        read/write
  LV Creation host, time Centos8.localdomain, 2019-10-17 16:13:25 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             640
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
lsblk                        #可以查看逻辑卷的组成以及大小
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   20G  0 disk 
└─vg0-lv0   253:0    0   10G  0 lvm  
sdb           8:16   0   10G  0 disk 
sr0          11:0    1  6.7G  0 rom  
nvme0n1     259:0    0  200G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
├─nvme0n1p2 259:2    0  100G  0 part /data
├─nvme0n1p3 259:3    0   50G  0 part /
├─nvme0n1p4 259:4    0    1K  0 part 
└─nvme0n1p5 259:5    0    2G  0 part [SWAP]

  • 制作逻辑卷的文件系统
mkfs.xfs /dev/vg0/lv0            #制作逻辑卷xfs文件系统
meta-data=/dev/vg0/lv0           isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
blkid /dev/vg0/lv0                #查看LVM的系统属性
/dev/vg0/lv0: UUID="6660877a-0f0f-4735-b523-8aaf7deeb02d" TYPE="xfs"
  • 挂载
mkdir /data/ceshi                   #创建一个挂点
mount /dev/vg0/lv0 /data/ceshi      #挂载
df -h                               #查看硬盘各分区的属性
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             889M     0  889M   0% /dev
tmpfs                904M     0  904M   0% /dev/shm
tmpfs                904M  9.4M  894M   2% /run
tmpfs                904M     0  904M   0% /sys/fs/cgroup
/dev/nvme0n1p3        50G  4.9G   46G  10% /
/dev/nvme0n1p2       100G  2.9G   98G   3% /data
/dev/nvme0n1p1       976M  129M  781M  15% /boot
tmpfs                181M   16K  181M   1% /run/user/42
tmpfs                181M  4.0K  181M   1% /run/user/0
/dev/mapper/vg0-lv0   10G  104M  9.9G   2% /data/ceshi
  • 扩展逻辑卷
    • 把逻辑卷扩容到20G
vgs                           #先查看是否空间够用
  VG  #PV #LV #SN Attr   VSize   VFree  
  vg0   2   1   0 wz--n- <29.97g <19.97g
lvextend -L +10G /dev/vg0/lv0 #直接增加10G上去
  Size of logical volume vg0/lv0 changed from 10.00 GiB (640 extents) to 20.00 GiB (1280 extents).
  Logical volume vg0/lv0 successfully resized.
lvs                           #查看LVM空间大小
  LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0 -wi-ao---- 20.00g  
df -hT                        #查看硬盘分区以及文件系统属性
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  889M     0  889M   0% /dev
tmpfs               tmpfs     904M     0  904M   0% /dev/shm
tmpfs               tmpfs     904M  9.4M  894M   2% /run
tmpfs               tmpfs     904M     0  904M   0% /sys/fs/cgroup
/dev/nvme0n1p3      xfs        50G  4.9G   46G  10% /
/dev/nvme0n1p2      xfs       100G  2.9G   98G   3% /data
/dev/nvme0n1p1      ext4      976M  129M  781M  15% /boot
tmpfs               tmpfs     181M   16K  181M   1% /run/user/42
tmpfs               tmpfs     181M  4.0K  181M   1% /run/user/0
/dev/mapper/vg0-lv0 xfs        10G  104M  9.9G   2% /data/ceshi
xfs_growfs /dev/vg0/lv0       #把增加分区扩展到LVM卷里去
xfs_growfs: /dev/vg0/lv0 is not a mounted XFS filesystem
# 错误提示,不是一个挂载的文件系统,改变一下思路,用挂载点
xfs_growfs /data/ceshi
meta-data=/dev/mapper/vg0-lv0    isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621440 to 5242880
#扩容成功
df -hT             #查看硬盘分区以及文件系统属性
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  889M     0  889M   0% /dev
tmpfs               tmpfs     904M     0  904M   0% /dev/shm
tmpfs               tmpfs     904M  9.4M  894M   2% /run
tmpfs               tmpfs     904M     0  904M   0% /sys/fs/cgroup
/dev/nvme0n1p3      xfs        50G  4.9G   46G  10% /
/dev/nvme0n1p2      xfs       100G  2.9G   98G   3% /data
/dev/nvme0n1p1      ext4      976M  129M  781M  15% /boot
tmpfs               tmpfs     181M   16K  181M   1% /run/user/42
tmpfs               tmpfs     181M  4.0K  181M   1% /run/user/0
/dev/mapper/vg0-lv0 xfs        20G  176M   20G   1% /data/ceshi
  • 如果要常用,就要配置到自动开机挂载文件 /etc/fstab,因为是实验就不做这一步了。

完 毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值