一、LVM概述

1、lvm简介

       LVM:Logical Volume Manager 是内核提供的一种逻辑卷管理器,允许用户动态调整文件系统的大小

        传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

LVM使用分层结构,如下图所示:

wKioL1hKCKai_xooAAF1NwyBIP0171.png

       图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

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

设备文件:/dev/卷组名/逻辑卷名,/dev/mapper/卷组名-逻辑卷名


二、实例

       演示怎么在linux中创建和管理LVM卷,分为两个部分:使用2个分区(lvm和软raid一样可以组合任何块设备,实际使用中我们肯定是直接使用整个硬盘,我们为了方便使用分区来演示)创建多个逻辑卷,并挂载使用;然后对使用中的卷进行动态调整大小。

1、准备磁盘分区

      使用fdisk创建1个4G和1个6G大小的分区(不要求大小一样大),并将分区类型调整为8e类型来使他们用于LVM。

[root@Node3 ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00037190

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2418    18902016   83  Linux
/dev/sda3            2418        2673     2048000   82  Linux swap / Solaris

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (2673-5221, default 2673): 
Using default value 2673
Last cylinder, +cylinders or +size{K,M,G} (2673-5221, default 5221): 
Using default value 5221

Command (m for help): n
First cylinder (2673-5221, default 2673): 
Using default value 2673
Last cylinder, +cylinders or +size{K,M,G} (2673-5221, default 5221): +4G

Command (m for help): n
First cylinder (3196-5221, default 3196): 
Using default value 3196
Last cylinder, +cylinders or +size{K,M,G} (3196-5221, default 5221): +6G

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00037190

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2418    18902016   83  Linux
/dev/sda3            2418        2673     2048000   82  Linux swap / Solaris
/dev/sda4            2673        5221    20474642+   5  Extended
/dev/sda5            2673        3195     4200766   83  Linux
/dev/sda6            3196        3979     6297448+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@Node3 ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3
[root@Node3 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   41943040 sda
   8        1     512000 sda1
   8        2   18902016 sda2
   8        3    2048000 sda3
   8       32 4194304000 sdc
   8       33 2929687483 sdc1
   8       34  976562176 sdc2
   8       16   20971520 sdb
[root@Node3 ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
[root@Node3 ~]# partx -a /dev/sda
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
BLKPG: Device or resource busy
error adding partition 4
BLKPG: Device or resource busy
error adding partition 5
BLKPG: Device or resource busy
error adding partition 6
[root@Node3 ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   41943040 sda
   8        1     512000 sda1
   8        2   18902016 sda2
   8        3    2048000 sda3
   8        4         31 sda4
   8        5    4200766 sda5
   8        6    6297448 sda6
   8       32 4194304000 sdc
   8       33 2929687483 sdc1
   8       34  976562176 sdc2
   8       16   20971520 sdb
[root@Node3 ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5  /dev/sda6

注意:这里刚才忘记了调整分区的类型

[root@Node3 ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00037190

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2418    18902016   83  Linux
/dev/sda3            2418        2673     2048000   82  Linux swap / Solaris
/dev/sda4            2673        5221    20474642+   5  Extended
/dev/sda5            2673        3195     4200766   83  Linux
/dev/sda6            3196        3979     6297448+  83  Linux

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1

Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00037190

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2418    18902016   83  Linux
/dev/sda3            2418        2673     2048000   82  Linux swap / Solaris
/dev/sda4            2673        5221    20474642+   5  Extended
/dev/sda5            2673        3195     4200766   8e  Linux LVM
/dev/sda6            3196        3979     6297448+  8e  Linux LVM

Command (m for help): w

2、创建物理卷

物理卷管理命令:pv

创建:pvcreate

          pvcreate  分区

删除:pvremove     #删除pv

扫描:pvscan

查看:pvs(简要信息),pvdisplay(详细)

pvmove   物理卷名    # 移除将本pv上,系统会自动把数据转移移到别的pv上(需要pv有足够的空间)

[root@Node3 ~]# pv
pvchange   pvcreate   pvmove     pvresize   pvscan     
pvck       pvdisplay  pvremove   pvs        pv.sh      
[root@Node3 ~]# pvscan
  No matching physical volumes found
[root@Node3 ~]# pvdisplay 
[root@Node3 ~]# pvs
[root@Node3 ~]# pvcreate /dev/sda5 /dev/sda6
  Physical volume "/dev/sda5" successfully created
  Physical volume "/dev/sda6" successfully created
[root@Node3 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5       lvm2 ---- 4.01g 4.01g
  /dev/sda6       lvm2 ---- 6.01g 6.01g
[root@Node3 ~]# pvscan
  PV /dev/sda5                      lvm2 [4.01 GiB]
  PV /dev/sda6                      lvm2 [6.01 GiB]
  Total: 2 [10.01 GiB] / in use: 0 [0   ] / in no VG: 2 [10.01 GiB]
[root@Node3 ~]# pvdisplay 
  "/dev/sda5" is a new physical volume of "4.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda5
  VG Name               
  PV Size               4.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               kefm9m-5vlK-dgSx-zdO1-Z0Os-LWuc-4CP3Je
   
  "/dev/sda6" is a new physical volume of "6.01 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda6
  VG Name               
  PV Size               6.01 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               a4g3AO-UX7X-Y2AH-jhox-41rr-mOAq-iyLSXP

3、创建卷组

卷组管理命令:vg

vgcreate,vgscan,vgs,vgdisplay,

vgextend       #扩展

vgreduce      #减少

vgremove      #删除的是卷组

vgrename

vgcreate [-s] VGNAME  物理卷...

     -s  指定PE的大小,默认为4M

vgextend   VGNAME    物理卷名

[root@Node3 ~]# vg
vgcfgbackup    vgconvert      vgextend       vgmknodes      vgs
vgcfgrestore   vgcreate       vgimport       vgreduce       vgscan
vgchange       vgdisplay      vgimportclone  vgremove       vgsplit
vgck           vgexport       vgmerge        vgrename       
[root@Node3 ~]# vgscan 
  Reading all physical volumes.  This may take a while...
[root@Node3 ~]# vgcreate myvg /dev/sda5 /dev/sda6
  Volume group "myvg" successfully created
[root@Node3 ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "myvg" using metadata type lvm2
 [root@Node3 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   0   0 wz--n- 10.01g 10.01g
[root@Node3 ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               10.01 GiB
  PE Size               4.00 MiB
  Total PE              2562
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2562 / 10.01 GiB
  VG UUID               0Yha5i-4CRD-qvQu-N6AU-WweN-9gc6-M89yx5

此时添加扩大卷组的容量:

[root@Node3 ~]# vgextend /dev/sda7         #一定要先将分区指定为物理卷,才能添加进卷组
  Please enter a physical volume path.
  Run `vgextend --help' for more information.
[root@Node3 ~]# 
[root@Node3 ~]# pvcreate /dev/sda7
  Physical volume "/dev/sda7" successfully created
[root@Node3 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5  myvg lvm2 a--u 4.00g 4.00g
  /dev/sda6  myvg lvm2 a--u 6.00g 6.00g
  /dev/sda7       lvm2 ---- 9.51g 9.51g
  
[root@Node3 ~]# vgextend myvg /dev/sda7
  Volume group "myvg" successfully extended
[root@Node3 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5  myvg lvm2 a--u 4.00g 4.00g
  /dev/sda6  myvg lvm2 a--u 6.00g 6.00g
  /dev/sda7  myvg lvm2 a--u 9.51g 9.51g
  [root@Node3 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   3   0   0 wz--n- 19.52g 19.52g
[root@Node3 ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "myvg" using metadata type lvm2
[root@Node3 ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               19.52 GiB
  PE Size               4.00 MiB
  Total PE              4997
  Alloc PE / Size       0 / 0   
  Free  PE / Size       4997 / 19.52 GiB
  VG UUID               0Yha5i-4CRD-qvQu-N6AU-WweN-9gc6-M89yx5

缩减vg:移除/dev/sda5

      1)先转移Pv上的数据

      2)将pv移出vg

      3)移出pv

[root@Node3 ~]# pvmove /dev/sda5     #一定要将要移除pv上的数据先转移,如果此pv上的数据较多,这步所需时间可能较长
  No data to move for myvg
  
[root@Node3 ~]# vgreduce myvg /dev/sda5          #从vg中移除
  Removed "/dev/sda5" from volume group "myvg"
[root@Node3 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda5       lvm2 ---- 4.01g 4.01g
  /dev/sda6  myvg lvm2 a--u 6.00g 6.00g
  /dev/sda7  myvg lvm2 a--u 9.51g 9.51g
[root@Node3 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   0   0 wz--n- 15.52g 15.52g
  
[root@Node3 ~]# pvremove /dev/sda5           #从pv中移除
  Labels on physical volume "/dev/sda5" successfully wiped
[root@Node3 ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda6  myvg lvm2 a--u 6.00g 6.00g
  /dev/sda7  myvg lvm2 a--u 9.51g 9.51g

4、创建逻辑卷

逻辑卷管理命令:lv

lvcreate,lvscan,lvs,lvdisplay

lvextend,lvreduce,lvremove


lvcreate  [OPTIONS] VGNAME

  -L   指定lv的大小

  -n   指定lv的名字

例如:lvcreate -L SIZE -n NAME VGNAME

lvextend -L [+]SIZE  LVNAME

    +:+号表示增加多少,不加+号表示增加到多少


lvreduce -L  [-]SIZE  /PATH/TO/LV_DEVICE

[root@Node3 ~]# lv
lvchange     lvextend     lvmconfig    lvmsadc      lvrename     
lvconvert    lvm          lvmdiskscan  lvmsar       lvresize     
lvcreate     lvmchange    lvmdump      lvreduce     lvs          
lvdisplay    lvmconf      lvmetad      lvremove     lvscan       
[root@Node3 ~]# lvscan
[root@Node3 ~]# lvcreate -L 3G -n lv_SYSTEM myvg
  Logical volume "lv_SYSTEM" created.
[root@Node3 ~]# lvs
  LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_SYSTEM myvg -wi-a----- 3.00g                                                    
[root@Node3 ~]# lvscan 
  ACTIVE            '/dev/myvg/lv_SYSTEM' [3.00 GiB] inherit
[root@Node3 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/lv_SYSTEM
  LV Name                lv_SYSTEM
  VG Name                myvg
  LV UUID                I1mEZE-eJRD-HvBN-zHFt-kdhr-RUjp-c2zIZ1
  LV Write Access        read/write
  LV Creation host, time Node3, 2016-12-09 11:26:46 +0800
  LV Status              available
  # open                 0
  LV Size                3.00 GiB
  Current LE             768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
[root@Node3 ~]# lvdisplay lv_system
  Volume group "lv_system" not found
  Cannot process volume group lv_system

lv创建好了之后就可以当作普通分区来格式化使用了:

[root@Node3 ~]# mkfs -t ext4 /dev/myvg/lv_SYSTEM   #使用lv的名字
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608 inodes, 786432 blocks
39321 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=805306368
24 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@Node3 ~]# mount /dev/myvg/lv_SYSTEM /mnt

lv的访问名称有多个:

[root@Node3 ~]# ls -l /dev/myvg/lv_SYSTEM  #方便我们使用的名称
lrwxrwxrwx 1 root root 7 12月  9 11:31 /dev/myvg/lv_SYSTEM -> ../dm-0
[root@Node3 ~]# ls -l /dev/mapper/
control         myvg-lv_SYSTEM  
[root@Node3 ~]# ls -l /dev/mapper/myvg-lv_SYSTEM   #系统使用的名称
lrwxrwxrwx 1 root root 7 12月  9 11:31 /dev/mapper/myvg-lv_SYSTEM -> ../dm-0
[root@Node3 ~]# ls /dev/dm
dm-0    dmmidi  
[root@Node3 ~]# ls /dev/dm-0    #真正的设备文件
/dev/dm-0

扩展lv的容量:

      1)先扩展物理边界(lv)

              要先确保vg内有足够的空余空间

      2)再扩展逻辑边界(文件系统)     #能先离线(umount)再扩展文件系统边界最好

[root@Node3 ~]# vgs          #有足够的空余空间
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 15.52g 12.52g
[root@Node3 ~]# lvextend -L 5G lv_SYSTEM
  Path required for Logical Volume "lv_SYSTEM".
  Please provide a volume group name
  Run `lvextend --help' for more information.
[root@Node3 ~]# lvextend -L 5G /dev/myvg/lv_SYSTEM   #增加到5G
  Size of logical volume myvg/lv_SYSTEM changed from 3.00 GiB (768 extents) to 5.00 GiB (1280 extents).
  Logical volume lv_SYSTEM successfully resized.
[root@Node3 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 15.52g 10.52g
[root@Node3 ~]# lvs
  LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_SYSTEM myvg -wi-ao---- 5.00g      

[root@Node3 ~]# df -TH    #/mnt分区还没增大,还需要调整逻辑边界
Filesystem                 Type   Size  Used Avail Use% Mounted on
/dev/sda2                  ext4    20G  5.1G   14G  28% /
tmpfs                      tmpfs  981M     0  981M   0% /dev/shm
/dev/sda1                  ext4   508M   34M  448M   7% /boot
/dev/mapper/myvg-lv_SYSTEM ext4   3.2G   72M  3.0G   3% /mnt       


[root@Node3 ~]# resize2fs /dev/sda1     #扩展一个没有多余物理空间分区的逻辑边界
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 512000 blocks long.  Nothing to do!

[root@Node3 ~]# resize2fs /dev/myvg/lv_SYSTEM #后面不指定大小,默认扩展到物理边界一样大
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/lv_SYSTEM is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/lv_SYSTEM to 1310720 (4k) blocks.
The filesystem on /dev/myvg/lv_SYSTEM is now 1310720 blocks long.

[root@Node3 ~]# df -TH
Filesystem                 Type   Size  Used Avail Use% Mounted on
/dev/sda2                  ext4    20G  5.1G   14G  28% /
tmpfs                      tmpfs  981M     0  981M   0% /dev/shm
/dev/sda1                  ext4   508M   34M  448M   7% /boot
/dev/mapper/myvg-lv_SYSTEM ext4   5.3G   74M  5.0G   2% /mnt
[root@Node3 ~]# ls /mnt   #不影响里面的数据
fstab  inittab  lost+found

缩减lv容量的步骤:缩减比扩展更危险

1)卸载lv卷,并执行强制检测

      #e2fsck -f /PATH/TO/LV_DEVICE

2)缩减逻辑边界

      #resize2fs /PATH/TO/LV_DEVICE SIZE

3)缩减物理边界

     #lvreduce -L  [-] SIZE /PATH/TO/LV_DEVICE

[root@Node3 ~]# umount /mnt  #卸载
[root@Node3 ~]# ls /mnt
[root@Node3 ~]# e2fsck -f /dev/myvg/lv_SYSTEM     #检查
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/lv_SYSTEM: 13/327680 files (0.0% non-contiguous), 38496/1310720 blocks
[root@Node3 ~]# resize2fs /dev/myvg/lv_SYSTEM 2G    #缩减逻辑边界
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/lv_SYSTEM to 524288 (4k) blocks.
The filesystem on /dev/myvg/lv_SYSTEM is now 524288 blocks long.

[root@Node3 ~]# lvreduce -L 2G /dev/myvg/lv_SYSTEM     #缩减物理边界
  WARNING: Reducing active logical volume to 2.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/lv_SYSTEM? [y/n]: y
  Size of logical volume myvg/lv_SYSTEM changed from 5.00 GiB (1280 extents) to 2.00 GiB (512 extents).
  Logical volume lv_SYSTEM successfully resized.
[root@Node3 ~]# mount /dev/myvg/lv_SYSTEM /mnt   #重新挂载
[root@Node3 ~]# ls /mnt     #查看原文件
fstab  inittab  lost+found
[root@Node3 ~]# df -TH      #查看分区大小
Filesystem                 Type   Size  Used Avail Use% Mounted on
/dev/sda2                  ext4    20G  5.1G   14G  28% /
tmpfs                      tmpfs  981M     0  981M   0% /dev/shm
/dev/sda1                  ext4   508M   34M  448M   7% /boot
/dev/mapper/myvg-lv_SYSTEM ext4   2.2G   72M  2.0G   4% /mnt
[root@Node3 ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 15.52g 13.52g

5、快照

inconsistent:非一致性,数据前后时间戳不一样,无法使用,

       复制正在使用的数据,可能会造成数据不一致,

快照卷:为要复制的卷先建立快照卷,保持数据暂停那创建的那一刻,(创建快照后,原卷原数据发生改变前,快照卷会复制原卷的数据到快照卷)

         快照卷也是逻辑卷的一种,通常为只读,

         快照卷是原卷的另一个访问路径,

         快照卷大小决定于创建快照卷到复制完数据之间原数据的改变量

         复制完原卷数据删除掉快照卷

创建快照卷的命令:

lvcreate  -s  -L SIZE -n NAME  -p r /path/to/original_lv_device

        -s  创建快照卷

        -p  指定访问权限

[root@Node3 ~]# lvcreate -s -L 50M -n lv_SYSYTEM_snap -p r /dev/myvg/lv_SYSTEM 
  Rounding up size to full physical extent 52.00 MiB
  Logical volume "lv_SYSYTEM_snap" created.
[root@Node3 mnt]# df -TH     #显示的大小和原卷一样大,实际上只有52M,
Filesystem                       Type   Size  Used Avail Use% Mounted on
/dev/sda2                        ext4    20G  5.1G   14G  28% /
tmpfs                            tmpfs  981M     0  981M   0% /dev/shm
/dev/sda1                        ext4   508M   34M  448M   7% /boot
/dev/mapper/myvg-lv_SYSTEM       ext4   2.2G   72M  2.0G   4% /mnt
/dev/mapper/myvg-lv_SYSYTEM_snap ext4   2.2G   72M  2.0G   4% /media
[root@Node3 ~]# mount /dev/myvg/lv_SYS
lv_SYSTEM        lv_SYSYTEM_snap  
[root@Node3 ~]# mount /dev/myvg/lv_SYS
lv_SYSTEM        lv_SYSYTEM_snap  
[root@Node3 ~]# ls /media/
[root@Node3 ~]# mount /dev/myvg/lv_SYSYTEM_snap /media/
mount: block device /dev/mapper/myvg-lv_SYSYTEM_snap is write-protected, mounting read-only
[root@Node3 ~]# ls /media/      #通过快照卷查看原卷的数据
fstab  inittab  lost+found

此时修改原数据,看快照卷的数据会不会发生改变:

[root@Node3 ~]# cd /mnt
[root@Node3 mnt]# ls
fstab  inittab  lost+found
[root@Node3 mnt]# mv fstab fstab.bak
[root@Node3 mnt]# 
[root@Node3 mnt]# ls
fstab.bak  inittab  lost+found
[root@Node3 mnt]# ls /media/       #可以看到快照卷的数据如我们预期没有发生改变
fstab  inittab  lost+found

复制数据,然后删除快照卷:

[root@Node3 ~]# tar zcf media-`date +"%F-%H%M%S"`.tar.gz /media  
tar: 从成员名中删除开头的“/”
[root@Node3 ~]# ls -ld /media
drwxr-xr-x 3 root root 4096 12月  9 11:32 /media
[root@Node3 ~]# ls -l media-2016-12-09-145411.tar.gz 
-rw-r--r-- 1 root root 1008 12月  9 14:54 media-2016-12-09-145411.tar.gz
[root@Node3 ~]# umount /media
[root@Node3 ~]# lvremove /dev/myvg/lv_SYSYTEM_snap 
Do you really want to remove active logical volume lv_SYSYTEM_snap? [y/n]: Y
  Logical volume "lv_SYSYTEM_snap" successfully removed
[root@Node3 ~]# lvs
  LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_SYSTEM myvg -wi-ao---- 2.00g


wKioL1hKWJOxPv_5AADTPy-SRco631.png