NAS-RAID方案之snapRAID
介绍
SnapRAID是用于磁盘阵列的可用非标准RAID解决方案之一。
与其说它是一个RAID,不如说是一个非实时校验机制。
对比
其他最著名的是:
-
unRAID - 商业和开源GPL2解决方案。具有实时冗余功能的Linux Reiserfs文件系统的修改版本。不支持完整性校验和。
-
FlexRAID - 用于Windows的商用和专有C ++ / Java应用程序,对Linux有一些有限的支持。它支持快照冗余和实时冗余,并具有完整性校验和。
-
ZFS – 开源文件系统(但与GPL不兼容),具有实时冗余和完整性校验和。
-
Btrfs - 具有实时冗余的开源文件系统GPL2。从Linux 3.9开始,它支持RAID5 / 6冗余和完整性校验和。最近发现了各种各样的问题,官方的wiki现在说:奇偶校验RAID代码有多个严重的数据丢失错误。除了测试目的以外,不应该使用它。
-
Windows存储空间 - 来自Microsoft的最后一个竞争者,并集成到Windows 8中。拥有实时冗余的专有技术。不支持校验。它还有一些其他的限制。
备注
[1] – unRAID不支持任何校验,并且忽略静默错误。更严重的是如果因为静默错误而产生奇偶校验错误,奇偶校验会自动重新计算,使得甚至无法手动恢复静默错误。
[2] - Flexraid使用校验和来验证文件,但在读取文件更新奇偶校验数据时,并不用这些数据来校验数据。http://forum.flexraid.com/index.php/topic,3233.0.html
这意味着现有的任何静默错误都会传播到奇偶校验数据中,即使它仍然可以被检测到,也无法在以后修复。您可以进入“验证”操作报告错误的状态,但“验证”报告在奇偶校验中报告没有问题,无法修复错误。
[3] – ZFS和Btrfs提供与SnapRAID相同级别的bit-rot保护,在使用之前总是检查数据。在这方面,所有这三个解决方案代表了最先进的技术。
ZFS的一个缺点是默认的Fletcher校验和是一个重视速度超过质量的选择。 Btrfs使用的默认CRC32C也一样。 而SnapRAID使用的128位SpookyHash则有最新的校验质量,而且速度不受影响。
ZFS的另一个缺点是它在汇编器中缺少快速的RAID执行器。它只有一个C执行器,比SnapRAID / Btrfs慢两到四倍。
ZFS还使用次优RAID-Z3算法,这需要等效的SnapRAID z-奇偶校验的双倍计算量。 相反,SnapRAID和Btrfs都使用顶尖的汇编器实现来计算RAID奇偶校验,总是使用最有名的RAID算法和编译器。
[4] - unRAID允许使用已有数据的硬盘,但前提是使用ReiserFS,XFS或Btrfs的文件系统。ext4或NTFS则不行,而这两个是Linux和Windows中最常见的。
[5] - ZFS允许在池中添加一个新的vdev,但不能将一个磁盘添加到vdev。
[6] –在Linux上可以使用内核级的ZFS。
[7] – ZFS有外部GUIs, 如 Napp-it和FreeNAS插件,NAS4Free插件。
[8] - unRAID可以使用像Dynamix File Integrity,Checksum Suite或Bunker这样的插件进行完整性校验,但它们在奇偶校验处理时都是独立的,不能用于帮助恢复过程。例如,当使用双奇偶校验恢复单个故障磁盘时,可以使用校验和来识别额外的静默错误,并能够恢复。
[9] – Windows存储空间可以使用ReFS来支持完整性校验,但不支持奇偶模式。
[10] – Btrfs有外部GUIs, 如Rockstor.
[11] – Btrfs从2013年开始支持RAID5,但是最近在RAID5 / 6支持中发现了一些严重的问题。目前他们还没有确定。官方wiki说:“奇偶校验RAID代码有多个严重的数据丢失错误,只适用于测试用途。
如果您认为所报告的某些信息不正确或者不公平,请在论坛中报告。
*此文章的原始内容来自http://www.snapraid.it/compare,原文中有多个超链,请查看原文。
*此翻译基于谷歌机翻,本人调整了意义不对及语序不对的部分。如有错误,请指正。
*另,此比较表格有过时的可能,请浏览各大官网了解最新情况,如有兴趣,可以汇报给snapraid论坛。
为什么
传统的 Raid:Raid1、Raid5 和 Raid10 都能够做到单磁盘恢复,但是拓展性通常受限
btrfs 文件系统:能提供文件系统级别的 raid 功能,具有一定的可拓展性,并且拥有快照备份的功能
zfs 文件系统:的 raidz 功能,也能提供良好的容错性,但是拓展性不足。
LVM:LVM 支持 raid 功能,但同样面临拓展性难题
rsync:基于 rsync 方式的备份工具,例如 Timeshift,可以定期备份数据。
由于笔者的硬盘打算之后一个个的增加,所以考虑拓展性的需求,只有 btrfs 系统以及 rsync 方式可以满足需求,但这两种各自有缺点:
btrfs 提供的 raid 功能虽然可以拓展磁盘数量,但是在迁移时候的数据平衡所需要用时极长
btrfs 会带来额外的性能下降,详见笔者的文章:ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS文件系统性能对比
Raid 通常会导致多磁盘同时读写,电力消耗大。
rsync 不适合多磁盘体系备份,尽管可以使用 mergerfs 弥补此缺点,但是不够纯粹
————————————————
版权声明:本文为CSDN博主「林地宁宁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linkyy5/article/details/126080546
优点:
- 支持1-6个盘的冗余级别,校验盘越多,可以承受损坏的硬盘越多。
- 支持完整性巡检,可以修复硬盘上静默错误(silent corruption)。
- 如果故障盘太多而无法恢复,则只会丢失故障盘上的数据,不影响其他硬盘中的数据。(就算硬盘损坏,也只会影响到损坏盘的数据,不会影响到其他盘。)
- 可以在一定程度上恢复误删除的文件。
- 可以直接添加已有的数据盘,无需格式化,也不会丢失已有数据。
- 硬盘可以不同大小。
- 可以添加文件夹,而不一定是整块硬盘。
- 可以随时添加硬盘。
- 不会更改你的数据,可以随时停止使用SnapRAID,无需重新格式化或移动数据。(不会改变现有硬盘的数据和文件夹结构,不像其他RAID都要重新格式化硬盘。)
- 支持单个硬盘休眠。访问文件时,只需要唤醒文件所在的磁盘。(当然更新冗余数据时需要唤醒所有硬盘)
- 支持windows和linux
再来看看缺点:
- 快照式冗余,而非实时,需要手动更新冗余数据。(当然也可以写批处理,定时运行)
- 需要额外提供校验盘(当然,几乎所有的raid都需要),最好是空盘。(也可以不空)
- 各个盘的文件系统独立,管理起来稍繁琐。
- 不分条数据与无法通过阵列来增加读写速度。。而使用传统RAID,可以通过分条来增加读写速度。
- 不支持实时恢复。而使用传统RAID,当硬盘发生故障时,不必停止工作。
- 只能恢复有限数量的硬盘。多一个校验盘则增加一个冗余额度。
- 只保存文件,时间戳,符号链接和硬链接。权限,所有权和扩展属性不会保存。
- 最新版只有命令行,没有官方GUI界面。有第三方GUI界面Elucidate,更新速度较慢。
- 主要是 snapraid 是文件级别的,小文件一多那重建确实会很慢。zfs 这种是 block 级别的,重建和 scrub 都是以 block 为单位的,肯定更快
看起来,就像官方说明一样,比较适合存有大量大文件并很少改动的家庭媒体中心,比如说蓝光高清爱好者等。
和实时保存变化的raid或lvm不是一个应用场景的,snapraid提供的实际是一种数据冷备份手段(backup),而不是热备冗余手段(redundancy)。如果原来没有很好的备份手段,只能通过手动目录备份来保护数据的话,用来给家里存家庭影音、游戏、高清电影的盘柜做冗余备份非常合适。上手简单,对原有环境改动很小。
使用教程
https://zhuanlan.zhihu.com/p/258076824 使用实战
https://zhuanlan.zhihu.com/p/32040033 命令的中文文档
命令篇
接下来 我只介绍最常用到的命令
- 打印阵列的状态 - >“status”
- 控制磁盘 - >“smart”(打印smart信息),“up”(唤醒), “down”(休眠)
- 进行更新奇偶信息/快照 - >“sync” 您可以随时按Ctrl + C来停止此过程,而不会丢失已经完成的工作。在下一次运行时,”同步”过程将在中断的地方开始。
文件由路径和/或inode标识,并按大小和时间戳进行检查。如果文件大小或时间戳不同,奇偶校验数据将重新计算整个文件。如果文件在同一个磁盘上移动或重命名,保持相同的inode,奇偶校验不会重新计算。如果文件被移动到另一个磁盘,奇偶校验将被重新计算,但是保留之前计算的哈希信息。
- 定期检查数据 - >“scrub”
- 还原上次的备份/快照 - >“fix”
- diff 列出从最后一次”Sync”修改过来的需要重新计算奇偶校验数据的所有文件。该命令不检查文件数据,而只检查文件时间戳大小和inode。
- check 验证所有的文件和奇偶校验数据。它类似于修复,但它只模拟恢复,并没有改变写入数组。该命令主要用于手动验证,如恢复过程之后或其他特殊情况。
# 全盘冗余 -F 是--force-full的简写
.\snapraid -F sync
# 增量冗余
.\snapraid sync
# 推荐每周进行一次
.\snapraid scrub
# 恢复数据 -m是只恢复消失的文件 也可以不加 全量恢复 -d是后面跟别名的意思
.\snapraid -m -d 你要恢复的别名
为了方便使用 可以添加bat文件,如
cd %~dp0
snapraid fix -m -d disk1
pause.
pool篇
不推荐用软件自带的pool,因为它的pool会一个个做软连接,所以如果你文件多的话,光软连接就要做很久。
mergefs
linux下mergefs是更好的解决方案,这个软件也有win版 但是不知道体验咋样
Stablebit Drivepool
https://stablebit.com/DrivePool/Download
是给windows下的用户用的。但是它仅支持nfts,不支持exfat,局限性较大,而且似乎只能均匀打散了分布
必须关闭数据平衡器,因为可能与SnapRAID冲突
(如果Snap RAID计算校验后,DrivePool又将部分文件移到别的地方,会导致Snap RAID恢复时找不到文件,导致恢复失败)
RaiDrive
免费版大部分功能可用,支持多种常见国外网盘。👎 缺点:不支持国内的网盘服务。💻 平台:Windows
RaiDrive 目前仅支持 Windows 系统,绝大部分的功能都可以无需注册账户免费使用。期中免费版支持映射 8 个虚拟盘,不支持模拟成本地磁盘,
rclone+alist
查了下 rclone似乎也和RaiDrive一样 是挂载倒E:\POLL\ALIYUN 类似这种文件的形式?
找到了 官方的文档 https://rclone.org/union/ 叫union操作
其他
图可以看 http://news.sohu.com/a/665826560_115785
CloudMounter👍🏼 优点:支持多种常见国外网盘,自带缓存机制帮助同步。👎 缺点:不支持国内的网盘服务。💻 平台:macOS | Windows
不过需要说明的是 CloudMounter 是一款付费应用,你可以在其官网购买,对于 macOS 用户可以通过订阅 Setapp 来获取。
NetDrive
👍🏼 优点:支持网盘类型多,设置项目丰富。
👎 缺点:没有免费版提供基础功能,所有功能均需付费才可使用。
Mountain Duck👍🏼 优点: 中文界面友好,操作简单。👎 缺点: 没有免费版提供基础功能,所有功能均需付费才可使用。💻 平台: Windows | macOS
CloudDrive 2👍🏼 优点: 支持国内的阿里云盘、115 云盘等国内网盘👎 缺点: 缺少国外云盘支持💻 平台: Windows | macOS | Linux
使用注意事项
需要及时备份
”如果你在快照生成后修改了某个文件,那么修改后的新文件和用到旧文件校验的其他文件也都失去保护”,打个比方,1月1日我做了一次sync,系统配置如下:一共sync盘F,三个数据盘C,D,E,过了1个月D盘坏了,但是在这一个月里,C盘有一部分文件我做了改变(比如是修改或者没修改只是移动位置),这个时候我进行修复(修复理论上会用到C盘1月1日的文件?),修复完成后,D盘是1月1日的状态,还是会丢失一部分文件(因为C盘有文件改变),另外C盘会被恢复成1月1日吗,还是保持现有的状态?
答案是可能丢失部分文件
你说的问题的确存在。就你的例子来讲,如果D盘完全损坏,然后C盘的文件又发生了更改(移动位置没有关系),那D盘估计是不能完全恢复的,只能恢复部分(取决于你C盘里更改文件的多少)。snapraid是可以选择恢复的目录,也就是说,如果你不选择恢复C盘,那C盘就不会有任何改变。
所以,我的建议是,①系统盘不要加入阵列②文件更改(增加,删除,或者移动)后,及时(我的做法是当天或者隔天)sync,而不是等一个月再sync
上一个问题的引申-最好不要备份exe
我这样理解哈,比如一个游戏exe,运行后会产生日志或者存档之类的文件,或者改变原来存档文件的内容,这样下次检验的时候就出错了,但如果我只是做存放用,不去运行它,需要用的时候复制出来到别的盘运行,这样就没有任何影响了
性能与小文件
随着盘增加,发现一个snapraid的缺点,那就是随着盘数的增加,sync的速度会变慢,sync的速度取决于所有盘一起读取时候的平均读速。当然因为我是用usb移动硬盘,所以明显一点。四个数据盘,平均下来每个盘的读取速度在70M/S左右,基本上接近硬件限制。
发现就算小文件多效率也还可以,七八十万个文件,diff一下大概在5分钟左右,还是可以接受的。当然小文件多会稍微有点浪费空间,不过不管是按照官方说明还是实际来看,都是可以接受的范围。比如说我一个盘70万个小文件,浪费大概在100G。
DrivePool关闭balence
1.数据平衡器可能与SnapRAID冲突
(如果Snap RAID计算校验后,DrivePool又将部分文件移到别的地方,会导致Snap RAID恢复时找不到文件,导致恢复失败)