Imported Upstream version 0.72.4
This commit is contained in:
257
documentation/en/qa32.html
Normal file
257
documentation/en/qa32.html
Normal file
@@ -0,0 +1,257 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>Image level data recovery</title>
|
||||
<link rel="stylesheet" type="text/css" href="../include/dvdisaster.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Title header -->
|
||||
<table width="100%" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<span class="fxxl"><b>dvdisaster</b></span>
|
||||
<i>Version 0.72.4 / 0.72 (pl4)</i>
|
||||
</td>
|
||||
<td align="right">
|
||||
<span class="fxxl"> </span><a href="http://dvdisaster.net/en/">To the Internet version</a>
|
||||
<a href="../cs/qa32.html"></a>
|
||||
<a href="../de/qa32.html"></a>
|
||||
|
||||
<a href="../ru/qa32.html"></a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- Language chooser or separator -->
|
||||
<table width="100%" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td colspan="2" class="hsep"></td>
|
||||
</tr>
|
||||
<tr><td colspan="2" style="height: 10px">
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<!-- Main body (Navigation, actual page content, optional news column) -->
|
||||
<table width="100%" cellspacing=0>
|
||||
<tr>
|
||||
<!-- Navigation -->
|
||||
<td style="background-color:#f0f0f0; vertical-align:top; width:20%;">
|
||||
<table width="100%" cellpadding="10">
|
||||
<tr>
|
||||
<td>
|
||||
<span class="fs"><b>Contents</b></span>
|
||||
<table width="100%" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="hsep"></td>
|
||||
</tr>
|
||||
</table><p>
|
||||
|
||||
<table width="100%">
|
||||
<tr><td colspan=3><span class="fs"><a href="news.html">News</a></span></td></tr>
|
||||
<tr><td></td><td></td><td style="height:10px;"></td></tr>
|
||||
<tr><td colspan=3><span class="fs"><a href="index.html">Overview</a></span></td></tr>
|
||||
<tr><td></td><td></td><td style="height:10px;"></td></tr>
|
||||
<tr><td colspan=3><span class="fs"><a href="howtos.html">Howtos</a></span></td></tr>
|
||||
<tr><td></td><td></td><td style="height:10px;"></td></tr>
|
||||
<tr><td colspan=3><span class="fs"><a href="download.html">Download</a></span></td></tr>
|
||||
<tr><td></td><td></td><td style="height:10px;"></td></tr>
|
||||
<tr><td colspan=3><span class="fs"><a href="qa.html">Questions and Answers</a></span></td></tr>
|
||||
<tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="qa10.html">Technical Questions</a></span></td></tr>
|
||||
<tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="qa20.html">Error messages</a></span></td></tr>
|
||||
<tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="qa30.html">Background information</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa31.html">Error correction properties</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs">Image level data recovery</span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa33.html">RS01, RS02 and RS03</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa34.html">Linear reading strategy</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa35.html">Adaptive reading strategy</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa36.html">Remarks on read errors</a></span></td></tr>
|
||||
<tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="qa37.html">Hints for storing the error correction files</a></span></td></tr>
|
||||
<tr><td></td><td></td><td style="height:10px;"></td></tr>
|
||||
<tr><td colspan=3><span class="fs"><a href="feedback.html">Bug reporting</a></span></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td></td>
|
||||
|
||||
<!-- Actual page contents -->
|
||||
<td style="vertical-align:top; width:77%;" rowspan="2">
|
||||
|
||||
<!-- Insert actual page content below -->
|
||||
|
||||
<h3 class="top">Image level data recovery</h3>
|
||||
|
||||
Media recovery with error correcting codes takes place in two steps:
|
||||
|
||||
<ol>
|
||||
<li>First as much data as possible is read from the defective medium.<p></li>
|
||||
<li>Then the still missing data is recovered using the error correction code.</li>
|
||||
</ol>
|
||||
|
||||
The amount of readable data (step 1) does not only depend on the reading capabilities
|
||||
of the drive, but also on which logical level the reading process takes place.
|
||||
This page discusses the logical levels and explains why dvdisaster uses image level reading.<p>
|
||||
|
||||
<b>Logical levels of a medium</b><p>
|
||||
|
||||
Optical disks are organized into <i>data sectors</i> containing 2048 bytes each.
|
||||
Consecutively reading and storing these sectors produces a medium <i>image</i>.<p>
|
||||
|
||||
But working with single data sectors is unwieldy from a users perspective. Therefore
|
||||
media contain <i>file systems</i> which combine data sectors into <i>files</i>.
|
||||
This requires accurate book-keeping about which data sectors the files are comprised of,
|
||||
and further attributes like file names and access permissions. For this book-keeping
|
||||
some data sectors are reserved on the medium
|
||||
and filled with respective data structures.<p>
|
||||
|
||||
As a consequence media contain different <i>logical levels</i>:
|
||||
Viewing the medium as a sequence of data sectors means working at the <i>image level</i>.
|
||||
However looking at the medium as a collection of files is the perspective of
|
||||
the <i>file(system) level</i>.<p>
|
||||
|
||||
The two levels have different properties when it comes to data recovery:<p>
|
||||
|
||||
<a name="file"> </a>
|
||||
<b>Shortcomings of reading a medium at the file level</b><p>
|
||||
|
||||
Reading a defective medium at the <b>file level</b> means trying
|
||||
to read as much data as possible from each file.<p>
|
||||
|
||||
But a problem arises when data sectors are damaged which have
|
||||
book-keeping functions in the file system. The list of files on the medium
|
||||
may be truncated. Or the mapping of data sectors to files is incomplete.
|
||||
Therefore files or parts from files may be lost even though the respective
|
||||
data sectors would still be readable by the hardware. This is very bad
|
||||
since even small readable portions of damaged files are valuable for
|
||||
the error correcting code.<p>
|
||||
|
||||
An extremely bad case occurs when the error correction data is also
|
||||
stored in files. Then the error correction data is required to repair the
|
||||
file system, but the defective file system prevents access to the error
|
||||
correction data. That means total data loss and rises some issues on the
|
||||
<a href="qa32.html#eccfile">treatment of error correction files</a> (more on that later).<p>
|
||||
|
||||
A similar problem arises when files are augmented with PAR2 error correction data
|
||||
and then all these files are stored on the same medium. If the internal bookkeeping
|
||||
of the file system is damaged now, all files and therefore the error
|
||||
correction data become inaccessible and are therefore lost.<p>
|
||||
|
||||
However the situation improves greatly when employing an image-based approach:<p>
|
||||
|
||||
<a name="image"> </a>
|
||||
<b>Advantages of reading at the image level</b><p>
|
||||
|
||||
Reading at the image level uses direct communication with the drive hardware
|
||||
to access the data sectors.<p>
|
||||
|
||||
The number of readable sectors depends only on the reading capabilities of the drive,
|
||||
but not on the state of the file system. A read error in one sector does not
|
||||
block access to other data sectors. Since <i>all</i> sectors are recovered
|
||||
which are still readable by the hardware, the method provides the best foundation
|
||||
for the error correction.<p>
|
||||
|
||||
The image contains all data sectors of the medium. When the image is completely
|
||||
recovered the file system stored within is also fully repaired. A protection at the
|
||||
image level is therefore more extensive than error correction at the file level.<p>
|
||||
|
||||
dvdisaster is working exclusively at the image level to take advantage of these
|
||||
properties. The <a href="qa33.html">RS02 method</a> even allows for
|
||||
storing the error correction data at the same medium. This is possible since reading
|
||||
the error correction information at the image level can not be blocked by errors
|
||||
at other medium locations (damaged sectors with error correction data will reduce the error
|
||||
recovery capacity, but not make recovery impossible).<p>
|
||||
|
||||
The <a href="qa33.html">RS01 method</a> protects media at the image level, too,
|
||||
but stores the error correction data in files. The next section hints at some
|
||||
pitfalls arising from that.<p>
|
||||
|
||||
<a name="eccfile"> </a>
|
||||
<b>Consequences for error correction file storage</b><p>
|
||||
|
||||
The error correction data created by dvdisaster protects media at the image level.
|
||||
But how are the error correction <i>files</i> protected?<p>
|
||||
|
||||
Since error correction files are read at the file level they are subject
|
||||
to the problems discussed above. If the medium containing the error correction
|
||||
files becomes damaged it may not be possible to access or read them completely.
|
||||
<p>
|
||||
|
||||
<table width="100%"><tr><td class="vsep"></td><td>
|
||||
Therefore it is important to protect error correction files at the image level
|
||||
as well:
|
||||
<a href="qa37.html">Media containing error correction files</a>
|
||||
must be protected with dvdisaster, too.
|
||||
</td></tr></table><p>
|
||||
|
||||
|
||||
Since image level protection is assumed there is <i>no further damage protection</i>
|
||||
contained in the RS01 error correction files! This would not help much,
|
||||
anyways: Error correction files could be created in a way that allows
|
||||
them to provide a reduced data recovering capacity even when being
|
||||
damaged<sup><a href="qa32.html#footnote1">*)</a></sup>.
|
||||
But however such internal protection would be designed, the
|
||||
error correction file would still be only protected at the file system
|
||||
level with all the disadvantages discussed above!<p>
|
||||
|
||||
In addition, the computing time and redundancy used for internal protection
|
||||
is better spent at the image level: The Reed-Solomon error correction works
|
||||
best when error correction information
|
||||
is spread over huge amounts of data.
|
||||
It is better to protect the image as a whole
|
||||
than individually protecting each file within.<p>
|
||||
|
||||
<pre> </pre>
|
||||
<table width="50%"><tr><td><hr></td></tr></table>
|
||||
|
||||
<span class="fs">
|
||||
<a name="footnote1"><sup>*)</sup></a> Error correction files created
|
||||
with the new RS03 codec have exactly these properties, e.g. they
|
||||
are robust against damage as long as there is enough error correction
|
||||
capacity left. This is possible as by now there is sufficient
|
||||
computing power and fast hard drive access available to create
|
||||
a suitable file format. At the time RS01 was developed these resources
|
||||
were not yet available. But it must be stressed that even for
|
||||
RS03 error correction files the disadvantages of reading at the
|
||||
file level hold!
|
||||
</span>
|
||||
<!-- do not change below -->
|
||||
|
||||
</td> <!-- end of page contents -->
|
||||
|
||||
</tr>
|
||||
|
||||
<!--
|
||||
<tr valign="bottom">
|
||||
<td style="background-color:#f0f0f0;">
|
||||
<table cellpadding="10"><tr><td><a href="http://dvdisaster.net/legacy/en/index.html"><span class="fs"></span></a></td></tr></table>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
-->
|
||||
</table> <!-- end of main body table -->
|
||||
|
||||
|
||||
<!-- Page footer -->
|
||||
<table width="100%" cellpadding="0" border="0">
|
||||
<tr><td colspan="2" style="width:100%; height:10px;"></td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="hsep"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">
|
||||
<span class="fs">
|
||||
<i> Copyright 2004-2012 Carsten Gnörlich.<br>
|
||||
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
|
||||
</i>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="2" class="hsep"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user