• ubuntu 的 LVM 逻辑卷


    什么是 LVM逻辑卷?

    在此之前,传统的linux的磁盘管理 和 window 的磁盘管理大同小异,都是使用MBR磁盘分区方式,通过磁盘分区、再去创建文件系统;

    问题:

    当分区的空间不够用时无法扩展其大小,只能通过添加硬盘、创建新的分区来扩充空间,但是新添加进来的硬盘是作为独立文件系统存在的,原有的文件系统并未得到扩充,上层应用很多时候只能访问一个文件系统。所以只能让现有磁盘下线,换上新的磁盘之后,再将原始数据导入。

    image

    如果在实际生产环境的服务器中,出现这种分区已用完的时,我们是很难对原有分区处理扩容的,处理的方式就是我们不得不先扩容更大的新分区,然后停止项目的运行,移动项目到新的扩容分区中;非常麻烦~

    虽然有第三方解决方案对原有分区进行扩容,但是这些第三方的扩容解决方案实践起来后是非常不稳定的,很容易引起数据的丢失、丢盘的情况发生;

    LVM 就很好的解决了上面分区扩容麻烦的问题;

    LVM(Logical volume Manager) 逻辑卷管理:通过将底层物理硬盘抽象地封装起来,以逻辑卷的形式表现给上层系统。逻辑卷的大小可以动态调整,而且不会丢失现有的数据。新加入的硬盘也不会改变现有上层的逻辑卷。

    作为一种 动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!

    我们能操作的只是 逻辑卷,逻辑卷说白了,就是可伸缩的 "分区卷",其分区大小可以动态调节,而不受制于原始的固定分区大小;

    LVM 的底层概念

    image

    上图中,我们最终能使用和操作的就是 LV逻辑卷,所做的很多操作都是为了 LV逻辑卷;逻辑卷就是为取代原先的分区

    一句话概括:物理磁盘被格式化为PV(physical volume),空间被分为一个个PE(physical extend)【大小为 4 MB,为逻辑卷的最小单位】。不同的PV加入同一个VG(volume group),不同PV的PE全部进入VG的PE池内。LV(logical volume)基于PE创建,大小为PE的整数倍,组成LV的PE可能来自于不同的物理磁盘。LV现在就能挂载使用了。

    详解:

    假如有一块硬盘,我们使用LVM技术时,将硬盘插入服务器中,将该硬盘条带化(格式化)成物理卷PV,即把硬盘空间划分为以4M的基准切割N多个PE;比如一个硬盘容量为400M,那么一共就有 100(400/4) 个PE;(PE是逻辑卷空间管理的最基本单位,PE默认是4M大小)

    创建一个卷组VG,可以理解为空间池(或者说 地址池),作用是用来装 PE 的,如上图,多个硬盘的PE装入到了 VG 中;VG 必须有名称的;VG的大小由多少个PE来决定;

    基于卷组VG来创建我们每个逻辑卷LV(相当于传统的分区),从VG拿出来多少个PE到LV中,这个LV的空间就有多大;我们把创建好的逻辑卷格式化,然后挂载,就可以用了;LV 必须有名称的;LV的大小由多少个PE来决定;

    当创建好卷组VG时,会创建目录 /dev/卷组名/ ;而当逻辑卷创建好时,会创建文件 /dev/卷组名/逻辑卷名;

    注意:组成逻辑卷的PE可以来自不同的硬盘,如上图,sda的PE是灰色的,而 sdb的PE是白色的,lV有3个灰1个白的PE:

    image

    我们不需要关心也不能操作 VG、PV 和 PE,我们只能操作 LV逻辑卷;

    当我们对LV拉伸活收缩时,实际上就是增加活减少PE,来达到伸缩LV逻辑卷的目的;

    对 卷组VG 的伸缩,就是加减硬盘;

    image

    LVM逻辑卷 是一个动态磁盘管理的工具,原理非常简单~

    总结:

    • 物理磁盘被格式化为PV,空间被分为一个个PE
    • 不同的PV加入同一个VG,不同PV的PE全部进入VG的PE池内
    • LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同物理磁盘
    • LV现在就直接可以格式化后挂载使用了
    • LV的扩充缩减实际上就是增加或减少组成该LV的PE的数量。其过程不丢失原始数据

    LVM逻辑卷 的 基本管理操作

    image

    先检查新硬盘是否插入: fdisk -l 或者 df -h 或者 lsblk

    创建LVM

    1、将物理磁盘设备初始化为物理卷
    pvcreate /dev/sdb /dev/sdc 查看物理卷信息:pvdispaly 或者 pvs
    2、创建卷组,并将上面两个PV加入卷组juanzuming中
    vgcreate juanzuming /dev/sdb /dev/sdc
    3、基于卷组juanzuming创建2G大小空间的逻辑卷
    lvcreate -n mylv -L 2G juanzuming 查看卷组信息:vgdisplay 或者 vgs
    4、为创建好的逻辑卷格式化创建文件系统
    mkfs.ext4 /dev/juanzuming/mylv 查看逻辑卷信息:lvdisplay 或者 lvs
    5、将格式化好的逻辑卷挂载使用
    mount/dev/juanzuming/mylv /mnt 将逻辑卷挂载到 /mnt 中

    一定要按照上面顺序一步步下来

    卷组VG 和 逻辑卷LV 可以有多个,主要是为了方便管理和维护;

    上面命令全部运行完后,其在目录 /dev/juanzuming/mylv 中多一个设备;但是,执行 mount 时,显示的lv逻辑卷的位置是在 /dev/mapper/juanzuming-mylv 中的;答:/dev/juanzuming/mylv 只是一个链接,实际是在 /dev/mapper 这目录里面;

    image

    删除 LVM

    0、卸载已经挂载
    umount /nmt

    1、删除LV
    lvremove /dev/juanzuming/mylv
    2、删除 VG
    vgremove juanzuming
    3、删除物理卷
    pvremove /dev/sdb

    一定要按照上面顺序一步步下来

    LVM 逻辑卷的 扩大 与 缩小(动态伸缩磁盘分区卷空间)

    image

    拉伸LV逻辑卷

    逻辑卷的 拉伸操作 可以在线执行,不需要卸载逻辑卷,数据不会丢失
    逻辑卷的 缩小 操作,必须先卸载逻辑卷

    1、保证VG中有足够的空闲空间
    vgdisplay
    2、扩充mylv逻辑卷,增加1G空间
    lvextend -L +1G /dev/juanzuming/mylv
    3、查看扩充后LV大小
    lvdisplay
    4、更新文件系统(必须的,否则 df -h 还是显示原来的空间大小)
    resize2fs /dev/juanzuming/mylv
    5、查看更新后文件系统
    df-h

    为什么要需要更新文件系统?因为LV逻辑卷是个底层的东西,操作系统需要使用任何的底层的空间,都要对其进行格式化(即创建文件系统),而文件系统在创建的时候大小就已经固定了,我们拉伸的底层空间,但是没有更新mylv这个逻辑卷的文件系统~,所以,系统并没有识别到拉伸出来的空间,所以 df -h 还是显示原来的空间大小;

    拉伸VG卷组

    1、将要添加到VG的硬盘格式化为PV
    pvcreate /dev/sdd
    2、将新的PV添加到指定卷组中
    vgextend juanzuming /dev/sdd
    3.查看扩充后VG大小
    vgdisplay

    缩小LV逻辑卷

    image

    逻辑卷的缩小操作必须离线执行,要卸载逻辑卷

    1、卸载已经挂载的逻辑卷
    umount /dev/juanzuming/mylv
    2、缩小文件系统,缩小到1G
    (会提示需要运行fsck检查文件系统)
    resize2fs /dev/juanzuming/mylv 1G
    3、缩小LV
    lvreduce -L -1G /dev/juanzuming/mylv
    4、查看缩小后的LV
    lvdisplay
    5、挂载
    mount /dev/juanzuming/mylv /mnt

    注意一定要按照上面顺序执行

    缩小LV是比较危险的事,如果设置空间大小不对,那么会导致数据的丢失

    缩小VG卷组

    即:拿走一个硬盘的情景;

    image

    1、将一个PV从制定卷组中移除
    vgreduce juanzuming /dev/sdc
    2、查看缩小后的卷组大小
    vgdisplay

    注意,卷组的大小必须比要拿走硬盘的空间大小还大!否则会造成数据丢失的风险;

  • 相关阅读:
    2015 年最受 Linux 爱好者欢迎的软硬件大盘点
    Java 9终于要包含Jigsaw项目了
    Linux 容器技术史话:从 chroot 到未来
    开发者最常用的 8 款 Sublime Text 3 插件
    60,000毫秒内对Linux的性能诊断效的方法
    bzoj 2595 [Wc2008]游览计划(斯坦纳树)
    bzoj 3997 [TJOI2015]组合数学(DP)
    bzoj 1014 [JSOI2008]火星人prefix(splay+hash)
    bzoj 1090 [SCOI2003]字符串折叠(区间DP)
    bzoj 1537 [POI2005]Aut- The Bus(DP+BIT)
  • 原文地址:https://www.cnblogs.com/abc1069/p/16296721.html
Copyright © 2020-2023  润新知