zoukankan      html  css  js  c++  java
  • LVM逻辑卷的管理和使用


    本篇将从头到尾演示一遍逻辑卷的管理.

    主要步骤
    1、创建lv逻辑卷步骤
         前提:先创建3个磁盘分区,类型为8e;
             1、PV创建
                 pvcrete /dev/sda#
             2、VG创建
                 vgcreate VG_NAME /dev/sda# /dev/sda#+1 ...
             3、LV创建
                 lvcreate -L # -n LV_NAME VG_NAME
             4、格式化文件系统
                 mkfs.ext4 LV_NAME
             5、挂载使用
                 mount /PATH/TO/VG_NAME/LV_NAME 挂载点
    2、扩展lv步骤:
         前提:先保证vg有足够的空间pv
             1、lvextend -L #[MGT] /dev/VG_NAME/LV_NAME
             2、resize2fs /dev/VG_NAME/LV_NAME
    3、缩减lv步骤:
         前提:先保证vg有足够的空间pv,再保证pv有足够空间的lv
           提示:xfs文件格式不支持缩减.请使用ext系列文件格式测试.
             1、先卸载
                 umount /dev/VG_NAME/LV_NAME
             2、强制检查文件系统一致性
                 e2fsck -f /dev/VG_NAME/LV_NAME
             3、缩减逻辑边界(缩减后空间一定要能容纳现有文件)
                 resize2fs /dev/VG_NAME/LV_NAME #[MMT](缩减到多少)
             4、缩减物理边界
                 lvreduce -L #(缩减到多少)[MGT] /dev/VG_NAME/LV_NAME
                 输入:y,确认缩减;
             5、重新挂载
                 mount /dev/VG_NAME/LV_NAME /PATH/TO/SOMEDIR
             6、查看磁盘分区确认
                 $ df -lh
    4、创建快照卷
         同创建lv,前提确保有足够的可用lv空间
             1、lvcreate -s -L #G SNAP_NAME -p r /dev/VG_NAME/LV_NAME
             2、挂载使用
             3、恢复快照
               取消挂载逻辑卷和对应的快照
               umount /dev/VG_NAME/SNAP_NAME
               umount /dev/VG_NAME/LV_NAME
               合并快照内容
                   lvconvert --merge /dev/VG_NAME/SNAP_NAME
             4、删除快照
               取消快照文件夹的挂载,再lvremove.
               umount /PATH/TO/SOMEDIR
               lvremove /dev/VG_NAME/SNAP_NAME

    5、卸载删除lv步骤:
         前提:确保数据备份
             1、卸载
                 umount 挂载点
             2、移除lv
                 lvremove /dev/VG_NAME/LV_NAME
             3、移除vg
                 vgremove VG_NAME
             4、移除pv
                 pvremove /dev/sda#



    演示开始

    创建物理卷pv


    pvcreate 设备名

    $ pvcreate /dev/sd{b1,c1,d}
       Physical volume "/dev/sdb1" successfully created.
       Physical volume "/dev/sdc1" successfully created.
       Physical volume "/dev/sdd" successfully created.
    
    
     $ pvs
       PV         VG Fmt  Attr PSize  PFree 
       /dev/sdb1     lvm2 ---   3.00g  3.00g
       /dev/sdc1     lvm2 ---   3.00g  3.00g
       /dev/sdd      lvm2 ---  20.00g 20.00g
    
    
    $ blkid
     /dev/sda1: UUID="afb7fd40-2397-48d1-bca4-717be297f93c" TYPE="xfs" 
     /dev/sda2: UUID="85c6b174-252c-4055-b570-e9eeaa777965" TYPE="xfs" 
     /dev/sda3: UUID="07d4e313-2004-45fc-864c-e60bf597ca75" TYPE="swap" 
     /dev/sdb1: UUID="Fe2tDt-oit1-FSAl-KxzW-aF6H-ZilG-QCWDlo" TYPE="LVM2_member" 
     /dev/sdc1: UUID="dUedrJ-I41U-38uc-5lYZ-eBMZ-8fJF-Gm9gz7" TYPE="LVM2_member" 
     /dev/sdd: UUID="phMgr1-Bu0B-J5fs-aojc-2Yyp-Ue0j-RYoHjN" TYPE="LVM2_member" 
    
    
     $ pvdisplay
       "/dev/sdb2" is a new physical volume of "3.00 GiB"
       --- NEW Physical volume ---
      PV Name               /dev/sdb2
       VG Name               
       PV Size               3.00 GiB
       Allocatable           NO
       PE Size               0   
       Total PE              0
       Free PE               0
       Allocated PE          0
       PV UUID               KMMRGl-2R9b-0SZo-aWSX-ryQG-IOyL-rez5sH
    


    此时还没有VG Name和PE相关的数据,因为要有VG之后才会被创建.


    创建卷组vg


    vgcreate
    vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    -s 指明PE大小,单位可用kKmMgGtTpPeE;

    $ vgcreate -s 4M vg0 /dev/sd{b1,c1,d}
       Volume group "vg0" successfully created
    
    $ vgs
       VG  #PV #LV #SN Attr   VSize   VFree  
       vg0   3   0   0 wz--n- <25.99g <25.99g
    



    创建逻辑卷lv


       lvcreate -n lv0 -L 16G vg0
       Logical volume "lv0" created.

    $ gdisplay
       --- Volume group ---
      VG Name               vg0
       System ID             
       Format                lvm2
       Metadata Areas        3
       Metadata Sequence No  2
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                1
       Open LV               0
       Max PV                0
       Cur PV                3
       Act PV                3
       VG Size               <25.99 GiB
       PE Size               4.00 MiB
       Total PE              6653
       Alloc PE / Size       4096 / 16.00 GiB
       Free  PE / Size       2557 / <9.99 GiB
       VG UUID               eQ4KLZ-fAJh-1gX8-Qrp5-o0Qx-0LgM-G4kXRi
    
    
     $ vs
       LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
       lv0  vg0 -wi-a----- 16.00g 
    
    
       $ lvdisplay
       --- Logical volume ---
       LV Path                /dev/vg0/lv0
       LV Name                lv0
       VG Name                vg0
      LV UUID                PYsVIR-u4DI-Oq0X-dXcA-ilJ2-jLJL-1T9Zx7
      LV Write Access        read/write
       LV Creation host, time centos7.qt, 2017-12-10 00:10:58 +0800
       LV Status              available
       # open                 0
       LV Size                16.00 GiB
       Current LE             4096
       Segments               1
       Allocation             inherit
       Read ahead sectors     auto
       - currently set to     8192
       Block device           253:0
    

    创建lv,使用所有剩余空间

    $ lvcreate -n lv1 -l +100%free vg0
       Logical volume "lv1" created.


    给每个lv创建文件系统

    $ kfs.ext4 /dev/vg0/lv0
    $ mkfs.xfs /dev/vg0/lv1
    


    挂载
    为了开机自动挂载,写入fstab

    $ vim /etc/fstab
     UUID=03213fc3-305e-4f26-889c-ae0487322b61 /mnt/lv0 ext4 defaults 0 0
     UUID=a34535a7-19ae-4943-af2f-091d4d571e6c /mnt/lv1 xfs defaults 0 0
    
    $ mkdir /mnt/lv{0,1}
    $ mount -a
    


    扩展卷组lv


    看一下可用分区(已删除无关磁盘信息)

    $ lsblk
     NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb           8:16   0   20G  0 disk 
     ├─sdb1        8:17   0    3G  0 part 
     │ └─vg0-lv1 253:1    0   10G  0 lvm  /mnt/lv1
     └─sdb2        8:18   0    3G  0 part 
    sdc           8:32   0   20G  0 disk 
     ├─sdc1        8:33   0    3G  0 part 
     │ └─vg0-lv1 253:1    0   10G  0 lvm  /mnt/lv1
     └─sdc2        8:34   0    3G  0 part 
    sdd           8:48   0   20G  0 disk 
     ├─vg0-lv0   253:0    0   16G  0 lvm  /mnt/lv0
     └─vg0-lv1   253:1    0   10G  0 lvm  /mnt/lv1


    使用/dev/sdb2创建一个pv

    $ pvcreate /dev/sdb2
       Physical volume "/dev/sdb2" successfully created.

    可以看到新创建的PV,sdb2
     

    $ pvs
       PV         VG  Fmt  Attr PSize   PFree
       /dev/sdb1  vg0 lvm2 a--   <3.00g    0 
       /dev/sdb2      lvm2 ---    3.00g 3.00g
       /dev/sdc1  vg0 lvm2 a--   <3.00g    0 
       /dev/sdd   vg0 lvm2 a--  <20.00g    0

    扩展vg,把新PV加进去

    $ vgextend vg0 /dev/sdb2
       Volume group "vg0" successfully extended

    可以看到Free PE 已经有了
      

    $ vgdisplay
       --- Volume group ---
      VG Name               vg0
       System ID             
       Format                lvm2
       Metadata Areas        4
       Metadata Sequence No  4
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                4
       Act PV                4
       VG Size               28.98 GiB
       PE Size               4.00 MiB
       Total PE              7420
       Alloc PE / Size       6653 / <25.99 GiB
       Free  PE / Size       767 / <3.00 GiB
       VG UUID               eQ4KLZ-fAJh-1gX8-Qrp5-o0Qx-0LgM-G4kXRi


       
    先查看一下lv目前容量,再扩展一下lv1

    $ lvs;lvextend -r -l +100%free /dev/vg0/lv1 #-r 可以更新df命令中的结果.
       LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
       lv0  vg0 -wi-ao---- 16.00g                                                    
       lv1  vg0 -wi-ao---- <9.99g                                                    
       Size of logical volume vg0/lv1 changed from <9.99 GiB (2557 extents) to 12.98 GiB (3324 extents).
       Logical volume vg0/lv1 successfully resized.

    之后再看lv容量,已经变大

    $ lvs
       LV   VG  Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
       lv0  vg0 -wi-ao---- 16.00g                                                    
       lv1  vg0 -wi-ao---- 12.98g 

    再看vg剩余空间,已经用完
      

    $ vgdisplay | grep 'Free  PE'
       Free  PE / Size       0 / 0  


    缩减逻辑卷

    必须先取消挂载要缩减的逻辑卷

    $ umount /mnt/lv0

    要先执行磁盘检测,否则会提示
    Please run 'e2fsck -f /dev/vg0/lv0' first.


    磁盘检测

    $ 2fsck -f /dev/vg0/lv0


    再缩减文件系统

    $ esize2fs /dev/vg0/lv0 8G
    $ esize2fs 1.42.9 (28-Dec-2013)
    Resizing the filesystem on /dev/vg0/lv0 to 2097152 (4k) blocks.
    The filesystem on /dev/vg0/lv0 is now 2097152 blocks long.


    缩减逻辑卷lv

    $ vreduce -L 8G /dev/vg0/lv0
       WARNING: Reducing active logical volume to 8.00 GiB.
       THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce vg0/lv0? [y/n]: y
       Size of logical volume vg0/lv0 changed from 16.00 GiB (4096 extents) to 8.00 GiB (2048 extents).
       Logical volume vg0/lv0 successfully resized.

    重新挂载

    $ mount –a


    查看一下

    $ df -h
     /dev/mapper/vg0-lv0  7.8G   37M  7.3G   1% /mnt/lv0
     /dev/mapper/vg0-lv1   10G   33M   10G   1% /mnt/lv1


    逻辑卷快照管理


    快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
    由于快照区与原本的LV共用很多PE的区块,因此快照去与被快照的LV必须在同一个VG.系统恢复的时候的文件数量不能高于快照区的实际容量


    创建快照

    给lv0 创建快照

    $ lvcreate -s -p r -L 3G -n lv0_snapshot /dev/vg0/lv0

    选项说明:
    -s|--snapshot original_lv_name:创建为快照卷,指明原卷;
    -n|--name snapshot_lv_name:定义快照卷名称;
    -L|--size #[mMgGtT]:指定逻辑卷空间大小;
    -p|--permission {r|rw}:指定逻辑卷权限,r为只读,rw为读写(快照卷通常为只读);


    查看已创建的快照(已删除无关磁盘信息)

    $ lsblk
    
    NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb                      8:16   0   20G  0 disk 
     ├─sdb1                   8:17   0    3G  0 part 
     │ └─vg0-lv1            253:1    0   13G  0 lvm  /mnt/lv1
     └─sdb2                   8:18   0    3G  0 part 
       └─vg0-lv1            253:1    0   13G  0 lvm  /mnt/lv1
    sdc                      8:32   0   20G  0 disk 
     ├─sdc1                   8:33   0    3G  0 part 
     │ └─vg0-lv1            253:1    0   13G  0 lvm  /mnt/lv1
     └─sdc2                   8:34   0    3G  0 part 
    sdd                      8:48   0   20G  0 disk 
     ├─vg0-lv1              253:1    0   13G  0 lvm  /mnt/lv1
     ├─vg0-lv0-real         253:2    0    8G  0 lvm  
     │ ├─vg0-lv0            253:0    0    8G  0 lvm  /mnt/lv0
     │ └─vg0-lv0_snapshot   253:4    0    8G  1 lvm  
     └─vg0-lv0_snapshot-cow 253:3    0    3G  1 lvm  
       └─vg0-lv0_snapshot   253:4    0    8G  1 lvm  
    


    挂载快照

    $ mount /dev/vg0/lv1_snapshot /mnt/snap
    
    $ mount: /dev/mapper/vg0-lv0_snapshot is write-protected, mounting read-only
    


    恢复快照

    $ mount /dev/vg0/lv0_snapshot
    
    $ umount /dev/vg0/lv0
    
    $ lvconvert --merge /dev/vg0/lv0_snapshot
    


    删除快照

    $ umount /mnt/snap
    $ lvremove /dev/vg0/lv0_snapshot
  • 相关阅读:
    java学习笔记3
    java学习笔记 2
    linux用户登录指定目录
    [Jenkins 新插件] 兼容阿里开发手册 (P3C) 的火线插件安装使用教程
    Color a Tree HDU
    网络流初步
    K度限制MST poj 1639
    曼哈顿距离MST
    ACM Amman Collegiate Programming Contest(7.22随机组队娱乐赛)
    HDU Distinct Values
  • 原文地址:https://www.cnblogs.com/Q--T/p/8031465.html
Copyright © 2011-2022 走看看