Linux下逻辑卷LVM的管理和RAID磁盘阵列
目录
LVM
LVM(Logical Volume Manager) 逻辑卷管理器,可以动态调整磁盘容量,提高磁盘管理灵活性。绝大多数分区可以基于LVM创建,但是 /boot 挂载分区不能基于LVM创建。LVM底层文件系统ID 为 8e 。
LVM的创建步骤:
- 在创建磁盘分区的第二步,创建完分区后输入 t 选择分区然后修改分区类型,再输入对应的分区类型ID: 8e 即可。
- 将磁盘分区初始化为物理卷,pvcreate /dev/sdb1 ,意思是将sdb1分区初始化为物理卷
- 将初始化的物理卷加入卷组,vgcreate myvg /dev/sdb1 ,意思是将sdb1物理卷组成myvg卷组
- 在已有的卷组中,创建逻辑卷,lvcreate -L 1G -n mylv myvg ,意思是将myvg卷组中抽出1G的空间建立逻辑卷mylv。然后给逻辑卷分配文件系统 mkfs.ext4 /dev/myvg/mylv
- 修改 /etc/fstab 文件,重新挂载所有 mount -a
注:当用一整块硬盘做逻辑卷时,第一步的创建分区和指定分区类型这一步可以省略,直接从第二步开始,将整块硬盘初始化为物理卷。
LVM的组成:
- PV(Physical Volume) 物理卷,物理卷可以由整个硬盘也可以是独立分区转化而成。物理卷包括了许多默认大小为4MB的PE(Physical Extent)基本单元
- VG(Volumn Group) 卷组,卷组由一个或多个物理卷组成的整体
- LV(Logical Volume) 逻辑卷,从卷组中抽出一部分空间,可以建立文件系统
功能 | 物理卷PV | 卷组VG | 逻辑卷LV |
---|---|---|---|
创建 | pvcreate | vgcreate | lvcreate |
删除 | pvremove | vgremove | lvremove |
增大 | vgextend | lvextend / lvresize | |
减小 | vgreduce | lvresize | |
显示 | pvs | vgs | lvs |
一:LVM的创建
第一步:创建分区,并将其分区类型修改为LVM
第二步:磁盘分区初始化为物理卷,pvcreate /dev/sdb1
第三步:将初始化的物理卷加入卷组,vgcreate myvg /dev/sdb1
第四步:在已有的卷组中,创建逻辑卷,lvcreate -L 1G -n mylv myvg 。
使用命令 lvs 查看下我们创建的逻辑卷 mylv
给逻辑卷分配文件系统 mkfs.ext4 /dev/myvg/mylv ,并且 blkid 查看信息。Linux中默认将所有逻辑卷链接到 /dev/mapper/ 目录下。 /dev/mapper/myvg_mylv 是 /dev/myvg/mylv 是软连接
第五步:修改/etc/fstab 文件,将逻辑卷挂载信息加进去。
mount -a 重新挂载,df -Th 查看,可以看到,我们的 /dev/mapper/myvg-mylv 已经成功挂载上了
假如我们要再建立一个逻辑卷,那么一二三步都可以不用做,直接第四步,在已有的卷组中创建逻辑券(前提是你的卷组还有剩余空间),然后剩余的步骤一样。我之后又创建了一个xfs文件系统的逻辑卷 mylv2 。
二:LVM的拉伸
拉伸有两条命令: lvextend 、lvresize 。两条命令相同的用法。
当卷组空间足够分配给逻辑卷时,拉伸LVM分为两步:
- 拉伸逻辑卷 lvresize / lvextend -L 300M /dev/myvg/mylv
- 通知文件系统 resize2fs /dev/myvg/mylv (EXT文件系统) xfs_growfs /dev/myvg/mylv (XFS文件系统)
第一步:拉伸之前,先用vgs查看卷组中剩余空间的大小,可以看到,我们还剩余1.5G
我们之前分配的 mylv 是1G ,mylv2是500M ,现在我们把mylv拉伸到1.9G,mylv2拉伸到1.1G。这样,就用完了卷组的空间了
lvresize -L 1.9G /dev/myvg/mylv
lvresize -L 1.09G /dev/myvg/mylv2
第二步:扩展完之后,我们要去通知我们的文件系统,通知完之后,可以看到逻辑卷的空间变大了
resize2fs /dev/myvg/mylv
xfs_growfs /dev/myvg/mylv2
可以看到,我们的卷组的空间已经用完了。如果我们还想扩容的话,我们就需要扩大我们的卷组空间了
卷组的扩大:
扩大卷组空间,先新建一个分区,初始化为物理卷,然后加入 myvg 卷组中。可以看到,我们卷组的空间又变大了。接下来,对LVM进行扩容和上面的一样。 vgextend myvg /dev/sdb2
三:LVM的缩小
- 将挂载的文件系统下线 umount /mnt/lvm
- 强制磁盘检查 e2fsck -f /dev/myvg/mylv
- 通知文件系统缩小 resize2fs /dev/myvg/mylv 100M
- 缩小逻辑卷 lvresize -L 100M /dev/myvg/mylv
- 重新挂载 mount -a
注:xfs文件系统的逻辑卷不能缩小
注: 当给文件系统通知的是400M ,而实际缩小到600M,这样最后挂载,实际只有400M,也就是浪费了200M
当给文件系统通知的600M ,而实际缩小到400M ,这样挂载不上,会报错 。所以给文件系统通知的大小,和实际缩小的大小一定要相同。
四:LVM的删除
- 删除或注释磁盘挂载信息 vim /etc/fstab ; 将挂载的文件系统下线 umount /mnt/lvm
- 删除逻辑卷 lvremove /dev/myvg/mylv ; 删除卷组 vgremove myvg ;删除卷组底层的物理卷 pvremove /dev/sdb1
- 删除磁盘分区 fdisk /dev/sdb ,一路狂按d和enter
- 刷新磁盘分区,partprobe /dev/sdb 如果报错,在确保主机其他文件系统正常的情况下,重启主机
五:RAID磁盘阵列的添加
RAID(Redundant Arrays of Inexpensive Disks)容错式廉价磁盘阵列。RAID技术可以通过软件或硬件实现,将多个磁盘整合成为一个较大的磁盘装置,该装置不仅有存储功能,还具有数据保护的功能。RAID具有多个不同的等级,每个等级的对整合后的磁盘实现不同的功能。常用等级有RAID5
RAID的建立
1:利用3块硬盘组建RAID5 mdadm -C /dev/md0 -n3 -l5 /dev/sd[bcd] 。
并且查看其状态 mdadm -D /dev/md0 或 cat /proc/mdstat
- -C 创建阵列存储设备
- -n 添加磁盘的数量
- -l RAID的等级
2:创建配置文件 /etc/mdadm.conf ,并且写入配置信息
3:然后把md0设备建立逻辑卷,修改配置文件 fstab,重新挂载
第一步: 建立RAID存储设备md0,并且查看其状态,记住UUID
第二步:创建配置文件 /etc/mdadm.conf ,并且写入以下的信息
ARRAY /dev/md0 UUID=417c8b54:e78b0978:35ea0e66:63fa5f12
第三步:创建逻辑卷,修改配置文件,重新全部挂载。可以看到,我们的基于RAID的逻辑卷已经成功挂载了。
/dev/myraidvg/myraidlv /mnt/raid xfs defaults 0 0
模拟RAID故障:
模拟其中一块硬盘挂了之后,数据仍然完好无损,然后重新加入一块硬盘。
先查看 RAID 状态 ,可以看到,三块硬盘都是正常的。 cat /proc/mdstat
我们先往逻辑卷里写入900M的文件,模拟生产情况下的数据
我们模拟其中的 sdb 挂了
mdadm --manage /dev/md0 --fail /dev/sdb
- --fail 将设备设定为出错状态
- --remove 将设备从阵列中移除
- --add 添加设备进入阵列
可以看到 ,sdb已经挂了 。但是我们的900M的文件还是依然完好无损
那我们先把挂了的 sdb 移除,然后加上一个好的 sde 。
madam --manage /dev/md0 --remove /dev/sdb
madam --manage /dev/md0 --add /dev/sde
可以看到,加上sde后,三个硬盘又组成了RAID。sde会同步其他两块硬盘上的数据
RAID阵列的停用
- umount /mnt/raid 卸载设备 ; 修改 /etc/fstab 文件中的配置信息
- 删除阵列中创建的逻辑卷,卷组,物理卷: lvremove,vgremove,pvremove
- 删除 /etc/mdadm.conf 配置文件,取消设备开机加载阵列
- 停止 md0: mdadm -S /dev/md0
- 验证 cat /proc/mdstat mdadm -D /dev/md0
注:如果取消挂载设备的时候,显示设备正忙,可以使用 fuser -mv /mnt/xxx 看看是哪个进程在使用这个挂载点,然后杀死这个进程即可。
相关文章:Linux下磁盘分区、卸载和磁盘配额
Linux下逻辑卷LVM的管理和RAID磁盘阵列的更多相关文章
- Linux下逻辑卷创建与管理
用虚拟机加一块硬盘后,查看硬盘状况,使用fdisk-l命令: [root@jerrybj ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes ...
- Linux中逻辑卷(LVM)管理基本操作
1.创建逻辑卷 原文:https://linux.cn/article-3965-1.html
- linux下逻辑卷管理 调整分区大小
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50 ...
- LINUX逻辑卷(LVM)管理与逻辑卷分区
LINUX之逻辑卷管理与逻辑卷扩展 LVM是逻辑卷管理(Logical Volume Manager)的简称,他是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,和直接使用物理存储在管理上相 ...
- 自学Linux Shell8.2-linux逻辑卷LVM管理
点击返回 自学Linux命令行与Shell脚本之路 8.2-linux逻辑卷LVM管理 Linux逻辑卷管理器软件包用来通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间. 1. 逻辑卷L ...
- 逻辑卷LVM
1.理解LVM http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html 2.创建LVM 根据“理解LVM”提供的原理思路搞 a)建立 ...
- Linux下动态调整LVM文件系统大小
LINUX下可以通过LVM动态调整一个已挂载的文件系统大小 LV可以根据需求增大或减小,但是LV改变大小以后,在LV中的文件系统也需要相应的改变大小.这个概念非常重要,如果没有相应的调整LV中文件系统 ...
- 创建逻辑卷LVM以及swap分区
#!/bin/bash ##创建逻辑卷LVM /dev/mapper/lvm_data-data### ###default 大小为500G,但是LV一般会比500略小################ ...
- 在Linux下如何创建LVM及LVM创建过程
Linux LVM创建过程:(我用的是Centos6.8) 一.准备工作: LVM可以的创建可以在系统安装的过程中创建,也可以在安装完系统之后再创建建,都是可以的,我的是在系统安装完之后创建的,具体的 ...
随机推荐
- golang调用shell命令(实时输出, 终止等)
背景 是这样的,最近在研究一个定时任务系统的改造,可能有点像jenkins做到的那种吧. 可以输入shell命令,也可以执行py脚本等等,相比之前来说,也要能够及时停止! 但是遇到了这么个问题,gol ...
- 关于 PDB 文件你需要知道什么?
引言 大多数人知道 PDB 文件是用来帮助我们 debug 的,但也仅此而已. 本文主要介绍当你遇到 PDB 文件时(windows 开发中),你必须要知道的内容. 重要的事情说三遍 PDB 文件和源 ...
- FreeBSD csh shell 配置
在/etc/csh.cshrc里面加入: alias ls ls –G, 并重新登录 问:如何让FreeBSD的csh像bash那样按tab列出列出无法补齐的候选文件? 答:标准的方法是按Ctrl+D ...
- 以“有匪”为实战案例,用python爬取视频弹幕
最近腾讯独播热剧"有匪"特别火,我也一直在追剧,每次看剧的时候都是把弹幕开启的,这样子看剧才有灵魂呀.借助手中的技术,想爬取弹幕分析下这部电视剧的具体情况和网友们的评论!对于弹幕的 ...
- 死磕生菜 -- lettuce 间歇性发生 RedisCommandTimeoutException 的深层原理及解决方案
0x00 起源 项目的一些微服务集成了 Spring Data Redis,而底层的 Redis 客户端是 lettuce,这也是默认的客户端.微服务在某些环境中运行很正常,但在另一些环境中运行就会间 ...
- weblogic之cve-2015-4852分析(重写)
前言 有时间打算分析weblogic历史漏洞,但是又要面试啥的,没空.又刚好最近面试会问weblogic反序列化.具体啥时候分析weblogic反序列化,可能会在护网后,或者我开学了再分析.期间可能我 ...
- JAVA面试题:输出100以内所有的素数
转载:https://www.cnblogs.com/onway/archive/2012/11/15/2771912.html Java输出1-100中所有的素数 很多人笔试时都会遇到这个问题,小农 ...
- java二叉树遍历——深度优先(DFS)与广度优先(BFS) 递归版与非递归版
介绍 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止. 广度优先遍历:从根节点出发,在横向遍历二叉 ...
- ASP.NET Core扩展库之实体映射
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但Au ...
- OpenGL 绘制你的 github skyline 模型
前言 好久没更新博客了,上一篇文章还是在去年6月份,乍一看居然快要过去一年了,不时还能看到粉丝数和排名在涨,可是却一直没有内容更新,怪不好意思的- -(主要是一直没想好要写些什么,中间也有过一些想法, ...