LVM逻辑卷以及RAID磁盘阵列

201 阅读8分钟

一、LVM逻辑卷

1.LVM逻辑卷的概述

LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小。此外,LVM 的快照功能可以帮助我们快速备份数据。LVM 为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。

动态调整磁盘容量,从而提高磁盘管理的灵活性,/boot分区用于存放引导文件,不能基于LVM创建

1.1 LVM的构成:

  • 物理卷(Physical Volume,PV):就是真正的 物理硬盘 或 分区
  • 卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一块逻辑硬盘。
  • 逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。
  • 物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB。

1.2 LVM的优点:

  • LVM是可以允许对卷组进行方便操作的抽象层,包括重新设定文件系统的大小。
  • 允许在多个物理设备间重新组织文件系统。
  • 可以弹性的更改LVM的容量。

2.LVM管理

2.1 pv(物理卷)

物理卷是 LVM 机制的基本存储设备,通常对应为一个普通分区或整个硬盘。

命令示例
pvcreate 创建物理卷pvcreate /dev/sdb /dev/sdc
pvscan 扫描物理卷,输出信息示例: pvscan
pvdisplay 显示物理卷详细信息pvdisplay 或者指定对应磁盘pvdisplay /dev/sdb2
pvremove 还原pvremove /dev/sdb2 即还原 /dev/sdb2 这块磁盘

示例:

#创建物理卷
[root@localhost ~]# pvcreate /dev/sd[b-c]
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

2.2 vg(卷组)

由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷

命令示例
vgscan 扫描vgscan
vgcreate 创建卷组vgcreate vg1(卷组名) /dev/sdb /dev/sdc
vgdisplay 显示vgdisplay /dev/sdb
vgremove 删除卷组vgremove vg1
vgextend 扩展卷组vgextend vg1(卷组) /dev/sdc(需要添加的物理卷)

示例:

#创建卷组并扫描
[root@localhost ~]# vgcreate vg01 /dev/sd[b-c]
  Volume group "vg01" successfully created
[root@localhost ~]# vgscan
  VG   #PV #LV #SN Attr   VSize  VFree 
  vg01   2   0   0 wz--n- 39.99g 39.99g

2.3 lv(逻辑卷)

逻辑卷建立在卷组之上,与物理卷没有直接关系。每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷

命令示例
lvsan 扫描lvscan
lvcreate创建逻辑卷vcreate -L 容量大小 -n 逻辑卷名 卷组名
lvdisplay 查看lvdisplay /dev/vg1/lv1
lvextend 扩展lvextend -r -L +大小 /dev/卷组名/逻辑卷名 (-r=xfs-growfs(xfs类型) /dev/vg1/lv1(卷组名和逻辑卷名) 扩展生效不加-r之后需要再打xfs-growfs /dev/vg1/lv1命令)
lvremove 删除逻辑卷lvremove /dev/vg1/lv1

示例:

#创建逻辑卷lv1,指定容量5G属于逻辑卷组vg1
[root@localhost ~]# lvcreate -n lv1 -L 5G vg1
  Logical volume "lv1" created.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1 vg1 -wi-a----- 5.00g                

2.4 LVM的建立过程:

  1. 建立物理卷
  2. 建立逻辑卷组
  3. 创建逻辑卷
  4. 格式化安装文件系统
  5. 挂载

建立命令顺序示例:

#创建物理卷
pvcreate 设备名1 设备名2 [设备名3]...               
#创建卷组
vgcreate 卷组名  物理卷名1 物理卷名2 [物理卷3]...   
#创建逻辑卷
lvcreate -L 容量大小 -n 逻辑卷名 卷组名             
#将逻辑卷格式化
mkfs.xfs 逻辑卷名(/dev/卷组名/逻辑名)            
#将逻辑卷挂载
mount 逻辑卷名(/dev/卷组名/逻辑名) 挂载点        
#将逻辑卷永久挂载
vim /etc/fstab                                   

扩容命令示例:

需注意:针对不同的文件系统,需使用与之相对应的命令来扩容

#创建新的物理卷 
pvcreate 设备名...                       
#扩容卷组
vgextend 卷组名 物理卷名    
#扩容逻辑卷
lvextend -L +大小  /dev/卷组名/逻辑卷名   
#XFS文件系统扩容 
xfs_growfs  挂载点     
#EXT4文件系统扩容
resize2fs /dev/VG_NAME/LV_NAME      
##注意针对不同的文件系统后续的命令在扩容逻辑卷的时候,加入-r选项,就可以不用打这一步的命令了

二、RAID阵列

1.RAID概述

RAID是Redundant Array of Independent Disks的缩写,中文简称为“独立冗余磁盘阵列”。RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。

组成磁盘阵列的不同方式成为RAID级别,RAID 层级不同,数据会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字。

1.1 常用RAID级别:

RAID 0、RAID 1、RAID 5、RAID 6、RAID 10(1+0读做一零)

1.2 RAID功能实现

提高IO能力,磁盘并行读写

提高耐用性,磁盘冗余算法来实现

1.3 RAID实现的方式

外接式磁盘阵列:通过扩展卡提供适配能力

内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置

软件RAID:通过OS(操作系统)实现

2.常见RAID

下列展示中Disk代指硬盘,Data代指数据,

Parity:一种冗余数据,用于在发生磁盘故障时恢复数据

Parity信息是通过将每个数据块和其对应的奇偶校验块进行异或运算来计算得到的

RAID 0:

   Disk 1         Disk 2        
+-----------+  +-----------+ 
|   Data1   |  |   Data2   |  
+-----------+  +-----------+  
+-----------+  +-----------+  
|   Data3   |  |   Data4   |  
+-----------+  +-----------+  
+-----------+  +-----------+  
|   Data5   |  |   Data6   |  
+-----------+  +-----------+  
+-----------+  +-----------+  
|   Data7   |  |   Data8   |  
+-----------+  +-----------+  

RAID 0(条带化):

  • 需要最少1块硬盘,但是想提升性能至少需要两块(一块组RAID主要用于救急)
  • 没有备份功能
  • 读写性能均提升
  • 实际容量就是硬盘容量(组成硬盘一共容量多少它的实际容量就是多少)
  • 无容错,RAID 0一块硬盘都不能坏

RAID 1(镜像):

   Disk 1         Disk 2
+-----------+  +-----------+
|   Data 1  |  |   Data 1  |
+-----------+  +-----------+

RAID 1 使用数据镜像,在多个磁盘上写入相同的数据,提供数据冗余和容错能力。RAID1提升了读的性能,由于要写入两次,写的性能会略微下降。

  • 需要最少2n块磁盘
  • 有备份功能
  • 提高了读的性能,略微降低了写的性能
  • 实际容量是组成RAID 1硬盘容量的50%
  • RAID 1阵列磁盘最多接受一组坏1块(也只能坏1块)

RAID 5:

5.png

RAID 5 使用奇偶校验信息将数据和冗余信息分布在多个磁盘上,提供数据冗余和读取性能增强。

  • 需要硬盘: n >=3,范围是[3,正无穷]
  • 有备份功能
  • 提升读的性能,略微降低写的性能
  • 实际容量是组成RAID 5的硬盘数量减1
  • 最多只能接受损坏1块硬盘(因为RAID 5 是通过计算做备份处理的)

RAID 10 (RAID 1+0):

1+0.png

RAID 10 是将 RAID 1 (数据镜像)和 RAID 0 (数据条带化)相结合的级别,提供了数据冗余和性能增强。

  • 需要硬盘数量:至少4块
  • 有备份功能
  • 读写性能均提升
  • 实际容量是组成RAID 10的磁盘容量的50%
  • 最多可以接受2两块硬盘损坏,但2块硬盘损坏有3分之1的概率掉数据

汇总:

汇总.png

  • RAID无论是哪个,主要目的都是提高磁盘的高可用性,增加磁盘的安全性容错,也可以控制成本,根据自己的需求来选择不同类型。

优点:

  • 1.节省成本
  • 2.提高读写能力,磁盘并行处理
  • 3.提高耐用性
  • 4.高可用性(安全性)

3.热备盘

1.热备盘概述

热备盘(Hot Spare)是指在RAID阵列中事先准备好但尚未被使用的备用硬盘。

热备盘只是一种备用设备,它并不参与正常的数据读写操作,只有在故障发生时才会被激活。

2.原理与作用

原理:

热备盘相当于帮Raid阵列多做多个备份,如果RAID陈列里其中一个盘坏了,这个热备盘就会顶替RAID里的那个坏盘,同时利用异或校验算法,把坏盘上面的数据原样做出来并存储在热备盘中。这样一来就等于Raid没受到损坏,然再找个一个同样的盘把坏盘替换掉,RAID和热备盘的状态又正常了。

作用:

相当于是在 RAID 里面再做一个备份,比如说本来Raid里面是只允许坏一个盘的情况下系统和数据依然正常运行,但是坏两个就不行了,但是加了热备之后就可以同时坏两个盘都没问题,就多了个保险