[Libguestfs] [PATCH] RHEV: Use dd and direct io to write to NFS
Richard W.M. Jones
rjones at redhat.com
Thu Apr 8 08:56:33 UTC 2010
On Tue, Apr 06, 2010 at 04:44:54PM +0100, Matthew Booth wrote:
> I've been experiencing severe stability issues writing large amounts of data to
> an NFS export (I have never successfully written 8GB of data without having to
> reboot my machine). This patch alleviates the problem. I have successfully
> exported an 8GB disk with this patch in place.
> ---
> lib/Sys/VirtV2V/Target/RHEV.pm | 29 ++++++-----------------------
> 1 files changed, 6 insertions(+), 23 deletions(-)
>
> diff --git a/lib/Sys/VirtV2V/Target/RHEV.pm b/lib/Sys/VirtV2V/Target/RHEV.pm
> index 4b663ef..9b4b73a 100644
> --- a/lib/Sys/VirtV2V/Target/RHEV.pm
> +++ b/lib/Sys/VirtV2V/Target/RHEV.pm
> @@ -285,29 +285,12 @@ sub open
> path => "$path.meta",
> error => $!)));
>
> - # Open the data file for writing
> - my $data;
> - open($data, '>', $path)
> - or die(__x("Unable to open {path} for writing: {error}",
> - path => "$path",
> - error => $!));
> -
> - # Write all data received to the data file
> - my $buffer;
> -
> - for(;;) {
> - my $ret = sysread(STDIN, $buffer, 64*1024);
> - die("Error in NFSHelper reading from stdin: $!")
> - unless (defined($ret));
> - last if ($ret == 0);
> -
> - print $data $buffer;
> - }
> -
> - close($data)
> - or die(user_message(__x("Error closing {path}: {error}",
> - path => "$path",
> - error => $!)));
> + # Write the remainder of the data using dd in 2MB chunks
> + # XXX - mbooth at redhat.com 06/04/2010 (Fedora 12 writing to RHEL 5 NFS)
> + # Use direct IO as writing a large amount of data to NFS regularly
> + # crashes my machine. Using direct io crashes less.
> + exec('dd', 'obs='.1024*1024*2, 'oflag=direct', 'of='.$path)
> + or die("Unable to execute dd: $!");
> });
Good old NFS.
ACK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://et.redhat.com/~rjones/libguestfs/
See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
More information about the Libguestfs
mailing list