[玩转系统] KVM:如何扩展或缩小虚拟机磁盘大小?
作者:精品下载站 日期:2024-12-14 20:11:59 浏览:16 分类:玩电脑
KVM:如何扩展或缩小虚拟机磁盘大小?
在本文中,我们将讨论如何调整流行磁盘类型的 KVM 虚拟机磁盘大小。我们将展示如何在 Linux 上的 KVM 管理程序中正确增加虚拟机磁盘大小而不丢失数据,并讨论减少磁盘大小的选项。
如何增加/扩展 KVM 虚拟机磁盘大小?
在KVM上增加虚拟磁盘
让我们考虑一个增加 20GB 虚拟磁盘大小的示例。在更改虚拟磁盘设置之前关闭虚拟机。
要查看 KVM 虚拟机的虚拟磁盘设置,请使用以下命令:
qemu-img info /path_to_disk
你会看到这样的结果:
我们看到有两个字段显示大小:virtual_size 和 disk_size:
virtual_size - 是创建或扩展磁盘时虚拟磁盘集的大小(在本例中,最大磁盘大小为20GB);
disk_size — 是磁盘文件的当前大小,即。即磁盘在物理服务器上占用了多少空间(仅适用于 qcow 磁盘格式)。在我们的示例中,虚拟磁盘仅占用 1.6GB 存储空间。
还有一些关于 KVM 磁盘类型(格式)的内容。我建议在 KVM 中创建虚拟机时使用 qcow2 而不是 raw。稍后我会解释原因。
在下一步中,我将把虚拟机的大小增加 5GB(为了正确扩展磁盘,虚拟机不能有任何快照!)。
# qemu-img resize /path to disk +5G
Image resized.
如果您检查虚拟磁盘设置,您会发现它已被扩展:
# qemu-img info /path_to_disk
image: /path_to_disk
file format: qcow2
virtual size: 25G (26843535600 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16
我们已经完成了部分工作,但我们还需要在虚拟机的来宾操作系统中进行一些操作。现在我们将展示如何扩展来宾 CentOS 7 和 Windows Server 2012 R2 中的磁盘大小。
如果您要在 KVM 管理程序中为 VM 添加另一个虚拟磁盘,
qemu-img
和
virsh
使用工具。
如何在运行 CentOS Linux 的虚拟机中扩展分区?
增加 KVM 服务器端的虚拟磁盘大小后,启动虚拟机并连接到它。我们将使用硬盘分区管理工具fdisk来扩展分区和文件系统大小。
通过 SSH 连接到 VM 来宾操作系统,并确保出现额外的 5 Gb 磁盘空间。
df -h
fdisk -l
截图显示/dev/vda2大小为20GB,可用磁盘空间为25GB。
让我们将 /dev/vda2 扩展到最大可用大小:
# fdisk /dev/vda
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.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 is deleted
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2):
First sector (1050624-52428799, default 1050624):
Using default value 1050624
Last sector, +sectors or +size{K,M,G} (1050624-52428799, default 52428799):
Using default value 52428799
Partition 2 of type Linux and of size 24.5 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
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)
Syncing disks.
然后重新启动虚拟机并运行将应用新磁盘大小的命令:
# xfs_growfs /dev/vda2
meta-data=/dev/vda2 isize=512 agcount=4, agsize=1277888 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5111552, 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
data blocks changed from 5111552 to 6422272
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
这样我们就得到了一个扩展分区/dev/vda2。这就是我们所做的:
fdisk /dev/vda — 我们运行 fdisk 并连接到 /dev/vda;
/d — 我们删除了分区。默认情况下,它是我们需要的分区2,所以我们只需在下一项中按Enter键即可;
/n - 我们创建了一个新分区,然后按 Enter 或 p,然后再次按 Enter,因为我们尝试创建的分区默认为 2;
-
当指定第一个和最后一个扇区时,如果您想将分区扩展到最大,我们也只需按 Enter 键即可。如果要设置具体大小,则在菜单中输入最后一个扇区的磁盘大小+size{K,M,G};
/w — 应用新设置。
VM 重新启动后,使用以下命令检查磁盘:
xfs_growfs /dev/vda2
一些来源建议使用以下命令:
resize2fs /dev/vda2
但它不适用于 XFS 文件系统!
因此,您已经扩展了运行 CentOS 7 的虚拟机上的磁盘大小。
如何增加来宾 Windows 服务器中的磁盘大小?
使用RDP或VNC连接到Windows Server虚拟机并扩展磁盘。
打开服务器管理器->工具->计算机管理;
在左侧窗格中选择存储 -> 磁盘管理。添加的所有磁盘分区和未分配空间都会出现;
选择需要增加的分区,点击扩展卷;
默认情况下,将提供所有可用空间以增加磁盘大小;
单击“下一步”完成扩展。之后,分区的大小将会增加。
我想指出的是,在虚拟机磁盘扩展之前,我建议您备份虚拟磁盘。停止虚拟机并将磁盘映像复制到具有一些可用空间的备份目录。如果扩展过程中出现问题,您始终可以从备份中恢复虚拟磁盘映像。
如何减少KVM虚拟机的磁盘大小?
在我的工作中,我经常遇到这个问题,但不幸的是,您无法安全地减少 KVM 中虚拟机的磁盘大小。减少物理存储上的虚拟磁盘大小的唯一可接受的方法是转换磁盘。
网上有很多指南讲述如何减少 KVM 虚拟机中的磁盘空间,但这不起作用。
我将举一些我遇到和测试过的例子。
使用 Qemu 减少 KVM 磁盘大小
一些资源描述了您可以使用 qemu 工具执行的操作。他们提供使用以下命令来减少虚拟机磁盘空间:
qemu-img resize /path_to_disk -5G
— 将磁盘空间缩小 5G
或者使用以下选项设置特定虚拟磁盘大小:
qemu-img resize /path_to_disk 25G
— 将磁盘大小设置为 25G
运行此命令后会发生什么?启动服务器后,系统无法启动:
Unable to verify superblock, continuing...
Sorry, could not find valid secondary superblock. Exiting now.
我尝试先使用 fdisk 减小系统中的磁盘大小,但即使您跳过缩小物理服务器上的磁盘,系统也不会启动。这是非常合乎逻辑的。我们尝试减少的分区是系统分区,操作系统将无法启动,因为在尝试减少其大小时,其上的信息显然会被擦除。
使用映像替换减小虚拟磁盘大小
这些指南中不太受欢迎的变体是使用磁盘更换来减少磁盘空间。这意味着您创建了一个具有所需磁盘大小的新虚拟机。然后,您将新的磁盘映像替换为旧的磁盘映像,它会根据不同来源的描述进行工作。我检查了这个方法,文件系统变得无法操作,就像之前的变体一样。以下是该命令的示例:
virt-resize /old_disk_image /new_disk_image
还有一些方法使用从原始格式到 qcow2 格式的磁盘转换,但我最初以这种格式创建机器,这里是我这样做的解释。
KVM 磁盘格式和 QCOW2 磁盘压缩
在文章开头我提到了这两种磁盘格式:raw 和 qcow。
原始优势是最大的性能和通用性。但它也有很多缺点,主要是:
虚拟磁盘文件占用了物理服务器上分配给它的所有空间;
您无法拍摄快照。
Qcow2 是原生 QEMU 和 QEMU-KVM 虚拟机管理程序格式。它是 KVM 支持的所有其他格式中最方便的虚拟磁盘格式。磁盘镜像随着虚拟机中数据的积累而增加,并且支持快照。
qcow2有什么优点?您无需减小虚拟磁盘的大小,因为它仅在服务器存储上占用所需的空间。如果您的服务器上的数据不断被覆盖,并且磁盘已经膨胀,您可以轻松地压缩它。让我们考虑一下这个选项。我将用零填充一些虚拟磁盘空间,然后删除该文件:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
从服务器上查看,之前磁盘镜像的大小是2.4G,后来变成了5.9G:
# du -sh /image_path
2.4G *****
# du -sh /图像路径
5.9G *****
这意味着删除虚拟机中的信息后,虚拟磁盘大小并没有缩小。为了使虚拟磁盘文件能够获得其实际大小,我使用以下方法:
备份虚拟磁盘文件,停止虚拟机,然后执行以下步骤:
qemu-img convert -O qcow2 /old_image /new_image
然后您可以比较两个磁盘的大小:
# du -sh /new_disk
1.6G /****
# du -sh /old_disk
5.8G /****
可以看到,压缩后的磁盘大小为1.6G。根据需要重命名新的磁盘映像文件并启动虚拟机:
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
这个方法有效。我一直使用它,没有出现过虚拟机中的文件系统出现故障的情况。但我强烈建议在执行任何操作之前备份磁盘,以免丢失任何数据。
这就是我在这篇文章中想要讲述的全部内容。如果本网站的任何访问者知道任何其他真正可行的方法来减少 KVM 上的磁盘大小(不是压缩),请在此处描述它们,我将测试它们。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag