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" >
2025-12-10 00:14:08 +01:00
< 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" >
2015-09-09 23:18:24 +02:00
< link rel = "stylesheet" type = "text/css" href = "style.css" >
2011-03-01 22:19:30 +01:00
< title > SnapRAID< / title >
2023-01-17 18:38:08 +01:00
2023-01-17 18:39:47 +01:00
<!-- Google Analytics 4 -->
2023-01-17 18:38:08 +01:00
<!-- 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 >
2023-01-17 18:39:47 +01:00
<!-- Google Universal Analytics -->
2011-03-01 22:19:30 +01:00
< 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 >
2025-10-12 18:38:38 +02:00
< a href = "support" > Support< / 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 > was created following the < a href = "http://en.wikipedia.org/wiki/Unix_philosophy" > Unix philosophy< / a > :
< em > Write programs that do one thing and do it well< / em > .
< / p >
< p >
The first design principle was < span class = "bold" > reliability< / span > .
The result is a simple architecture and an easy to understand implementation,
following the < a href = "http://en.wikipedia.org/wiki/Edsger_W._Dijkstra" > Dijkstra< / a >
quote < i > Simplicity is prerequisite for reliability< / i > .
< / p >
2016-01-10 21:16:55 +01:00
2011-03-01 22:19:30 +01:00
< p >
2016-01-10 21:42:35 +01:00
Extensive and automated tests with the runtime checker < a href = "http://valgrind.org/" > Valgrind< / a >
and with the < a href = "https://github.com/google/sanitizers" > Google Sanitizers< / a >
2016-01-10 21:11:26 +01:00
are done to ensure the correctness of the final application.
2021-09-27 22:11:18 +02:00
The test has a < a href = "cov/" > code coverage of over 90%< / a > , measured with < a href = "http://ltp.sourceforge.net/coverage/lcov.php" > lcov< / a > .
2011-03-01 22:19:30 +01:00
< / p >
2016-01-10 21:16:55 +01:00
< p >
2016-01-13 19:35:59 +01:00
SnapRAID is also verified with the
2016-01-10 21:42:35 +01:00
< a href = "https://scan.coverity.com/projects/snapraid" > Coverity Scan< / a >
2016-01-13 19:35:59 +01:00
and < a href = "http://clang-analyzer.llvm.org/" > clang< / a > static analyzers,
and with the < a href = "http://lcamtuf.coredump.cx/afl/" > American Fuzzy Lop< / a > fuzzy tester.
2016-01-10 21:16:55 +01:00
< / p >
2011-03-01 22:19:30 +01:00
< p >
The second design principle was < span class = "bold" > robustness< / span > .
It supports any kind of problem. Even on kernel panics, power-downs
or any other hard failure at runtime, your redundancy data is in safe hands.
< br >
It uses all the possible storage techniques to ensure to always keep consistent
redundancy even after critical interruptions.
< / p >
< p >
The third design principle was < span class = "bold" > efficiency< / span > .
It's a native C application highly optimized using all the
2024-01-22 21:54:57 +01:00
possible OS services to ensure the maximum throughput of your disk array.
2011-03-01 22:19:30 +01:00
< / p >
< p >
For integrity checks is used the highly efficient < a href = "http://code.google.com/p/smhasher/" > murmur3< / a >
and < a href = "http://burtleburtle.net/bob/hash/spooky.html" > SpookyHash< / a > hashes at 128 bits.
For the redundancy computations we use a
< a href = "https://github.com/amadvance/snapraid/tree/master/raid" > RAID library< / a >
written from scratch that supports up to six levels of parity delivering top-notch performance.
The library design is originally based, and also binary compatible,
with the < a href = "http://lxr.linux.no/linux+*/lib/raid6" > Linux Kernel RAID< / a >
library made by H. Peter Anvin.
As internal data base it's used the < a href = "http://www.tommyds.it/" > TommyDS< / a > library of data structures.
< / p >
2025-12-13 17:35:07 +01:00
< p >
< / p >
2011-03-01 22:19:30 +01:00
< / 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 >
2011-03-01 22:19:30 +01:00
< / div >
< / div >
< / body >
< / html >