Linux之lvm应用

1.  LVM2介绍

    全称:Logical Volume Manager Version 2

    内核使用的模块dm:  device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

    真正的设备文件:/dev/dm-0 /dev/dm-1 /dev/dm-2

    符号链接文件:/dev/mapper/VG_NAME-LV_NAME

           /dev/VolGroup/lv_home

           /dev/VolGroup/lv_root

           /dev/VolGroup/lv_swap

2.  LVM2名词

    PV:  物理卷  逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。

    VG:  卷组  PV组合成VG,卷组建立在物理卷上,一卷组中至少包括一个物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统可有多个卷组

    LV:  逻辑卷  VG切分成LV,逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可动态扩展和缩小空间

    PE:  物理块  PV的基本单元,默认4M

    LE:  逻辑块  LV的基本单元,一个逻辑卷最多只能包含65536个PE,所以一个PE的大小就决定了逻辑卷的最大容量

    抽象关系:

      

3.  操作流程图

    

4.  如何配置LVM逻辑卷管理系统

    1.  安装系统时,指定lvm

        

 

    2.  安装系统时,选择的是标准分区,而不是lvm

        1.  将各物理磁盘或分区的系统类型设为Linux LVM,其system ID为8e

[root@localhost ~]# fdisk /dev/sda
...
Command (m for help): n
First cylinder (1593-3916, default 1593):
Using default value 1593
Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): +5G
...
Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e   # 指定system ID为8e
Changed system type of partition 5 to 8e (Linux LVM)
...
Command (m for help): p
...
/dev/sda5            1593        2246     5252227+  8e  Linux LVM
/dev/sda6            2247        2900     5253223+  8e  Linux LVM
/dev/sda7            2901        3554     5253223+  8e  Linux LVM
Command (m for help): w

        2.  把要修改为lvm的分区,卸载umount /dev/sdb1

        3.  创建pv

            pvcreate /dev/sdb1

        4.  创建vg

        5.  创建lv                                

5.  PV管理工具

    pvcreate  创建pv

      pvcreate /dev/sda2

      -f:强制创建逻辑卷,不需用户确认

      -u:指定设备的UUID

      -y:所有问题都回答yes

 

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

[root@db ~]# pvscan
  PV /dev/sda2   VG VolGroup   lvm2 [2.18 TiB / 154.63 GiB free]
  Total: 1 [2.18 TiB] / in use: 1 [2.18 TiB] / in no VG: 0 [0   ]

      -e:仅显示属于输出卷组的物理卷

      -n:仅显示不属于任何卷组的物理卷

      -u:显示UUID 

    

    pvs  显示PV简要信息

[root@db ~]# pvs
  PV         VG       Fmt  Attr PSize PFree  
  /dev/sda2  VolGroup lvm2 a--  2.18t 154.63g  

    

    pvdisplay  显示当前所有pv详细信息

[root@db ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup
  PV Size               2.18 TiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              571554
  Free PE               39586
  Allocated PE          531968
  PV UUID               6LStL8-Pfmw-rQ2P-nt7V-oilE-zSP3-VbQ0WP

    

    pvremove  将PV属性移除,让该partition不具有PV属性

      pvremove /dev/sda2

      -f:强制删除

      -y:所有问题都回答yes

6.  VG管理工具

    vgcreate  创建卷组

      语法:  vgcreate [-s N[mgt]] VG名称 PV名称

        -s:  后面接PE的大小(size),单位可以是m,g,t(大小写均可),默认为4M

        -l:  卷组上允许创建的最大逻辑卷数

        -p:  卷组中允许添加的最大物理卷数

      例子:

        vgcreate -s 16M myvg /dev/sda2

  

    vgscan  搜寻系统上面是否有VG存在

[root@db ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "myvg" using metadata type lvm2

  

    vgs  显示卷组简要信息

[root@db ~]# vgs
  VG       #PV #LV #SN Attr   VSize VFree  
  VolGroup   1   3   0 wz--n- 2.18t 154.63g

  

    vgdisplay  显示卷组详细信息

[root@dbm_200_shopzp ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               2.18 TiB
  PE Size               4.00 MiB
  Total PE              571554
  Alloc PE / Size       531968 / 2.03 TiB
  Free  PE / Size       39586 / 154.63 GiB
  VG UUID               J0ZD5l-RJU1-XSfb-CYb2-hNzI-FEtC-JeMhhY

      -A:仅显示活动卷组的信息

      -s:使用短格式输出信息

        

    vgremove  删除卷组

      vgremove myvg /dev/sda2

 

    vgextend  在VG内增加额外的PV

      vgextend myvg /dev/sda3

 

    vgreduce  在VG内移除PV

      vgreduce myvg /dev/sda3

      先做pvmove,移动该PV到同组的其它PV

7.  LV管理工具

    逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME.

    lvcreate  创建逻辑卷

      语法:  lvcreate [-l N] [-n LV名称] VG名称

      -L:  后面接容量,这个数字必须是PE的倍数

      -l:  后面接PE的个数

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

      -s:  创建快照

      -p r:  设置为只读

      lvcreate -I 356 -n mylv myvg

      lvcreate -L 5.56G -n mylv myvg

      创建完成后,会产生一个文件/dev/myvg/mylv,符号链接到/dev/mapper/myvg_mylv

      文件系统阶段,格式化分区

        mkfs -t ext4 /dev/myvg/mylv

        mkdir  /mnt/lvm

        mount /dev/myvg/mylv /mnt/lvm

 

    lvscan  扫描当前系统中的所有逻辑卷,及其对应的设备文件

    

    lvs  显示逻辑卷简要信息

[root@dbm_200_shopzp ~]# lvs
  LV      VG       Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao---- 5.56g                                            

  

    lvdisplay  显示详细信息

[root@dbm_200_shopzp ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                2kroy3-WWcd-Qzqr-K3vI-1CrR-rtsh-0btU2f
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-06-05 02:26:35 +0800
  LV Status              available
  # open                 1
  LV Size                5.56 GiB
  Current LE             268800
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  

    lvreduce  在LV里面减少容量     

      -L:指定缩减(后)的大小

      -l:指定缩减(后)的大小(LE数)

      umount /dev/VG_NAME/LV_NAME

      e2fsck -f /dev/VG_NAME/LV_NAME

      resize2fs /dev/VG_NAME/LV_NAME 指定大小

      lvreduce -L 3G  /dev/VG_NAME/LV_NAME

      mount  /dev/VG_NAME/LV_NAME

 

    lvextend  在LV里面增加容量

      -L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M

      -l:指定扩展(后)的大小(LE数)

      lvextend -L [+]1000G /dev/VG_NAME/LV_NAME

      resize2fs /dev/VG_NAME/LV_NAME

 

    lvremove  删除一个LV

      -f  强制删除

      lvremove /dev/VG_NAME/LV_NAME

 

    lvresize  对LV进行容量大小的调整

8.  扩大LV容量

    1.  用fdisk设置新的具有8e systemID的分区

        fdisk /dev/hda

        partprobe

    2.  利用pvcreate创建PV

        pvcreate /dev/hda10

    3.  利用vgextend将PV加入我们的myvg

        vgextend myvg /dev/hda10

    4.  利用lvextend将新加入的PV内的PE加入mylv

        lvextend -L +300M /dev/myvg/mylv

    5.  通过resize2fs将文件系统的容量确实增加,扩展文件系统

        resize2fs /dev/myvg/mylv        

9.  减小LV容量

    1.  umount /dev/myvg/mylv  卸载对应的逻辑卷

    2.  e2fsck -f /dev/myvg/mylv  检测文件系统

    3.  resize2fs /dev/myvg/mylv 500M  缩减/dev/myvg/mylv至500M

    4.  lvreduce -L 500M /dev/myvg/mylv     缩减/dev/myvg/mylv至500M  

    5.  pvmove /dev/hda6 /dev/hda10  移动要删除的pv,到其他pv

    6.  vgreduce myvg /dev/hda6  减少卷组对应的物理卷

    7.  pvremove /dev/hda6    删除pv

10.  centost调整根目录大小

    1.  确保centos系统采用的是lvm分区格式

        df -h

        

    2.  想从VolGroup-lv_home分区取出200G的空间添加到根目录VolGroup-lv_root分区上

    3.  卸载VolGroup-lv_home分区

        umount /home

    4.  再使用df -h查看/home目录没有了

    5.  重新设置VolGroup-lv_home的大小

        resize2fs -p /dev/mapper/VolGroup-lv_home 1024G

        报错:

resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-home 时
找不到有效的文件系统超级块.

        要求先执行命令:  e2fsck -f /dev/mapper/VolGroup-lv_home

        再执行:  resize2fs -p /dev/mapper/VolGroup-lv_home 1024G

    6.  检查/home大小是否设置成功

        mount /home

        df -h

    7.  将VolGroup-lv_home减少到指定的大小

        lvreduce -L 1024G /dev/mapper/VolGroup-lv_home

    8.  查看卷组可分配的空间

        vgdisplay

    9.  将可用的空间添加到VolGroup-lv_root分区上

        lvextend -L +1000G /dev/mapper/VolGroup-lv_root

    10.  重新设定VolGroup-lv_root分区的大小

        resize2fs -p /dev/mapper/VolGroup-lv_root

    11.  再次查看

        df -h

        看到VolGroup-lv_root空间已经增加了1000G

11.  LVM的系统快照

    1.  快照示意图

        

    2.  例子

[root@localhost ~]# mount -o remount,ro /dev/myvg/mylv /data   # 创建快照卷之前先将对应的逻辑卷改为只读
[root@localhost ~]# lvcreate -s -L 512M -n mylv_snap /dev/myvg/mylv  # 创建大小为512M的快照
  Logical volume "mylv_snap" created
[root@localhost ~]# mount -o remount,rw /dev/myvg/mylv /data   # 将逻辑卷改回为读写
[root@localhost ~]# mount /dev/myvg/mylv_snap /mnt
[root@localhost ~]# df -h   # 可以看到快照和其对应的逻辑卷显示的参数值一样
...
/dev/mapper/myvg-mylv       489M   11M  453M   3% /data
/dev/mapper/myvg-mylv_snap  489M   11M  453M   3% /mnt
[root@localhost ~]# ls /mnt
inittab  lost+found
[root@localhost ~]# cp /etc/passwd /data   # 向原始卷中新增一些数据
[root@localhost ~]# ls /data
inittab  lost+found  passwd
[root@localhost ~]# ls /mnt   # 快照所显示的文件系统状态仍是创建那一刻的
inittab  lost+found  

12.  xfs文件系统扩容

    参考文档:https://www.cnblogs.com/-abm/p/11349240.html

    

 

        

 

      

 

 

            

        

 

    

      

    

    

    

    

    

 

 

    

 

posted @ 2019-08-15 17:09  奋斗史  阅读(430)  评论(0编辑  收藏  举报