This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
computing:virtmanagerhell [2022/11/13 01:51] – oemb1905 | computing:virtmanagerhell [2023/01/15 17:47] (current) – oemb1905 | ||
---|---|---|---|
Line 44: | Line 44: | ||
virsh destroy guest1 | virsh destroy guest1 | ||
- | The rest from here on out is my attempt at resizing an .img using tools exclusively from virsh / virt-manager. I have only succeeded twice doing this, and often get confused looking at the l00ps. | + | 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 -p -f raw -O qcow2 guest1.img guest1.qcow2 | ||
+ | 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' | ||
+ | |||
+ | virsh edit guest1 | ||
+ | <driver name=' | ||
+ | <source file='/ | ||
+ | |||
+ | Another essential tool is the ability to create snapshots and, when necessary, revert to them. Here are the commands to create snapshot1 and then later revert to that specific snapshot. | ||
+ | |||
+ | virsh snapshot-create-as guest1 snapshot1 --description "first snapshot 11-13-22" | ||
+ | virsh snapshot-revert guest1 snapshot1 | ||
+ | |||
+ | If you don't care about naming the snapshot or customizing the description, | ||
+ | |||
+ | 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: | ||
+ | |||
+ | virsh snapshot-revert guest1 --current | ||
+ | |||
+ | If you need to delete a particular snapshot, or delete all children of a snapshot, execute: | ||
+ | |||
+ | virsh snapshot-delete guest1 snapshot1 | ||
+ | virsh snapshot-delete guest1 --current --children-only | ||
+ | |||
+ | |||
+ | To list all snapshots for a particular guestOS, execute this: | ||
+ | |||
+ | virsh snapshot-list guest1 | ||
+ | |||
+ | To get information about the snapshot, these commands help: | ||
+ | |||
+ | virsh snapshot-info guest1 snapshot | ||
+ | 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: | ||
+ | |||
+ | qemu-img info disk.qcow2 | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Most importantly, | ||
+ | |||
+ | cp -ar --sparse=always disk.qcow2 disk.bk.qcow2 | ||
+ | qemu-img resize disk.qcow2 1000G | ||
+ | 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 / | ||
+ | mkfs.ext4 /dev/vdb | ||
+ | mount -t auto /dev/vdb / | ||
+ | nano / | ||
+ | /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. | ||
| | ||
sudo apt install libguestfs-tools | sudo apt install libguestfs-tools | ||
Line 123: | Line 220: | ||
kpartx -d debian10.img | kpartx -d debian10.img | ||
- | | ||
- | --- // | + | --- // |