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="ts_config-periodic-flush">
|
---|
4 | <title>Guest Shows IDE/SATA Errors for File-Based Images on Slow Host File
|
---|
5 | System</title>
|
---|
6 |
|
---|
7 | <body>
|
---|
8 | <p>
|
---|
9 | Occasionally, some host file systems provide very poor writing
|
---|
10 | performance and as a consequence cause the guest to time out
|
---|
11 | IDE/SATA commands. This is normal behavior and should normally
|
---|
12 | cause no real problems, as the guest should repeat commands that
|
---|
13 | have timed out. However, guests such as some Linux versions have
|
---|
14 | severe problems if a write to an image file takes longer than
|
---|
15 | about 15 seconds. Some file systems however require more than a
|
---|
16 | minute to complete a single write, if the host cache contains a
|
---|
17 | large amount of data that needs to be written.
|
---|
18 | </p>
|
---|
19 | <p>
|
---|
20 | The symptom for this problem is that the guest can no longer
|
---|
21 | access its files during large write or copying operations,
|
---|
22 | usually leading to an immediate hang of the guest.
|
---|
23 | </p>
|
---|
24 | <p>
|
---|
25 | In order to work around this problem, the true fix is to use a
|
---|
26 | faster file system that does not exhibit such unacceptable write
|
---|
27 | performance, it is possible to flush the image file after a
|
---|
28 | certain amount of data has been written. This interval is
|
---|
29 | normally infinite, but can be configured individually for each
|
---|
30 | disk of a VM.
|
---|
31 | </p>
|
---|
32 | <p>
|
---|
33 | For IDE disks use the following command:
|
---|
34 | </p>
|
---|
35 | <pre xml:space="preserve">VBoxManage setextradata <varname>VM-name</varname>
|
---|
36 | "VBoxInternal/Devices/piix3ide/0/LUN#[<varname>x</varname>]/Config/FlushInterval" [<varname>b</varname>]</pre>
|
---|
37 | <p>
|
---|
38 | For SATA disks use the following command:
|
---|
39 | </p>
|
---|
40 | <pre xml:space="preserve">VBoxManage setextradata <varname>VM-name</varname>
|
---|
41 | "VBoxInternal/Devices/ahci/0/LUN#[<varname>x</varname>]/Config/FlushInterval" [<varname>b</varname>]</pre>
|
---|
42 | <p><codeph>[<varname>x</varname>]</codeph> specifies the
|
---|
43 | disk. For IDE, <codeph>0</codeph> represents device 0 on the
|
---|
44 | primary channel, <codeph>1</codeph> represents device 1 on the
|
---|
45 | primary channel, <codeph>2</codeph> represents device 0 on the
|
---|
46 | secondary channel, and <codeph>3</codeph> represents device 1
|
---|
47 | on the secondary channel. For SATA, use values between
|
---|
48 | <codeph>0</codeph> and <codeph>29</codeph>. This
|
---|
49 | configuration option applies to disks only. Do not use this
|
---|
50 | option for CD or DVD drives.
|
---|
51 | </p>
|
---|
52 | <p>
|
---|
53 | The unit of the interval
|
---|
54 | (<codeph>[<varname>b</varname>]</codeph>) is the
|
---|
55 | number of bytes written since the last flush. The value for it
|
---|
56 | must be selected so that the occasional long write delays do not
|
---|
57 | occur. Since the proper flush interval depends on the
|
---|
58 | performance of the host and the host filesystem, finding the
|
---|
59 | optimal value that makes the problem disappear requires some
|
---|
60 | experimentation. Values between 1000000 and 10000000 (1 to 10
|
---|
61 | megabytes) are a good starting point. Decreasing the interval
|
---|
62 | both decreases the probability of the problem and the write
|
---|
63 | performance of the guest. Setting the value unnecessarily low
|
---|
64 | will cost performance without providing any benefits. An
|
---|
65 | interval of 1 will cause a flush for each write operation and
|
---|
66 | should solve the problem in any case, but has a severe write
|
---|
67 | performance penalty.
|
---|
68 | </p>
|
---|
69 | <p>
|
---|
70 | Providing a value of <codeph>0</codeph> for
|
---|
71 | <codeph>[<varname>b</varname>]</codeph> is treated as
|
---|
72 | an infinite flush interval, effectively disabling this
|
---|
73 | workaround. Removing the extra data key by specifying no value
|
---|
74 | for <codeph>[<varname>b</varname>]</codeph> has the
|
---|
75 | same effect.
|
---|
76 | </p>
|
---|
77 | </body>
|
---|
78 |
|
---|
79 | </topic>
|
---|