什么是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

目录
相关文章
|
5月前
Vm虚拟机创建raid5盘+热备盘
Vm虚拟机创建raid5盘+热备盘
82 0
|
2月前
|
虚拟化
vmware克隆虚拟机后没有ip地址的问题
解决vmware克隆虚拟机后没有内网ip的问题
|
3月前
|
SQL 存储 数据挖掘
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
虚拟机数据恢复环境: 某品牌R710服务器+MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。 虚拟机故障: 机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。服务器管理员在尝试恢复虚拟机的过程中,将原虚拟机内的xxx-flat.vmdk删除后新建了一个虚拟机,并分配了精简模式的虚拟机磁盘和快照数据盘,但原虚拟机内的数据并没有恢复。
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
|
Linux 虚拟化 数据安全/隐私保护
VMware使用 - 虚拟机克隆
如果已经安装了一台Linux操作系统,没有必要重新安装,只需要克隆就可以了,有两种方式。
26 0
|
4月前
|
存储 网络协议 虚拟化
如何操作VMware ESXi虚拟机的迁移?
如何操作VMware ESXi虚拟机的迁移?
|
4月前
|
存储 虚拟化 数据中心
如何操作VMware ESXi虚拟机的克隆?
如何操作VMware ESXi虚拟机的克隆?
|
3月前
|
Linux 虚拟化 数据安全/隐私保护
【Linux】VMware安装虚拟机- Windows + Linux
【1月更文挑战第20天】【Linux】VMware安装虚拟机- Windows + Linux
|
1月前
|
算法 虚拟化 C++
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
VMware虚拟机无法自适应和拖拽复制粘贴和共享目录问题
97 0
|
4天前
|
程序员 Linux KVM
【qemu虚拟化】将img镜像文件转换为VMware虚拟机
QEMU是一个开源的硬件虚拟化器,能在多种平台如x86、ARM、PowerPC上运行,支持虚拟化不同体系结构的操作系统。它具有硬件仿真、虚拟化支持、磁盘和网络仿真、快照回滚及可扩展性等特点。要使用QEMU,首先从[官网](https://www.qemu.org/download/)下载,然后通过命令行运行进行转换。转换后的vMDK文件可在VMware中导入,创建新的虚拟机进行使用。
46 1
【qemu虚拟化】将img镜像文件转换为VMware虚拟机

热门文章

最新文章