1 | <?xml version='1.0' encoding='UTF-8'?>
|
---|
2 | <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
|
---|
3 | <topic xml:lang="en-us" id="diffimages">
|
---|
4 | <title>Differencing Images</title>
|
---|
5 |
|
---|
6 | <body>
|
---|
7 | <p>
|
---|
8 | The previous section mentioned differencing images and how they
|
---|
9 | are used with snapshots, immutable images, and multiple disk
|
---|
10 | attachments. This section describes in more detail how
|
---|
11 | differencing images work.
|
---|
12 | </p>
|
---|
13 | <p>
|
---|
14 | A differencing image is a special disk image that only holds the
|
---|
15 | differences to another image. A differencing image by itself is
|
---|
16 | useless, it must always refer to another image. The differencing
|
---|
17 | image is then typically referred to as a
|
---|
18 | <i>child</i>, which holds the differences to its
|
---|
19 | <i>parent</i>.
|
---|
20 | </p>
|
---|
21 | <p>
|
---|
22 | When a differencing image is active, it receives all write
|
---|
23 | operations from the virtual machine instead of its parent. The
|
---|
24 | differencing image only contains the sectors of the virtual hard
|
---|
25 | disk that have changed since the differencing image was created.
|
---|
26 | When the machine reads a sector from such a virtual hard disk, it
|
---|
27 | looks into the differencing image first. If the sector is present,
|
---|
28 | it is returned from there. If not, <ph conkeyref="vbox-conkeyref-phrases/product-name"/> looks into the
|
---|
29 | parent. In other words, the parent becomes
|
---|
30 | <i>read-only</i>. It is never written to again, but
|
---|
31 | it is read from if a sector has not changed.
|
---|
32 | </p>
|
---|
33 | <p>
|
---|
34 | Differencing images can be chained. If another differencing image
|
---|
35 | is created for a virtual disk that already has a differencing
|
---|
36 | image, then it becomes a <i>grandchild</i> of the
|
---|
37 | original parent. The first differencing image then becomes
|
---|
38 | read-only as well, and write operations only go to the
|
---|
39 | second-level differencing image. When reading from the virtual
|
---|
40 | disk, <ph conkeyref="vbox-conkeyref-phrases/product-name"/> needs to look into the second differencing
|
---|
41 | image first, then into the first if the sector was not found, and
|
---|
42 | then into the original image.
|
---|
43 | </p>
|
---|
44 | <p>
|
---|
45 | There can be an unlimited number of differencing images, and each
|
---|
46 | image can have more than one child. As a result, the differencing
|
---|
47 | images can form a complex tree with parents, siblings, and
|
---|
48 | children, depending on how complex your machine configuration is.
|
---|
49 | Write operations always go to the one <i>active</i>
|
---|
50 | differencing image that is attached to the machine, and for read
|
---|
51 | operations, <ph conkeyref="vbox-conkeyref-phrases/product-name"/> may need to look up all the parents in
|
---|
52 | the chain until the sector in question is found. You can view such
|
---|
53 | a tree in the Virtual Media Manager.
|
---|
54 | </p>
|
---|
55 | <fig id="fig-diff-images">
|
---|
56 | <title>Differencing Images, Shown in Virtual Media Manager</title>
|
---|
57 | <xref href="images/virtual-disk-manager-2.png" format="png" platform="htmlhelp">
|
---|
58 | <image href="images/virtual-disk-manager-2.png" width="12cm" placement="break">
|
---|
59 | <alt>Differencing Images, Shown in Virtual Media Manager</alt>
|
---|
60 | </image>
|
---|
61 | </xref>
|
---|
62 | <image platform="ohc" href="images/virtual-disk-manager-2.png" width="12cm" placement="break">
|
---|
63 | <alt>Differencing Images, Shown in Virtual Media Manager</alt>
|
---|
64 | </image>
|
---|
65 | </fig>
|
---|
66 | <p> In all of these situations, from the point of view of the virtual machine, the virtual hard
|
---|
67 | disk behaves like any other disk. While the virtual machine is running, there is a slight
|
---|
68 | runtime I/O overhead because <ph conkeyref="vbox-conkeyref-phrases/product-name"/> might need
|
---|
69 | to look up sectors several times. This is not noticeable however since the tables with sector
|
---|
70 | information are always kept in memory and can be looked up quickly. </p>
|
---|
71 | <p>
|
---|
72 | Differencing images are used in the following situations:
|
---|
73 | </p>
|
---|
74 | <ul>
|
---|
75 | <li>
|
---|
76 | <p><b outputclass="bold">Snapshots.</b> When you create a
|
---|
77 | snapshot, as explained in the previous section, <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
|
---|
78 | <i>freezes</i> the images attached to the
|
---|
79 | virtual machine and creates differencing images for each image
|
---|
80 | that is not in <i>write-through</i> mode. From
|
---|
81 | the point of view of the virtual machine, the virtual disks
|
---|
82 | continue to operate before, but all write operations go into
|
---|
83 | the differencing images. Each time you create another
|
---|
84 | snapshot, for each hard disk attachment, another differencing
|
---|
85 | image is created and attached, forming a chain or tree.
|
---|
86 | </p>
|
---|
87 | <p>
|
---|
88 | In the above screenshot, you see that the original disk image
|
---|
89 | is now attached to a snapshot, representing the state of the
|
---|
90 | disk when the snapshot was taken.
|
---|
91 | </p>
|
---|
92 | <p>
|
---|
93 | If you <i>restore</i> a snapshot, and want to go
|
---|
94 | back to the exact machine state that was stored in the
|
---|
95 | snapshot, the following happens:
|
---|
96 | </p>
|
---|
97 | <ul>
|
---|
98 | <li>
|
---|
99 | <p>
|
---|
100 | <ph conkeyref="vbox-conkeyref-phrases/product-name"/> copies the virtual machine settings that
|
---|
101 | were copied into the snapshot back to the virtual machine.
|
---|
102 | As a result, if you have made changes to the machine
|
---|
103 | configuration since taking the snapshot, they are undone.
|
---|
104 | </p>
|
---|
105 | </li>
|
---|
106 | <li>
|
---|
107 | <p>
|
---|
108 | If the snapshot was taken while the machine was running,
|
---|
109 | it contains a saved machine state, and that state is
|
---|
110 | restored as well. After restoring the snapshot, the
|
---|
111 | machine will then be in Saved state and resume execution
|
---|
112 | from there when it is next started. Otherwise the machine
|
---|
113 | will be in Powered Off state and do a full boot.
|
---|
114 | </p>
|
---|
115 | </li>
|
---|
116 | <li>
|
---|
117 | <p>
|
---|
118 | For each disk image attached to the machine, the
|
---|
119 | differencing image holding all the write operations since
|
---|
120 | the current snapshot was taken is thrown away, and the
|
---|
121 | original parent image is made active again. If you
|
---|
122 | restored the root snapshot, then this will be the root
|
---|
123 | disk image for each attachment. Otherwise, some other
|
---|
124 | differencing image descended from it. This effectively
|
---|
125 | restores the old machine state.
|
---|
126 | </p>
|
---|
127 | </li>
|
---|
128 | </ul>
|
---|
129 | <p>
|
---|
130 | If you later <i>delete</i> a snapshot in order
|
---|
131 | to free disk space, for each disk attachment, one of the
|
---|
132 | differencing images becomes obsolete. In this case, the
|
---|
133 | differencing image of the disk attachment cannot simply be
|
---|
134 | deleted. Instead, <ph conkeyref="vbox-conkeyref-phrases/product-name"/> needs to look at each sector
|
---|
135 | of the differencing image and needs to copy it back into its
|
---|
136 | parent. This is called "merging" images and can be a
|
---|
137 | potentially lengthy process, depending on how large the
|
---|
138 | differencing image is. It can also temporarily need a
|
---|
139 | considerable amount of extra disk space, before the
|
---|
140 | differencing image obsoleted by the merge operation is
|
---|
141 | deleted.
|
---|
142 | </p>
|
---|
143 | </li>
|
---|
144 | <li>
|
---|
145 | <p><b outputclass="bold">Immutable images.</b> When an
|
---|
146 | image is switched to immutable mode, a differencing image is
|
---|
147 | created as well. As with snapshots, the parent image then
|
---|
148 | becomes read-only, and the differencing image receives all the
|
---|
149 | write operations. Every time the virtual machine is started,
|
---|
150 | all the immutable images which are attached to it have their
|
---|
151 | respective differencing image thrown away, effectively
|
---|
152 | resetting the virtual machine's virtual disk with every
|
---|
153 | restart.
|
---|
154 | </p>
|
---|
155 | </li>
|
---|
156 | </ul>
|
---|
157 | </body>
|
---|
158 |
|
---|
159 | </topic>
|
---|