mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 19:01:57 -04:00
304 lines
14 KiB
HTML
304 lines
14 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>
|
|
|
|
<!-- Google Analytics 4 -->
|
|
<!-- Google tag (gtag.js) -->
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-W1Z5FKHYQ4"></script>
|
|
<script>
|
|
window.dataLayer = window.dataLayer || [];
|
|
function gtag(){dataLayer.push(arguments);}
|
|
gtag('js', new Date());
|
|
|
|
gtag('config', 'G-W1Z5FKHYQ4');
|
|
</script>
|
|
|
|
<!-- Google Universal Analytics -->
|
|
<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="support">Support</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><s>FlexRAID</s>
|
|
- <b>DISCONTINUED</b> 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.
|
|
Recently various issues were found and the official <a href="https://btrfs.wiki.kernel.org/index.php/RAID56">wiki</a> now states:
|
|
<i>The parity RAID code has multiple serious data-loss bugs in it. It should not be used for anything other than testing purposes.</i>
|
|
</li>
|
|
<li><a href="https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/overview">Storage Spaces</a>
|
|
- The last contender from Microsoft, and integrated into Windows 8.
|
|
Proprietary with real-time redundancy. Checksumming is not supported.
|
|
It also has some other <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>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</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 <a href="#note8">[8]</a></td><td>Yes<br>fletcher4<br>256 bit</td><td>Yes<br>CRC32C<br>32 bit</td><td>No <a href="#note9">[9]</a></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><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 2</td><td>1 2 3</td><td>1 2</td><td>1 2</td></tr>
|
|
|
|
<!---
|
|
unRAID 6.2 adds Dual parityvs ZFS
|
|
|
|
New Storage Spaces adds Dual Parity if you have at least 7 disks
|
|
https://blogs.technet.microsoft.com/tip_of_the_day/2014/07/23/tip-of-the-day-dual-parity-storage-spaces/
|
|
-->
|
|
|
|
<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>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>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>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>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>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>2005</td><td>not yet stable <a href="#note11">[11]</a></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>59$/129$</td><td>Open Source CDDL<br>Free</td><td>Open Source GPL2<br>Free</td><td>Proprietary<br>Windows 8/10</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="https://github.com/Smurf-IV/Elucidate">Elucidate</a> GUI,
|
|
or plugin for for <a href="https://www.openmediavault.org/">OpenMediaVault</a>
|
|
</td><td>command line<br>GUI</td><td>command line<br>GUI/Plugins <a href="#note7">[7]</a></td><td>command line<br>GUI<a href="#note10">[10]</a></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="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>
|
|
ZFS also uses a sub-optimal RAID-Z3 algorithm, that requires double computations than the equivalent SnapRAID's z-parity.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note4">[4]</a> - unRAID allows to use filled disks but only if they are already
|
|
formatted with the XFS or Btrfs filesystems.
|
|
But not ext4 or NTFS, the two most common filesystems used in Linux and Windows.
|
|
</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>
|
|
<a id="note8">[8]</a> - unRAID can have integrity checksum using a plugin lik
|
|
<a href="https://forums.lime-technology.com/topic/43290-dynamix-file-integrity-plugin/">Dynamix File Integrity</a>,
|
|
<a href="https://forums.lime-technology.com/topic/41708-checksum-suite/">Checksum Suite</a> or
|
|
<a href="https://forums.lime-technology.com/topic/35615-bunker-yet-another-utility-for-file-integrity-checks/">bunker</a>
|
|
but they are all independent at the parity processing and not used to help the recovering process.
|
|
For example, when recovering a single failed disk with double parity,
|
|
the checksum can be used to identify additional silent errors, and still be able to recover.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note9">[9]</a> - Storage Spaces can be used with ReFS that support integrity checksum, but not in the Parity mode:
|
|
<a href="http://www.windowscentral.com/how-use-resilient-file-system-refs-windows-10"><i>"Although, you may be able to select Simple (no resiliency) or Parity, both of these options will fail the process"</i></a>.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note10">[10]</a> - Btrfs has external GUIs, like <a href="http://rockstor.com/">Rockstor</a>.
|
|
</p>
|
|
|
|
<p>
|
|
<a id="note11">[11]</a> - Btrfs supports RAID5 from 2013, but recently some serious issues in the
|
|
RAID5/6 support were <a href="https://www.phoronix.com/scan.php?page=news_item&px=Btrfs-RAID-56-Is-Bad">found</a>.
|
|
At present they <a href="https://www.phoronix.com/scan.php?page=news_item&px=Btrfs-RAID56-Not-All-Clear">aren't fixed yet</a>.
|
|
The official wiki says (2025):
|
|
<a href="https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid56-status-and-recommended-practices"><i>"There are some implementation and design deficiencies that make it unreliable for some corner cases and the feature should not be used in production, only for evaluation or testing"</i></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>
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|