mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 19:01:57 -04:00
273 lines
12 KiB
HTML
273 lines
12 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<meta name="description" content="A backup program for disk arrays. It stores parity information of your data and it recovers from up to six disk failures">
|
|
<meta name="keywords" content="snapraid snapshot raid backup disk array redundancy parity">
|
|
<meta name="author" content="Andrea Mazzoleni">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="stylesheet" type="text/css" href="style.css">
|
|
<title>SnapRAID</title>
|
|
<script type="text/javascript">
|
|
|
|
var _gaq = _gaq || [];
|
|
_gaq.push(['_setAccount', 'UA-21967501-1']);
|
|
_gaq.push(['_trackPageview']);
|
|
|
|
(function() {
|
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
|
})();
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="header">
|
|
<img src="index.jpg" width="1200" height="150" alt="Title">
|
|
</div>
|
|
<div id="menu">
|
|
<a href="/">About</a>
|
|
<a href="download">Download</a>
|
|
<a href="design">Design</a>
|
|
<a href="compare">Compare</a>
|
|
<a href="faq">FAQ</a>
|
|
<a href="manual">Manual</a>
|
|
<a href="https://sourceforge.net/p/snapraid/discussion/1677233/">Forum</a>
|
|
<a href="authors">Authors</a>
|
|
</div>
|
|
<div id="main">
|
|
|
|
|
|
|
|
<p>
|
|
<span class="bold">SnapRAID</span> is only one of the available <span class="bold">not standard RAID</span> solutions for disk arrays.
|
|
</p>
|
|
|
|
<p>
|
|
The best known others are:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><a href="http://www.lime-technology.com/">unRAID</a>
|
|
- Commercial and OpenSource GPL2 solution. A modified version of the Linux Reiserfs filesystem with real-time redundancy.
|
|
No integrity checksum is supported.
|
|
</li>
|
|
<li><a href="http://www.flexraid.com/">FlexRAID</a>
|
|
- Commercial and proprietary C++/Java application for Windows, with some limited support for Linux.
|
|
It supports both snapshot redundancy and real-time redundancy, with integrity checksum.
|
|
</li>
|
|
<li><a href="http://en.wikipedia.org/wiki/ZFS">ZFS</a>
|
|
- OpenSource filesystem (but GPL incompatible) with real-time redundancy and integrity checksum.
|
|
</li>
|
|
<li><a href="http://en.wikipedia.org/wiki/btrfs">Btrfs</a>
|
|
- OpenSource filesystem GPL2 with real-time redundancy.
|
|
From Linux 3.9 it supports <a href="http://lwn.net/Articles/536038/">RAID5/6 redundancy</a> and integrity checksums.
|
|
</li>
|
|
<li><a href="http://blogs.msdn.com/b/b8/archive/2012/01/05/virtualizing-storage-for-scale-resiliency-and-efficiency.aspx">Storage Spaces</a>
|
|
- The last contender from Microsoft, and integrated into Windows 8.
|
|
Proprietary with real-time redundancy. Checksumming is not supported, but it could be provided by
|
|
<a href="http://blogs.msdn.com/b/b8/archive/2012/01/16/building-the-next-generation-file-system-for-windows-refs.aspx">ReFS</a>.
|
|
But with some <a href="http://helgeklein.com/blog/2012/03/windows-8-storage-spaces-bugs-and-design-flaws/">limitations</a>.
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
The main factor to categorize them is when the redundancy information is updated.
|
|
In <span class="bold">real-time</span> solutions the parity data is updated in real-time,
|
|
without an explicit action from the user. Like in standard RAID.
|
|
In <span class="bold">snapshot</span> solutions the parity data is updated only upon
|
|
an explicit request from the user. Like in backups.
|
|
</p>
|
|
|
|
<p>
|
|
Other important factors are the support of an <span class="bold">integrity</span> checksum
|
|
to identify <a href="http://www.zdnet.com/blog/storage/data-corruption-is-worse-than-you-know/191">silent data corruption</a>
|
|
and the possibility to <span class="bold">fix it</span>,
|
|
if you can <span class="bold">use already filled disk</span>,
|
|
if you can <span class="bold">recover your data from not broken disks</span> when you get too many failures to have a full recover,
|
|
and if <span class="bold">all your disks are spinning when reading one file</span>.
|
|
</p>
|
|
|
|
<table class="compare">
|
|
<tr><th width="30%"></th><th><span class="bold">SnapRAID</span></th><th>unRAID</th><th>FlexRAID</th><th>ZFS</th><th>Btrfs</th><th>Storage Spaces</th></tr>
|
|
|
|
<tr><td><span class="bold">Redundancy model</span><br>Real-time computes parity at real-time like RAID,
|
|
snapshot at request time, like Backup.</td>
|
|
<td>Snapshot</td><td>Real-time</td><td>Real-time<br>Snapshot</td><td>Real-time<br>Snapshot</td><td>Real-time<br>Snapshot</td><td>Real-time</td></tr>
|
|
|
|
<tr><td><span class="bold">Integrity</span><br>
|
|
If data is validated with some kind of checksum,
|
|
and which one is the default.</td>
|
|
<td>Yes<br>SpookyHash<br>128 bit</td><td>No</td><td>Yes<br>Adler32<br>32 bit</td><td>Yes<br>fletcher4<br>256 bit</td><td>Yes<br>CRC32C<br>32 bit</td><td>No</td></tr>
|
|
|
|
<tr><td><span class="bold">Fix silent errors</span><br>
|
|
If silent errors are detected and fixed before they can propagate into the parity.</td>
|
|
<td>Yes</td><td>No <a href="#note1">[1]</a></td><td>No <a href="#note2">[2]</a></td><td>Yes <a href="#note3">[3]</a></td><td>Yes <a href="#note3">[3]</a></td><td>No</td></tr>
|
|
|
|
<!---
|
|
Silent error discussion in UnRAID Forum:
|
|
unRAID vs ZFS
|
|
http://lime-technology.com/forum/index.php?topic=27488
|
|
|
|
In case of silent error in a data disk unRAID automatically
|
|
fixes the parity hiding the error forever.
|
|
http://lime-technology.com/forum/index.php?topic=29459
|
|
|
|
Corrective parity check after unclean shutdown
|
|
http://lime-technology.com/forum/index.php?topic=25416
|
|
|
|
Neil Brown statement about linux-raid NOT doing smart recovery
|
|
to recover silent errors
|
|
http://neil.brown.name/blog/20100211050355
|
|
|
|
Brahim statement about data-rot
|
|
http://forum.flexraid.com/index.php/topic,23.msg256.html#msg256
|
|
http://forum.flexraid.com/index.php/topic,1753.msg12512.html#msg12512
|
|
http://www.openegg.org/forums/posts/list/727.page
|
|
-->
|
|
|
|
<tr><td><span class="bold">Number of failures</span><br>
|
|
How many disk failures are supported? 1 is for RAID5, 2 for RAID6.
|
|
</td>
|
|
<td>1 2 3 4 5 6</td><td>1</td><td>1 2 3 4 5 6+</td><td>1 2 3</td><td>1 2</td><td>1</td></tr>
|
|
|
|
<tr><td><span class="bold">Other failures</span><br>If more disks fail than the supported redundancy model,
|
|
is it possible to recover the data in the not failed disks?</td>
|
|
<td>Yes</td><td>Yes</td><td>Yes</td><td>No</td><td>No</td><td>No</td></tr>
|
|
|
|
<tr><td><span class="bold">Power/Noise</span><br>How many disks are spinning when reading a single file?</td>
|
|
<td>One</td><td>One</td><td>One</td><td>All</td><td>All</td><td>All</td></tr>
|
|
|
|
<tr><td><span class="bold">Filled disks</span><br>Can you start with already filled disks?</td>
|
|
<td>Yes</td><td>Partial<a href="#note4">[4]</a></td><td>Yes</td><td>No</td><td>No</td><td>No</td></tr>
|
|
|
|
<tr><td><span class="bold">Add disks</span><br>Can you add disks at later time?</td>
|
|
<td>Yes</td><td>Yes</td><td>Yes</td><td>No<a href="#note5">[5]</a></td><td>Yes</td><td>Yes</td></tr>
|
|
|
|
<!--
|
|
ZFS does't allow to add new disks to a raidz pool
|
|
http://serverfault.com/questions/190207/how-can-i-add-one-disk-to-an-existing-raidz-zpool
|
|
-->
|
|
|
|
<tr><td><span class="bold">Operating system</span><br>Which OS is supported?</td>
|
|
<td>Linux<br>Windows<br>Mac OS X<br>OpenIndiana<br>Solaris<br>BSD</td><td>Linux</td><td>Windows<br>Linux</td><td>Linux <a href="#note6">[6]</a><br>Mac OS X<br>OpenIndiana<br>Solaris<br>BSD</td><td>Linux</td><td>Windows</td></tr>
|
|
|
|
<tr><td><span class="bold">Age</span><br>The year of the first official release supporting at least RAID5 redundancy.</td>
|
|
<td>2011</td><td>2005</td><td>2008</td><td>2005</td><td>2013</td><td>2012</td></tr>
|
|
|
|
<!---
|
|
ZFS 2009 is the data of the "Triple-Parity RAID-Z" article by Adam Leventhal
|
|
|
|
RAID 1987 is the date of the paper:
|
|
"A Case for Redundant Arrays of Inexpensive Disks (RAID)", David A. Patterson, Garth A. Gibson and Randy H. Katz
|
|
http://www.eecs.berkeley.edu/Pubs/TechRpts/1987/5853.html
|
|
-->
|
|
|
|
<tr><td><span class="bold">License/Price</span><br>
|
|
Software license and price.
|
|
</td>
|
|
<td>Open Source GPL3<br>Free</td><td>Open Source GPL2<br>89$/129$</td><td>Proprietary<br>40$/60$</td><td>Open Source CDDL<br>Free</td><td>Open Source GPL2<br>Free</td><td>Proprietary<br>Windows 8</td></tr>
|
|
|
|
<tr><td><span class="bold">Interface</span><br>Which interface is provided? GUI or command line?</td>
|
|
<td>
|
|
command line<br>or <a href="http://elucidate.codeplex.com/">Elucidate</a> GUI,
|
|
or plugin for for <a href="http://www.openmediavault.org/">OpenMediaVault</a>
|
|
</td><td>command line<br>GUI</td><td>GUI</td><td>command line<br>GUI/Plugins <a href="#note7">[7]</a></td><td>command line</td><td>GUI</td></tr>
|
|
|
|
</table>
|
|
|
|
<h3>Notes</h3>
|
|
|
|
<p>
|
|
<a id="note1">[1]</a> - unRAID doesn't have any kind of checksum, and it just ignores silent errors.
|
|
Even worse, if a parity error is detected as result of a silent error in the data,
|
|
the parity is automatically recomputed, making impossible to recover the silent error, even manually.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note2">[2]</a> - Flexraid uses checksums to validate files, but such checksums
|
|
<a href="http://forum.flexraid.com/index.php/topic,3233.0.html">are not verified when data is read to update the parity</a>.
|
|
This means that any silent error present will propagate into the parity,
|
|
making impossible to fix it later, even if it can be still detected comparing the file checksum.
|
|
<br>
|
|
You can get in a state where the "Validate" operation
|
|
reports errors, but the "Verify" one reports no problem in the parity,
|
|
making impossible to fix the errors.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note3">[3]</a> - ZFS and Btrfs provide a bit-rot protection at the same level of SnapRAID,
|
|
always checking data before using it.
|
|
In this regards all the three solutions represent the state-of-the-art.
|
|
<br>
|
|
A cons of ZFS is that the default <a href="http://en.wikipedia.org/wiki/Fletcher%27s_checksum">Fletcher</a>
|
|
checksum is a choice that favorites speed over quality.
|
|
The same for the default CRC32C used by Btrfs.
|
|
The 128 bits <a href="http://burtleburtle.net/bob/hash/spooky.html">SpookyHash</a>
|
|
used by SnapRAID is instead the state-of-the-art in checksumming quality,
|
|
without compromising in speed.
|
|
<br>
|
|
Another cons of ZFS is that it lacks a fast RAID implementation in assembler.
|
|
It only has a C implementation, that is from two to four times slower than SnapRAID/Btrfs.
|
|
<br>
|
|
ZFS also uses a sub-optimal RAID-Z3 algorithm, that requires double computations than the equivalent SnapRAID's z-parity.
|
|
<br>
|
|
Instead, both SnapRAID and Btrfs use top-notch assembler implementations to compute the RAID parity,
|
|
always using the best known RAID algorithm and implementation.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note4">[4]</a> - unRAID allows to use filled disks but only if they are already
|
|
formatted with the ReiserFS, XFS or Btrfs filesystems. But not ext4 or NTFS.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note5">[5]</a> - ZFS allows to add a new vdev at the pool, but not a disk to a vdev.
|
|
See <a href="http://louwrentius.com/the-hidden-cost-of-using-zfs-for-your-home-nas.html">The 'Hidden' Cost of Using ZFS for Your Home NAS</a>.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note6">[6]</a> - ZFS is also available in Linux at kernel level using <a href="http://zfsonlinux.org/">ZFS on Linux</a>.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note7">[7]</a> - ZFS has external GUIs, like <a href="http://www.napp-it.org/">Napp-it</a>
|
|
and plugins for <a href="http://www.freenas.org/">FreeNAS</a> and <a href="http://www.nas4free.org/">NAS4Free</a>.
|
|
</p>
|
|
|
|
<p>
|
|
If you think that some information reported is incorrect or simply unfair, please report it in the <a href="https://sourceforge.net/p/snapraid/discussion/1677233/">Forum</a>.
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
<div id="footer">
|
|
|
|
<div class="column">
|
|
<span class="bold">Donate with</span>
|
|
<br>
|
|
<!--
|
|
<a href="http://sourceforge.net/p/snapraid/donate/"><img src="paypal.png" width="160" height="60" alt="PayPal"></a>
|
|
-->
|
|
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=amadvance%40gmail%2ecom&lc=US&item_name=SnapRAID&no_note=0¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHostedGuest"><img src="paypal.png" width="160" height="60" alt="PayPal"></a>
|
|
<!--
|
|
<a href="https://coinkite.com/u/amadvance/"><img src="bitcoin.png" width="160" height="60" alt="BitCoin"></a>
|
|
-->
|
|
</div>
|
|
|
|
<div class="column">
|
|
<span class="bold">Find other resources at</span>
|
|
<br>
|
|
<a href="https://github.com/amadvance/snapraid/"><img src="github.png" width="160" height="60" alt="GitHub"></a>
|
|
<a href="http://sourceforge.net/projects/snapraid/"><img src="sourceforge.png" width="115" height="60" alt="SourceForge"></a>
|
|
<a href="https://travis-ci.org/amadvance/snapraid/"><img src="travisci.png" width="64" height="60" alt="TravisCI"></a>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|