什么是raid? 在虚拟机上实现raid5。 raid和热备盘

简介: RAID 是洋文“Redundant Array of Inexpensive Disks”的缩写,中文称之为“磁盘冗余阵列”。

★RAID 简介

◇啥是 RAID?

RAID 是洋文“Redundant Array of Inexpensive Disks”的缩写,中文称之为“磁盘冗余阵列”。

搞这个玩意儿的好处包括两方面:

其一,通过增加数据的【冗余度】来提升其【可靠性】(RAID 有好几种类型;除了 RAID0,其它各种类型都可以不同程度地提高可靠性)

其二,提升“读性能”或“写性能”或“读写性能”(取决于你具体使用哪种 RAID 类型)

◇RAID 的类型

RAID 有很多种类型,详细解释参见维基百科的“这个链接”。LVM 已经支持如下几种:

RAID 0

RAID 1

RAID 4

RAID 5

RAID 6

RAID 10

考虑到篇幅,俺挑几种常用的 RAID 类型,在下一个章节介绍。介绍的时候,会顺便说说该 RAID 类型的【原理】。

◇“软 RAID”与“硬 RAID”

硬 RAID

  “硬 RAID”需要在电脑主板上插一个“RAID 硬件”(RAID 控制器)。然后由这个“RAID 硬件”来控制多块磁盘——RAID 功能全靠该“RAID 硬件”来完成。

 操作系统通过该“RAID 硬件”的驱动来与之打交道。在这种模式下,操作系统【看不到】具体的每一个磁盘。因此,这种这种模式的 RAID 对操作系统来说是【透明】滴。

软 RAID

  在这种模式下,每个磁盘都直接连到主板上,操作系统可以看到每个磁盘,RAID 功能由操作系统层面(软件层面)实现。故称之为“软 RAID”。

  本文讨论的就是这种。

◇哪些同学需要考虑 RAID?

使用 RAID 的【前提】是——你的电脑上同时装了【多个】物理磁盘。如果没有这个前提,搞 RAID 是没意义滴。

LVM 自带的 RAID 功能

◇RAID 0 的玩法

原理

  RAID0 有时候也称作“带区集 or 条纹集”。通俗地说就是:把 N 个设备凑成一个大的逻辑设备。每次要写入数据时,先拆分为 N 等份,平均写入每个设备。

空间利用率

 完全不浪费(利用率接近 100%)。在所有 RAID 类型中,这种的空间利用率最高。


 可靠性

 虽然利用率最高,但可靠性最差(无冗余)——任何一个设备坏掉,全完蛋。


 操作步骤

 先创建 N 个大小一样的 PV(此处假设 N = 2),并加入到同一个 VG 里面(假设 VG 名称叫做 vg_raid)。具体如何做,前面已经聊过。

 用如下命令可以创建一个名叫 lv_xxxx 的逻辑卷,并设定以 RAID0 方式存储数据。

lvcreate --type raid0 --stripes 2 --extents 100%FREE -n lv_xxxx vg_raid

上述命令的参数说明:

参数 说明
--type raid0 采用 RAID 0 的方式存储数据
--stripes 2 用来创建“带区集”的设备数,在本示例中是 2
对于 RAID0,该参数的最大值为 64
--extents 100%FREE 创建一个 LV,把 VG 的剩余空间都用掉

最后,在这个新创建的 LV 之上创建文件系统。

◇RAID 1 的玩法

原理

  RAID1 有时候也称作“镜像”。也就是说,用 N 块【大小一样】的存储空间,存储相同的数据,以达到冗余的目的。

20200620230111771.png

空间利用率

 在常见的 RAID 类型中,RAID1 的【空间利用率】最低(只有 1/N)。


可靠性

 可靠性最高(哪怕 N-1 个设备【同时】坏掉,数据都还在)。


操作步骤

 先创建 N 个大小一样的 PV(此处假设 N = 2),并加入到同一个 VG 里面(假设 VG 名称叫做 vg_raid)。具体如何做,前面已经聊过。

 用如下命令可以创建一个名叫 lv_xxxx 的逻辑卷,并设定以 RAID1 方式存储数据。

lvcreate --type raid1 --mirrors 1 --nosync --extents 100%FREE -n lv_xxxx vg_raid

上述命令的参数说明:

参数 说明
--type raid1 采用 RAID 1 的方式存储数据
--mirrors 1

镜像设备的数量。

在本示例中用了两个存储设备,其中一个用作镜像;

如果是3个设备搞 RAID1,该参数就是 2(以此类推)

(对于 RAID1,该参数的最大值为 9

--nosync

创建 LV 的过程中【不】在几个 PV 之间同步数据,可缩短该命令的执行时间

最后,在这个新创建的 LV 之上创建文件系统(具体命令,前面已经聊过)。

◇RAID 5 的玩法

 原理

 RAID5 是针对 RAID4 的改良。这2款的存储风格与前面所说的 RAID0 类似(都用了 stripes 方式拆分数据);为了做到“可靠性”,RAID4 & RAID5 引入了校验码。它至少需要 N 个设备(N ≥ 3),数据写入前,先拆分为 N-1 份,写入其中 N-1 个设备,多出来的那个设备用来保存【校验码】。

 俺用下面这张示意图表示 RAID4 & RAID5 的存储差异。RAID4 把校验值全部放到同一个磁盘,会大大增加该磁盘的写操作——每次有数据块被修改,都要更新校验值,都得写这块磁盘。这块磁盘就会成为“写操作”的瓶颈。

 (由于 RAID4 明显不如 RAID5,如今用的很少,所以俺就不聊 RAID4 了)

20200620230145732.png 空间利用率

 空间利用率 (N-1)/N,明显高于 RAID1(1/N),但低于 RAID0(100%)。


 可靠性

 可靠性也不差,N 块设备随便坏一块,都可以恢复。同时坏两块,数据会完蛋(但同时坏两块的概率很低)。


 先创建 N 个大小一样的 PV(此处假设 N = 3),并加入到同一个 VG 里面(假设 VG 名称叫做 vg_raid)。


 用如下命令可以创建一个名叫 lv_xxxx 的逻辑卷,并设定以 RAID5 方式存储数据。

lvcreate --type raid5 --stripes 2 --nosync --extents 100%FREE -n lv_xxxx vg_raid

上述命令的参数说明:

参数 说明
--type raid5 采用 RAID 5 的方式存储数据
--stripes 2

表示数据拆分为几份。

对于 RAID5 模式的 N 个设备,该数字是【N-1】(参见上述示意图)

(对于 RAID5,该参数的最大值为 63

--nosync

创建 LV 的过程中【不】在几个 PV 之间同步数据,可缩短该命令的执行时间

最后,在这个新创建的 LV 之上创建文件系统(具体命令,前面已经聊过)。

◇LVM 使用 RAID 存储的注意事项

一旦你在某个 VG 上创建了 RAID 方式的 LV,之后你就【无法】再从该 VG 中移除 PV 了(这是由 RAID 本身的特点决定的)。这种情况下,如果你非要移除该 VG 中的 PV,除非你先把该 VG 上涉及 RAID 存储的那些 LV 先全部删除,然后才能移除 PV。

一般来说,如果你要采用 RAID 的方式,应该为此单独创建一个新的 VG,该 VG 中的 PV 只用于 RAID 方式。

实战

1、在虚拟机上实现 软raid5.

主要步骤:

  • 添加三块scsi硬盘
[root@localhost ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   20G  0 disk 
├─sda1          8:1    0    1G  0 part /boot
└─sda2          8:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
sdb             8:16   0    5G  0 disk 
sdc             8:32   0    5G  0 disk 
sdd             8:48   0    5G  0 disk 
  • 创建三个大小一样的pv
[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <19.00g    0 
  /dev/sdb        lvm2 ---    5.00g 5.00g
  /dev/sdc        lvm2 ---    5.00g 5.00g
  /dev/sdd        lvm2 ---    5.00g 5.00g
  • 将三个pv放一个vg逻辑池
[root@localhost ~]# vgcreate vg_raid /dev/sdb
  Volume group "vg_raid" successfully created
[root@localhost ~]# vgextend vg_raid /dev/sdc
  Volume group "vg_raid" successfully extended
[root@localhost ~]# vgextend vg_raid /dev/sdd
  Volume group "vg_raid" successfully extended
[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree  
  rhel      1   2   0 wz--n- <19.00g      0 
  vg_raid   3   0   0 wz--n- <14.99g <14.99g
[root@localhost ~]# 
  • 创建lv逻辑卷并以raid5方式存储数据。
[root@localhost ~]# lvcreate --type raid5 --stripes 2 --nosync --extents 100%FREE -n lv_raid5 vg_raid
  Using default stripesize 64.00 KiB.
  Rounding size (3837 extents) down to stripe boundary size (3836 extents)
  WARNING: New raid5 won't be synchronised. Don't read what you didn't write!
  Logical volume "lv_raid5" created.
[root@localhost ~]# lvs
  LV       VG      Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root     rhel    -wi-ao---- <17.00g                                                    
  swap     rhel    -wi-ao----   2.00g                                                    
  lv_raid5 vg_raid Rwi-a-r---   9.98g                                    100.00          
[root@localhost ~]# 

可以看到三快盘一共是15GB ,做完raid变成了9.8GB

利用率刚好是66.7%

做了raid5还需要热备盘吗?

uodate 2022年11月2日17:35:44

今天infra同事给服务器做了raid5,并开启了热备盘。整个过程看了一遍在这里总结一下:

12块10TB的SAS盘

1、做raid5 容量少一块

2、热备需要一块

剩余10块  10/12 = 83%.

但问题是为啥是11/12 = 91%的利用率呢?

5966383af9634c889fcfb5209a096b02.png

目录
相关文章
Vm虚拟机创建raid5盘+热备盘
Vm虚拟机创建raid5盘+热备盘
173 0
|
1月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
731 3
|
1月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
110 50
|
2月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
81 4
|
6月前
|
Unix Linux 虚拟化
虚拟机VMware知识积累
虚拟机VMware知识积累
|
2月前
|
Linux 虚拟化
vmware虚拟机安装2024(超详细)
vmware虚拟机安装2024(超详细)
389 6
|
2月前
|
虚拟化 网络虚拟化 网络架构
虚拟机 VMware Workstation 16 PRO 的网络配置
虚拟机 VMware Workstation 16 PRO 的网络配置
93 2
|
3月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
|
4月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
190 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS