mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 10:51:54 -04:00
271 lines
15 KiB
HTML
271 lines
15 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="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¤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>
|
||
|
||
|