目录
LVM逻辑卷与磁盘阵列
一、逻辑卷的LVM的划分
LVM: Logical Volume Manager 逻辑卷管理器 可以动态调整磁盘容量,提高磁盘管理灵活性 /boot挂载分区不能基于LVM创建 可以使用图形或字符终端管理LVM yum install system-config-lvm
LVM服务: /usr/lib/systemd/system/lvm2-lvmetad.service
-
用于LVM的元数据缓存守护程序(lvmetad)
-
接收来自udev rules的通知
-
具有可用卷组的最新一致映像
-
/usr/lib/systemd/system/lvm2-monitor.service
-
Executes vgchange--monitor y
-
开始或停止监视镜像或快照逻辑具有dmeventd的卷(如果已安装)
LVM概述:
LVM的建立过程:
PV:物理卷
物理卷可以由整个硬盘也可以是独立分区转化而成的 物理卷包括了许多默认大小为4MB的PE(Physical Extent)基本单元
VG:卷组
卷组是由一个或者多个物理卷,组成的整体
LV:逻辑卷
从卷组中提取一部分空间,可以建立文件系统。
LVM管理命令: 功能 物理卷(PV) 卷组(VG) 逻辑卷(LV) 扫描scan pvscan vgscan lvscan 建立create pvcreate vgcreate lvcreate 显示display pvdisplay vgdisplay lvdisplay 删除remove pvremove vgremove lvremove 扩展extend vgextend lvextend 缩减reduce vgreduce lvreduce
(一)LVM的建立过程
可以抽象理解成:面粉(pv物理卷)------>面团(vg卷组,可以将不同的pv物理卷加进来/移出去,同属于一个卷组,共享空间【拉伸/缩减卷组空间】)-------->小面团【可以想象成馒头】(lv逻辑卷)-------->成品【馒头蒸熟了】(lv逻辑卷的配置)
具体步骤:
1、创建磁盘分区 fdisk 磁盘路径 p查看当前磁盘使用情况 n添加磁盘,并指定大小(自定义,不超过磁盘固定大小即可) t转换类型,8e为逻辑卷LVM w保存退出,并刷新,使用partprobe
lsblk查看或者cat /proc/partitions进行查看是否刷新成功(是否添加成功)
2、创建物理卷 pvcreate 分区路径 pvs 进行查看 pvdisplay命令 用于显示物理卷的属性。 pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。
3、创建卷组,一定要给名字 vgcreate vgname 分区路径 (组名自定义) vgs 进行查看 vgdisplay命令 用于显示LVM卷组的信息。如果不指定"卷组"参数,则分别显示所有卷组的属性。
4、创建逻辑卷,也一定要给名字 lvcreate -n lvname -L 大小 分区路径 -n 后是逻辑卷的名字 -L 后是指定的大小
lvs 进行查看逻辑分区 lvdisplay命令 用于显示LVM逻辑卷空间大小、读写状态和快照信息等属性。 如果省略"逻辑卷"参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。
创建的逻辑卷需要进行格式化和挂载,建议格式化的格式和底层创建的磁盘分区的格式保存一致(普通的文件系统分区也是如此)。
格式化指令: mkfs -t 文件系统格式 逻辑卷分区路径 挂载: 创建挂载点,编辑/etc/fstab文件,添加相应的信息(建议使用UUID) mount -a 进行挂载 如果xfs文件系统挂载不成功,可多次尝试该命令。并检查fstab文件。
vgcreate和lvcreate时,必须指定卷组和逻辑卷名称,逻辑卷需指定大小
(二)逻辑卷LVM的拉伸与缩减
对于不同的文件系统类型,操作配置都大致类似。可能个别有出入。
注意:EXT4文件系统可拉伸可缩减,XFS文件系统只可拉伸,不支持缩减。(也可强制,但会造成数据丢失,磁盘崩溃等问题)
一、对于文件系统EXT4的拉伸
1、当物理卷中有剩余的空间时。可以直接进行拉伸 指令: pvs 查看物理卷信息,是否有剩余可用 vgs 查看卷组信息 df -Th | grep ext4 过滤筛选查看ext4文件系统所占所使用的大小
拉伸: lvextend -L 大小 逻辑卷的路径 (也可以使用lvresize,该指令可用于拉伸和缩减都可以) 大小:如果直接指定,就是指定到多大 如果大小前加+ 表示拉伸扩展多大空间。
df查看此时没有变化,需要通知文件系统,空间已经被拉伸扩展了。 刷新文件系统: resize2fs 逻辑卷分区路径 df 再次查看空间就被拉伸上去了。
2、当物理卷中没有剩余的空间使用时候。这是需要添加或者使用新的硬盘进行拉伸 步骤: 首先添加新的磁盘,新建分区,格式转换成LVM逻辑卷 其次将新的分区创建初始化成物理卷,将物理卷加入需要扩容拉伸的逻辑卷的同一个卷组 然后拉伸卷组,最后拉伸逻辑卷分区,告知文件系统刷新即可。 (相对上一部的有剩余空间的拉伸,只是多了创建磁盘分区,创建物理卷加入卷组这两部操作)
指令:
1、添加新的硬盘,并刷新识别 fdisk 分区路径 进行管理分区并创建分区,转换成LVM
2、将新的分区创建成物理卷,并添加到对应的卷组(拉伸卷组的同时就创建物理卷了) 创建物理卷: pvcreate 分区路径 拉伸卷组: vgextend vgname 分区路径
3、拉伸逻辑卷LVM lvextend -L 大小 逻辑分区路径 大小:如果直接指定,就是指定到多大 如果大小前加+ 表示拉伸扩展多大空间。
4、通知文件系统,进行刷新 resize2fs 逻辑卷分区路径 df 进行查看分区所占的空间大小以及使用情况是否变化
二、对于EXT4文件系统的缩减 缩减相对拉伸来说,步骤恰好相反。
LVM缩减的步骤:
1、先对磁盘分区的挂载点进行下线 umount 逻辑卷分区的挂载点
2、然后进行磁盘的检查(执行第三步的指令,会弹出该步骤的指令提示,实际上第三步的指令操作并没有执行成功,当执行磁盘检查完以后再次执行即可成功。) e2fsck 逻辑卷分区路径
注意:如果不将分区的挂载点下线,会报错,提示正在使用。
3、告知磁盘的分区文件系统缩减了 resize2fs 逻辑卷分区路径
4、指定逻辑卷的分区文件系统要缩减的大小 lvreduce -L 大小 逻辑卷分区路径 会弹出警告,(会造成数据丢失)
vgs 查看卷组验证 pvs 查看物理卷验证 df 查看空间是否变化进行验证。
三、对应XFS文件系统的拉伸
步骤同EXT4文件系统拉伸 一样 唯一不同的是,通知文件系统的指令不同。 XFS文件系统对于resize2fs不敏感,需要使用xfs_growfs 逻辑卷分区路径 进行刷新告知文件系统要缩减了。其余步骤同EXT4的文件拉伸一致。
XFS文件系统不支持缩减 xfs配置可拉伸空间 xfs不支持缩减空间 ext4可拉伸可缩减空间
(三)创建LVM的快照
LVM的快照相当于是将当前的LVM的文件系统的状态拍个照片。如果源LVM逻辑分区路径中的文件出现问题时候,可以恢复快照,将快照中的文件拷贝或者移动过来,进行恢复。
指令:
lvcreate -n 快照名字 -s -L 快照大小 逻辑卷分区的路径 通常一般情况,快照的大小为原来空间大小的15%-20%。(空间不够可通过lvextend放大快照) pvs,vgs,lvs可进行查看对应的剩余空间以及大小。
将创建的快照进行挂载,创建挂载点进行挂载。
mount 逻辑卷快照的分区路径 挂载路径 快照的UUID和源设备UUID相同。 XFS文件系统的快照挂载时需要加参数(默认会使用UUID挂载): mount -o nouuid(XFS only) /dev/myvg/mylv-snap /mountpoint lvremove 移除
lsblk进行查看是否挂载成功 或mount筛选查询
可修改源逻辑卷分区中的文件内容,来和快照做个对比。 指令: diff 源逻辑卷分区中的文件路径 快照中的逻辑分区文件路径 查看其不同的地方。如果没有任何的回应,则没有变化。
(四)物理卷发生故障处理
模拟物理卷发生故障时候,进行物理卷的迁移。 模拟效果以前可以再创建个逻辑卷分区(确保在同一个逻辑卷组) vgs 查看卷组的使用情况 pvs 查看物理卷的使用情况
1、拉伸逻辑卷分区,将其中一个物理卷的空间占满,没有剩余空间可以使用。 创建一个新的磁盘分区,格式转换成LVM,然后创建初始化成物理卷,加入对应的卷组。
注意:新的磁盘分区的大小一定要根据原来坏掉的物理卷中的大小要大或者一样,否则拷贝数据时会失败,无法进行迁移。空间不足。可以使用pvs进行查看。vgs进行确认新的磁盘分区创建的物理卷是否加了进来以及相关的卷组信息。
2、将故障分区进行删除 fdisk 磁盘分区路径 查看分区情况,进行删除对应的故障分区。 w保存退出后,进行partprobe刷新分区会弹出提示,无法进行刷新告诉你设备正在写入,使用中,需要重启。 无需重启,进行平替。
3、平替物理卷,进行迁移 将坏掉的物理卷进行数据迁移平替 指令: pvmove 需要迁移的磁盘分区 等待迁移即可。中间不要有任何的操作,否则会造成数据的丢失。
等待完成后,lsblk可以查看是否有变化。vgs,pvs进行查看。平替成功后,将原来的坏的磁盘进行删除。先将物理卷在卷组中删除,然后再删除物理卷。
平替完成后,将故障物理卷移除出去: 将故障的物理卷从卷组中移除: vgextend vgname 要移除的物理卷的磁盘分区路径 将物理卷移除: pvremove 要移除的物理卷的磁盘分区路径
再次进行刷新磁盘partprobe就不会报错了,正常的刷新了。 lsblk再次查看验证即可。
(五)逻辑卷的激活与反激活
lvscan进行扫描查看逻辑卷分区的状态 正常状态为:ACTIVE
操作前提:将逻辑卷的挂载点进行下线,如果不下线执行指令会报错误,告诉你正在使用该设备。
指令: lvchange -a y/n 逻辑卷分区的路径 y 表示打开 进行激活 n 表示关闭 反激活
反激活: 选择选项n以后,执行lvscan再次查看,对应要关闭额逻辑分区状态为:inactive 此操作主要针对于当逻辑卷故障时,可以不进行删除逻辑卷,可以将其停用,然后将/etc/fstab文件中对应的内容注释掉或者删除即可。如果停用状态下,不修改fstab文件,重新挂载设备时候,会报错,告诉你找不到对应设备的UUID,若不修改的话,主机将无法正常启动。有故障,暂时停用,处理完再恢复。如不想临时停掉,那么就直接关闭服务,直接删除LVM即可。(包括fstab文件对应内容)
临时关闭后(反激活后的恢复),恢复: lvchange -a y 逻辑卷分区路径 进行激活即可。 lvscan进行查看验证。对应逻辑卷分区的状态是否处于ACTIVE 然后再把设备重新挂载回来:mount -a即可。 lsblk验证查看。
(六)逻辑卷的删除
删除与创建恰好相反
创建是:
1、添加磁盘,创建分区 2、将分区创建初始化成物理卷 3、创建卷组 4、创建逻辑卷
删除是:
1、删除逻辑卷 lvremove 逻辑卷分区路径
2、删除卷组 vgremove vgname
3、删除物理卷 pvremove 磁盘分区
4、删除磁盘分区 fdisk 磁盘路径 p查看,d进行删除,w保存退出。退出后并刷新。 lsblk进行查看整体磁盘分配情况。【cat /proc/partitions也可查看】 恢复系统原理的磁盘状态。
二、磁盘阵列
RAID概念
-
磁盘阵列(Redundant Arrays of Inexpensive Disks, RAID),意思 是:容错式廉价磁盘阵列。 RAID 技术可以通过软件或硬件实现,将 多个磁盘整合成为一个较大的磁盘装置,该装置不仅有储存功能, 还具有数据保护的功能。RAID具有多个不同等级 (level),每个level 对整合后的磁盘实现不同的功能, 常用 level 有几种
-
RAID 0
-
RAID 0又称为Stripe或Striping,它代表了所有RAID级别中存储性能 最高的。RAID 0提高存储性能的原理是把连续的数据分散到多个磁 盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行, 每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操 作可以充分利用总线的带宽,显著提高磁盘整体存取性能。同时 RAID 0的安全性最低,如果一个磁盘失效,将影响整个数据。因此 RAID 0 不可应用于需要数据高可用性的关键应用
-
-
RAID 1
-
RAID 1又称为Mirrored,通过磁盘数据镜像实现数据冗余,在成对的 独立磁盘上产生互为备份的数据。当原始数据损毁时,可直接从镜 像拷贝中读取数据,因此RAID 1安全性高。但RAID 1是磁盘阵列中 应用成本最高的。特点是当一个磁盘失效时,系统可以自动切换到 镜像磁盘上读写,而不需要重组失效的数据
-
-
RAID 5 / 6
-
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为 是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比 Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度, 只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由 于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本 相对较低,是目前运用较多的一种解决方案。 异或算法
-
-
RAD级别
-
RAID 0 – 条带
-
高性能
-
没有冗余,如果一个磁盘损坏则数据丢失了
-
-
RAID 1 – 镜像
-
当最后一个磁盘损坏时,数据丢失
-
RAID 5 -数据分布在磁盘上
-
容许一个磁盘损坏 • 当两个磁盘损坏时,数据丢失
-
-
RAID 6 – 类似于RAID 5
-
容许两个磁盘损坏
-
当三个磁盘损坏时,数据丢失
-
-
RAID 10 – 镜像条带集
-
RAID 0的性能和RAID 1的容错能力
-
如果磁盘在每个条带中丢失,则会丢失数
-
RAID 1 0 这种组合配置,先配置 RAID 1 然后 在整体配成整RAID 0 ,从底层到上层,组合配置。其他组合也是如此。
RAID区别
-
RAID:独立(或廉价)磁盘冗余阵列
-
软RAID:
-
RAID系统的优点,不需要额外的硬件RAID控制器CPU时间和内存开销
-
-
硬RAID:
-
控制器是一套私有系统,有独立的CPU、内存以及存储数据的单元
-
-
软RAID的建立
一、步骤:
1、利用三块硬盘组建RAID5
指令:
-
mdadm -C /dev/md0 -n 3 -l 5 /dev/sd[bcd]
-
-C 表示创建磁盘阵列存储设备
-
-n 添加磁盘的数量
-
-l RAID的等级
-
md0 为名字 可自定义,但官方建议md后+数字
-
-
查看状态
-
mdadm -D /dev/md0 查看UUID为后面挂载做准备,写入fstab文件永久挂载
-
查看文件cat /proc/mdstat来查看创建的进度以及对应磁盘的状态
-
-
由于md0设备文件属于临时创建,重启系统后会失效,需要建立阵列的配置文件使其永久生效
-
vim /etc/mdadm.conf
-
写入信息:ARRAY /dev/md0 UUID=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
还有一种方法就是直接查看设备的简要信息,然后直接输出重定向到文件中
指令:mdadm -E -s --brief > /etc/mdadm.conf
打开后查看,可将没有用的信息删掉即可。
-
-
对磁盘阵列进行管理
-
可以使用fdisk进行创建
-
fdisk /dev/md0
-
-
也可以直接将磁盘创建成物理卷,直接配置成LVM逻辑分区
-
指令:pvcreate /dev/md0
-
vgcreate vgname /dev/md0
-
lvcreate -n lvname -L 大小 /dev/vgname
-
进行格式化等相关的配置
建立物理卷、卷组、逻辑卷。
-
-
操作以及验证:
查看磁盘是否添加成功:
lsblk或者fdisk -l 进行查看
创建磁盘阵列以前先进行查看状态:
此时无状态(并没有开始创建)
创建后:
指令执行:
查看状态:
mdadm -D /dev/md0
cat /proc/mdsata查看进度:
等待创建完成,状态如下
三块磁盘都处于up状态
创建磁盘阵列的配置文件,并写入磁盘阵列的关键信息:
由于md0设备文件属于临时创建,重启系统后会失效,需要建立阵列的配置文件使其永久生效。如果不进行配置文件只是临时生效,开启重启后,都会消失。
-
两种方法配置:
-
1)自己手动创建文件,复制mdadm -D /dev/md0查看状态下对应的UUID到文件中去
-
2)直接使用指令进行扫描将简要信息输出重定向到文件中。
-
直接使用法2)指令如下:
配置文件的内容,写入关键信息(没用的信息可以直接删掉):
查看磁盘阵列的空间大小以及挂载情况:
创建物理卷,卷组:
查看是否创建成功并创建逻辑卷:
查看逻辑卷分区情况:
进行格式化处理(想格式化成什么文件系统,就格式化成什么文件系统)
查看格式化是否完成,查看对应UUID:
blkid指令:
创建挂载点,进行设备挂载,写入fstab文件实现永久挂载:
mkdir raid 创建挂载点
编辑fstab文件:vim /etc/fstab文件永久挂载,执行指令mount -a进行挂载
进入设备空间,进行一些数据拷贝,进行数据验证,确保分区正常使用:
查看使用情况,空间占比:
创建、并配置完成。
二、RAID5的磁盘快照
原理与逻辑分区创建快照相同。
-
指令:
-
lvcreat -n lvsnapname -s -L 大小 /dev/vgname/lvname
-
大小还是源LVM分区大小的15-20%
-
-
-
挂载
-
创建挂载点
-
写入fstab文件
-
如果是xfs文件系统,挂载失败使用选项
-
mount -o nouuid 进行挂载
-
挂载完成后,切换到快照的挂载点,进行查看验证。
-
操作以及验证:
指令:
查看对应的空间大小,判断创建的快照大小,是否可以创建:
查看是否创建成功:
创建挂载点,进行挂载:
mkdir /mnt/myraid-snap创建挂载点进行挂载,执行mount指令进行挂载
注意:
由于挂载时(XFS文件系统)默认使用UUID,又因为快照的UUID和设备本身的UUID相同(blkid指令进行查看),所以不开使用UUID进行挂载,使用nouuid这个选项,进行挂载。
再次挂载,就成功的挂上了:
进入到快照的空间,查看数据,数据依然在:
配置完成。出现故障时,可以恢复快照,或从快照中将原本的文件,拷贝或者移动到当前损坏的磁盘文件中去,进行平替。
三、RAID5的故障处理
如果在磁盘阵列中,有一块盘出现了故障,我们可以直接进行更换,无需将设备下线即可更换磁盘。将新的设备加入磁盘阵列当中,坏的移除出去。
现在假设:sdd这块磁盘有损坏,进行更换
-
指令:
-
mdadm --manage /dev/md0 --fail /dev/sdd
-
--manage 进行管理
-
--fail 将设备设定为出错状态
-
--remove 将设备从阵列中移除
移除后就可以去对应的机房或者服务器管理的地方去更换新的设备磁盘
-
--add 添加设备加入阵列
添加进来后,系统会自动的进行管理配置。
依然可以通过状态指令进行查看。
mdadm -D /dev/md0
cat /proc/mdstat进行查看
-
-
以上步骤都完成以后,新的设备也加入阵列后,可去对应的分区查看数据的情况,是没有变化的。数据还是存在的。
-
操作以及验证:
正常状态:
若磁盘阵列中,磁盘出现问题,先进行标记,设备为出错状态:
再次查看状态:
出现问题的磁盘,已经被标记:
进行remove移除:
此时就可以去机房或者服务器管理的地方去更换磁盘。然后再将新的磁盘加进来,即可。在设备不下线的情况下,进行平替损坏的磁盘。
查看状态:
移除成功。
进行平替:
接下来将新的磁盘,加进来:
加进来的过程,不需要进行别的操作,等待即可,系统会进行自动配置管理,数据迁移。
设备添加成功:
查看各个物理卷,卷组,逻辑卷以及设备挂载点是否正常以及相关的数据是否存在:
lsblk进行查看:
可见是正常。
磁盘平替完成。
四、RAID磁盘阵列的停用
1、将设备进行下线
umount /dev/md0 进行设备下线
2、编辑fstab文件,将挂载点注释掉或者删掉
vim /etc/fstab
-
注释后,需要lvremove,vgremove,pvremove删除阵列中创建的逻辑卷,卷组,物理卷
-
删除逻辑卷的同时,快照也会跟着删除,快照依赖逻辑卷。
-
3、编辑磁盘阵列配置文件,将对应的信息删掉或者注释掉,取消设备开机加载阵列
vim /etc/mdadm.conf
# ARRAY /dev/md0 UUID=xxxxxxxxxxxxxxxxxxxxxxx 注释有效内容
4、进行设备停用
指令:
mdadm -S /dev/md0 停用md0
(再启动:mdadm -As /dev/md0)
5、验证状态
cat /proc/mdstat
mdadm -D /dev/md0
6、重启一下系统,可再次验证一下,如果阵列还存在(还在系统保留信息)的话,可进行覆盖式的写入
清空后数据就无法恢复回来。
-
指令:
-
先将设备进行下线和停用(如果还在挂载状态,就需要下线)
-
umount 挂载点
-
mdadm -S /dev/md0 停用md0
-
-
mdadm --zero-superblock /dev/sd[bcde]
强制:
-
mdadm --zero-superblock /dev/sd[bcde] --force
-
--force表示强制进行覆盖
-
-
7、再次进行重启,再次验证,就彻底删除。恢复系统原本的状态了。
五、监控RAIDs
-
在/etc/sysconfig/mdadm中
-
将MDADM_MAIL设置为正确的电子邮件地址 -
-
确保邮件到达目的地
-
-
开启监视服务
-
systemctl start mdmonitor.service
-
-
需要监控RAID系统以避免丢失磁盘故障。 允许单个磁盘发生故障是 RAID存在的意义(不包括RAID 0)。 这意味着磁盘故障 可能会被忽 视,直到下一个磁盘发生故障并且数据丢失。