linux-运维进阶-12 RAID和LVM
RAID
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为RAID级别(RAID Levels)。在用户看起来,组成的磁盘组就像是一个硬盘,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。
RAID分类
RAID技术经过不断的发展,现在已拥有了从 RAID 0 到 7 八种基本的RAID 级别。另外,还有一些基本RAID级别的组合形式,如RAID 10(RAID 0与RAID 1的组合),RAID 50(RAID 0与RAID 5的组合)等。不同RAID 级别代表着不同的存储性能、数据安全性和存储成本。但我们最为常用的是下面的几种RAID形式。
RAID级别的选择有三个主要因素:可用性(数据冗余)、性能和成本。如果不要求可用性,选择RAID0以获得最佳性能。如果可用性和性能是重要的而成本不是一个主要因素,则根据硬盘数量选择RAID 1。如果可用性、成本和性能都同样重要,则根据一般的数据传输和硬盘的数量选择RAID3、RAID5。
下面以几张图来举例
RAID0
RAID-0
无冗余、无校验
磁盘条带化
所有数据以块的形式分布在所有磁盘上
性能好,读写快:因为存储数据的负载分散到了更多物理驱动上
成本低、容量大、磁盘利用率高
可靠性低、数据安全性低
适用于对数据安全要求不高的场景
RAID1
RAID-1
磁盘镜像
两块磁盘互为镜像
读取快、写入慢:因为要写两次
成本高、磁盘利用率低(50%)
可靠性高、数据安全性高
适用于保存关键重要数据的场景
RAID5
RAID-5
分布式奇偶校验
兼顾存储性能、数据安全、成本
至少需要三片硬盘
是RAID-0和RAID-1的折中
磁盘利用率:0>5>1
数据安全性:1>5>0
读取速度:5接近于0
写入速度:5小于0
最常见的RAID方法
A1+A2+A3=AP,其中一片坏了,可以由剩余磁盘去恢复已损坏数据(P:parity 差错校验)
RAID10(不是读作十,而是一零)
RAID-10
高可靠性与高效磁盘结构
数据通常先镜像后条带化,即先RAID-1后用RAID-0(一个0下两个1)
如果先0后一的话,容错性不如前者
至少需要4个磁盘
部署磁盘阵列
mdadm
用于管理Linux系统中的软件RAID硬盘阵列,格式为
1 | mdadm [模式] <RAID设备名称> [选项] [成员设备名称] |
安装Linux 软阵列管理工具mdadm
1 | [root@localhost ~]# yum install mdadm -y |
题目:添加4块20G的硬盘,将硬盘用工具组合成软RAID10。
生成磁盘阵列
参数 | 作用 |
---|---|
-a | 检测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID级别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID磁盘阵列 |
-x | 指定备份盘数量 |
首先用fdisk -l查看系统中的磁盘信息
生成磁盘阵列
1 | [root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sd{b,c,d,e} |
查看阵列信息
1 | [root@localhost ~]# mdadm -D /dev/md0 |
使用磁盘阵列
使用制作出来的md0,将磁盘分出一个5G大小的分区,格式化为xfs,挂载到/mnt/raid使用
1 | [root@localhost ~]# mkdir /mnt/raid |
损坏磁盘阵列及修复
1 | [root@localhost ~]# mdadm /dev/md0 -f /dev/sdb |
停止磁盘阵列
umount卸载已经挂载的分区,用fdisk删除阵列硬盘上的分区
1 | [root@localhost ~]# mdadm -S /dev/md0 |
LVM
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
什么是逻辑卷管理器?
- LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对卷进行方便操作的抽象层。
- LVM 是建立在硬盘和分区之上的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。
- LVM允许在多个物理设备间重新组织文件系统,包括重新设定文件系统的大小。
概念区分
PV(物理卷):
- 物理卷(physical volume, PV)在 LVM 系统中处于最底层
- 物理卷可以是整个硬盘、硬盘上的分区或从逻辑上与磁盘分区具有同样功能的设备(如:RAID)
- 物理卷是 LVM 的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与 LVM 相关的管理参数
VG(卷组):
- 卷组(Volume Group, VG)建立在物理卷之上,它由一个或多个物理卷组成
- 卷组创建之后,可以动态添加物理卷到卷组中,在卷组上可以创建一个或多个“LVM 分区”(逻辑卷)
- 一个 LVM 系统中可以只有一个卷组,也可以包含多个卷组
- LVM 的卷组类似于非LVM系统中的物理硬盘
LV(逻辑卷):
- 逻辑卷(Logical Volume, LV)建立在卷组之上,它是从卷组中“切出”的一块空间
- 逻辑卷创建之后,其大小可以伸缩
- LVM 的逻辑卷类似于非 LVM 系统中的硬盘分区,在逻辑卷之上可以建立文件系统 (比如 /home 或者 /usr 等)
创建逻辑卷过程
添加一块20G和一块10G的硬盘(物理卷大小不需要一样,没有硬性要求)
物理卷操作
将两块硬盘变为物理卷
1 | [root@localhost ~]# pvcreate /dev/sd{b,c} |
查看系统中的物理卷
1 | [root@localhost ~]# pvs |
扫描系统中的物理卷
1 | [root@localhost ~]# pvscan |
查看物理卷详细信息
1 | [root@localhost ~]# pvdisplay /dev/sdb |
pvdisplay后面不加某一块物理卷,那么显示的就是系统中所有的物理卷的详细信息
卷组操作
创建卷组aaa,将两个物理卷加入到卷组里
1 | [root@localhost ~]# vgcreate aaa /dev/sd{b,c} |
查看系统中卷组用命令vgs,扫描用vgscan,查看详细信息用vgdisplay,用法和pv那套命令一样
1 | [root@localhost ~]# vgdisplay aaa |
逻辑卷操作
创建一个逻辑卷system,大小为1G,要求指定大小的时候使用基本单元
1 | [root@localhost ~]# lvcreate -n system -l 250 aaa |
创建逻辑卷network,大小为3G,不需要用基本单元指定大小
1 | [root@localhost ~]# lvcreate -n network -L 3G aaa |
将system格式化为xfs,挂载到/mnt/aaa_system
1 | [root@localhost ~]# mkfs.xfs /dev/aaa/system |
逻辑卷在系统中的两种表示方式
第一种:/dev/[卷组名]/[逻辑卷]
1 | [root@localhost ~]# ll /dev/aaa/system |
第二种:/dev/mapper/[卷组名]-[逻辑卷]
1 | [root@localhost ~]# ll /dev/mapper/aaa-system |
逻辑卷扩容
发现system只有1G大小远远不够用,至少要有5G的空间才够用,所以要将system扩容到5G
1 | [root@localhost ~]# umount /mnt/aaa_system |
逻辑卷快照
相当于是磁盘的备份
1 | [root@localhost ~]# echo "helloworld" > /mnt/aaa_system/hello.txt |