目录

LVM

一:LVM的创建

二:LVM的拉伸

三:LVM的缩小

四:LVM的删除

五:RAID磁盘阵列的添加


LVM

LVM(Logical Volume Manager) 逻辑卷管理器,可以动态调整磁盘容量,提高磁盘管理灵活性。绝大多数分区可以基于LVM创建,但是 /boot 挂载分区不能基于LVM创建。LVM底层文件系统ID 为  8e  。

LVM的创建步骤:

  1. 在创建磁盘分区的第二步,创建完分区后输入 t 选择分区然后修改分区类型,再输入对应的分区类型ID: 8e 即可。
  2. 将磁盘分区初始化为物理卷,pvcreate   /dev/sdb1   ,意思是将sdb1分区初始化为物理卷
  3. 将初始化的物理卷加入卷组,vgcreate  myvg    /dev/sdb1  ,意思是将sdb1物理卷组成myvg卷组
  4. 在已有的卷组中,创建逻辑卷,lvcreate  -L  1G  -n mylv  myvg ,意思是将myvg卷组中抽出1G的空间建立逻辑卷mylv。然后给逻辑卷分配文件系统  mkfs.ext4  /dev/myvg/mylv
  5. 修改 /etc/fstab 文件,重新挂载所有 mount  -a

注:当用一整块硬盘做逻辑卷时,第一步的创建分区和指定分区类型这一步可以省略,直接从第二步开始,将整块硬盘初始化为物理卷。

LVM的组成:

  1. PV(Physical Volume) 物理卷,物理卷可以由整个硬盘也可以是独立分区转化而成。物理卷包括了许多默认大小为4MB的PE(Physical Extent)基本单元
  2. VG(Volumn Group) 卷组,卷组由一个或多个物理卷组成的整体
  3. 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分为两步:

  1. 拉伸逻辑卷      lvresize / lvextend      -L  300M    /dev/myvg/mylv
  2. 通知文件系统   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的缩小

  1. 将挂载的文件系统下线   umount        /mnt/lvm
  2. 强制磁盘检查                 e2fsck   -f    /dev/myvg/mylv
  3. 通知文件系统缩小          resize2fs     /dev/myvg/mylv    100M
  4. 缩小逻辑卷                    lvresize     -L   100M   /dev/myvg/mylv
  5. 重新挂载                        mount   -a

注:xfs文件系统的逻辑卷不能缩小

注: 当给文件系统通知的是400M ,而实际缩小到600M,这样最后挂载,实际只有400M,也就是浪费了200M

        当给文件系统通知的600M ,而实际缩小到400M ,这样挂载不上,会报错 。所以给文件系统通知的大小,和实际缩小的大小一定要相同。

四:LVM的删除

  1. 删除或注释磁盘挂载信息    vim  /etc/fstab ;  将挂载的文件系统下线   umount     /mnt/lvm
  2. 删除逻辑卷   lvremove   /dev/myvg/mylv  ;  删除卷组   vgremove myvg  ;删除卷组底层的物理卷  pvremove   /dev/sdb1
  3. 删除磁盘分区    fdisk   /dev/sdb  ,一路狂按d和enter
  4. 刷新磁盘分区,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阵列的停用

  1. umount    /mnt/raid    卸载设备   ;  修改  /etc/fstab 文件中的配置信息
  2. 删除阵列中创建的逻辑卷,卷组,物理卷: lvremove,vgremove,pvremove
  3. 删除 /etc/mdadm.conf  配置文件,取消设备开机加载阵列
  4. 停止 md0:    mdadm  -S  /dev/md0
  5. 验证    cat /proc/mdstat           mdadm -D /dev/md0

注:如果取消挂载设备的时候,显示设备正忙,可以使用 fuser  -mv  /mnt/xxx   看看是哪个进程在使用这个挂载点,然后杀死这个进程即可。

相关文章:Linux下磁盘分区、卸载和磁盘配额

Linux下逻辑卷LVM的管理和RAID磁盘阵列的更多相关文章

  1. Linux下逻辑卷创建与管理

    用虚拟机加一块硬盘后,查看硬盘状况,使用fdisk-l命令: [root@jerrybj ~]# fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes ...

  2. Linux中逻辑卷(LVM)管理基本操作

    1.创建逻辑卷 原文:https://linux.cn/article-3965-1.html

  3. linux下逻辑卷管理 调整分区大小

    [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 50 ...

  4. LINUX逻辑卷(LVM)管理与逻辑卷分区

    LINUX之逻辑卷管理与逻辑卷扩展 LVM是逻辑卷管理(Logical Volume Manager)的简称,他是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,和直接使用物理存储在管理上相 ...

  5. 自学Linux Shell8.2-linux逻辑卷LVM管理

    点击返回 自学Linux命令行与Shell脚本之路 8.2-linux逻辑卷LVM管理 Linux逻辑卷管理器软件包用来通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间. 1. 逻辑卷L ...

  6. 逻辑卷LVM

    1.理解LVM http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html 2.创建LVM 根据“理解LVM”提供的原理思路搞 a)建立 ...

  7. Linux下动态调整LVM文件系统大小

    LINUX下可以通过LVM动态调整一个已挂载的文件系统大小 LV可以根据需求增大或减小,但是LV改变大小以后,在LV中的文件系统也需要相应的改变大小.这个概念非常重要,如果没有相应的调整LV中文件系统 ...

  8. 创建逻辑卷LVM以及swap分区

    #!/bin/bash ##创建逻辑卷LVM /dev/mapper/lvm_data-data### ###default 大小为500G,但是LV一般会比500略小################ ...

  9. 在Linux下如何创建LVM及LVM创建过程

    Linux LVM创建过程:(我用的是Centos6.8) 一.准备工作: LVM可以的创建可以在系统安装的过程中创建,也可以在安装完系统之后再创建建,都是可以的,我的是在系统安装完之后创建的,具体的 ...

随机推荐

  1. 面试题-python 如何读取一个大于 10G 的txt文件?

    前言 用python 读取一个大于10G 的文件,自己电脑只有8G内存,一运行就报内存溢出:MemoryError python 如何用open函数读取大文件呢? 读取大文件 首先可以自己先制作一个大 ...

  2. python基础学习之元组和字典的功能方法

    什么是元组?(tuple) emmmmmm,这个没必要深究吧,就是一排'元素',一行 格式: a = (1,2,3,4,5,6,7,8,9)用小括号表示的,极为元组. 其有序,且不可更改,可以对比st ...

  3. 如何对shell脚本中斜杠进行转义?

    1.在编写shell脚本时,经常会遇到对某个路径进行替换,而路径中包含斜杠(/),此时我们就需要对路径中涉及的斜杠进行转义,否则执行失败.具体示例如下: 需求描述: 将sjk目录下的test文件中的p ...

  4. 一键获取linux内存、cpu、磁盘IO等信息脚本编写,及其原理详解

    更多linux知识,请关注公众号:一口Linux 一.脚本 今天主要分享一个shell脚本,用来获取linux系统CPU.内存.磁盘IO等信息. #!/bin/bash # 获取要监控的本地服务器IP ...

  5. 从设计模式角度看OkHttp源码

    前言 说到源码,很多朋友都觉得复杂,难理解. 但是,如果是一个结构清晰且完全解耦的优质源码库呢? OkHttp就是这样一个存在,对于这个原生网络框架,想必大家也看过很多很多相关的源码解析了. 它的源码 ...

  6. Edge 浏览器开发工具新增了 3D 视图,你尝试了吗?

    在使用开发者工具的时候,无意间发现了一个3D面板,如下: 仔细想想,这应该是之前 Firefox 的特性啊,不过后来去掉了,说是太难维护,没想到 Edge 也添加了这个特性. 使用该特性,你可以完成如 ...

  7. LiteOS内核源码分析:任务LOS_Schedule

    摘要:调度,Schedule也称为Dispatch,是操作系统的一个重要模块,它负责选择系统要处理的下一个任务.调度模块需要协调处于就绪状态的任务对资源的竞争,按优先级策略从就绪队列中获取高优先级的任 ...

  8. HTTPS证书通过cert-manager自动获取,部署,续期

    HTTP-01验证和DNS-01验证 使用cert-manager给阿里云的DNS域名授权SSL证书 第一步:安装cert-manager 配置 CRD kubectl apply -f https: ...

  9. Elasticsearch集群升级指引

    目录 背景 第一部分 版本升级指引 第二部分 升级方法和具体步骤 总结 参考文献及资料 背景 Elasticsearch集群的版本升级是一项重要的集群维护工作.本篇文章参考官方文档,将详细介绍相关细节 ...

  10. 翻译:《实用的Python编程》08_01_Testing

    目录 | 上一节 (7.5 装饰方法 | 下一节 (8.2 日志) 8.1 测试 多测试,少调试(Testing Rocks, Debugging Sucks) Python 的动态性质使得测试对大多 ...