目录

LVM逻辑卷管理

LVM是Logical Volume Manager的缩写,中文逻辑卷管理,LVM是建立在磁盘分区和文件系统之间的一个逻辑层,LVM会更加灵活,可以动态扩容缩容分区大小。调整分区大小有风险,请做好充分测试再决定是否执行。
如果没有启用lvm,请查看linux磁盘扩容 - 非LVM
那么怎么知道机器有没有启用LVM呢,可以执行sudo lvdisplay查看有没有已存在的LV,对比df -hT里面的Filesystem,也可以用lsblk查看有没有lvm。

LVM 的一些概念

PV: 物理卷,比如一个分区,一个磁盘 VG: 卷组,将多个PV整合在一起,形成一个大的池子 LV: 逻辑卷,从VG划分出来一个个空间,可以当作分区来看待,可以格式化,可以挂载

常用命令

查看 扩展 创建
vgdisplay(vgs) vgextend vgcreate
lvdisplay(lvs) lvextend lvcreate
pvdisplay(pvs) pvcreate

扩容文件系统

物理扩容

虚拟机扩容就是扩容虚拟磁盘,物理机扩容比如可以增加硬盘。之后在系统里创建新分区

[root@centos7 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x602c2eec.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x602c2eec

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20971519    10484736   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

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

Calling ioctl() to re-read partition table.
Syncing disks.

这里有个疑问,如果不设置分区ID为8e,也不影响后续操作,但是fdisk -l /dev/sda的时候,查看到的新分区Type为Linux,而不是Linux LVM,不知道这两种有什么不同,知道的大佬麻烦告诉我一下。。

创建pv

这一步可以省略

pvcreate /dev/vdb1
pvdisplay

添加PV到VG

vgextend vg1 /dev/vdb1

添加完成sudo vgdisplay可以看到 Free PE / Size 的空间大小

创建或扩展LV

格式化并挂载

新创建的LV类似于硬盘分区,需要格式化后再挂载

  1. 格式化

    mkfs.xfs /dev/centos/newlv            
    mkfs.ext4 
    
  2. 挂载

    mount -t xfs /dev/centos/newlv /mnt/
    

调整文件系统大小

缩小文件系统

  1. 卸载文件系统

    umount /dev/vg_name/lv_name
    
  2. 检查文件系统是否有错误

    e2fsck -f /dev/vg0/lvm1
    
  3. 调整文件系统大小

    resize2fs /dev/vg0/lvm1 10G
    
  4. 调整LV的大小

    lvreduce -L 10G /dev/vg0/lvm1
    
  5. 重新挂载LV

    mount /dev/vg0/lvm1 /lvm1
    

移除PV

比如某个PV对应的硬盘损坏,需要更换,比如需要更换/dev/sdb

  1. 查看pv使用情况

    sudo pvdisplay
    

    查看对应的PV参数Allocated PE,若不为0表示有逻辑卷在使用,需要使用pvmove /dev/sdb将数据转移到其他空闲的PV上面

  2. 将PV从VG移出

    vgreduce vg_name /dev/sdb
    
  3. 移除PV

    pvremove /dev/sdb
    
  4. 更换硬盘,然后重新创建PV,添加VG等