docs: update gofurther/resize
This commit is contained in:
+88
-18
@@ -2,59 +2,129 @@
|
|||||||
title: Resize an existing virtual disk
|
title: Resize an existing virtual disk
|
||||||
description:
|
description:
|
||||||
published: true
|
published: true
|
||||||
date: 2026-05-08T09:03:28.700Z
|
date: 2026-05-08T09:34:59.946Z
|
||||||
tags:
|
tags:
|
||||||
editor: markdown
|
editor: markdown
|
||||||
dateCreated: 2021-11-13T11:41:29.087Z
|
dateCreated: 2021-11-13T11:41:29.087Z
|
||||||
---
|
---
|
||||||
|
|
||||||
# Resize a disk
|
# Resize a virtual disk
|
||||||
|
|
||||||
## Background
|
## Background
|
||||||
|
|
||||||
A virtual machine's disk may have to be resized, typically due to lack of space. This page explains how to do so.
|
A virtual machine's disk may have to be resized, typically due to lack of space. This page explains how to do so.
|
||||||
|
|
||||||
## Usage for Linux guests
|
|
||||||
|
|
||||||
> In-place expansion is not supported. A new disk of the desired size has to be created.
|
## Preparation
|
||||||
|
|
||||||
|
### Shut down virtual machine
|
||||||
|
|
||||||
|
> Please ensure that the virtual machine using the virtual disk to be resized is turned off
|
||||||
|
{.is-warning}
|
||||||
|
|
||||||
|
Let's assume that you wish to increase the size of the virtual machine called *guest*.
|
||||||
|
|
||||||
|
- List virtual machines running on your host
|
||||||
|
|
||||||
|
```
|
||||||
|
# virsh list --all
|
||||||
|
|
||||||
|
Id Name State
|
||||||
|
----------------------------------------------------
|
||||||
|
1 guest running
|
||||||
|
```
|
||||||
|
|
||||||
|
- Shutdown the *guest* virtual machine
|
||||||
|
|
||||||
|
```
|
||||||
|
# virsh shutdown guest
|
||||||
|
```
|
||||||
|
|
||||||
|
- Ensure that the virtual machine is fully shut off
|
||||||
|
|
||||||
|
```
|
||||||
|
# virsh list --all
|
||||||
|
|
||||||
|
Id Name State
|
||||||
|
----------------------------------------------------
|
||||||
|
1 guest shut off
|
||||||
|
```
|
||||||
|
|
||||||
|
It is now safe to proceed to the next step
|
||||||
|
|
||||||
|
### Backup existing disk
|
||||||
|
|
||||||
|
It is advisable to make a backup first.
|
||||||
|
|
||||||
|
- Navigate to the correct directory
|
||||||
|
|
||||||
|
```
|
||||||
|
# cd /var/lib/libvirt/images
|
||||||
|
```
|
||||||
|
|
||||||
|
- Make a copy of the virtual disk image
|
||||||
|
|
||||||
|
```
|
||||||
|
# cp guest.img backup_guest.img
|
||||||
|
```
|
||||||
|
|
||||||
|
## Linux guests
|
||||||
|
|
||||||
|
|
||||||
|
> In-place expansion is not supported. A new disk of the desired size has to be created, and then swap with the former disk.
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
* Navigate to the location that contains the existing image
|
- Navigate to the location that contains the existing image
|
||||||
|
|
||||||
```
|
```
|
||||||
cd /var/lib/libvirt/images
|
# cd /var/lib/libvirt/images
|
||||||
```
|
```
|
||||||
|
|
||||||
* Create a new blank disk image of the desired size
|
- Create a new blank 20 GB disk called `guest_20G.img`
|
||||||
|
|
||||||
Use the following command to create a disk of 20 GB called `guest_20G.img`.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
qemu-img create -f raw guest_20G.img 20G
|
# qemu-img create -f raw guest_20G.img 20G
|
||||||
```
|
```
|
||||||
|
|
||||||
* Identify the filesystem layout of the existing disk `guest.img`
|
- Identify the filesystem layout of the existing disk `guest.img`, which is ext4-based
|
||||||
|
|
||||||
```
|
```
|
||||||
# virt-filesystems -a -l -h guest.img
|
# virt-filesystems -a guest.img -l -h
|
||||||
Name Type VFS Label Size Parent
|
Name Type VFS Label Size Parent
|
||||||
/dev/vda1 filesystem vfat EFI 133935104 -
|
/dev/vda1 filesystem vfat EFI 1.3G -
|
||||||
/dev/vda2 filesystem ext4 boot 366869504 -
|
/dev/vda2 filesystem ext4 boot 3.6G -
|
||||||
/dev/vda3 filesystem ext4 root 9933475840 -
|
/dev/vda3 filesystem ext4 root 10G -
|
||||||
```
|
```
|
||||||
|
|
||||||
One can tell that the root partition is located under `/dev/vda3`. This is the one that will need to be expanded.
|
- Another output for a btrfs-based filesystem
|
||||||
|
|
||||||
* Copy the formet old data to the new disk and expand the root partition of the said disk
|
```
|
||||||
|
# virt-filesystems -a bazzite-desktop.img -l -h
|
||||||
|
Name Type VFS Label Size Parent
|
||||||
|
/dev/sda1 filesystem vfat - 599M -
|
||||||
|
/dev/sda2 filesystem ext4 bazzite_xboot 1.9G -
|
||||||
|
/dev/sda3 filesystem btrfs bazzite 37G -
|
||||||
|
btrfsvol:/dev/sda3/root filesystem btrfs bazzite - -
|
||||||
|
btrfsvol:/dev/sda3/home filesystem btrfs bazzite - -
|
||||||
|
btrfsvol:/dev/sda3/var filesystem btrfs bazzite - -
|
||||||
|
```
|
||||||
|
|
||||||
|
Thanks to the label on the ext4-based based image, one can tell that the root partition is `/dev/vda3`. This is the one that will need to be expanded. For the btrfs example, the root partition `/dev/sda3`as shown by `btrfsvol:/dev/sda3/root`
|
||||||
|
|
||||||
|
* Copy the former old data to the new disk and expand the root partition of the said disk
|
||||||
|
|
||||||
> This command is capable of expanding different kinds of filesystems, including `ext4` and `btrfs`
|
> This command is capable of expanding different kinds of filesystems, including `ext4` and `btrfs`
|
||||||
{.is-info}
|
{.is-info}
|
||||||
|
|
||||||
|
The command takes the new empty disk as last argument.
|
||||||
|
|
||||||
|
> Data could be erased if you mix argument!
|
||||||
|
{.is-warning}
|
||||||
```
|
```
|
||||||
# virt-resize --expand /dev/vda3 guest.img guest_20G.img
|
# virt-resize --expand /dev/vda3 guest.img guest_20G.img
|
||||||
```
|
```
|
||||||
|
|
||||||
* Review the changes
|
* Review changes
|
||||||
|
|
||||||
```
|
```
|
||||||
[ 0.0] Examining guest_20G.img
|
[ 0.0] Examining guest_20G.img
|
||||||
|
|||||||
Reference in New Issue
Block a user