知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

LVM常用操作

发布时间:2015-11-06 16:48:28作者:知识屋

一、LVM是什么
 
LVM是 Logical Volume Manager(逻辑卷管理)的简写,简单的说LVM可以跨分区存储数据,并且LVM可以在无需停机的状态下动态调整分区的大小。
 
二、基本术语
 
*物理存储介质(PhysicalStorageMedia)
 
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
 
*物理卷(Physical Volume,PV)
 
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
 
*卷组(Volume Group,VG)
 
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
 
*逻辑卷(Logical Volume,LV)
 
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
 
*物理块(Physical Extent,PE)
 
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
 
*逻辑块(Logical Extent,LE)
 
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
 
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。如图(1)
三、创建管理
 
常用管理命令如下:
 
管理lv:
pv: pvcreate, pvdisplay, pvs, pvscan, pvremove, pvmove
vg: vgcreate, vgdisplay, vgs, vgscan, vgremove, vgextend, vgreduce
lv: lvcreate, lvdisplay, lvs, lvresize, lvextend, lvreduce, lvremove
 
1、PV相关操作
 
创建pv
 
1.1、如图(2) 使用fdisk创建物理磁盘分区
 
[root@www ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xd9180e6e
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  8e  Linux LVM
/dev/sdb2             263         655     3156772+  8e  Linux LVM
[root@www ~]#
 
 
 
创建物理卷
pvcreate
 
[root@www ~]# pvcreate /dev/sdb1 /dev/sdb2//创建PV   Physical volume "/dev/sdb1" successfully created  Physical volume "/dev/sdb2" successfully created

 

 
查看PV
 
[root@www ~]# pvs//查看PV  PV         VG   Fmt  Attr PSize  PFree  /dev/sda2  vg0  lvm2 a--  59.99g 7.99g  /dev/sdb1       lvm2 ---   2.01g 2.01g  /dev/sdb2       lvm2 ---   3.01g 3.01g[root@www ~]# pvdisplay /dev/sdb[0-9]//可以看到详细信息  --- Physical volume ---  PV Name               /dev/sdb1  VG Name               myvg  PV Size               2.01 GiB / not usable 3.16 MiB  Allocatable           yes   PE Size               4.00 MiB  Total PE              513  Free PE               513  Allocated PE          0  PV UUID               rA5Vdy-j2rr-b9Vf-zo8I-sjFD-1z23-VhHAgI      --- Physical volume ---  PV Name               /dev/sdb2  VG Name               myvg  PV Size               3.01 GiB / not usable 2.79 MiB  Allocatable           yes   PE Size               4.00 MiB  Total PE              770  Free PE               770  Allocated PE          0  PV UUID               GVtLyK-Ugd1-DKHo-3wHS-oia1-lbpz-PA4oma    [root@www ~]#

 

删除pv
 
[root@www ~]# pvcreate /dev/sdb3   //创建pv  Physical volume "/dev/sdb3" successfully created[root@www ~]# pvs   //查看pv  PV         VG   Fmt  Attr PSize  PFree  /dev/sda2  vg0  lvm2 a--  59.99g 7.99g  /dev/sdb1  myvg lvm2 a--   2.00g    0   /dev/sdb2  myvg lvm2 a--   3.01g 2.01g  /dev/sdb3       lvm2 ---   3.01g 3.01g[root@www ~]# pvremove /dev/sdb3   //删除pv /dev/sdb3  Labels on physical volume "/dev/sdb3" successfully wiped[root@www ~]# pvs  PV         VG   Fmt  Attr PSize  PFree  /dev/sda2  vg0  lvm2 a--  59.99g 7.99g  /dev/sdb1  myvg lvm2 a--   2.00g    0   /dev/sdb2  myvg lvm2 a--   3.01g 2.01g

 

 
2、VG相关操作
 
创建VG
vgcreate
 
# vgcreate VGNAME /dev/PV1...
[-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]]   //指定PE大小
      [-t|--test] //测试,不真正创建
       [-v|--verbose]//显示创建过程
 
[root@www ~]# vgcreate myvg /dev/sdb{1,2}  Volume group "myvg" successfully created

 

 
查看VG 
 
[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  myvg   2   0   0 wz--n-  5.01g 5.01g  vg0    1   4   0 wz--n- 59.99g 7.99g[root@www ~]# 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               5.01 GiB  PE Size               4.00 MiB  //PE 块大小  Total PE              1283  Alloc PE / Size       0 / 0     Free  PE / Size       1283 / 5.01 GiB  VG UUID               llSGpO-Bk51-KVBB-llAZ-AA9E-aBYq-sUrnPL

 

删除vg
 
# vgremove VGNAME...[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  myvg   2   0   0 wz--n-  5.01g 5.01g  vg0    1   4   0 wz--n- 59.99g 7.99g[root@www ~]# vgremove myvg//删除vg  Volume group "myvg" successfully removed[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  vg0    1   4   0 wz--n- 59.99g 7.99g[root@www ~]#

 

 
缩减VG:通过从vg中移除pv实现
 
注意:计划移除的pv不能包含已经存储数据的pe;如果有需要先使用pvmove移动到同vg内其它pv上;
[root@www ~]# vgcreate myvg /dev/sdb{1,2}  Volume group "myvg" successfully created[root@www ~]# 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               5.01 GiB//大小为5G  PE Size               4.00 MiB  Total PE              1283  Alloc PE / Size       0 / 0     Free  PE / Size       1283 / 5.01 GiB  VG UUID               Iz9bc0-Sw38-H916-TAg3-abNh-iUJW-hjuRoB------------------------------------------------------------------------------

 

 
我们要在myvg中移除/dev/sdb2   【缩减vg要保证缩减后的vg大小能够存储原来的数据】
 
[root@www ~]# pvmove /dev/sdb2  // 将/sdb2中的数据移动到其他pv上  No data to move for myvg[root@www ~]# vgreduce myvg /dev/sdb2//移除/dev/sdb2  Removed "/dev/sdb2" from volume group "myvg"[root@www ~]# vgdisplay myvg  --- Volume group ---  VG Name               myvg  System ID               Format                lvm2  Metadata Areas        1  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                1  Act PV                1  VG Size               2.00 GiB// 大小变为2G  PE Size               4.00 MiB  Total PE              513  Alloc PE / Size       0 / 0     Free  PE / Size       513 / 2.00 GiB  VG UUID               Iz9bc0-Sw38-H916-TAg3-abNh-iUJW-hjuRoB

 

-----------------------
扩展VG: 向VG中添加更多的PV来实现
 
vgextend
 
[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  myvg   1   0   0 wz--n-  2.00g 2.00g//扩展前大小为2G  vg0    1   4   0 wz--n- 59.99g 7.99g[root@www ~]# vgextend myvg /dev/sdb2//向myvg中添加/dev/sdb2  Volume group "myvg" successfully extended[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  myvg   2   0   0 wz--n-  5.01g 5.01g//大小变为5G  vg0    1   4   0 wz--n- 59.99g 7.99g

 

 
3、LV相关操作
 
创建LV Logical Volume
    创建lv:
    lvcreate -L #[bBsSkKmMgGtTpPeE] [-n|--name  LogicalVolume{Name|Path}]  VG_NAME
 
 
    LV设备路径:
    (1) /dev/VGNAME/LVNAME
    (2) /dev/mapper/VGNAME-LVNAME
 
    实际路径:/dev/dm-#
 
注意:lv的大小必须为pe的整数倍
 
[root@www ~]# lvcreate -L 4G -n mylv myvg//创建大小为4G的LV 名字为mylv  Logical volume "mylv" created[root@www ~]# lvs//查看LV  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  mylv myvg -wi-a-----  4.00g           //大小为4G                                           root vg0  -wi-ao---- 20.00g                                                      swap vg0  -wi-ao----  2.00g                                                      usr  vg0  -wi-ao---- 10.00g                                                      var  vg0  -wi-ao---- 20.00g                                                    [root@www ~]# lvdisplay   --- Logical volume ---  LV Path                /dev/myvg/mylv  LV Name                mylv  VG Name                myvg  LV UUID                i3tDAL-GdB4-TVIf-Efun-vVmg-Ig00-cSCdKk  LV Write Access        read/write  LV Creation host, time www.w1.com, 2015-08-16 05:05:40 +0800  LV Status              available  # open                 0  LV Size                4.00 GiB  Current LE             1024  Segments               2  Allocation             inherit  Read ahead sectors     auto  - currently set to     256  Block device           253:4

 

移除LV 
 
lvremove LV_PATH
 
[root@www ~]# lvs  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  mylv myvg -wi-a-----  4.00g          //查看lv                                            root vg0  -wi-ao---- 20.00g                                                      swap vg0  -wi-ao----  2.00g                                                      usr  vg0  -wi-ao---- 10.00g                                                      var  vg0  -wi-ao---- 20.00g                                                    [root@www ~]# lvremove /dev/myvg/mylv//移除mylvDo you really want to remove active logical volume mylv? [y/n]: y  Logical volume "mylv" successfully removed[root@www ~]# lvs  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  root vg0  -wi-ao---- 20.00g             //已经不存在mylv                                         swap vg0  -wi-ao----  2.00g                                                      usr  vg0  -wi-ao---- 10.00g                                                      var  vg0  -wi-ao---- 20.00g                                                    [root@www ~]#

 

 
扩展LV 
 
    存储设备有:物理边界
    文件系统有:逻辑边界
 
    扩展:先扩展物理边界,而后拉伸逻辑边界
    lvextend, lvresize
    resize2fs
 
扩展LV步骤
 
 
1、先确定目标大小:要确保此lv所在vg中有足够的空闲可用;
2G --> 4G
            4G
            +2G
2、扩展物理边界
        lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME
3、拉伸逻辑边界
        resize2fs /dev/VGNAME/LVNAME 
 
 
例:先创建大小为2G的LV然后在扩展为4G
 
[root@www ~]# lvcreate -L 2G -n mylv myvg  Logical volume "mylv" created[root@www ~]# lvdisplay /dev/myvg/mylv  --- Logical volume ---  LV Path                /dev/myvg/mylv  LV Name                mylv  VG Name                myvg  LV UUID                yZE2SK-G9J9-dFdH-uJvK-Lln6-AS2G-UqHMjU  LV Write Access        read/write  LV Creation host, time www.w1.com, 2015-08-16 05:12:04 +0800  LV Status              available  # open                 0  LV Size                2.00 GiB  Current LE             512  Segments               1  Allocation             inherit  Read ahead sectors     auto  - currently set to     256  Block device           253:4

 

 
格式化/myvg/mylv
 
[root@www ~]# mke2fs -t ext4 /dev/myvg/mylvmke2fs 1.41.12 (17-May-2010)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks131072 inodes, 524288 blocks26214 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=53687091216 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912Writing inode tables: done                            Creating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 38 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

 
[root@www ~]# mkdir /nyist//创建挂载点[root@www ~]# mount /dev/myvg/mylv /nyist//挂载[root@www ~]# df -h//查看大小Filesystem            Size  Used Avail Use% Mounted on/dev/mapper/vg0-root   20G   18G  908M  96% /tmpfs                 565M     0  565M   0% /dev/shm/dev/sda1             190M   33M  148M  18% /boot/dev/mapper/vg0-usr   9.8G  2.4G  6.9G  26% /usr/dev/mapper/vg0-var    20G  294M   19G   2% /var/dev/sda3              59G  4.7G   52G   9% /usr/soc/dev/mapper/myvg-mylv                      2.0G  3.0M  1.9G   1% /nyist

 

 
[root@www ~]# cp /etc/fstab /nyist
 
查看文件
 
[root@www ~]# cat /nyist/fstab ## /etc/fstab# Created by anaconda on Thu Mar 26 20:01:38 2015## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#/dev/mapper/vg0-root    /                       ext4    defaults        1 1UUID=0d0698ff-1645-4ff8-af27-fc6e73573941 /boot                   ext4    defaults        1 2/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2/dev/mapper/vg0-var     /var                    ext4    defaults        1 2/dev/mapper/vg0-swap    swap                    swap    defaults        0 0tmpfs                   /dev/shm                tmpfs   defaults        0 0devpts                  /dev/pts                devpts  gid=5,mode=620  0 0sysfs                   /sys                    sysfs   defaults        0 0proc                    /proc                   proc    defaults        0 0/dev/sda3           /usr/soc                ext4    defaults        0 0[root@www ~]#

 

 
查看VG剩余空间:
 
[root@www ~]# vgs  VG   #PV #LV #SN Attr   VSize  VFree  myvg   2   1   0 wz--n-  5.01g 3.01g//还有3G 我们要扩展到4G 容量足够  vg0    1   4   0 wz--n- 59.99g 7.99g

 

 
扩展物理边界
 
[root@www ~]# lvs /dev/myvg/mylv  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  mylv myvg -wi-a----- 2.00g          //目前大小为2G                                          [root@www ~]# lvextend -L 4G  /dev/myvg/mylv  //扩展LV 也可以写为: lvextend -L +2G /vev/myvg/mylv  Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).  Logical volume mylv successfully resized[root@www ~]# lvs /dev/myvg/mylv查看mylv大小  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  mylv myvg -wi-a----- 4.00g              //扩展为4G                                      [root@www ~]# [root@www ~]# lvdisplay /dev/myvg/mylv  --- Logical volume ---  LV Path                /dev/myvg/mylv  LV Name                mylv  VG Name                myvg  LV UUID                yZE2SK-G9J9-dFdH-uJvK-Lln6-AS2G-UqHMjU  LV Write Access        read/write  LV Creation host, time www.w1.com, 2015-08-16 05:12:04 +0800  LV Status              available  # open                 0  LV Size                4.00 GiB  //已经扩展为4G  Current LE             1024  Segments               2  Allocation             inherit  Read ahead sectors     auto  - currently set to     256  Block device           253:4

 

 
查看逻辑空间大小
 
[root@www ~]# df -hFilesystem            Size  Used Avail Use% Mounted on....../dev/sda3              59G  4.7G   52G   9% /usr/soc/dev/mapper/myvg-mylv                      2.0G  3.1M  1.9G   1% /nyist//依然为2G[root@www ~]#

 

 
拉伸逻辑边界
 
[root@www ~]# resize2fs /dev/myvg/mylv//扩展逻辑边界resize2fs 1.41.12 (17-May-2010)Filesystem at /dev/myvg/mylv is mounted on /nyist; on-line resizing requiredold desc_blocks = 1, new_desc_blocks = 1Performing an on-line resize of /dev/myvg/mylv to 1048576 (4k) blocks.The filesystem on /dev/myvg/mylv is now 1048576 blocks long.[root@www ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/vg0-root   20G   18G  908M  96% /tmpfs                 565M     0  565M   0% /dev/shm/dev/sda1             190M   33M  148M  18% /boot/dev/mapper/vg0-usr   9.8G  2.4G  6.9G  26% /usr/dev/mapper/vg0-var    20G  294M   19G   2% /var/dev/sda3              59G  4.7G   52G   9% /usr/soc/dev/mapper/myvg-mylv                      3.9G  4.0M  3.7G   1% /nyist//大小已经为3.9G 成功扩展[root@www ~]#

 

 
============================================================
缩减LV
注意:
1、缩减LV必须要离线
2、必须先缩减文件系统,然后再缩减LV大小
 
过程:
 
    1、先确定缩减后的目标大小:要确保缩减后的大小能够容纳现在的所有数据;
    2、卸载逻辑卷,并强制做文件系统一致性检查;
    e2fsck -f /dev/VGNAME/LVNAME
    3、缩减逻辑边界
    resize2fs /dev/VGNAME/LVNAME #[bBsSkKmMgGtTpPeE]
// resize2fs /dev/myvg/mylv 3G
    4、缩减物理边界
    lvreduce -L [-]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME
//lvreduce -L 3G /dev/myvg/mylv    //缩减到3G
 
eg:
 
[root@www ~]# umount /nyist[root@www ~]# e2fsck -f /dev/myvg/mylve2fsck 1.41.12 (17-May-2010)Pass 1: Checking inodes, blocks, and sizesPass 2: Checking directory structurePass 3: Checking directory connectivityPass 4: Checking reference countsPass 5: Checking group summary information/dev/myvg/mylv: 12/262144 files (0.0% non-contiguous), 33871/1048576 blocks[root@www ~]# resize2fs /dev/myvg/mylv 3G//缩减逻辑边界resize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/myvg/mylv to 786432 (4k) blocks.The filesystem on /dev/myvg/mylv is now 786432 blocks long.[root@www ~]# lvreduce -L 3G /dev/myvg/mylv//缩减物理边界  WARNING: Reducing active logical volume to 3.00 GiB  THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce mylv? [y/n]: y  Size of logical volume myvg/mylv changed from 4.00 GiB (1024 extents) to 3.00 GiB (768 extents).  Logical volume mylv successfully resized[root@www ~]#

 

 
验证:
 
[root@www ~]# lvs  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  mylv myvg -wi-a-----  3.00g          //大小3G                                            root vg0  -wi-ao---- 20.00g                                                      swap vg0  -wi-ao----  2.00g                                                      usr  vg0  -wi-ao---- 10.00g                                                      var  vg0  -wi-ao---- 20.00g                                                    [root@www ~]# mount /dev/myvg/mylv /nyist[root@www ~]# df -hFilesystem            Size  Used Avail Use% Mounted on/dev/mapper/vg0-root   20G   18G  908M  96% /tmpfs                 565M     0  565M   0% /dev/shm/dev/sda1             190M   33M  148M  18% /boot/dev/mapper/vg0-usr   9.8G  2.4G  6.9G  26% /usr/dev/mapper/vg0-var    20G  294M   19G   2% /var/dev/sda3              59G  4.7G   52G   9% /usr/soc/dev/mapper/myvg-mylv                      2.9G  3.1M  2.8G   1% /nyist//大小2.9G   [root@www ~]#

 


(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜