mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2025-03-09 16:29:49 -04:00
consolidate in info from root resize doc
This commit is contained in:
parent
37523d315a
commit
08967c34d2
@ -1,113 +1,89 @@
|
|||||||
---
|
---
|
||||||
layout: doc
|
layout: doc
|
||||||
title: Resize Private Disk Image
|
title: Resize Disk Image
|
||||||
permalink: /doc/resize-disk-image/
|
permalink: /doc/resize-disk-image/
|
||||||
redirect_from:
|
redirect_from:
|
||||||
- /en/doc/resize-disk-image/
|
- /en/doc/resize-disk-image/
|
||||||
|
- /en/doc/resize-root-disk-image/
|
||||||
- /doc/ResizeDiskImage/
|
- /doc/ResizeDiskImage/
|
||||||
|
- /doc/ResizeRootDiskImage/
|
||||||
- /wiki/ResizeDiskImage/
|
- /wiki/ResizeDiskImage/
|
||||||
|
- /wiki/ResizeRootDiskImage/
|
||||||
---
|
---
|
||||||
|
|
||||||
Resize Private Disk Image
|
Resize Disk Image
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
There are several disk images which can be easily extended, but pay attention to the overall consumed space of your sparse disk images.
|
There are several disk images which can be easily extended, but pay attention to the overall consumed space of your sparse/thin disk images.
|
||||||
See also additional information and caveats about [resizing the root disk image](/doc/resize-root-disk-image/).
|
See also [OS Specific Follow-up Instructions](/doc/resize-disk-image/#os-specific-follow-up-instructions) at the end of this page.
|
||||||
|
|
||||||
|
|
||||||
### Private disk image (R4.0)
|
### Template disk image
|
||||||
|
|
||||||
1048576 MiB is the maximum size which can be assigned to private storage through Qube Manager.
|
If you want install a lot of software in your TemplateVM, you may need to increase the amount of disk space your TemplateVM can use.
|
||||||
|
*Make sure changes in the TemplateVM between reboots don't exceed 10G.*
|
||||||
|
|
||||||
To grow the private disk image of an AppVM beyond this limit, `qvm-volume` can be used:
|
1. Make sure that all the VMs based on this template are shut down (including netvms etc).
|
||||||
|
2. Resize the *root image* using Qubes version specific procedure below.
|
||||||
|
You may instead resize the *private image* with the appropriate commands if your software installs to `/home` for example.
|
||||||
|
3. If any netvm/proxyvm used by this template is based on it, set template's netvm to none.
|
||||||
|
4. Start the template.
|
||||||
|
5. Resize the filesystem using OS appropriate tools (Qubes will handle this automatically with Linux templates).
|
||||||
|
6. Verify available space in the template using `df -h` or OS specific tools.
|
||||||
|
7. Shutdown the template.
|
||||||
|
8. Restore original netvm setting (if changed), and check firewall settings (setting netvm to none causes the firewall to reset to "block all")
|
||||||
|
|
||||||
|
### Expand disk image (R4.0)
|
||||||
|
|
||||||
|
1048576 MiB is the maximum size which can be assigned to storage through Qube Manager.
|
||||||
|
|
||||||
|
To grow the root or private disk image of an AppVM beyond this limit, `qvm-volume` can be used:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
qvm-volume extend <vm_name>:root <size>
|
||||||
|
~~~
|
||||||
|
OR
|
||||||
~~~
|
~~~
|
||||||
qvm-volume extend <vm_name>:private <size>
|
qvm-volume extend <vm_name>:private <size>
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Note: Size is the target size (i.e. 4096MB or 16GB, ...), not the size to add to the existing disk.
|
Note: Size is the target size (i.e. 4096MB or 16GB, ...), not the size to add to the existing disk.
|
||||||
|
|
||||||
### Private disk image (R3.2)
|
### Expand disk image (R3.2)
|
||||||
|
|
||||||
1048576 MB is the maximum size which can be assigned to private storage through Qubes Manager.
|
1048576 MB is the maximum size which can be assigned to storage through Qubes Manager.
|
||||||
|
|
||||||
To grow the private disk image of an AppVM beyond this limit, [qvm-grow-private](/doc/dom0-tools/qvm-grow-private/) can be used:
|
To grow the private disk image of an AppVM beyond this limit, `qvm-grow-root` or [qvm-grow-private](/doc/dom0-tools/qvm-grow-private/) can be used:
|
||||||
|
|
||||||
|
~~~
|
||||||
|
qvm-grow-root <vm-name> <size>
|
||||||
|
~~~
|
||||||
|
OR
|
||||||
~~~
|
~~~
|
||||||
qvm-grow-private <vm-name> <size>
|
qvm-grow-private <vm-name> <size>
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Note: Size is the target size (i.e. 4096MB or 16GB, ...), not the size to add to the existing disk.
|
Note: Size is the target size (i.e. 4096MB or 16GB, ...), not the size to add to the existing disk.
|
||||||
|
|
||||||
### Shrinking private disk image (Linux VM, R4.0)
|
### Resize a StandaloneVM Root Image
|
||||||
|
|
||||||
|
Another way to increase the size of is to turn your TemplateVM into a StandaloneVM.
|
||||||
|
Doing this means it will have its own root filesystem *(StandaloneVMs use a copy of the template, instead of smart sharing)*.
|
||||||
|
To do this run `qvm-create --standalone` from `dom0` console, then perform the [OS Specific Follow-up Instructions](/doc/resize-disk-image/#os-specific-follow-up-instructions) below.
|
||||||
|
|
||||||
|
### Shrinking a disk image
|
||||||
|
|
||||||
|
Ext4 and most other filesystems do not support online shrinking, so it can't be done as conveniently as growing the image.
|
||||||
|
Note that we don't want to touch the VM filesystem directly in dom0 for security reasons.
|
||||||
|
|
||||||
1. Create a new qube with smaller disk using Qube Manager or `qvm-create`
|
1. Create a new qube with smaller disk using Qube Manager or `qvm-create`
|
||||||
2. Move data to the new qube using `qvm-copy` or OS utilities
|
2. Move data to the new qube using `qvm-copy`, backup & restore, or OS utilities
|
||||||
3. Delete old qube using Qube Manager or `qvm-remove`
|
3. Delete old qube using Qube Manager or `qvm-remove`
|
||||||
|
|
||||||
### Shrinking private disk image (Linux VM, R3.2)
|
|
||||||
|
|
||||||
**This operation is dangerous and this is why it isn't available in standard Qubes tools.
|
|
||||||
If you have enough disk space, it is safer to create a new VM with a smaller disk and move the data.**
|
|
||||||
|
|
||||||
The basic idea is to:
|
|
||||||
|
|
||||||
1. Shrink filesystem on the private disk image.
|
|
||||||
2. Then shrink the image.
|
|
||||||
|
|
||||||
Ext4 does not support online shrinking, so it can't be done as conveniently as growing the image.
|
|
||||||
Note that we don't want to touch the VM filesystem directly in dom0 for security reasons.
|
|
||||||
First you need to start VM without `/rw` mounted.
|
|
||||||
One possibility is to interrupt its normal startup by adding the `rd.break` kernel option:
|
|
||||||
|
|
||||||
~~~
|
|
||||||
qvm-prefs -s <vm-name> kernelopts rd.break
|
|
||||||
qvm-start --no-guid <vm-name>
|
|
||||||
~~~
|
|
||||||
|
|
||||||
And wait for qrexec connect timeout (or simply press Ctrl-C).
|
|
||||||
Then you can connect to VM console and shrink the filesystem:
|
|
||||||
|
|
||||||
~~~
|
|
||||||
sudo xl console <vm-name>
|
|
||||||
# you should get dracut emergency shell here
|
|
||||||
mount --bind /dev /sysroot/dev
|
|
||||||
chroot /sysroot
|
|
||||||
mount /proc
|
|
||||||
e2fsck -f /dev/xvdb
|
|
||||||
resize2fs /dev/xvdb <new-desired-size>
|
|
||||||
umount /proc
|
|
||||||
exit
|
|
||||||
umount /sysroot/dev
|
|
||||||
poweroff
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Now you can resize the image:
|
|
||||||
|
|
||||||
~~~
|
|
||||||
truncate -s <new-desired-size> /var/lib/qubes/appvms/<vm-name>/private.img
|
|
||||||
~~~
|
|
||||||
|
|
||||||
**It is critical to use the same (or bigger for some safety margin) size in truncate call compared to resize2fs call.
|
|
||||||
Otherwise you will lose your data!**
|
|
||||||
Then reset kernel options back to default:
|
|
||||||
|
|
||||||
~~~
|
|
||||||
qvm-prefs -s <vm-name> kernelopts default
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Done.
|
|
||||||
|
|
||||||
>In order to avoid error, you might want to first reduce the filesystem to a smaller size than desired (say 3G), then truncate the image to the target size (for example 4G), and lastly grow the filesystem to the target size.
|
|
||||||
>In order to do this, after the `truncate` step, start the vm again in maintenance mode and use the following command to extend the filesystem to the correct size : `resize2fs /dev/xvdb`.
|
|
||||||
>
|
|
||||||
>With no argument, resize2fs grows the filesystem to match the underlying block device (the .img file you just shrunk).
|
|
||||||
|
|
||||||
|
|
||||||
OS Specific Follow-up Instructions
|
OS Specific Follow-up Instructions
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
After resizing volumes, the partition table and file-system may need to be adjusted.
|
After expanding volumes, the partition table and file-system may need to be adjusted.
|
||||||
Use tools appropriate to the OS in your qube.
|
Use tools appropriate to the OS in your qube.
|
||||||
Brief instructions for Windows 7, FreeBSD, and Linux are provided below.
|
Brief instructions for Windows 7, FreeBSD, and Linux are provided below.
|
||||||
|
|
||||||
@ -133,4 +109,4 @@ zpool online -e poolname ada0
|
|||||||
|
|
||||||
Qubes will automatically grow the filesystem for you on AppVMs but not HVMs.
|
Qubes will automatically grow the filesystem for you on AppVMs but not HVMs.
|
||||||
You will see that there is unallocated free space at the end of your primary disk.
|
You will see that there is unallocated free space at the end of your primary disk.
|
||||||
You can use standard linux tools like fdisk and mkfs to make this space available.
|
You can use standard linux tools like `fdisk` and `resize2fs` to make this space available.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user