2015-09-09 23:03:32 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2015-09-11 00:06:29 +02:00
< html lang = "en" >
2011-03-01 22:19:30 +01:00
< head >
2015-09-09 23:18:24 +02:00
< 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" >
2011-03-01 22:19:30 +01:00
< 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 >
2015-09-10 23:36:40 +02:00
< div id = "header" >
2016-01-07 18:59:37 +01:00
< img src = "index.jpg" width = "1200" height = "150" alt = "Title" >
2011-03-01 22:19:30 +01:00
< / div >
2015-09-10 23:36:40 +02:00
< div id = "menu" >
2015-09-26 14:13:32 +02:00
< 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 >
2011-03-01 22:19:30 +01:00
< a href = "https://sourceforge.net/p/snapraid/discussion/1677233/" > Forum< / a >
2015-09-26 14:13:32 +02:00
< a href = "authors" > Authors< / a >
2011-03-01 22:19:30 +01:00
< / 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:
2015-09-09 23:33:37 +02:00
< / p >
2011-03-01 22:19:30 +01:00
< 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" >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Redundancy model< / span > < br > Real-time computes parity at real-time like RAID,
2011-03-01 22:19:30 +01:00
snapshot at request time, like Backup.< / td >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Integrity< / span > < br >
2011-03-01 22:19:30 +01:00
If data is validated with some kind of checksum,
2015-09-10 08:41:16 +02:00
and which one is the default.< / td >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< 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 >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
<!-- -
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
-->
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Number of failures< / span > < br >
2011-03-01 22:19:30 +01:00
How many disk failures are supported? 1 is for RAID5, 2 for RAID6.
< / td >
2016-11-06 18:14:21 +01:00
< td > 1 2 3 4 5 6< / td > < td > 1 2< / td > < td > 1 2 3 4 5 6+< / td > < td > 1 2 3< / td > < td > 1 2< / td > < td > 1< / td > < / tr >
<!-- -
unRAID 6.2 adds Dual parityvs ZFS
-->
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Other failures< / span > < br > If more disks fail than the supported redundancy model,
2011-03-01 22:19:30 +01:00
is it possible to recover the data in the not failed disks?< / td >
2016-01-30 22:56:31 +01:00
< td > Yes< / td > < td > Yes< / td > < td > Yes< / td > < td > No< / td > < td > No< / td > < td > No< / td > < / tr >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Power/Noise< / span > < br > How many disks are spinning when reading a single file?< / td >
2016-01-30 22:56:31 +01:00
< td > One< / td > < td > One< / td > < td > One< / td > < td > All< / td > < td > All< / td > < td > All< / td > < / tr >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Filled disks< / span > < br > Can you start with already filled disks?< / td >
2016-01-30 22:56:31 +01:00
< td > Yes< / td > < td > Partial< a href = "#note4" > [4]< / a > < / td > < td > Yes< / td > < td > No< / td > < td > No< / td > < td > No< / td > < / tr >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Add disks< / span > < br > Can you add disks at later time?< / td >
2016-01-30 22:56:31 +01:00
< td > Yes< / td > < td > Yes< / td > < td > Yes< / td > < td > No< a href = "#note5" > [5]< / a > < / td > < td > Yes< / td > < td > Yes< / td > < / tr >
2015-09-05 18:12:39 +02:00
<!--
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
-->
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Operating system< / span > < br > Which OS is supported?< / td >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Age< / span > < br > The year of the first official release supporting at least RAID5 redundancy.< / td >
2016-01-30 22:56:31 +01:00
< td > 2011< / td > < td > 2005< / td > < td > 2008< / td > < td > 2005< / td > < td > 2013< / td > < td > 2012< / td > < / tr >
2011-03-01 22:19:30 +01:00
<!-- -
ZFS 2009 is the data of the "Triple-Parity RAID-Z" article by Adam Leventhal
2015-09-05 18:12:39 +02:00
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
2011-03-01 22:19:30 +01:00
-->
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > License/Price< / span > < br >
2011-03-01 22:19:30 +01:00
Software license and price.
< / td >
2016-01-30 22:56:31 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
2015-09-10 08:41:16 +02:00
< tr > < td > < span class = "bold" > Interface< / span > < br > Which interface is provided? GUI or command line?< / td >
2011-03-01 22:19:30 +01:00
< td >
2015-09-10 08:41:16 +02:00
command line< br > or < a href = "http://elucidate.codeplex.com/" > Elucidate< / a > GUI,
2011-03-01 22:19:30 +01:00
or plugin for for < a href = "http://www.openmediavault.org/" > OpenMediaVault< / a >
2016-01-30 22:56:31 +01:00
< / 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 >
2011-03-01 22:19:30 +01:00
< / table >
< h3 > Notes< / h3 >
< p >
2015-09-09 23:33:37 +02:00
< a id = "note1" > [1]< / a > - unRAID doesn't have any kind of checksum, and it just ignores silent errors.
2011-03-01 22:19:30 +01:00
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 >
2015-09-09 23:33:37 +02:00
< a id = "note2" > [2]< / a > - Flexraid uses checksums to validate files, but such checksums
2011-03-01 22:19:30 +01:00
< 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.
2015-09-10 08:41:16 +02:00
< br >
2011-03-01 22:19:30 +01:00
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 >
2015-09-09 23:33:37 +02:00
< a id = "note3" > [3]< / a > - ZFS and Btrfs provide a bit-rot protection at the same level of SnapRAID,
2011-03-01 22:19:30 +01:00
always checking data before using it.
In this regards all the three solutions represent the state-of-the-art.
2015-09-10 08:41:16 +02:00
< br >
2011-03-01 22:19:30 +01:00
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.
2015-09-10 08:41:16 +02:00
< br >
2011-03-01 22:19:30 +01:00
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.
2015-09-10 08:41:16 +02:00
< br >
2011-03-01 22:19:30 +01:00
ZFS also uses a sub-optimal RAID-Z3 algorithm, that requires double computations than the equivalent SnapRAID's z-parity.
2015-09-10 08:41:16 +02:00
< br >
2011-03-01 22:19:30 +01:00
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 >
2015-09-09 23:33:37 +02:00
< a id = "note4" > [4]< / a > - unRAID allows to use filled disks but only if they are already
2015-08-01 09:46:53 +02:00
formatted with the ReiserFS, XFS or Btrfs filesystems. But not ext4 or NTFS.
2011-03-01 22:19:30 +01:00
< / p >
< p >
2016-01-17 22:29:00 +01:00
< 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 > .
2011-03-01 22:19:30 +01:00
< / p >
< p >
2016-01-17 22:29:00 +01:00
< 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 >
2011-03-01 22:19:30 +01:00
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 >
2015-09-10 23:36:40 +02:00
< div id = "footer" >
2011-03-01 22:19:30 +01:00
2015-09-10 23:36:40 +02:00
< div class = "column" >
2011-03-01 22:19:30 +01:00
< span class = "bold" > Donate with< / span >
2015-09-10 08:41:16 +02:00
< br >
2016-05-31 23:54:41 +02:00
<!--
2015-09-10 08:41:16 +02:00
< a href = "http://sourceforge.net/p/snapraid/donate/" > < img src = "paypal.png" width = "160" height = "60" alt = "PayPal" > < / a >
2016-05-31 23:54:41 +02:00
-->
2016-06-01 13:07:08 +02:00
< 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 >
2016-05-31 23:30:15 +02:00
<!--
2015-09-10 08:41:16 +02:00
< a href = "https://coinkite.com/u/amadvance/" > < img src = "bitcoin.png" width = "160" height = "60" alt = "BitCoin" > < / a >
2016-05-31 23:30:15 +02:00
-->
2011-03-01 22:19:30 +01:00
< / div >
2015-09-10 23:36:40 +02:00
< div class = "column" >
2011-03-01 22:19:30 +01:00
< span class = "bold" > Find other resources at< / span >
2015-09-10 08:41:16 +02:00
< 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 >
2016-11-20 16:37:47 +01:00
< a href = "https://tea-ci.org/amadvance/snapraid" > < img src = "teaci.png" width = "70" height = "60" alt = "Tea-CI" > < / a >
2011-03-01 22:19:30 +01:00
< / div >
< / div >
< / body >
< / html >