{"id":1184,"date":"2015-12-13T06:36:13","date_gmt":"2015-12-13T04:36:13","guid":{"rendered":"http:\/\/www.shukko.com\/x3\/?p=1184"},"modified":"2015-12-13T06:36:13","modified_gmt":"2015-12-13T04:36:13","slug":"how-to-convert-a-non-sparse-image-to-a-sparse-image","status":"publish","type":"post","link":"https:\/\/www.shukko.com\/x3\/2015\/12\/13\/how-to-convert-a-non-sparse-image-to-a-sparse-image\/","title":{"rendered":"How to convert a non-sparse image to a sparse image"},"content":{"rendered":"<p>orjinal link: https:\/\/blog.laimbock.com\/2013\/10\/31\/how-to-convert-a-non-sparse-image-to-sparse\/<\/p>\n<div class=\"entry-content\">\n<p>Below are the steps how to convert a raw or qcow2 non-sparse image to a sparse image. Basically there are two ways to do the conversion:<br \/>\n1) use virt-sparsify<br \/>\n2) use dd and cp &#8211;sparse<\/p>\n<p><strong>Convert a non-sparse image to a sparse image with virt-sparsify<\/strong><\/p>\n<p>IMPORTANT: make sure the VM is not running\/live! It must be shut down or else you will destroy the data in your image.<\/p>\n<p>Make sure virt-sparsify is installed:<\/p>\n<div id=\"crayon-566cedd502eaf943940675\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 636px; height: 50px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo yum install libguestfs-tools<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502eaf943940675-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502eaf943940675-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-e\">yum <\/span><span class=\"crayon-e\">install <\/span><span class=\"crayon-v\">libguestfs<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">tools<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Check current image:<\/p>\n<div id=\"crayon-566cedd502ec4455856343\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 636px; height: 59px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo ls -lsk test.img<br \/>\n10737418240 -rw&#8212;&#8212;-. 1 qemu qemu 10737418240 Oct 31 16:00 test.img<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ec4455856343-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ec4455856343-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ec4455856343-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">ls<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">lsk <\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ec4455856343-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">rw<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-e\">qemu <\/span><span class=\"crayon-i\">qemu<\/span> <span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-i\">Oct<\/span> <span class=\"crayon-cn\">31<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">00<\/span> <span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">img<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The first 10737418240 value is the allocated size and the second 10737418240 value is the file size. Since they are both the same value it means that this image is non-sparse (or 100% full in which case the sparse attempt is irrelevant).<\/p>\n<p>Check again using qemu-img info:<\/p>\n<div id=\"crayon-566cedd502ecb702962569\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 631px; height: 82px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo qemu-img info test.img<br \/>\nimage: test.img<br \/>\nfile format: raw<br \/>\nvirtual size: 10G (10737418240 bytes)<br \/>\ndisk size: 10G<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ecb702962569-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ecb702962569-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ecb702962569-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ecb702962569-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ecb702962569-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ecb702962569-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">qemu<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">img <\/span><span class=\"crayon-e\">info <\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ecb702962569-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">image<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ecb702962569-3\" class=\"crayon-line\"><span class=\"crayon-e\">file <\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">raw<\/span><\/div>\n<div id=\"crayon-566cedd502ecb702962569-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">virtual <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">10G<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-v\">bytes<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-566cedd502ecb702962569-5\" class=\"crayon-line\"><span class=\"crayon-e\">disk <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">10G<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Both the virtual size and the disk size are 10G so this image is not a sparse image.<\/p>\n<p>Now convert the non-sparse image to a sparse image using virt-sparsify:<\/p>\n<div id=\"crayon-566cedd502ed1263764915\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 623px; height: 90px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo virt-sparsify test.img sparse-test.img<br \/>\n$ sync<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ed1263764915-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ed1263764915-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ed1263764915-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">virt<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">sparsify <\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ed1263764915-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">sync<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Check the new image:<\/p>\n<div id=\"crayon-566cedd502ed7253873397\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 635px; height: 96px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo ls -lsk sparse-test.img<br \/>\n1425852 -rw&#8212;&#8212;-. 1 qemu qemu 10737418240 Oct 31 16:01 sparse-test.img<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ed7253873397-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ed7253873397-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ed7253873397-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">ls<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">lsk <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ed7253873397-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">1425852<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">rw<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-e\">qemu <\/span><span class=\"crayon-i\">qemu<\/span> <span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-i\">Oct<\/span> <span class=\"crayon-cn\">31<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">01<\/span> <span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">img<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The allocated size of 1425852 is much smaller than the file size of 10737418240 which means this is now a sparse image.<\/p>\n<p>Check again using qemu-img info:<\/p>\n<div id=\"crayon-566cedd502edd704866626\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 647px; height: 147px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo qemu-img info sparse-test.img<br \/>\nimage: sparse-test.img<br \/>\nfile format: raw<br \/>\nvirtual size: 10G (10737418240 bytes)<br \/>\ndisk size: 1.4G<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502edd704866626-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502edd704866626-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502edd704866626-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502edd704866626-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502edd704866626-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502edd704866626-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">qemu<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">img <\/span><span class=\"crayon-e\">info <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502edd704866626-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">image<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502edd704866626-3\" class=\"crayon-line\"><span class=\"crayon-e\">file <\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">raw<\/span><\/div>\n<div id=\"crayon-566cedd502edd704866626-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">virtual <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">10G<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-v\">bytes<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-566cedd502edd704866626-5\" class=\"crayon-line\"><span class=\"crayon-e\">disk <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">1.4G<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The disk size is much smaller than the virtual disk size so the image has indeed been successfully converted to a sparse image.<\/p>\n<p><strong>Convert a non-sparse image to a sparse image with dd and cp<\/strong><\/p>\n<p>Start the VM\/image which you want to make sparse and login to it. Next fill the free space in the VM with zeros using the following command and then shut it down again:<\/p>\n<div id=\"crayon-566cedd502ee4003725012\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 645px; height: 75px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo dd if=\/dev\/zero of=\/tmp\/zeroallspace bs=1M<br \/>\n$ sync<br \/>\n$ sudo rm -v \/tmp\/zeroallspace<br \/>\n$ sudo \/sbin\/shutdown -h now<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ee4003725012-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ee4003725012-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ee4003725012-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ee4003725012-4\">4<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ee4003725012-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-e\">dd <\/span><span class=\"crayon-st\">if<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">dev<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">zero <\/span><span class=\"crayon-v\">of<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">tmp<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">zeroallspace <\/span><span class=\"crayon-v\">bs<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-cn\">1M<\/span><\/div>\n<div id=\"crayon-566cedd502ee4003725012-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-i\">sync<\/span><\/div>\n<div id=\"crayon-566cedd502ee4003725012-3\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">rm<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">v<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">tmp<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-i\">zeroallspace<\/span><\/div>\n<div id=\"crayon-566cedd502ee4003725012-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-v\">sudo<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">sbin<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">shutdown<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-i\">h<\/span> <span class=\"crayon-v\">now<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now convert the non-sparse image to a sparse image using cp:<\/p>\n<div id=\"crayon-566cedd502eea163396170\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 614px; height: 15px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo cp &#8211;sparse=always test.img sparse-test.img<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502eea163396170-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502eea163396170-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">cp<\/span> <span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-e\">always <\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">img<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Check the new image:<\/p>\n<div id=\"crayon-566cedd502eef069093922\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 618px; height: 50px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo ls -lsk sparse-test.img<br \/>\n1425852 -rw&#8212;&#8212;-. 1 qemu qemu 10737418240 Oct 31 16:01 sparse-test.img<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502eef069093922-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502eef069093922-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502eef069093922-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">ls<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">lsk <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-i\">img<\/span><\/div>\n<div id=\"crayon-566cedd502eef069093922-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">1425852<\/span> <span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">rw<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8212;<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-sy\">.<\/span> <span class=\"crayon-cn\">1<\/span> <span class=\"crayon-e\">qemu <\/span><span class=\"crayon-i\">qemu<\/span> <span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-i\">Oct<\/span> <span class=\"crayon-cn\">31<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">01<\/span> <span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-v\">img<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The allocated size of 1425852 is much smaller than the file\/image size of 10737418240 which means this is now a sparse image.<\/p>\n<p>Check again using qemu-img info:<\/p>\n<div id=\"crayon-566cedd502ef5733279964\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" style=\"width: 674px; height: 89px;\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">$ sudo qemu-img info sparse-test.img<br \/>\nimage: sparse-test.img<br \/>\nfile format: raw<br \/>\nvirtual size: 10G (10737418240 bytes)<br \/>\ndisk size: 1.4G<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ef5733279964-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ef5733279964-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ef5733279964-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-566cedd502ef5733279964-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-566cedd502ef5733279964-5\">5<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-566cedd502ef5733279964-1\" class=\"crayon-line\"><span class=\"crayon-sy\">$<\/span> <span class=\"crayon-e\">sudo <\/span><span class=\"crayon-v\">qemu<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-e\">img <\/span><span class=\"crayon-e\">info <\/span><span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ef5733279964-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">image<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-v\">sparse<\/span><span class=\"crayon-o\">&#8211;<\/span><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-e\">img<\/span><\/div>\n<div id=\"crayon-566cedd502ef5733279964-3\" class=\"crayon-line\"><span class=\"crayon-e\">file <\/span><span class=\"crayon-v\">format<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-e\">raw<\/span><\/div>\n<div id=\"crayon-566cedd502ef5733279964-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">virtual <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">10G<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-cn\">10737418240<\/span> <span class=\"crayon-v\">bytes<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-566cedd502ef5733279964-5\" class=\"crayon-line\"><span class=\"crayon-e\">disk <\/span><span class=\"crayon-v\">size<\/span><span class=\"crayon-o\">:<\/span> <span class=\"crayon-cn\">1.4G<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Again this shows that the image is now a sparse image.<\/p>\n<p><strong>Which method to use?<\/strong><\/p>\n<p>Both methods work equally well. In terms of options the virt-sparsify method may be preferred as it can for example also convert the image from raw to qcow2 and it needs less steps. See man virt-sparsify for more information. If you just want to make the image sparse than choose the method which you like best.<\/p>\n<p><strong>Tip<\/strong><\/p>\n<p>If you use rsync to make backups of your images then do not forget to use the &#8211;sparse option and realize that &#8211;sparse conflicts with &#8211;inplace (see man rsync).<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>orjinal link: https:\/\/blog.laimbock.com\/2013\/10\/31\/how-to-convert-a-non-sparse-image-to-sparse\/ Below are the steps how to convert a raw or qcow2 non-sparse image to a sparse image. Basically there are two ways to do the conversion: 1) use virt-sparsify 2) use dd and cp &#8211;sparse Convert a non-sparse image to a sparse image with virt-sparsify IMPORTANT: make sure the VM is not [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1184","post","type-post","status-publish","format-standard","hentry","category-kategerisiz"],"_links":{"self":[{"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/posts\/1184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/comments?post=1184"}],"version-history":[{"count":1,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/posts\/1184\/revisions"}],"predecessor-version":[{"id":1185,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/posts\/1184\/revisions\/1185"}],"wp:attachment":[{"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/media?parent=1184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/categories?post=1184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.shukko.com\/x3\/wp-json\/wp\/v2\/tags?post=1184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}