snapraid/compare.html
Andrea Mazzoleni e69776f3be Auto update
2025-10-14 09:29:02 +02:00

297 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 just one of many <span class="bold">RAID-like</span> solutions available for disk arrays.
</p>
<p>
Some of the best-known alternatives include:
</p>
<ul>
<li><a href="http://www.lime-technology.com/">unRAID</a>
- A commercial and open-source (GPL2) solution. It uses a modified Linux ReiserFS filesystem with real-time redundancy. Integrity checksums are not supported.
</li>
<li><s>FlexRAID</s>
- <b>DISCONTINUED</b>. A commercial, proprietary C++/Java application for Windows, with limited Linux support. It offered both snapshot and real-time redundancy, including integrity checksums.
</li>
<li><a href="http://en.wikipedia.org/wiki/ZFS">ZFS</a>
- An open-source (GPL-incompatible) filesystem with real-time redundancy and integrity checksums.
</li>
<li><a href="http://en.wikipedia.org/wiki/btrfs">Btrfs</a>
- An open-source (GPL2) Linux filesystem with real-time redundancy. Since Linux 3.9, it supports <a href="http://lwn.net/Articles/536038/">RAID5/6 redundancy</a> and integrity checksums.
Recent issues have been discovered, and the official <a href="https://btrfs.wiki.kernel.org/index.php/RAID56">wiki</a> now warns:
<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>
- Microsoft’s solution, integrated into Windows 8 and later. Proprietary, with real-time redundancy but without checksumming support. It also has several <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">More disk 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&nbsp;OS&nbsp;X<br>OpenIndiana<br>Solaris<br>BSD</td><td>Linux</td><td>Linux <a href="#note6">[6]</a><br>Mac&nbsp;OS&nbsp;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 bit-rot protection comparable to SnapRAID, always verifying data before use.
In this regard, all three solutions represent the state of the art.
<br>
One drawback of ZFS is that the default <a href="http://en.wikipedia.org/wiki/Fletcher%27s_checksum">Fletcher</a> checksum prioritizes speed over reliability.
Even though it is a 256-bit checksum, Fletcher is generally considered weak. Similarly, Btrfs uses CRC32C by default, which is strong, but ony 32 bits.
A better alternative is "edonr" for ZFS and "xxhash" for Btrfs.
In contrast, SnapRAID uses the 128-bit <a href="http://burtleburtle.net/bob/hash/spooky.html">SpookyHash</a>,
which provides state-of-the-art checksum quality without compromising speed.
<br>
ZFS also employs a sub-optimal RAID-Z3 algorithm that requires roughly twice the computation compared to 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&currency_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>