其他分享
首页 > 其他分享> > LVM逻辑卷

LVM逻辑卷

作者:互联网

1、LVM简介

    LVM是(Logical volume manage)逻辑卷管理的缩写。

    1)LVM功能:

    将多块磁盘或多个分区从逻辑上组合成一个大容量的存储空间。并且在后期可以在线动态的扩大或缩小容量空间,并且不会丢失数据。

    2)LVM的管理流程:

    磁盘或分区--->创建PV物理卷--->创建VG卷组--->创建LV逻辑卷--->格式化--->挂载

    ● PV:是物理卷(Physical Volume)的缩写,是指把磁盘或分区转换成PV格式,就是在磁盘或分区上贴上PV的标签。

    ● VG:是卷组(Volume Group)的缩写,将一个或多个PV组建成一个卷组,意思就是将多个磁盘或多个分区组合成一个大容量的存储空间。

    ●PE:是物理扩展(Physical Extended)的缩写,是指VG卷组中的最小逻辑单元,每个PE的大小默认是4M,当然创建VG时也可以指定PE的大小。

    ●LV:是逻辑卷(Logical Volume)的缩写,是指从VG卷组中划分出来一块空间,LV类似于磁盘的一个分区。

    ●LE:是逻辑扩展(Logical Extended)的缩写,是组成LV逻辑卷的最小单元,每个LE大小跟PE相等,默认4M。

2、LVM管理命令

    1)PV物理卷管理命令

命令含义命令格式
pvcreate创建物理卷PVpvcreate /dev/xxx
pvremove删除物理卷PVpvremove /dev/xxx
pvscan 或 pvs扫描PV(查看PV)
pvs
pvdisplay查看PV的详细信息pvdisplay
pvmove移动PV上的数据。移除一个PV但还要保留PV上的数据,就需要这个命令
pvmove  /dev/xxx(要移除的PV)  /dev/xxx(把数据移动到此设备,这个设备必须是和要移除的PV属于一个卷组)

    2)VG卷组管理命令

命令含义格式
vgcreate
创建卷组VGvgcreate -s 10M vgname /dev/xxx(PV)  #-s指定PE单元大小
vgremove删除卷组VGvgremove vgname
vgs查看VGvgs
vgscan重新扫描VGvgscan
vgrename重命名VGvgrename 旧VG名 新VG名
vgdisplay查看VG详细信息vgdisplay
vgextend扩展VGvgextend 卷组名 PV
vgreduce缩小VGvgreduce 卷组名 PV

    3)LV逻辑卷管理命令

命令含义格式
lvcreate
创建LV逻辑卷lvcreate -L 100M(空间大小) -n lvname vgname  #-n逻辑卷名
lvremove删除LV逻辑卷lvremove -f /dev/vg0/lv0  #-f强制
lvs查看LV逻辑卷lvs
lvscan扫描(所有磁盘)LV逻辑卷lvscan
lvdisplay查看LV详细信息lvdisplay
lvextend扩容LV容量lvextend -L +100M /dev/vg0/lv0(LV逻辑卷名)  # + 要增加的大小
lvreduce缩小LV容量lvextend -L -100M /dev/vg0/lv0(LV逻辑卷名)  # - 要缩小的大小

提示:lvcreate创建LV的时候,小 l 是指分配PE的个数,大 L 是指分配的空间大小,通常为PE大小的倍数。

3、实例

    1)创建PV(物理卷)

[root@localhost /]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb2  /dev/sdb5  /dev/sdb7
/dev/sda1  /dev/sdb   /dev/sdb3  /dev/sdb6  /dev/sdc
[root@localhost /]# pvcreate /dev/sdb{5..7}             #把分区创建为PV物理卷
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
  Physical volume "/dev/sdb7" successfully created
[root@localhost /]# pvs    #查看物理卷
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda2  rhel lvm2 a--  19.51g 40.00m
  /dev/sdb5       lvm2 ---   5.00g  5.00g
  /dev/sdb6       lvm2 ---   3.00g  3.00g
  /dev/sdb7       lvm2 ---   2.00g  2.00g
[root@localhost /]# pvcreate /dev/sdc            #把sdc磁盘创建为PV物理卷
  Physical volume "/dev/sdc" successfully created
[root@localhost /]# pvs    #查看物理卷
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda2  rhel lvm2 a--  19.51g 40.00m
  /dev/sdb5       lvm2 ---   5.00g  5.00g
  /dev/sdb6       lvm2 ---   3.00g  3.00g
  /dev/sdb7       lvm2 ---   2.00g  2.00g
  /dev/sdc        lvm2 ---  10.00g 10.00g

    2)创建VG(卷组),并指定PE大小为10M,卷组名为vg0

[root@localhost /]# vgcreate -s 10M vg0 /dev/sdb{6..7}   #创建VG
  Volume group "vg0" successfully created
[root@localhost /]# vgdisplay vg0   #查看vg0卷组详细信息
  --- Volume group ---
  VG Name               vg0      #卷组名
  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               4.99 GiB    #卷组容量大小
  PE Size               10.00 MiB   #PE大小
  Total PE              511
  Alloc PE / Size       0 / 0   
  Free  PE / Size       511 / 4.99 GiB
  VG UUID               G0JbtY-uExW-VtwT-y4pn-6Csk-n5jA-7CYTwp

    3)扩容vg0卷组

[root@localhost /]# vgextend vg0 /dev/sdb5    #扩容vg0卷组
  Volume group "vg0" successfully extended
[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  rhel   1   2   0 wz--n- 19.51g 40.00m
  vg0    3   0   0 wz--n-  9.98g  9.98g   #vg0大小由以上的5G变为了10G

    4)缩小vg0卷组

[root@localhost /]# vgreduce vg0 /dev/sdb7
  Removed "/dev/sdb7" from volume group "vg0"
[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  rhel   1   2   0 wz--n- 19.51g 40.00m
  vg0    2   0   0 wz--n-  7.99g  7.99g   #vg0大小由以上的10G变为了8G

    5)创建LV,大小为500M,逻辑卷名为lv0

[root@localhost /]# lvcreate -L 500M -n lv0 vg0    #创建LV
  Logical volume "lv0" created.
[root@localhost /]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao----  17.47g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-a----- 500.00m     #lv0逻辑卷

提示:创建LV可以用以下几种方式:

① lvcreate -L 500M -n lv0 vg0   # -L 指定大小

② lvcreate -l 50 -n lv0 vg0    # -l 指定PE的个数

③ lvcreate -l 10%free -n lv0 vg0   # -l 10%free 是指剩余空间的10%

    6)格式化lv0逻辑卷并挂载

    #格式化为xfs文件系统

[root@localhost /]# mkfs.xfs /dev/vg0/lv0 
meta-data=/dev/vg0/lv0           isize=256    agcount=4, agsize=32000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost /]# mount /dev/vg0/lv0 /lv0/
[root@localhost /]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root xfs        18G  4.1G   14G   23% /
devtmpfs              devtmpfs  783M     0  783M    0% /dev
tmpfs                 tmpfs     795M     0  795M    0% /dev/shm
/dev/sda1             xfs       497M  163M  335M   33% /boot
/dev/mapper/vg0-lv0   xfs       497M   26M  472M    6% /lv0     #xfs文件系统

    #格式化为ext4文件系统

[root@localhost /]# umount /dev/vg0/lv0 
[root@localhost /]# mkfs.ext4 /dev/vg0/lv0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=34078720
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

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

[root@localhost /]# mount /dev/vg0/lv0 /lv0
[root@localhost /]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root xfs        18G  4.1G   14G   23% /
devtmpfs              devtmpfs  783M     0  783M    0% /dev
tmpfs                 tmpfs     795M     0  795M    0% /dev/shm
tmpfs                 tmpfs     795M  8.6M  787M    2% /run
tmpfs                 tmpfs     795M     0  795M    0% /sys/fs/cgroup
/dev/sda1             xfs       497M  163M  335M   33% /boot
/dev/mapper/vg0-lv0   ext4      477M  2.3M  445M    1% /lv0     #ext4文件系统

    7)扩展LV

    #扩展ext4文件系统的lv0逻辑卷

[root@localhost /]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root xfs        18G  4.1G   14G   23% /
devtmpfs              devtmpfs  783M     0  783M    0% /dev
/dev/mapper/vg0-lv0   ext4      477M  2.3M  445M    1% /lv0            #ext4文件系统
#扩展lv0逻辑卷
[root@localhost /]# lvextend -L +300M /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 500.00 MiB (50 extents) to 800.00 MiB (80 extents).
  Logical volume lv0 successfully resized
[root@localhost /]# lvs /dev/vg0/lv0 
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv0  vg0  -wi-ao---- 800.00m     #查看lv0逻辑卷,由之前的500M变为了800M
#扩展文件系统
[root@localhost /]# resize2fs /dev/vg0/lv0 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg0/lv0 is mounted on /lv0; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 7
The filesystem on /dev/vg0/lv0 is now 819200 blocks long.

[root@localhost /]# df -hT|tail -1
/dev/mapper/vg0-lv0   ext4      767M  2.5M  724M    1% /lv0

    #扩展xfs文件系统的lv0逻辑卷

[root@localhost /]# df -hT|tail -1
/dev/mapper/vg0-lv0   xfs       797M   33M  765M    5% /lv0    #xfs文件系统,大小为800M
#扩展lv0逻辑卷,增加200M
[root@localhost /]# lvextend -L +200M /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 800.00 MiB (80 extents) to 1000.00 MiB (100 extents).
  Logical volume lv0 successfully resized
#扩展文件系统
[root@localhost /]# xfs_growfs /dev/vg0/lv0
meta-data=/dev/mapper/vg0-lv0    isize=256    agcount=4, agsize=51200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=204800, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=853, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 204800 to 256000
[root@localhost /]# df -hT|tail -1
/dev/mapper/vg0-lv0   xfs       997M   33M  965M    4% /lv0   #xfs文件系统,大小由之前的800M变为了1000M

注意:扩展逻辑卷步骤为

① 先扩展逻辑卷:lvextend -L +200M /dev/vg0/lv0 

② 再扩展文件系统:xfs_growfs  /dev/vg0/lv0    #ext4和xfs文件系统的扩展命令是不一样的。resize2fs是扩展ext4文件系统的命令。xfs_growfs是扩展xfs文件系统的命令。

    8)缩小LV

#缩小lv0逻辑卷,减少500M (提示:xfs文件系统不支持减小,只支持增加,ext4可以减小)

[root@localhost /]# df -hT|tail -1
/dev/mapper/vg0-lv0   ext4      969M  2.5M  900M    1% /lv0    #ext4文件系统,大小为1000M
[root@localhost /]# umount /lv0/      #先卸载lv0
[root@localhost /]# lvdisplay /dev/vg0/lv0    #检查lv0逻辑卷完整性
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                gdfWhj-tKFv-w281-m2dW-21wy-rnxf-Q8SS9g
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-06-13 14:41:20 +0800
  LV Status              available
  # open                 0
  LV Size                1000.00 MiB
  Current LE             100
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
[root@localhost /]# resize2fs /dev/vg0/lv0 500M -f    #减小文件系统
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 128000 (4k) blocks.
The filesystem on /dev/vg0/lv0 is now 128000 blocks long. 
[root@localhost /]# lvreduce -L 500M /dev/vg0/lv0           #减小lv0逻辑卷
  WARNING: Reducing active logical volume to 500.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv0? [y/n]: yes
  Size of logical volume vg0/lv0 changed from 1000.00 MiB (100 extents) to 500.00 MiB (50 extents).
  Logical volume lv0 successfully resized
[root@localhost /]# mount /dev/vg0/lv0 /lv0/     #挂载lv0逻辑卷
[root@localhost /]# df -hT |tail -1
/dev/mapper/vg0-lv0   ext4      477M  1.5M  440M    1% /lv0    #lv0逻辑卷由之前的1000M,变为了500M

注意:减小逻辑卷的严格4个步骤,必须严格顺序操作

① 先卸载逻辑卷

② 检查逻辑卷完整性

③ 减小文件系统

④ 减小逻辑卷


标签:逻辑,lv0,vg0,dev,LV,LVM,root,localhost
来源: https://blog.51cto.com/13716812/2408469