CentOS7中基于LVM扩展根分区

故事前景

有一vmware虚拟机,磁盘大小设置为默认的20GB,安装的是CentOS7.4,安装CentOS默认使用GPT分区格式建立LVM分区。分区格式如下图所示:

CentOS7中基于LVM扩展根分区_第1张图片
node1原分区方式.png

系统根分区"/",其大小为17G,现觉得空间过小,满足不了使用需求**,因此产生了基于LVM技术对它进行扩容的想法。以下是具体的操作过程。

1. 增加磁盘空间

增加磁盘空间,可以调整原磁盘的大小,或者给虚拟机添加新的硬盘,操作期间都先关闭虚拟机。
我选择的是直接将原有的磁盘空间加大。操作如下图所示:

CentOS7中基于LVM扩展根分区_第2张图片
node1-调整磁盘大小.png

将原磁盘大小由20GB,拖动至100GB。确认以后,vmware会弹出提示:新的磁盘需要在虚拟机系统中进行相应操作后才能使用。(大致意思,对话框没有截图)

2. 进行LVM扩容

启动虚拟机,进入以后"df -h"查看分区和调整前一样。然后按如下顺序开始LVM扩容操作。

2.1 给新增加的硬盘建立分区

因为系统使用GPT分区格式建立的分区,所以这里使用"parted"指令完成对新增加硬盘空间的分区工作。(parted指令需要yum install parted安装)
系统中只有一块硬盘,刚才也只是将这块硬盘大小增加了,所以其设备名仍为前面图中的"/dev/sda",然后使用"parted /dev/sda"完成LVM分区操作。如果是新增加了另一块磁盘,则先通过"parted -l"查找到系统识别出来的磁盘设备名,再进行后续操作。

  • print
    查看现有分区


    CentOS7中基于LVM扩展根分区_第3张图片
    node1-原磁盘分区.png
  • mkpart primary 21.5GB 100%
    21.5GB是原有磁盘最后一个分区的位置,放在此处作为新建分区的起始位置,100%则表示整块磁盘的最大容量的位置处,简而言之就是将新增加的磁盘空间全部划为一个分区。


    CentOS7中基于LVM扩展根分区_第4张图片
    node1-新建分区.png
  • name 4 addpart
    4表示分区编号,在原有的三个分区之上又新建了一个分区,所以其编号自然为4,"addpart"自定义的分区名称,此步也可省略。


    CentOS7中基于LVM扩展根分区_第5张图片
    node1-给新建分区命名.png
  • set 4 lvm
    将新建的分区设置为lvm分区。

    CentOS7中基于LVM扩展根分区_第6张图片
    node1-将新建分区创建为lvm.png

    然后使用"quit"退出"parted"交互模式。parted区别于fdisk的地方,除了支持超过2T大小的分区外就是它的操作执行后即刻生效,无需显示地执行"w"操作。

2.2 LVM分区扩容

"parted"分区完成以后,使用fdisk也可以看到新建分区(sda4)的相关信息,如下可见原磁盘(/dev/sda)新增了80GB空间。

CentOS7中基于LVM扩展根分区_第7张图片
node1-新建分区查看.png

  • pvcreate /dev/sda4
    将/dev/sda4创建为新的PV。


    node1-创建新的PV.png
  • pvdisplay
    查看磁盘中的PV信息。

    CentOS7中基于LVM扩展根分区_第8张图片
    node1-PV信息.png

    从上可以看到两个PV都属于同一个名为"centos"的VG。

  • vgextend centos /dev/sda4
    扩容VG的大小,让centos这个VG包含新增的磁盘(/dev/sda4)。


    node1-VG扩容.png
  • vgdisplay
    查看VG的大小。


    CentOS7中基于LVM扩展根分区_第9张图片
    node1-VG扩容前的大小.png

    CentOS7中基于LVM扩展根分区_第10张图片
    node1-VG扩容后的大小.png
  • lvextend -L 80G /dev/centos/root
    80G表示将名为root的LV扩充到80GB,显然不够准确,增加了80GB空间,不应该是扩充至80GB。还可以使用+80GB,或者+unit 表示增加多个单位(扇区)。以下是我lvextend扩容过程。


    node1-LV扩容1.png

    node1-LV扩容2.png
  • resize2fs /dev/centos/root
    调整名为root的lv的大小,使其识别到新lv的大小。但出现错误"resize2fs: Bad magic number in super-block" centos为vg名,root为lv名。

    node1-LV扩容3.png

    出现此错误的原因是resize2fs只支持ext2,ext3,ext4文件系统分区大小调整。

  • xfs_growfs /dev/mapper/centos-root
    通过"mount"指令可以查询到CentOS7默认使用的是xfs文件系统,因此此处使用xfs_growfs指令调整其大小即可。"xfs_growfs"是xfs文件专用的扩容工具。

    CentOS7中基于LVM扩展根分区_第11张图片
    node1-xfs分区扩容.png

3. 验证扩容结果

  • df -h
    查看扩容的根分区大小。


    CentOS7中基于LVM扩展根分区_第12张图片
    node1-根分区扩容后.png

    从上面可以看到根分区扩容成功,重启后系统也工作正常,原磁盘数据未见损坏。

你可能感兴趣的:(CentOS7中基于LVM扩展根分区)