zoukankan      html  css  js  c++  java
  • linux逻辑卷管理(LVM)

    特殊的filesystem:LVM

    如果在安装初期,没有做好整个硬盘的规划,那么未来要新增磁盘空间,会很麻烦。这个问题在LVM面前,似乎影响不大,因LVM可以整合多个实体partition在一起,让这些partitions看起来就像是一个磁盘一样,而且,还可以在未来新增其它的实体partition到这个LVM管理的磁盘中,如此一来,整个磁盘空间的使用上,具有弹性。

     

    1、PV(Physical Volume)物理卷

      (1) 实体磁盘,必须要将原本的磁盘,例:/dev/hda5, /dev/hda6等分区,利用fdisk命令,将他们的ID改为LVM(8e),并且修改磁盘的相关信息,称为LVM可使用的磁盘。ID定义:当使用fdisk -l看到

      的数据,ID83是Linux的partition,82则是Swap的代号,8e是LV代号 

    2、VG(Volume Group)卷组

      (1) LVM主要目的就是建立VG,作用就是将刚刚一个或多个PV组合成为一个大磁盘,此最大容量与底下PE有关,如完全使用LVM默认参数,那么最大的LVM磁盘可达到256G

    3、PE(Physical Extend)物理扩展

      (1) 默认大小4M,当PE为4M时,BG最大容量为256G,PE大小会影响到VG的最大值,如VG默认大于256G时,需改PE值

      (2) 注:一个VG最大可容65534个PE

    4、LV(Logical Volume)LV 逻辑卷

      (1) LV最后被挂载到文件系统的parition,LV有VG分割,他会建立一个装置代号, 例:/dev/vgname/lvname

     

    LV如何把数据写入硬盘中: 

    1、线性模式(linear):假如我将 /dev/hda1, /dev/hdb1 这两个partition加入到VG中,并且整个VG只有一个LV时,那么所谓的线性模式就是:当 /dev/hda1的容量用完之后 /dev/hdb1的硬盘才会被使用到

    2、交错模式(triped):就是我将一笔数据拆分成两部,分别写入 /dev/hda1 与 /dev/hdb1的意思,如此,一份数据用两颗硬盘来写入,理论上,读写的效能会比较好 

     注:LVM主要的用处是制造一个大磁盘,不是建立一个效能为主的磁盘,我们应该利用的是LVM可以弹性管理整个partition大小的用途上。一般使用线性模式,如使用交错模式,需注意,当任何一个partition【挂掉】时,所有的数据都会【损坏】。如强调备份与效能,直接使用RAID即可,不使用LVM

      

    好了上面讲了这么多理论,下面来实践一下

    1、我们先准备已经分好区硬盘,分别如下,磁盘分区可参考:https://www.cnblogs.com/xiangbing123/p/13680103.html

    修改Id为8e,这里的Id上面已经说明,哈哈,就不啰嗦了

    我想要制作一个LVM的磁盘出来,首先将 /dev/hdb1, hdb2这个两个partition加入到LVM中。

    2、建立PV 

    PV相关命令: 

     (1)pvcreate:将实体partition建立为PV

     (2)pvscan:搜寻目前系统里面任何具有PV的磁盘

     (3)pvdisplay:显示出目前系统上面的PV状态

     (4)pvremove:将PV属性移除,让改partition不具有PV属性

     (5)partprobe:这个命令可以让核心立刻读入最新的partition table而不需reboot

    这里我们建立了两个PV,可以通过pvscan 与 pvdisplay查看

      

    3、建立VG

    相关命令:

    (1)vgcreate:建立VG命令

    (2)vgsan:搜寻系统上面是否有VG

    (3)vgdisplay:显示目前系统上面的VG状态

    (4)vgextend:在VG内增加额外的PV

    (5)vgreduce:在VG内移除PV

    (6)vgchange:设定VG是否启动(active)

    (7)vgremove:删除一个VG

    注:VG名称可自己取,PV名称就是partition的装置代号

      

    4、建立LV

    定义:

    将创造出VG大磁盘后,在建立分割区,这个分割区就是所谓的LV

    相关命令:

    (1)lvcreate:建立LV

    (2)lvscan:查询系统上面的LV

    (3)lvdisplay:显示系统上面的LV状态

    (4)lvextend:在LV里添加容量

    (5)lvreduce:在LV里减少容量

    (6)lvremove:删除一个LV

    (7)lvresize:对LV进行容量大小的调整

    将整个vbirdvg分配给vbirdlv

    格式:lvcreate -L [sizeMG] -n [LVname] VGname

    参数:

    -L:后面接容量,容量的单位可以是M,G等

    -n:后面接的就是LV的名称

    现在整个partition准备好了,只需格式化,挂载就可使用啦

    5、partition格式化与挂载

    格式化为 ext4格式

    mkfs -t ext4 /dev/vbirdvg/vbirdlv

    mkdir /mnt/lvm

    mount -t ext4 /dev/vbirdvg/vbirdlv /mnt/lvm

    哈哈,上面做了这么多,终于可以验收成果了,快使用以下命令查看吧

    df :查看磁盘使用情况

    fdisk -l /dev/hdb:查看/dev/hdb分区

     

    6、增加逻辑卷

    如果中途需要增加分区怎么办呢,步骤基本一致,创建好之后。细心的会发现 lv 已经增加了,但是 /dev/vbirdvg/vbirdlv 却没有加大。这是因为我们的ext4主要信息在最初规划时,就已经写入super block,同时 inode 与 block 数量优势固定的,所以没有变化。我们可以通过 resize2fs命令处理

    格式:resize2fs [-f] [device] [size]

    参数:

    -f:强制进行 resize 的动作

    [device]:装置代号

    [size]:可加可不加,如加上需要给一个单位,M 或 G ,如不加默认【整个分区partition】的容量来处理

     

    7、删除步骤:

    上面讲了这么多创建与增加逻辑卷,假如某一天我们不使用了怎么删除呢,其实删除很简单,我们按照创建顺序倒着删除即可。

    1、取消挂载

    2、使用lvremove移除LV

    3、使用vgchange -a n VGname 让 VGname 这个 VG 不具有Active标志

    4、使用vgremove移除VG

    5、使用pvremove移除PV

    6、最后,使用fdisk修改ID即可

  • 相关阅读:
    Maven+SpringMVC+Mybatis 开发环境整合
    在子jsp页面中调用父jsp中的function或父jsp调用子页面中的function
    动态库的生成和调用
    怎么下载纯净版系统
    ATL开发COM组件
    链表问题
    内存理解
    静态绑定和动态绑定;位拷贝和值拷贝
    导EXCEL单表单方法
    mfc解决回车键默认关闭窗口的一般方法
  • 原文地址:https://www.cnblogs.com/xiangbing123/p/14005264.html
Copyright © 2011-2022 走看看