====== Resizing a QEMU raw image with an NTFS filesystem ====== This is a quick guide to increasing the disk space available to your Windows virtual machine with an NTFS file system. The example is based on increasing a partition from 5GB to 6GB. Backup your original file first in case something goes wrong. ===== Use qemu-img to resize the QEMU raw disk image ===== This command increases the size of the disk image in the file Windows_XP_Professional_SP_3.img by 1GB. qemu-img resize Windows_XP_Professional_SP_3.img +1G After this command, if you boot your virtual machine, you will see that there is an additional 1GB of free disk space available. ===== Find the offset into the image ===== Loop mount the image. losetup /dev/loop0 Windows_XP_Professional_SP_3.img Inspect the partition table (here parted is used but fdisk or cfdisk can also be used). parted /dev/loop0 Within parted, set the units to sectors, then print the current partition table. (parted) unit s (parted) print The output will look something like this: Model: Loopback device (loopback) Disk /dev/loop0: 12582912s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 63s 11718798s 11718736s primary ntfs boot Note the Sector size and Start sector numbers in the output. Now quit parted. (parted) quit Delete the loop device. losetup -d /dev/loop0 ===== Use ntfsresize to resize the NTFS partition ===== Loop mount the NTFS partition to be resized, using an offset calculated from the sector size and start sector. losetup -o$((512*63)) /dev/loop0 Windows_XP_Professional_SP_3.img First do a dry run. ntfsresize -n -s 6G /dev/loop0 If all is OK, do it for real. ntfsresize -s 6G /dev/loop0 Delete the loop device. losetup -d /dev/loop0 ===== Update the partition table ===== Loop mount the image. losetup /dev/loop0 Windows_XP_Professional_SP_3.img Update the partition table using parted (both fdisk and cfdisk appear to fail here). parted /dev/loop0 This seems like a backward step, but now use parted to remove the existing partition. (parted) rm 1 Use the parted rescue command to find the partition again, with the END option set to the size of the partition in MB. (parted) rescue 1 6000 Information: A ntfs primary partition was found at 32.3kB -> 6000MB. Do you want to add it to the partition table? Yes/No/Cancel? Yes Set the boot flag on the rescued partition. (parted) set 1 boot on The partition table is written when you quit parted. (parted) quit Delete the loop device. losetup -d /dev/loop0 ===== Finish up ===== Boot the virtual machine and allow the Windows chkdsk program to run. ====== Sources ====== * Original source: [[http://cauldrondevelopment.com/blog/2009/02/26/resize-qemu-ntfs-image/ ]] {{tag>howtos Resize QEMU raw image NTFS filesystem author_allend}}