QEMU/KVM: Použitie režimu Copy-On-Write
Režim „Copy-On-Write“, často označovaný skratkou COW, je na niektorých formátoch disku virtuálneho stroja dostupný ako QCOW2.
Konkrétne pri použití režimu COW sa na obraz disku neuplatňujú žiadne zmeny. Všetky zmeny sú zaznamenané v samostatnom súbore, ktorý zachováva pôvodný obrázok. Niekoľko súborov COW môže ukazovať na rovnaký obrázok a testovať tak niekoľko konfigurácií súčasne bez ohrozenia základného systému.
QEMU/KVM umožňuje začleniť zmeny zo súboru COW do pôvodného obrázka.
Na rozdiel od snímky, kopírovanie pri zápise používa viacero súborov a umožňuje súčasne spúšťať viacero inštancií základného počítača.
Nastavenie COW
Predpokladáme, že máte disk virtuálneho počítača.
Prechod obrazu disku do veľkosti QCOW2
Začneme konverziou disku virtuálneho počítača, na ktorom budeme pracovať, na formát QCOW2, ktorý podporuje režim COW.
~/vbox/kvm $ file ../vm/vm.vmdk
../vm/vm.vmdk: VMware4 disk image
~/vbox/kvm $ ls -lsa ~/vbox/vm/vm.vmdk
-rw------- 1 anis users 1.1G May 28 10:58 /users/anis/vbox/vm/vm.vmdk
~/vbox/kvm $ qemu-img convert -c -O qcow2 ~/vbox/vm/vm.vmdk vm01.qcow2
~/vbox/kvm $ ls -lsa
total 486M
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2
~/vbox/kvm $ file vm01.qcow2
vm01.qcow2: QEMU QCOW Image (v2), 8589934592 bytesPoznámka: Aktivácia kompresie o prechode z formátu vmdk na formát qcow2 prostredníctvom „-c“ v „qemu-img“, čo v tomto prípade zmenšuje o viac ako 50 % veľkosť virtuálneho stroj .
Generovanie obrázkov kráv
Generácie obrázkov COW sú jednoducho vytvorené obrázky. Prechádzajú teda pomocou nástroja „qemu-img“ v „create“, ktorý im odovzdal formát disku („-f Format“) a referenčný obrázok (možnosť „-b referenčný obrázok“):
~/vbox/kvm $ qemu-img create -f qcow2 -b vm01.qcow2 img01.qcow2
Formatting 'img01.qcow2', fmt=qcow2 size=8589934592 backing_file='vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
~/vbox/kvm $ ls -lsa
total 486M
-rw------- 1 anis users 193K Jun 9 14:59 img01.qcow2
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2Vytvorený obrázok je menší ako referenčný obrázok (193 kB pre referenciu približne 486 miliónov), pretože počas vytvárania nie je žiadny rozdiel medzi originálom a KRAVOU.
Potrebný obrázok COW možno vygenerovať s rovnakou referenciou.
~/vbox/kvm $ qemu-img create -f qcow2 -b vm01.qcow2 img02.qcow2
Formatting 'img02.qcow2', fmt=qcow2 size=8589934592 backing_file='vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
~/vbox/kvm $ qemu-img create -f qcow2 -b vm01.qcow2 img03.qcow2
Formatting 'img03.qcow2', fmt=qcow2 size=8589934592 backing_file='vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
~/vbox/kvm $ ls -lsa
total 486M
-rw------- 1 anis users 193K Jun 9 14:59 img01.qcow2
-rw------- 1 anis users 193K Jun 9 15:08 img02.qcow2
-rw------- 1 anis users 193K Jun 9 15:08 img03.qcow2
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2Poznámka: Aby sa zabezpečilo zachovanie pôvodného obrázka, môže byť chránený pred zápisom „chmod aw vm01.qcow2“.
Používanie obrazov diskov
„Diferenciálne“ obrázky je možné použiť súčasne:
~/vbox/kvm $ qemu-system-x86_64 img01.qcow2 &
[1] 3279
~/vbox/kvm $ qemu-system-x86_64 img02.qcow2 &
[2] 3283
~/vbox/kvm $ qemu-system-x86_64 img03.qcow2 &
[3] 3287ale ich objemy predstavujú len rozdiel medzi pôvodným diskom a aktuálnym stavom:
~/vbox/kvm $ ls -lsa
total 883M
-rw------- 1 anis users 75M Jun 9 15:21 img01.qcow2
-rw------- 1 anis users 7.4M Jun 9 15:30 img02.qcow2
-rw------- 1 anis users 236M Jun 9 15:30 img03.qcow2
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2Informácie o obrázkoch COW
Informácie o obrázku COW a jeho referencii sa získavajú prostredníctvom „informácií“ obrazového nástroja „qemu-img“, ktorý sa odovzdáva „backing-chain“:
~/vbox/kvm $ qemu-img info --backing-chain img01.qcow2
image: img01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 75M
cluster_size: 65536
backing file: vm01.qcow2
image: vm01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 485M
cluster_size: 65536V tomto príklade obrázok „img01.qcow2“ vo formáte „qcow2“, s virtuálnou veľkosťou 8G, v skutočnosti zaberá 75 miliónov miesta na pevnom disku, súvisí s „vm01.qcow2“ aj vo formáte „qcow2“ zaberá 485 M miesta na pevnom disku.
Zmeňte referenčný obrázok
Režim „rebase“ správcu obrazu disku vám umožňuje zmeniť referenčný obraz. Nový odkaz musí byť ekvivalentný so starým:
~/vbox/kvm $ cp vm01.qcow2 vm02.qcow2
~/vbox/kvm $ chmod a-w vm02.qcow2
~/vbox/kvm $ qemu-img info img02.qcow2
image: img02.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 8.6M
cluster_size: 65536
backing file: vm01.qcow2
~/vbox/kvm $ qemu-img rebase -b vm02.qcow2 img02.qcow2
~/vbox/kvm $ qemu-img info img02.qcow2
image: img02.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 8.6M
cluster_size: 65536
backing file: vm02.qcow2Poznámka: Počas kopírovania referenčného disku môžu byť spustené virtuálne počítače. Testoval som zmeny diskov odkazov na stroj, ktoré sa zastavili a spustili bez akýchkoľvek problémov, ale zdá sa logické/lepšie, aby sa VM zastavil kvôli zmene referencie.
Zlúčenie súboru COW a referencie
Príkaz „commit“ z „qemu-img“ aplikuje rozdiely na pôvodný obrázok:
~/vbox/kvm $ ls -lsa
total 1.7G
-rw------- 1 anis users 76M Jun 9 16:37 img01.qcow2
-rw------- 1 anis users 9.4M Jun 9 16:36 img02.qcow2
-rw------- 1 anis users 621M Jun 9 16:35 img03.qcow2
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2
-rw------- 1 anis users 486M Jun 9 16:38 vm02.qcow2
~/vbox/kvm $ qemu-img rebase -b vm02.qcow2 img01.qcow2
~/vbox/kvm $ qemu-img commit img01.qcow2
Image committed.
~/vbox/kvm $ ls -lsa
total 1.8G
-rw------- 1 anis users 76M Jun 9 16:37 img01.qcow2
-rw------- 1 anis users 9.4M Jun 9 16:36 img02.qcow2
-rw------- 1 anis users 621M Jun 9 16:35 img03.qcow2
-rw------- 1 anis users 486M Jun 9 14:29 vm01.qcow2
-rw------- 1 anis users 559M Jun 9 16:41 vm02.qcow2Záver
V tomto článku zmeníme referenciu „img01.qcow2“ a potom použijeme jej obsah na referenčný disk („commit“). Výsledkom je „vm02.qcow2“, ktorý sa rozprestiera približne na veľkosť súboru COW.
