snapraid/compare.html
Andrea Mazzoleni a000995f2f Auto update
2025-12-13 17:35:07 +01:00

271 lines
15 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="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<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 one of many <span class="bold">RAID-like</span> solutions available for disk arrays.
</p>
<p>
Some well-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 XFS filesystem with real-time redundancy. Integrity checksums are not natively 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.
Issues have been identified, and the official <a href="https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid56-status-and-recommended-practices">wiki</a> as of 2025 warns:
<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>
</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 no checksum 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 primary factor for categorizing these solutions is when redundancy information is updated.
In <span class="bold">real-time</span> solutions, parity data is updated in real-time
without explicit user action, similar to standard RAID.
In <span class="bold">snapshot</span> solutions, parity data is updated only upon explicit user request, similar to backups.
</p>
<p>
Other key factors include support for <span class="bold">integrity</span> checksums to detect <a href="https://www.zdnet.com/article/data-corruption-is-worse-than-you-know/">silent data corruption</a> and the ability to <span class="bold">fix it</span>, whether you can <span class="bold">use already filled disks</span>, whether you can <span class="bold">recover data from non-failed disks</span> when there are too many failures for full recovery, and whether <span class="bold">all disks spin 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 in real-time like RAID; snapshot computes parity on request, like backups.</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>Whether data is validated with a checksum, and the default checksum type.</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>Whether silent errors are detected and fixed before propagating to parity.</td>
<td>Yes</td><td>No <a href="#note1">[1]</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 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, can data on non-failed disks be recovered?</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 spin 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 disks that already contain data?</td>
<td>Yes</td><td>Yes</a></td><td>No</td><td>No</td><td>No</td></tr>
<tr><td><span class="bold">Add filled disks</span><br>Can data disks that already contain data be added later?</td>
<td>Yes</td><td>No <a href="#note4">[4]</td><td>No</a></td><td>No</td><td>No</td></tr>
<!--
Until 2024 it was "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
https://louwrentius.com/the-hidden-cost-of-using-zfs-for-your-home-nas.html
Implemented in OpenZFS Release 2.3.0 (2025)
-->
<tr><td><span class="bold">Operating system</span><br>Which operating systems are supported?</td>
<td>Linux<br>Windows<br>macOS<br>OpenIndiana<br>Solaris<br>BSD</td><td>Linux</td><td>Linux <a href="#note6">[6]</a><br>macOS<br>OpenIndiana<br>Solaris<br>BSD</td><td>Linux</td><td>Windows</td></tr>
<tr><td><span class="bold">Age</span><br>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 cost.</td>
<td>Open Source GPL3<br>Free</td><td>Open Source GPL2<br>$49/$109 +$36 yearly, 219$ lifetime</td><td>Open Source CDDL<br>Free</td><td>Open Source GPL2<br>Free</td><td>Proprietary<br>Included with 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><a href="https://github.com/Smurf-IV/Elucidate">Elucidate</a> GUI,<br>or plugin 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 lacks native checksums and ignores silent errors.
Even worse, if a parity mismatch is detected due to a silent error in the data,
the parity is automatically recomputed, making it impossible to recover the silent error, even manually.
Integrity checksum plugins do not help in this case, as they are not integrated into the parity-checking process.
To achieve functionality similar to SnapRAID, you would need to use the Btrfs filesystem for all your data disks.
</p>
<p>
<a id="note3">[3]</a> - ZFS and Btrfs provide bit-rot protection comparable to SnapRAID, always verifying data before use. These three solutions represent the state of the art.
<br>
One drawback of ZFS is that its default <a href="http://en.wikipedia.org/wiki/Fletcher%27s_checksum">Fletcher</a> checksum prioritizes speed over reliability. Although it is a 256-bit checksum, Fletcher is considered weaker than alternatives. Similarly, Btrfs uses CRC32C by default, which is strong but only 32-bit. Better alternatives are "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 offers state-of-the-art checksum quality without sacrificing speed.
<br>
ZFS also employs a suboptimal RAID-Z3 algorithm that requires roughly twice the computation compared to SnapRAID’s z-parity.
</p>
<p>
<a id="note4">[4]</a> - unRAID 7.2 claims that it can add data disks to an existing array, but in reality, what it actually does is create a new array and rebuild the parity from scratch.
The key difference is that during this process, the data disks already in the array <a href="https://youtu.be/frtauLMO3-c?t=803">are not protected</a>.
This is a serious flaw, as a full parity rebuild puts considerable stress on all drives. If any disk is near failure, there’s a high risk it could fail during this operation.
With unRAID, the only safe way to add a new data disk to an existing array is to pre-clear it first.
</p>
<p>
<a id="note6">[6]</a> - ZFS is available on Linux at the kernel level via <a href="http://zfsonlinux.org/">ZFS on Linux</a>.
</p>
<p>
<a id="note7">[7]</a> - ZFS supports external GUIs, such as <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 use integrity checksums via plugins like <a href="https://forums.lime-technology.com/topic/43290-dynamix-file-integrity-plugin/">Dynamix File Integrity</a>, or <a href="https://forums.lime-technology.com/topic/35615-bunker-yet-another-utility-for-file-integrity-checks/">bunker</a>.
However, these are independent of parity processing and not used to aid recovery.
For example, when recovering a single failed disk with dual parity, checksums can identify additional silent errors to facilitate recovery.
To achieve functionality similar to SnapRAID, you would need to use the Btrfs filesystem for all your data disks.
</p>
<p>
<a id="note9">[9]</a> - Storage Spaces can be used with ReFS, which supports integrity checksums, but not in Parity mode: <a href="http://www.windowscentral.com/how-use-resilient-file-system-refs-windows-10"><i>"Although you may select Simple (no resiliency) or Parity, both options will fail the process."</i></a>
</p>
<p>
<a id="note10">[10]</a> - Btrfs supports external GUIs, such as <a href="http://rockstor.com/">Rockstor</a>.
</p>
<p>
<a id="note11">[11]</a> - Btrfs has supported RAID5 since 2013, but serious issues in RAID5/6 support were <a href="https://www.phoronix.com/scan.php?page=news_item&px=Btrfs-RAID-56-Is-Bad">identified</a>. As of 2025, these <a href="https://www.phoronix.com/scan.php?page=news_item&px=Btrfs-RAID56-Not-All-Clear">remain unresolved</a>. The official wiki states: <a href="https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid56-status-and-recommended-practices"><i>"There are implementation and design deficiencies that make it unreliable for some corner cases. The feature should not be used in production, only for evaluation or testing."</i></a>
</p>
<p>
If you believe any information is incorrect or unfair, please report it in the <a href="https://sourceforge.net/p/snapraid/discussion/1677233/">Forum</a>.
</p>
<p>
</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>