0%

centos7.* 使用LVM实现动态扩容大小

说明:当有在操作系统时发现磁盘空间不足时,可以通过增加磁盘空间大小来满足,但是以哪种方式来增加可能有不同方法,现在针对操作系统在安装采用LVM方式来动态调整磁盘空间大小,

知识点解释:

 LVM是逻辑盘卷管理(Logical VolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配

Linux的LVM非常强大,可以在生产运行系统上面直接在线扩展硬盘分区,可以把分区umount以后收缩分区大小,还可以在系统运行过程中把一个分区从一块硬盘搬到另一块硬盘上面去等等,简直就像变魔术,而且这一切都可以在一个繁忙运行的系统上面直接操作,不会对你的系统运行产生任何影响,很安全。

LVM使用有局限性。虽然能很方便的扩容和缩容磁盘的空间(扩容磁盘大小,文件不丢失),但是一旦出现问题,数据丢失,想要恢复数据就有点困难!

三步:

  • 创建一个物理分区-搞成物理卷
  • 制作成一个卷组
  • 划分成逻辑卷
    linux-centos7-LVM-2020415144543
  1. 如果在安装系统选择是以LVM方式安装的话,可以通过已经安装好后系统磁盘查询
1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 477M 0 477M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 6.6M 481M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 1.9G 49G 4% /
/dev/sda1 1014M 162M 853M 16% /boot
/dev/mapper/centos-home 74G 33M 74G 1% /home
/dev/sdb1 2.0T 81M 1.9T 1% /data
tmpfs 98M 0 98M 0% /run/user/0

以上说明 centos-root 和centos-home 是通过LVM方式来配置的
2. 使用df -T -h命令查看操作系统的文件类型

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# df -T -h
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 477M 0 477M 0% /dev
tmpfs tmpfs 488M 0 488M 0% /dev/shm
tmpfs tmpfs 488M 6.6M 481M 2% /run
tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 1.9G 49G 4% /
/dev/sda1 xfs 1014M 162M 853M 16% /boot
/dev/mapper/centos-home xfs 74G 33M 74G 1% /home
/dev/sdb1 ext4 2.0T 81M 1.9T 1% /data
tmpfs tmpfs 98M 0 98M 0% /run/user/0

说明:通过查询发现操作系统的文件格式是:xfs

  1. vgdisplay:查看卷组名称及卷组使用情况
    VG Size –总共的空间大小

  2. lvdisplay:查看当前逻辑卷的空间状态

  3. 现在感觉 /dev/centos/home的73.99G不够用,想扩容增加10G新插入一块10G的硬盘;

    • fdisk -l 查看 得知新硬盘是 /dev/sdc
    1
    2
    3
    4
    Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    • 格式化/dev/sdc

    fdisk /dev/sdc 然后依次 n p 回车 回车 w

    • 将 /dev/sdc配置为LVM格式

    fdisk /dev/sdc 然后依次 t(change a partition’s system id) l(type L to list all codes) 8e(8e Linux LVM) w

    • 查询配置为LVM格式后结果如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk label type: dos
    Disk identifier: 0xd87afe50

    Device Boot Start End Blocks Id System
    /dev/sdc1 2048 20971519 10484736 8e Linux LVM
    • 将新加的分区 /dev/sdc1 创建为物理卷

    root@localhost ~]# pvcreate /dev/sdc1
    Physical volume “/dev/sdc1” successfully created.

    • .给卷组‘centos ’扩容,将物理卷 /dev/sdc1 扩展至‘centos ’卷组

    vgextend centos /dev/sdc1

    • 此时卷组‘centos ’有10G空余空间,及 /dev/sdc1,将其全部扩展至 /home

    lvextend -l +100%FREE /dev/mapper/centos-home

    • 用xfs_growfs 命令把文件写入系统中,使扩容生效

    xfs_growfs /dev/mapper/centos-home

    • 关于把文件系统缩小!

    如果文件系统是xfs格式的,fs文件系统只支持增大分区空间的情况,不支持减小的情况(谨记谨记谨记)

    硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。记得备份原来数据。

    也就是说当执行过 xfs_growfs 之后 是无法在不丢失数据是情况下 执行 lvreduce -L -10G /dev/mapper/centos-home 缩小分区的。

本次扩容指令汇总:

  1. 创建分区                                                #fdisk /dev/sdb

  2. 创建物理卷                                             #pvcreat /dev/sdb1

  3. 查看卷组名称及使用情况                         #vgdisplay

  4. 将物理卷扩展到卷组                               #vgextend cl /dev/sdb1   (此处‘cl’是卷组名称)

  5. 将卷组中空闲空间扩展到 /home           #lvextend -l +100%FREE /dev/mapper/cl-home

  6. 刷新文件系统是扩容生效 xfs_growfs /dev/mapper/centos-root

  7. 若是ext4文件格式使用扩容生效                     #resize2fs /dev/mapper/centos-home