RAID

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。
简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,
从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,
其向主机环境提供了成本适中、数据可靠性高的高性能存储。
RAID通常有软件RAID和硬件RAID之分,软件依靠算法,需要消耗一定的CPU资源,linux可以用mdadm命令实现,
对于硬件RAID,可以在系统启动之前的进行设置。
通常有以下几种

RAID0

至少两块硬盘
RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,
因为它并不提供任何形式的冗余策略。
RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,
以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。
再加上不需要进行数据校验, RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,
一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,
实际的性能提升低于理论值。
RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,
一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,
如视频、音频存储、临时数据缓存空间等。
raid0.png

RAID1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。
RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。
RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、
技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。
RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

RAID_1.png

RAID5

RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,
而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。
因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。
当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,
从而拥有更高的容量以及更高的性能。
RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,
当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。
与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,
是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,
数据中心大多采用它作为应用数据的保护方案。
raid5.png

lvm

逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。
传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。
可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,
以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
此外lvm也支持快照

### 准备磁盘分区
这一步就是上图的最顶层,可以在同一块硬盘的不同分区(分区需要使用‘8e’类型来使他们可用于LVM),
也可以是不同硬盘。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fdisk /dev/sdb
Command (m for help): n ## 新建
Command action
e extended
p primary partition (1-4)
p ## 主分区
Partition number (1-4): 1 ## 分区号
First cylinder (1-1044, default 1): ## 回车用默认的1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +1G ## 大小
Command (m for help): t ## 改变类型
Selected partition 1
Hex code (type L to list codes): 8e ## LVM 的分区代码
Changed system type of partition 1 to 8e (Linux LVM)
w保存

准备物理卷(PV)

1
2
3
4
5
pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
其他可用命令
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan

准备卷组(VG)

vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
其他可用命令

1
2
3
vgcfgbackup vgck vgdb vgextend vgmerge vgremove vgscan
vgcfgrestore vgconvert vgdisplay vgimport vgmknodes vgrename vgsplit
vgchange vgcreate vgexport vgimportclone vgreduce vgs

创建逻辑卷(LV)

lvcreate -L 100M -n lv1 volume-group1
-s – 创建快照
-n – 为快照命名
-L 分区大小
其他可用命令

1
2
lvchange lvcreate lvextend lvmchange lvmdiskscan lvmsadc lvreduce lvrename lvs
lvconvert lvdisplay lvm lvmconf lvmdump lvmsar lvremove lvresize lvscan

格式化分区

1
2
3
mkfs.ext4 /dev/volume-group1/lv1
mkdir /lvm-mount
mount /dev/volume-group1/lv1 /lvm-mount/

参考

https://wsgzao.github.io/post/raid/
https://linux.cn/article-3218-1.html