英语法语西班牙文

OnWorks 网站图标

virt-resize - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 virt-resize

这是 virt-resize 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


virt-resize - 调整虚拟机磁盘的大小

概要


virt-resize [--resize /dev/sdaN=[+/-] [%]]
[--扩展/dev/sdaN] [--收缩/dev/sdaN]
[--忽略 /dev/sdaN] [--删除 /dev/sdaN] [...] indisk outdisk

商品描述


virt-resize 是一个工具,可以调整虚拟机磁盘的大小,使其变大或变小
整体,并调整大小或删除其中包含的任何分区。

调整大小 不能 就地调整磁盘映像的大小。 调整大小 应该 而不去 在直播中使用
虚拟机 - 为了获得一致的结果,请在调整大小之前关闭虚拟机
它。

如果您不熟悉相关工具: 虚拟文件系统(1)和 虚拟机(1)、我们
建议您先去阅读那些手册页。

示例


1. 将“olddisk”复制到“newdisk”,扩展guest分区之一以填充额外的分区
5GB 空间。

虚拟文件系统 --long -h --all -a olddisk

截断 -r olddisk 新磁盘
truncate -s +5G 新盘

# 注意“/dev/sda2”是“olddisk”文件内的一个分区。
virt-resize --expand /dev/sda2 旧磁盘 新磁盘

2. 同上,但使 /启动 分区大 200MB,同时留出剩余空间
到 /dev/sda2:

virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 \
旧盘 新盘

3. 与第一个示例一样,但将扩展逻辑卷作为最后一步。 这是什么
您通常会用于使用 LVM 的 Linux 客户机:

virt-resize --expand /dev/sda2 --LV-expand /dev/vg_guest/lv_root \
旧盘 新盘

4. 和第一个例子一样,但输出格式将是 qcow2 而不是原始磁盘:

qemu-img create -f qcow2 -o 预分配=元数据 newdisk.qcow2 15G
virt-resize --expand /dev/sda2 旧磁盘 新磁盘.qcow2

产品详情 用法


扩大 A VIRTUAL DISK
1.关闭虚拟机
2.定位输入磁盘镜像
找到输入磁盘映像(即主机上包含来宾的文件或设备
盘)。 如果来宾是由 libvirt 管理的,则可以像这样使用“virsh dumpxml”
找到磁盘映像名称:

# virsh dumpxml 来宾名 | xpath /域/设备/磁盘/源
找到 1 个节点:
-- 节点 --


3. 查看当前尺寸
使用 VHDL 语言编写 虚拟文件系统(1) 显示当前分区和大小:

# 虚拟文件系统 --long --parts --blkdevs -h -a /dev/vg/lv_guest
名称 类型 大小 父级
/dev/sda1 分区 101M /dev/sda
/dev/sda2 分区 7.9G /dev/sda
/dev/sda 设备 8.0G -

(此示例是一个具有 8 GB 磁盘的虚拟机,我们希望将其扩展到
到 10 GB)。

4. 创建输出盘
Virt-resize 不能进行就地磁盘修改。 你必须有存储空间
调整大小的输出磁盘。

要将调整大小的磁盘映像存储在文件中,请创建一个合适大小的文件:

# rm -f 外盘
# truncate -s 10G 外盘

或者使用 创建(1)创建逻辑卷:

# lvcreate -L 10G -n lv_name vg_name

或者使用 维尔什(1) vol-create-as 创建一个libvirt存储卷:

# virsh 池列表
# virsh vol-create-as 池名称 newvol 10G

5. 调整大小
virt-resize 需要两个强制参数,输入磁盘(例如设备、文件或 URI
到远程磁盘)和输出磁盘。 输出磁盘是在
前一步。

# virt-resize indisk outdisk 虚拟机调整 indisk outdisk 大小

此命令只是将磁盘映像“indisk”复制到磁盘映像“outdisk” 也完全不需要 调整大小
或更改任何现有分区。 如果“outdisk”更大,则额外的空
分区是在磁盘的末尾创建的,覆盖了额外的空间。 如果“外盘”是
小了,就会报错。

更现实的是,您希望通过以下方式扩展磁盘映像中的现有分区
传递额外的选项(有关完整列表,请参阅下面的“选项”部分)。

“--expand”是最有用的选项。 它扩展磁盘内的命名分区
填充任何额外的空间:

# virt-resize --expand /dev/sda2 indisk outdisk

(在这种情况下,一个额外的分区是 而不去 在磁盘末尾创建,因为有
将没有未使用的空间)。

“--resize”是另一个常用的选项。 以下将增加大小
/dev/sda1 增加 200M,并扩展 /dev/sda2 以填充剩余的可用空间:

# virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 \
磁盘外磁盘

如果映像中的扩展分区包含文件系统或 LVM PV,则如果 virt-
resize 知道怎么做,它会调整内容的大小,相当于调用一个命令
调整大小(8) 调整大小2fs(8) ntfs调整大小(8) BTRFS(8)或 xfs_growfs(8). 然而
virt-resize 不知道如何调整一些文件系统的大小,所以你必须在线
引导来宾后调整它们的大小。

# virt-resize --expand /dev/sda2 nbd://example.com outdisk

输入磁盘可以是 URI,以便使用远程磁盘作为源。 URI
格式与guestfish 兼容。 请参阅“添加远程存储” 客鱼(1)。

下面介绍了其他选项。

6。 测试
彻底测试新磁盘映像 before 丢弃旧的。

如果您使用的是 libvirt,请编辑 XML 以指向新磁盘:

# virsh 编辑客人名

改变, 看 http://libvirt.org/formatdomain.html#elementsDisks

然后使用调整大小的新磁盘启动域:

# virsh 开始来宾名

并检查它是否仍然有效。 另请参阅下面的“注意事项”部分以获取更多信息
信息。

7.在guest中调整LV等大小
(这也可以使用离线完成 客鱼(1))

来宾启动后,您应该会看到可用的新空间,至少在
virt-resize 的文件系统知道如何调整大小和 PV。 用户可能需要
调整 PV 内 LV 的大小,以及调整 virt-resize 不知道的文件系统类型的大小
如何扩展。

收缩 A VIRTUAL DISK
收缩比扩展稍微复杂一些,这里只给出一个概述。

首先 virt-resize 不会尝试缩小任何分区内容(PV、文件系统)。
用户必须在将磁盘映像传递给 virt-resize 和 virt-
resize 将检查内容是否已正确缩小。

(收缩也可以离线使用 客鱼(1))

缩小 PV 和文件系统后,关闭来宾,然后继续执行第 3 步和第 4 步
上面分配一个新的磁盘映像。

然后使用任何一个运行 virt-resize - 收缩--调整大小 选项​​。

忽略 OR 删除 分区
virt-resize 还提供了一种方便的方法来在从复制时忽略或删除分区
输入磁盘到输出磁盘。 忽略分区可加快您所在位置的复制速度
不关心分区的现有内容。 删除分区会将其删除
完全,但请注意,它还会在删除的分区之后重新编号任何分区,
这可能会让一些客人无法启动。

QCOW2 AND 非稀疏 未处理 FORMATS
如果输入磁盘是 qcow2 格式,那么您可能更喜欢输出是 qcow2
格式也一样。 或者,virt-resize 可以即时转换格式。 输出
格式仅由您提供的空输出容器的格式决定。
因此要创建 qcow2 输出,请使用:

qemu-img create -f qcow2 -o preallocation=metadata outdisk [大小]

而不是 truncate 命令。

同样,要获得非稀疏原始输出,请使用:

fallocate -l 大小外盘

(在没有 错误定位(1) 命令使用"dd if=/dev/zero of=outdisk
bs=1M 计数=..")

逻辑上 分区
逻辑分区(又名 /开发/sda5+ 在使用 DOS 分区表的磁盘上)不能
调整大小。

要了解发生了什么,首先是四个分区之一 /开发/sda1-4 将有
MBR 分区类型 05 或“0f”。 这被称为 扩展 。 使用
虚拟文件系统(1)看MBR分区类型。

逻辑分区位于扩展分区内。

扩展分区可以扩展,但不能收缩(除非你强制它,这不是
建议)。 当扩展分区被复制时,所有的逻辑分区
包含在里面被隐式复制。 Virt-resize 不看内部
扩展分区,所以盲目复制逻辑分区。

您不能指定逻辑分区 (/开发/sda5+) 在命令行上。 这样做
会报错。

配置


- 帮帮我
显示帮助。

--先对齐 汽车
--先对齐 决不要
--先对齐 时刻
对齐第一个分区以提高性能(另请参阅 - 结盟 选项)。

默认是 --先对齐 汽车 仅在安全的情况下对齐第一个分区
这样做。 也就是说,只有当我们知道如何自动修复引导加载程序,并且在
只有 Windows 来宾才能做到的那一刻。

--先对齐 决不要 意味着我们永远不会移动第一个分区。 这是最安全的
选项。 如果来宾在调整大小后未启动,请尝试此操作。

--先对齐 时刻 意味着我们总是对齐第一个分区(如果需要的话
对齐)。 对于某些来宾,这会破坏引导加载程序,使来宾
无法启动。

- 结盟 N
将分区对齐设置为“N”扇区。 virt-resize 中的默认值 < 1.13.19
是 64 个扇区,然后是 128 个扇区。

假设来宾内部的扇区大小为 512 字节,以下是一些合适的值
这个:

- 结盟 1 (512个字节)
分区将尽可能紧密地包装在一起,但会
完全不对齐。 在某些情况下,这会导致性能非常差。 看
虚拟对齐扫描(1) 了解更多详情。

- 结盟 8 (4K)
这将是合理性能的最低可接受对齐
现代主机。

- 结盟 128 (64K)
当主机使用高端网络时,这种对齐提供了良好的性能
存储。

- 结盟 2048 (1M)
这是所有新安装的客人使用的标准对齐方式
2008.

-d
-调试
(弃用:使用 -v 选项)

启用调试消息。

--调试-gc
调试垃圾收集和内存分配。 这仅在调试时有用
virt-resize 或 OCaml libguestfs 绑定中的内存问题。

- 删除 部分
删除命名分区。 将其描述为“不要复制”会更准确
它结束了”,因为 virt-resize 不会进行就地更改,并且原始磁盘映像是
完好无损。

请注意,当您删除一个分区时,该分区中包含的任何内容都是
也删了。 此外,这会导致后面的任何分区
重新编号,这很容易使您的访客无法启动。

您可以多次提供此选项。

- 扩张 部分
展开命名分区,使其用完所有额外空间(在任何
您请求的其他调整大小更改已完成)。

如果 virt-resize 知道如何,它将扩展分区的直接内容。 为了
例如,如果分区是 LVM PV,它将扩展 PV 以适应(如调用
调整大小(8))。 Virt-resize 会留下它不知道的任何其他内容。

目前 virt-resize 可以调整大小:

· ext2、ext3 和 ext4 文件系统。

· NTFS 文件系统,如果 libguestfs 是在支持 NTFS 的情况下编译的。

文件系统必须在上次使用时一直关闭。
此外, ntfs调整大小(8) 将调整大小的文件系统标记为需要
一致性检查,因此在调整 Windows 大小后的第一次启动时会检查
磁盘。

· LVM PV(物理卷)。 virt-resize 通常不会调整里面的任何东西
PV,但请参阅 --LV-展开 选项。 用户还可以根据需要调整 LV 的大小
开机后。

· Btrfs 文件系统,如果 libguestfs 是在支持 btrfs 的情况下编译的。

· XFS 文件系统,如果 libguestfs 编译时支持 XFS。

请注意,您不能使用 - 扩张- 收缩 在一起。

- 格式
指定输入磁盘映像的格式。 如果没有给出这个标志,那么它是
从图像本身自动检测。

如果使用不受信任的原始格式来宾磁盘映像,您应该确保格式
始终指定。

注意这个选项 而不去 影响输出格式。 请参阅“QCOW2 和非稀疏
原始格式”。

- 忽略 部分
忽略命名分区。 这实际上意味着分区被分配在
目标磁盘,但内容不会从源磁盘复制。 这
分区的内容将为空白(全零字节)。

您可以多次提供此选项。

--LV-展开 日志卷
这需要逻辑卷,并作为最后一步,扩展它以填充所有空间
在其卷组中可用。 一个典型的用法,假设一个 Linux 来宾有一个
PV / dev / sda2 和一个名为的根设备 /dev/vg_guest/lv_root 将会:

virt-resize indisk outdisk \
--expand /dev/sda2 --LV-expand /dev/vg_guest/lv_root

这将首先扩展分区(和 PV),然后将根设备扩展到
填充 PV 中的额外空间。

如果 virt-resize 知道怎么做,LV 的内容也会被调整大小。 你可以
阻止 virt-resize 尝试使用该选项扩展内容
--无扩展内容.

使用 VHDL 语言编写 虚拟文件系统(1) 列出来宾中的文件系统。

您可以多次提供此选项, 但是 这样做没有意义,除非
您指定的逻辑卷都在不同的卷组中。

--机器可读
此选项用于在被解析时使输出对机器更友好
其他程序。 请参阅下面的“机器可读输出”。

-n
--试运行
打印将要做的事情的摘要,但不要做任何事情。

--无复制引导加载程序
默认情况下,virt-resize 复制磁盘开头的某些扇区(直到
第一个分区的开头)。 通常这些扇区包含主引导
记录 (MBR) 和引导加载程序,并且是来宾引导所必需的
正确。

如果您指定此标志,则不会完成此初始副本。 你可能需要
在这种情况下重新安装引导加载程序。

--无额外分区
默认情况下,如果有任何额外的未使用空间,virt-resize 会创建一个额外的分区
在所有调整大小发生后。 使用此选项可防止额外分区
正在创建。 如果你这样做,那么额外的空间将无法访问,直到你运行
fdisk、parted 或来宾中的其他一些分区工具。

请注意,如果剩余空间小于 10 MB,则不会有额外的分区
创建。

--无扩展内容
默认情况下,virt-resize 将尝试扩展分区的直接内容,如果它
知道如何(见 - 扩张 以上选项)。

如果你给 --无扩展内容 选项然后 virt-resize 不会尝试这个。

--无稀疏
关闭稀疏复制。 请参阅下面的“稀疏复制”。

--ntfsresize-强制
通过 - 力量 选项 ntfs调整大小(8) 允许调整大小,即使是 NTFS 磁盘
标记为需要一致性检查。 如果你想,你必须使用这个选项
多次调整 Windows 来宾的大小,而无需在每次之间启动到 Windows
调整大小。

- 输出格式
指定输出磁盘映像的格式。 如果没有给出这个标志,那么它是
从图像本身自动检测。

如果使用不受信任的原始格式来宾磁盘映像,您应该确保格式
始终指定。

注意这个选项 而不去 创建信息图 输出格式。 这个选项只是告诉
libguestfs 它是什么,所以它不会试图猜测它。 您仍然需要创建
以正确的格式输出磁盘。 请参阅“QCOW2 和非稀疏原始格式”。

-q
- 安静的
不要打印摘要。

--调整大小 部分=尺寸
调整命名分区的大小(扩展或缩小它),使其具有给定的大小。

“大小”可以表示为绝对数字,后跟 b/K/M/G 表示字节,
千字节、兆字节或千兆字节; 或作为当前大小的百分比; 或作为
相对数量或百分比。 例如:

--调整/dev/sda2=10G的大小

--调整/dev/sda4=90%的大小

--调整/dev/sda2=+1G的大小

--调整/dev/sda2=-200M的大小

--调整/dev/sda1=+128K的大小

--调整/dev/sda1=+10%的大小

--调整/dev/sda1=-10%的大小

您可以增加任何分区的大小。 virt-resize 将直接扩展
分区的内容,如果它知道如何(请参阅 - 扩张 以上)。

你只能 减少 包含文件系统或 PV 的分区的大小
已经缩小了。 virt-resize 将检查这之前是否已完成
继续,否则将打印错误(另请参见 --调整大小-力).

您可以多次提供此选项。

--调整大小-力 部分=尺寸
这和 --调整大小 除了它会让你减少任何的大小
划分。 通常,这意味着您将丢失在结束时的任何数据
您缩小的分区,但您可能不在乎(例如,如果缩小未使用的
分区,或者如果您可以轻松地重新创建它,例如交换分区)。

另见 - 忽略 选项。

- 收缩 部分
缩小命名分区,直到整个磁盘映像适合目标。 这
命名分区 必须 包含一个已经被压缩的文件系统或 PV
另一个工具(例如 客鱼(1) 或其他在线工具)。 Virt-resize 会检查这个
并在未完成时给出错误。

整个磁盘必须收缩的量(在执行所有其他
用户请求的操作)称为“赤字”。 例如,一个直
从 5GB 磁盘映像复制(假设没有其他操作)到 4GB 磁盘映像会导致
1GB的赤字。 在这种情况下,除非用户
指定要缩小的分区,并且该分区有超过 XNUMX GB 的可用空间
空间。

请注意,您不能使用 - 扩张- 收缩 在一起。

--unknown-文件系统 忽略
--unknown-文件系统 警告
--unknown-文件系统 错误
在要求扩展文件系统时配置 virt-resize 的行为,并且两者都不
libguestfs 有支持,virt-resize 也不知道如何扩展内容
文件系统。

--unknown-文件系统 忽略 将导致 virt-resize 默默地忽略这样的
文件系统,并且没有打印任何关于它们的内容。

--unknown-文件系统 警告 (默认行为)将导致 virt-resize 警告
每个无法扩展但仍在继续调整大小的文件系统
磁盘。

--unknown-文件系统 错误 将导致 virt-resize 首先出错
无法扩展的文件系统。

另请参阅“在 DEVICE/LV 上扩展 TYPE 文件系统的未知/不可用方法”。

-v
--详细
启用调试消息。

-V
- 版
显示版本号并退出。

-x 启用对 libguestfs API 调用的跟踪。

可读的 OUTPUT


这款 --机器可读 选项可用于使输出更机器友好,这
从其他程序、GUI 等调用 virt-resize 时很有用。

有两种方法可以使用此选项。

首先单独使用该选项来查询 virt-resize 二进制文件的功能。
典型的输出如下所示:

$ virt-resize --机器可读
虚拟调整大小
ntfsresize-强制
32比托克
NTFS
BTRFS

打印一个特性列表,每行一个,程序以状态 0 退出。

其次使用该选项与其他选项一起制作常规程序
输出更机器友好。

目前这意味着:

1. 进度条消息可以通过查找这个正则从stdout解析出来
表达:

^[0-9]+/[0-9]+$

2. 调用程序应该处理发送到 stdout 的消息(进度条除外
消息)作为状态消息。 它们可以被记录和/或显示给用户。

3. 调用程序应将发送到 stderr 的消息视为错误消息。 在
此外,如果出现致命错误,virt-resize 会以非零状态代码退出。

1.13.9 之前的程序版本不支持 --机器可读 选项和
将返回错误。

附注


“划分 1 而不去 结束 on 气缸 边界。”
虚拟调整大小将分区对齐到 128 个扇区的倍数(请参阅 - 结盟 参数)。
通常这意味着分区不会与古老的 CHS 几何对齐。
然而,对于 1990 年代初期以来制造的磁盘,CHS 几何形状毫无意义,并且
虚拟硬盘驱动器更是如此。 不需要将分区与圆柱体对齐
通过任何现代操作系统。

GUEST BOOT 卡住 AT “GRUB”
如果 Linux 客户机在调整大小后不启动,并且打印“GRUB”后启动卡住
在控制台上,尝试重新安装 grub。

guestfish -i -a 新磁盘
> 猫 /boot/grub/device.map
# 检查这个文件的内容是否合理
# 必要时编辑文件
> grub-install / /dev/vda
> 出口

更灵活的来宾重新配置,包括是否需要指定其他参数
grub 安装,使用 虚拟救援(1)。

调整大小 视窗 BOOT 分区
在 Windows Vista 及更高版本中,微软改用单独启动
划分。 在这些 VM 中,通常 / dev / sda1 是引导分区和 / dev / sda2
主 (C:) 驱动器。 调整第一个(引导)分区的大小会导致引导加载程序失败
0xC0000225 错误。 调整第二个分区(即 C: 驱动器)的大小应该可以工作。

视窗 CHKDSK
在使用 virt-resize 之前,使用 NTFS 的 Windows 磁盘必须一致。 如果
ntfsresize 操作失败,尝试启动原始虚拟机并在所有虚拟机上运行“chkdsk /f”
NTFS 分区,然后干净地关闭 VM。 有关更多信息,请参阅:
https://bugzilla.redhat.com/show_bug.cgi?id=975753

调整 如果 NTFS 分区有
被扩大。 这只是一个安全检查并且(除非它发现错误)没什么
担心。

视窗 无法安装的引导卷 BSOD
在对 Windows 客户机进行系统准备并使用 virt-resize 调整其大小后,您可能会看到
来宾无法启动并显示“UNMOUNTABLE_BOOT_VOLUME”蓝屏。 这个错误是由
sysprep.inf 文件中的“ExtendOemPartition=1”。 在 sysprep 之前删除此行
应该解决问题。

视窗 8
Windows 8“快速启动”可以防止 virt-resize 调整 NTFS 分区的大小。 看
《WINDOWS 休眠和 WINDOWS 8 快速启动》 来宾(3)。

复印
您应该创建一个全新的、归零的目标磁盘映像以供 virt-resize 使用。

默认情况下,Virt-resize 执行稀疏复制。 这意味着它不复制块
来自全为零的源磁盘。 这提高了速度和效率,但会
如果目标磁盘映像包含未清零的数据,则会产生不正确的结果。

这可能是一个问题的主要时间是如果目标是主机分区(例如。
"virt-resize source.img /dev/sda4") 因为通常的分区工具往往会离开
之前发生在磁盘上的任何数据。

如果你必须重用一个已经包含数据的目标,你应该使用 --无稀疏
选项。 请注意,这可能会慢得多。

“未知/不可用 方法 扩大 文件系统 on 设备/LV"
要求 Virt-resize 扩展包含文件系统的分区或逻辑卷
类型为“TYPE”,但没有可用或已知的扩展方法
文件系统。

这可能是由于以下任一原因:

1. libguestfs中没有对应的文件系统,因为没有
主机中的适当包及其实用程序。 这通常是这种情况
“btrfs”、“ntfs”和“xfs”文件系统。

检查结果:

virt-resize --机器可读
guestfish -a /dev/null 运行:可用
guestfish -a /dev/null 运行:filesystem_available 类型

在这种情况下,安装适当的软件包添加对它们的支持就足够了。
例如,“libguestfs-xfs”在 Red Hat Enterprise Linux、CentOS、Debian、Ubuntu 和
从它们派生的发行版,用于支持“xfs”文件系统。

2. Virt-resize 不支持扩展那种类型的文件系统。

在这种情况下,没有什么可以让 virt-resize 扩展那种类型的
文件系统。

在这两种情况下,virt-resize 都不会扩展提到的文件系统; 结果(除非
--unknown-文件系统 错误 被指定)是包含这样的分区
文件系统实际上会按要求变大,但文件系统仍然可用
在他们的旧尺寸。

备选 工具


有几个用于调整分区大小的专有工具。 我们不会在这里提及任何。

分手(8) 和它的图形外壳 gparted 可以在磁盘上做一些类型的调整大小操作
图片。 他们可以调整分区大小和移动分区,但我认为他们不能做任何事情
内容,他们当然不了解 LVM。

客鱼(1) 可以做 virt-resize 可以做的所有事情以及更多,但要低得多
等级。 您可能最终会手动计算扇区偏移量,这是
virt-resize 旨在避免。 如果您想查看与 guestfish 等效的命令
virt-resize 运行,使用 -调试 旗。

德拉库特(8) 包含一个名为“dracut-modules-growroot”的模块,可用于种植
来宾首次启动时的根分区。 有此模块的文档
一个关联的 README 文件。

退出 状态


如果成功,该程序返回 0,如果有错误,则返回非零。

使用 onworks.net 服务在线使用 virt-resize


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad