This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| computing:virtmanagerhell [2022/11/13 16:13] – oemb1905 | computing:virtmanagerhell [2023/01/15 17:47] (current) – oemb1905 | ||
|---|---|---|---|
| Line 44: | Line 44: | ||
| virsh destroy guest1 | virsh destroy guest1 | ||
| - | I prefer the raw format (.img) but if I change my mind later, perhaps because I want snapshots, then I can easily shutdown the machine and convert the image as follows: | + | I prefer the raw format (.img) but if I change my mind later, perhaps because I want snapshots, then I can easily shutdown the machine and convert the image as follows. If I change my mind, I can also go in reverse back to raw. |
| - | qemu-img convert -f raw -O qcow2 guest1.img guest1.qcow2 | + | qemu-img convert |
| + | qemu-img convert -p -f qcow2 -O raw guest1.qcow2 guest1.raw | ||
| | | ||
| If you do end up using this, then you will need to edit the virtual machine' | If you do end up using this, then you will need to edit the virtual machine' | ||
| Line 62: | Line 63: | ||
| virsh snapshot-create guest1 | virsh snapshot-create guest1 | ||
| + | | ||
| + | To create an external snapshot, append the following arguments: | ||
| + | |||
| + | virsh snapshot-create-as guest1 snapshot1 --description "first snapshot 11-13-22" | ||
| | | ||
| If you want to revert to the latest snapshot, then execute this: | If you want to revert to the latest snapshot, then execute this: | ||
| Line 67: | Line 72: | ||
| virsh snapshot-revert guest1 --current | virsh snapshot-revert guest1 --current | ||
| | | ||
| - | If you need to delete a particular snapshot, execute | + | If you need to delete a particular |
| | | ||
| virsh snapshot-delete guest1 snapshot1 | virsh snapshot-delete guest1 snapshot1 | ||
| + | virsh snapshot-delete guest1 --current --children-only | ||
| + | |||
| | | ||
| To list all snapshots for a particular guestOS, execute this: | To list all snapshots for a particular guestOS, execute this: | ||
| Line 79: | Line 86: | ||
| virsh snapshot-info guest1 snapshot | virsh snapshot-info guest1 snapshot | ||
| virsh snapshot-dumpxml guest1 snapshot1 | virsh snapshot-dumpxml guest1 snapshot1 | ||
| + | | ||
| + | If you need to make a live backup, do the following (Note: make sure that '' | ||
| + | |||
| + | |||
| + | virsh domfsfreeze guest1.qcow2 | ||
| + | qemu-img create -f qcow2 -b guest1.qcow2 snapshot.qcow2 | ||
| + | virsh domfsthaw guest1.qcow2 | ||
| + | |||
| | | ||
| At times you may need to resize or gather information about a particular virtual disk. If they are in the qcow2 format, gather information as follows: | At times you may need to resize or gather information about a particular virtual disk. If they are in the qcow2 format, gather information as follows: | ||
| Line 84: | Line 99: | ||
| qemu-img info disk.qcow2 | qemu-img info disk.qcow2 | ||
| | | ||
| - | To regain space that is being used needlessly, you can sparsify the qcow2 disk as follows: | + | To regain space that is being used needlessly, you can sparsify the qcow2 disk. Note that you must install virt-sparsify separately with '' |
| virt-sparsify --in-place disk.qcow2 | virt-sparsify --in-place disk.qcow2 | ||
| Line 93: | Line 108: | ||
| qemu-img resize disk.qcow2 1000G | qemu-img resize disk.qcow2 1000G | ||
| qemu-img resize disk.qcow2 +10G | qemu-img resize disk.qcow2 +10G | ||
| + | | ||
| + | Okay, so another big issue with qcow2 images is them growing over time from writes/ | ||
| + | | ||
| + | sudo systemctl enable fstrim.timer | ||
| + | sudo systemctl start fstrim.timer | ||
| + | | ||
| + | You can also manually run fstrim and then power down the qcow2 image and convert it. You may optionally use compression to save more space, but it takes very long. | ||
| + | |||
| + | fstrim -v / | ||
| + | qemu-img convert -O qcow2 guest.qcow2 guest-trimmed.qcow2 | ||
| + | qemu-img convert -O qcow2 -c guest.qcow2 guest-trimmed.qcow2 | ||
| + | | ||
| + | To test trimming functionality, | ||
| + | |||
| + | dd if=/ | ||
| + | | ||
| + | To create a backup volume inside a guest you create the volume, attach it, and then shell into the guest and format, mount, and create an fstab entry. First, on the hostOS: | ||
| + | | ||
| + | cd / | ||
| + | qemu-img create -f qcow2 vm1-backup.qcow2 32G | ||
| + | virsh attach-disk guestOS.qcow2 \ | ||
| + | --source / | ||
| + | --target vdb \ | ||
| + | --persistent | ||
| + | | ||
| + | Then, on the guestOS: | ||
| + | | ||
| + | mkdir /mnt/backup | ||
| + | mkfs.ext4 /dev/vdb | ||
| + | mount -t auto /dev/vdb /mnt/backup | ||
| + | nano /etc/fstab | ||
| + | /dev/vdb /mnt/backup ext4 defaults, 0 0 | ||
| The rest from here on out is my attempt at resizing an .img virtual disk using tools exclusively from virsh / virt-manager. These are highly risky moves and totally not needed for day to day operations. It was more of a mission I was on and based on a tutorial I used nearly 15 years ago when expanding a Windows VM I used for teaching software that was only on that VM. At any rate, I have only succeeded twice doing this, and often get confused looking at the l00ps. Proceed with caution! | The rest from here on out is my attempt at resizing an .img virtual disk using tools exclusively from virsh / virt-manager. These are highly risky moves and totally not needed for day to day operations. It was more of a mission I was on and based on a tutorial I used nearly 15 years ago when expanding a Windows VM I used for teaching software that was only on that VM. At any rate, I have only succeeded twice doing this, and often get confused looking at the l00ps. Proceed with caution! | ||
| Line 174: | Line 221: | ||
| kpartx -d debian10.img | kpartx -d debian10.img | ||
| - | --- // | + | --- // |