kvm虚拟机扩展根分区

1. 概述

本篇博客主要记录如何扩展kvm虚拟机的根文件系统。

2. 信息确认

2.1 确认当前的虚拟机的根文件系统

[root@node98 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   20G  0 disk 
├─vda1 253:1    0  500M  0 part /boot
└─vda2 253:2    0 19.5G  0 part /
[root@node98 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G  8.6M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/vda2        20G  1.6G   18G    9% /
/dev/vda1       497M  135M  363M   28% /boot
tmpfs           379M     0  379M    0% /run/user/0

kvm虚拟机node98上面:

  • 仅有块虚拟磁盘设备/dev/vda
  • /dev/vda1挂载到/boot分区,/dev/vda2挂载到/分区

2.2 确认当前操作系统版本和文件系统

[root@node98 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@node98 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sun Aug  1 11:07:42 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2a0bc218-ba0d-4acb-8d41-2520c7a93390 /                       xfs     defaults        0 0
UUID=77547232-30c9-473c-ad4b-f04cae17316f /boot                   xfs     defaults        0 0

node98使用了centos7默认的xfs文件系统

xfs和ext4文件系统使用的扩展文件系统命令不同

3. 物理机操作

一,首先关闭虚拟机node98

在物理机执行操作:virsh destroy node98

二,查看node98的磁盘镜像文件位置

在物理机执行操作:virsh domblklist node98,查看到镜像文件为:/var/lib/libvirt/images/node98.qcow2

三,扩展磁盘文件大小

在物理机执行操作:qemu-img resize /var/lib/libvirt/images/node98.qcow2 +30G,node98的磁盘大小从之前的20G增加到了50G

四,开启虚拟机查看信息

在物理机执行操作:virsh start node98。开机之后,node98执行df -h,结果如下:

[root@node98 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G  8.6M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/vda2        20G  1.6G   18G    9% /
/dev/vda1       497M  135M  363M   28% /boot
tmpfs           379M     0  379M    0% /run/user/0

执行lsblk,结果如下:

[root@node98 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   50G  0 disk 
├─vda1 253:1    0  500M  0 part /boot
└─vda2 253:2    0 19.5G  0 part /

执行fdisk -l /dev/vda,结果如下:

[root@node98 ~]# fdisk -l /dev/vda

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ca1d8

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    41943039    20458496   83  Linux

总结:从df -hlsblk文件系统层面来看,node98的分区和文件系统并没有改变。但是fdisk查看磁盘的分区情况,发现/dev/vda2的End的大小已经变化了。

4. 虚拟机操作

4.1 对磁盘重新分区

此时需要在虚拟机里面,重新分区。操作如下:

[root@node98 ~]# fdisk -c /dev/vda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):p

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ca1d8

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048    41943039    20458496   83  Linux

命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 2 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ca1d8

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     1026047      512000   83  Linux

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (1026048-104857599,默认为 1026048):
将使用默认值 1026048
Last 扇区, +扇区 or +size{K,M,G} (1026048-104857599,默认为 104857599):
将使用默认值 104857599
分区 2 已设置为 Linux 类型,大小设为 49.5 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ca1d8

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     1026047      512000   83  Linux
/dev/vda2         1026048   104857599    51915776   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

上面的操作总结为:

  • 查看当前分区情况
  • 执行d删除分区2、也就是/dev/vda2
  • 再查看当前分区情况,确认分区2已经删除
  • 执行分区命令:n
  • 选择分区类型:p
  • 然后就是一直回车,默认选择即可

上面执行结束后,物理机执行:virsh destory node98关机

4.2 拉伸文件系统

物理机执行:virsh start node98开机,然后执行:xfs_growfs /dev/vda2,结果如下:

[root@node98 ~]# xfs_growfs /dev/vda2 
meta-data=/dev/vda2              isize=512    agcount=4, agsize=1278656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5114624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

然后执行:df -h查看,分区已经拉升

[root@node98 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.9G     0  1.9G    0% /dev
tmpfs           1.9G     0  1.9G    0% /dev/shm
tmpfs           1.9G  8.6M  1.9G    1% /run
tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/vda2        50G  1.6G   48G    4% /
/dev/vda1       497M  135M  363M   28% /boot
tmpfs           379M     0  379M    0% /run/user/0
[root@node98 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   50G  0 disk 
├─vda1 253:1    0  500M  0 part /boot
└─vda2 253:2    0 49.5G  0 part /
posted @ 2022-06-21 15:38  liwldev  阅读(125)  评论(0编辑  收藏  举报