zoukankan      html  css  js  c++  java
  • LVM知识梳理

    1 LVM介绍

      LVM即logical volume manager逻辑卷管理,其主要特点是:可以动态地扩大和缩小分区大小,但前提是分区的文件系统必须是LVM格式的,lvm的实现需要安装lvm2软件包,一般在安装centos系统都已经一起安装好.

    [root@test ~]# rpm -qa lvm2
    lvm2-2.02.180-8.el7.x86_64

      LVM优点是:可以实现逻辑卷的动态扩容或收缩;但缺点是:性能较差,因为是以软件方式实现的,丢失数据的风险比较大,数据丢失后恢复较为困难.

    1.1 与LVM相关的及个术语

      LVM可以让磁盘分区实现扩容和缩小,但前提是,该分区必须是lvm格式的.磁盘使用MBR分区表格式,lvm的标识符是8e;使用gpt分区表格式,则其lvm标识符是8300.

      与LVM相关的几个术语,分别是: 

      名称    说明
      PV (物理卷Physical Volume)

    底层物理磁盘分区(分区但未格式化)的磁盘标识符必须为8e或8300,

    使用pvcreate命令将其创建为PV,才可以被LVM使用.

      VG (卷组Volume Group)  使用vgcreate命令将多个PV组合创建为VG.

      PE (物理存储单元,实际数据存储

      单元Physical Extend)

     PE是VG中的物理存储单元,存储的是实际的数据.
      LV (逻辑卷Logical Volume)

     LV是通过VG划分得到的其中一个分区,VG中以PE为单元,指定划分多少个

    PE给LV,然后LV再进行格式化创建文件系统来使用.

      LE (逻辑存储单元Logical Extent)

     LE是LV中逻辑存储单元,其大小与PE一样,从VG中划分LV,实质是将VG中的

    一部分(或全部)PE分配给LV.

      LVM实现动态扩容就是往LV中添加空闲未被使用的PE;而实现动态收缩则是将LV中空闲的PE抽出(收缩有丢失数据的危险).

      LVM的实现依赖于内核中的dm(device mapper设备映射)模块,dm模块可以将一个或者多个底层的设备组织成为一个逻辑设备.

    ###VG及LV的路径定义(下面#代表数字)
    /dev/dm-#
    ###有2个符号链接文件分别指向
    [root@localhost ~]# ll /dev/mapper/    #<==创建了VG和LV后,此目录下有软链接
    总用量 0
    lrwxrwxrwx 1 root root       7 12月 15 16:58 centos-root -> ../dm-0
    lrwxrwxrwx 1 root root       7 12月 15 16:58 centos-swap -> ../dm-1
    ###VG与LV软链接文件名称(以下2个都是软链接,VG与LV名称是创建时自定义的名称)
    /dev/mapper/VG_NAME-LV_NAME
    /dev/VG_NAME/LV_NAME

    1.3 图解LVM的实现

    1.4 LVM的数据写入机制

      因为LV是通过VG划分的,LV中的PE可能来自多个PE,在向LV存储数据时,有2种主要的存储机制,分别是:

      1) 线性模式(linear):现写完同一个PV中的PE,再写来自下一个PV中的PE,默认就是此种模式.

      2) 条带模式(striped):将数据拆分为多份,再往该LV对应的多个PV上存储,此种模式读写性能较好.但不建议使用此模式,因为扩容和收缩容量时较为麻烦.

      LVM的主要作用是实现逻辑卷的弹性扩展,不追求性能,追求性能就使用raid.

    2 管理LVM的相关命令

    2.1 管理LVM上的PV

      PV管理涉及到的命令:

    命令 说明
    pvcreate 创建pv
    pvdisplay

    列出pv详细信息(PV name/size及所属的VG等)

    次此命令有一个重要的参数 -m ,可以查看该PV中

    PE的使用分布,只有知道PE的分布,才能使用pvmove

    在不同的PV之间进行PE数据的移动

    pvcan 扫描并显示所有pv
    pvmove 移动pv中的数据,通常用于收缩LVM磁盘
    pvremove 移除pv
    pvs 简要显示pv信息

    2.2 管理LVM上的VG

      管理VG的相关命令有:

    命令 说明
    vgcreate

    创建VG,其常用选项是 -s ,指定PE的大小,不

    指定就默认PE的大小是 4M

    vgscan 扫描并列出所有VG
    vgdisplay 显示VG的详细信息
    vgremove 移除/删除VG
    vgreduce

    从VG中移除PV(注意:先做pvmove操作,先移动

    有数据的PE至其他空闲PV上的PE)

    vgextend 将PV添加到VG(扩容VG)
    vgchange

    修改VG的属性信息(如VG的激活状态,VG的激活

    状态会影响LV的使用)

    2.3 管理LVM上的LV

      在VG的基础上就可以对VG进行分区,创建LV,管理LV的相关命令有:

    命令 说明
    lvcreate

    创建LV,主要选项有:

    lvcreate {-L size(M/G) | -l PEnum} -n lv_name vg_name

    lvscan 扫描并列出所有的lv
    lvdisplay 显示lv详细信息
    lvremove 移除/删除lv
    lvreduce 收缩lv容量
    lvextend 扩容lv容量
    lvresize 改变lv容量(lvredunce及lvextend可以使用lvresize命令统一实现)

    2.4 格式化创建文件系统

      在LV基础上,就可以对LV进行格式化创建文件系统,挂载使用了.

  • 相关阅读:
    Handlebars.js循环中索引(@index)使用技巧(访问父级索引)
    Nutz Dao实体中索引注解的使用(@TableIndexes@Index)
    清爽绿色格调图文box通用样式
    用dom操作替代正则表达式
    简洁清新的box样式
    Sale.js——快速创建促销样式
    BlueDream.js(蓝梦)——jQuery网站使用引导插件
    拉勾网ThoughtWorks面试题代码实现
    (转)设计模式六大原则(6):开闭原则
    (转)设计模式六大原则(3):依赖倒置原则
  • 原文地址:https://www.cnblogs.com/blog-tim/p/11906057.html
Copyright © 2011-2022 走看看