LVM

作者: 青蛙兄 分类: 运维基础 发布时间: 2019-11-10 23:57

主机磁盘分区大小不够使用的时候,可能大多数人会选择新增加一块容量更大的硬盘,然后重新格式化分区,但是新创建的分区是独立的文件系统,上层应用在同一个时刻只能访问一个文件系统,因此需要将原来的老分区的数据迁移到新分区,然后在将老分区下线,最后让新分区上线

存在的问题:

  • 间断服务,不能持续7*24小时
  • 数据迁移代价可能比较大

什么是LVM 动态磁盘管理
LVM(Logical Volume Manager)逻辑卷管理通过底层物理磁盘封装起来,以逻辑卷的形式表现给上层应用,逻辑卷的大小可以动态调整,而且不会丢失现有数据,逻辑卷大小调整时上层服务不需要中止,新加入的磁盘也不会改变现有上层逻辑卷
优势:
逻辑卷技术大大提升了磁盘管理的灵活性

PE Physical Extend 物理扩展
PE是LVM的最小存储单元,它有点像文件系统里面的block,默认PE的大小是4M

PV Physical Volume 物理卷
磁盘分区只有转换成PV后才能被LVM使用

VG Volume Group 卷组
卷组类似一个资源池,由PV组成

LV Logical Volume 逻辑卷
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上,可以在LV上创建文件系统

创建
物理分区转化为物理卷
pvcreate /dev/sdb1 /dev/sdc1
创建卷组,并将物理卷添加到卷组中
vgcreate vg1 /dev/sdb1 /dev/sdc1
创建逻辑卷
lvcreate -n lv1 -L 12G vg1
将逻辑卷格式化,创建文件系统
mkfs.ext4  /dev/vg1/lv1
挂载逻辑卷
mount /dev/vg1/lv1 /mnt

示例:
查看磁盘情况
#fdisk -l

将新挂载的磁盘进行分区

格式化/dev/sdc 第二块硬盘

查看磁盘情况

[root@mysql03 ~]# pvcreate /dev/sdb1 /dev/sdc1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.

查看状态

[root@mysql03 ~]# pvs  
  PV         VG     Fmt  Attr PSize   PFree    
  /dev/sda2  centos lvm2 a--  <19.00g      0   
  /dev/sdb1         lvm2 ---  <10.00g <10.00g  
  /dev/sdc1         lvm2 ---  <10.00g <10.00g  
[root@mysql03 ~]# pvdisplay  
  --- Physical volume ---  
  PV Name               /dev/sda2  
  VG Name               centos  
  PV Size               <19.00 GiB / not usable 3.00 MiB  
  Allocatable           yes (but full)  
  PE Size               4.00 MiB  
  Total PE              4863  
  Free PE               0  
  Allocated PE          4863  
  PV UUID               faZpzC-nqI1-mxZJ-fCro-Z3mQ-Ws1b-H61Qld  
     
  "/dev/sdb1" is a new physical volume of "<10.00 GiB"  
  --- NEW Physical volume ---  
  PV Name               /dev/sdb1  
  VG Name                 
  PV Size               <10.00 GiB  
  Allocatable           NO  
  PE Size               0     
  Total PE              0  
  Free PE               0  
  Allocated PE          0  
  PV UUID               5mfV71-dVsN-QUtm-uPI2-d4LS-FwXb-xYI1FV  
     
  "/dev/sdc1" is a new physical volume of "<10.00 GiB"  
  --- NEW Physical volume ---  
  PV Name               /dev/sdc1  
  VG Name                 
  PV Size               <10.00 GiB  
  Allocatable           NO  
  PE Size               0     
  Total PE              0  
  Free PE               0  
  Allocated PE          0  
  PV UUID               mhojrg-d1wg-Pn8T-64PI-QPtX-dnLJ-ZP5h0u  
创建VG
[root@mysql03 ~]# vgcreate vg1 /dev/sdb1 /dev/sdc1  
  Volume group "vg1" successfully created  
[root@mysql03 ~]# vgs  
  VG     #PV #LV #SN Attr   VSize   VFree   
  centos   1   2   0 wz--n- <19.00g     0   
  vg1      2   0   0 wz--n-  19.99g 19.99g  
[root@mysql03 ~]# vgdisplay  
  --- Volume group ---  
  VG Name               vg1  
  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               19.99 GiB  
  PE Size               4.00 MiB  
  Total PE              5118  
  Alloc PE / Size       0 / 0     
  Free  PE / Size       5118 / 19.99 GiB  
  VG UUID               bRX86m-q5YM-6YGV-l3SB-m1c6-hb7Z-42yaeT  
     
  --- Volume group ---  
  VG Name               centos  
  System ID               
  Format                lvm2  
  Metadata Areas        1  
  Metadata Sequence No  3  
  VG Access             read/write  
  VG Status             resizable  
  MAX LV                0  
  Cur LV                2  
  Open LV               2  
  Max PV                0  
  Cur PV                1  
  Act PV                1  
  VG Size               <19.00 GiB  
  PE Size               4.00 MiB  
  Total PE              4863  
  Alloc PE / Size       4863 / <19.00 GiB  
  Free  PE / Size       0 / 0     
  VG UUID               CZgG7n-Hp3M-bdip-zHxB-K9zV-NF5w-BBQ4jt  
创建逻辑卷
[root@mysql03 ~]# lvcreate -n lv1 -L 12G vg1  
  Logical volume "lv1" created.  
-n 指定lv名称 -L 分配大小 最后加上vg的名称
查看LV
[root@mysql03 ~]# lvs  
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  
  root centos -wi-ao---- <17.00g                                                      
  swap centos -wi-ao----   2.00g                                                      
  lv1  vg1    -wi-a-----  12.00g                                                      
[root@mysql03 ~]# lvdisplay  
  --- Logical volume ---  
  LV Path                /dev/vg1/lv1  
  LV Name                lv1  
  VG Name                vg1  
  LV UUID                oiRZA2-Q2Wf-TKpY-8jW5-pk2f-YTuY-u2WAyA  
  LV Write Access        read/write  
  LV Creation host, time mysql03, 2019-11-14 01:28:52 +0800  
  LV Status              available  
  # open                 0  
  LV Size                12.00 GiB  
  Current LE             3072  
  Segments               2  
  Allocation             inherit  
  Read ahead sectors     auto  
  - currently set to     8192  
  Block device           253:2  
     
  --- Logical volume ---  
  LV Path                /dev/centos/swap  
  LV Name                swap  
  VG Name                centos  
  LV UUID                oUFtxi-BQ5X-lEbt-52US-pGey-VrTF-ZN3afZ  
  LV Write Access        read/write  
  LV Creation host, time localhost, 2019-07-31 20:29:50 +0800  
  LV Status              available  
  # open                 2  
  LV Size                2.00 GiB  
  Current LE             512  
  Segments               1  
  Allocation             inherit  
  Read ahead sectors     auto  
  - currently set to     8192  
  Block device           253:1  
     
  --- Logical volume ---  
  LV Path                /dev/centos/root  
  LV Name                root  
  VG Name                centos  
  LV UUID                IDYmjb-4cLo-0cs7-Ztgu-uWjz-vTLd-rhO2X2  
  LV Write Access        read/write  
  LV Creation host, time localhost, 2019-07-31 20:29:51 +0800  
  LV Status              available  
  # open                 1  
  LV Size                <17.00 GiB  
  Current LE             4351  
  Segments               1  
  Allocation             inherit  
  Read ahead sectors     auto  
  - currently set to     8192  
  Block device           253:0  

查看并格式化
[root@mysql03 ~]# ls /dev/vg1/lv1  
/dev/vg1/lv1  
[root@mysql03 ~]# mkfs.ext4 /dev/vg1/lv1  
mke2fs 1.42.9 (28-Dec-2013)  
Filesystem label=  
OS type: Linux  
Block size=4096 (log=2)  
Fragment size=4096 (log=2)  
Stride=0 blocks, Stripe width=0 blocks  
786432 inodes, 3145728 blocks  
157286 blocks (5.00%) reserved for the super user  
First data block=0  
Maximum filesystem blocks=2151677952  
96 block groups  
32768 blocks per group, 32768 fragments per group  
8192 inodes per group  
Superblock backups stored on blocks:   
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208  
  
Allocating group tables: done                              
Writing inode tables: done                              
Creating journal (32768 blocks): done  
Writing superblocks and filesystem accounting information: done   

挂载和卸载 
[root@mysql03 ~]# mount /dev/vg1/lv1 /mnt  
[root@mysql03 ~]# df -lh  
Filesystem               Size  Used Avail Use% Mounted on  
/dev/mapper/centos-root   17G  2.2G   15G  13% /  
devtmpfs                 475M     0  475M   0% /dev  
tmpfs                    487M     0  487M   0% /dev/shm  
tmpfs                    487M  7.7M  479M   2% /run  
tmpfs                    487M     0  487M   0% /sys/fs/cgroup  
/dev/sda1               1014M  133M  882M  14% /boot  
tmpfs                     98M     0   98M   0% /run/user/0  
/dev/mapper/vg1-lv1       12G   41M   12G   1% /mnt  
[root@mysql03 ~]# lvremove /dev/vg1/lv1  
  Logical volume vg1/lv1 contains a filesystem in use.  
[root@mysql03 ~]# umount /mnt  
[root@mysql03 ~]# lvremove /dev/vg1/lv1  
Do you really want to remove active logical volume vg1/lv1? [y/n]: y  
  Logical volume "lv1" successfully removed  
[root@mysql03 ~]# lvs  
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert  
  root centos -wi-ao---- <17.00g                                                      
  swap centos -wi-ao----   2.00g    
VG删除
[root@mysql03 ~]# vgremove vg1  
  Volume group "vg1" successfully removed  
[root@mysql03 ~]# vgs  
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <19.00g    0  
PV删除
[root@mysql03 ~]# pvremove /dev/sdb1  
  Labels on physical volume "/dev/sdb1" successfully wiped.  
[root@mysql03 ~]# pvs  
  PV         VG     Fmt  Attr PSize   PFree    
  /dev/sda2  centos lvm2 a--  <19.00g      0   
  /dev/sdc1         lvm2 ---  <10.00g <10.00g  
2条评论
  • 匿名

    2019-11-14 下午3:09

    😳

  • 匿名

    2019-11-16 下午9:06

    😉 😉 😉

发表评论

电子邮件地址不会被公开。