• 那是云首页
  • 快捷导航
  • 更多
    设为首页收藏本站
  • |
花生壳

#楼主# 2019-8-5 15:16

跳转到指定楼层
本帖最后由 进驻(fejich) 于 2019-8-5 16:55 编辑

开始之前

于 DSM 6.1.7 系统测试通过
最优方式应该是原生程序运行,期待未来会有人编译做出 spk 安装包我是弄不来了。
SnapRAID 这软件我也是刚刚开始使用,据说适合存有大量大文件并很少改动的家庭媒体中心。

详细优缺点,自行搜索了解




SnapRAID 是什么

SnapRAID 是一个目录级别的冗余存储方案,它与 RAID 的原理有相似的地方,但它并不是 RAID。SnapRAID 与 RAID 的主要区别有:
  • SnapRAID 不会对数据进行条带化存储。RAID 通常会使用数据条带化,一个文件可能会被分散存储到多块磁盘上,这样的优点是读取的时候可以加速(多块磁盘同时读取),但条带化也是上节所说的 data lock-in 的根源——你不能拆出一块盘单独读写。
  • SnapRAID 是工作于文件系统之上的。RAID 工作于文件系统之下,直接对磁盘区块进行操作,用磁盘区块上的比特计算校验数据,而 SnapRAID 是通过读取文件系统里的文件之后再进行计算的。
  • SnapRAID 是非实时的。RAID 每时每刻都在工作,磁盘区块上的数据一旦发生变更就会重新计算校验数据,而 SnapRAID 可以在用户选择的时间进行重新计算。
SnapRAID 相比 RAID 的优点主要有:
  • 数据独立。不需要对磁盘做特殊处理,可以直接将已有数据的磁盘(甚至可以是不同文件系统的)加入 SnapRAID,SnapRAID 也不会改变这些已有的数据;一个文件不会被分散到多个磁盘,随时可以拆下来一块磁盘正常读写里面的数据;当磁盘阵列收到文件读写请求时,也只需要一块磁盘响应,而不是所有的磁盘全部从待机状态启动,开始寻道。
  • 抗灾能力。当磁盘列阵中同时损坏的磁盘数量超出预期而无法修复数据时,SnapRAID 的抗灾能力更强。例如:在 3 + 1 的 RAID 场景下,坏一块没事,如果同时坏了两块,所有的磁盘上的数据都将无法读取(因为条带化);但如果是 3 + 1 的 SnapRAID,就算同时坏两块,剩下两块里的数据依然可以正常读取。
  • 配置灵活。标准的 RAID 等级中,RAID 5 最多承受 1 块磁盘同时损坏,RAID 6 最多承受 2 块磁盘同时损坏;而 SnapRAID 可以配置 1 到 6 块校验盘,最多承载 6 块磁盘同时损坏,因此可以组建更大的磁盘阵列而不提升风险(维持数据盘与校验盘的比例不变)。更重要的是,无论是增加还是减少磁盘,SnapRAID 都可以无痛完成,无需清空磁盘数据。
  • 恢复误删文件。由于 RAID 是实时计算校验数据的,当文件被删除时,这一改动立刻就会被同步到校验数据里;而 SnapRAID 在用户请求的时候才进行同步,因此用户可以用 SnapRAID 从校验数据重新构建被误删除的文件。当然了,更可靠、更持久的的误删除防护还是应该用增量备份来完成。
  • 空间利用率高。在磁盘阵列中,校验盘的大小应大于等于数据盘中最大的那块。使用 SnapRAID 时,你可以「超售」。比如数据盘是 6 TB 的但是只装了一半(3 TB),你把 4 TB 的磁盘作为校验盘也是可以的(因为此时校验数据最多只有 3 TB),只要在校验文件膨胀到接近 4 TB 的时候将校验文件挪到更大的磁盘里即可。同样的,校验盘里未被校验文件填满的剩余空间也可以用来存储一些「丢了也无所谓」的不重要数据。此外,由于 SnapRAID 工作于文件系统之上,你可以选择性地排除掉一些不想做冗余的目录和文件,以节省空间。
摘录自:目录级别的冗余存储:SnapRAID( https://wzyboy.im/post/1186.html )
               使用经验可以参考博文,非常受用



安装

使用这个 Docker 镜像: https://hub.docker.com/r/xagaba/snapraid
Docker 注册表里边搜索 snapriad ,选择 xagaba/snapraid 项目


Docker.png

1)需要配置一个 /config 目录存放 snapraid.confsnapraid-runner.conf 两个配置文件
游客,如果您要查看本帖隐藏内容请回复


2)需要保护的目录挂载到 /mnt
3)按挂载的路径配置好 snapraid.conf 文件, snapraid-runner.conf 按需改动,我默认配置了校验完成后进行数据擦洗同时开启了 log。
4)环境变量 PUID ,PGID 用 SSH 登陆机器,输入 id 命令可以得知。应该都是统一的数字,跟图片设置就行
      这个设置事关文件读写权限,配置好减少隐患与后续可能的麻烦

ID.png



使用

软件需要使用 docker exec 参数传递命令来操作
sync 命令建立校验数据,视乎硬盘数据量所需的时间可能要数小时

  1. sudo docker exec SnapRAID snapraid sync
复制代码
sync.png

常用的 SnapRAID 命令:
  • snapraid sync:根据数据盘生成校验盘;
  • snapraid diff:查看有哪些数据需要 sync;
  • snapraid status:查看磁盘阵列的状态;
  • snapraid scrub:进行数据擦洗,提早发现磁盘阵列中的错误。

        SnapRAID 首次同步完成之后,可以将 snapraid syncsnapraid scrub 加入 cron / systemd timer,定时运行。后者默认配置下每次运行擦洗全部数据的 8%,并且会挑选最近 10 天内没有被擦洗过的数据进行擦洗。如果每天运行一次 snapraid scrub 的话,每 12.5 天所有数据都会被擦洗一遍,形成一个健康的循环。
        当擦洗发现有数据损坏,或是更糟糕地,某天整块磁盘挂了(不转了),就需要修复数据了。这时候应该做的是停掉所有的定时任务,然后换上新的磁盘,然后用 snapraid fix -d name_of_disk 命令,根据健在磁盘的内容,在新磁盘里重建坏掉磁盘里的内容。只要坏掉的磁盘数量小于等于校验盘的数量,SnapRAID 都能完整地修复数据。
由于 snapraid sync 是定期执行的,这意味着在下次同步之前,磁盘阵列是有机会恢复到上次同步的状态的,因此 snapraid fix 除了可以重建整个磁盘,也可以重建单个文件,也就是反删除。如果你误删除了文件,可以用 snapraid fix -f path/to/file 来恢复文件到上次同步时的状态。
摘录自:https://wzyboy.im/post/1186.html
官方使用手册:https://www.snapraid.it/manual





计划任务

1)Docker 自带的 corntab 计划任务,默认每天
北京时间 08:30 定时运行(容器是 UTC 时间)      想更灵活的自定时间可以用
  1. sudo docker exec SnapRAID crontab -r
复制代码

      命令把容器的 corntab 计划删了,改用群晖自带的任务计划

手动运行的效果
  1. fejich@PVE-DSM:~$ sudo docker exec SnapRAID /usr/bin/python /app/snapraid-runner/snapraid-runner.py -c /config/snapraid-runner.conf
  2. 2019-08-05 00:51:03,168 [INFO  ] ============================================================
  3. 2019-08-05 00:51:03,169 [INFO  ] Run started
  4. 2019-08-05 00:51:03,169 [INFO  ] ============================================================
  5. 2019-08-05 00:51:03,169 [INFO  ] Running diff...
  6. 2019-08-05 00:51:03,175 [OUTPUT] Loading state from /config/snapraid.content...
  7. 2019-08-05 00:51:03,175 [OUTPUT] Comparing...
  8. 2019-08-05 00:51:03,176 [OUTPUT] add F06中孔铁油缸-4.0s.PDF.pdf
  9. 2019-08-05 00:51:03,176 [OUTERR] WARNING! UUID is unsupported for disks: 'mnt1', 'mnt2', 'mnt3'. Noons.
  10. 2019-08-05 00:51:03,176 [OUTPUT]
  11. 2019-08-05 00:51:03,177 [OUTPUT] 14 equal
  12. 2019-08-05 00:51:03,177 [OUTPUT] 1 added
  13. 2019-08-05 00:51:03,177 [OUTPUT] 0 removed
  14. 2019-08-05 00:51:03,178 [OUTPUT] 0 updated
  15. 2019-08-05 00:51:03,178 [OUTPUT] 0 moved
  16. 2019-08-05 00:51:03,178 [OUTPUT] 0 copied
  17. 2019-08-05 00:51:03,178 [OUTPUT] 0 restored
  18. 2019-08-05 00:51:03,178 [OUTPUT] There are differences!
  19. 2019-08-05 00:51:03,479 [INFO  ] ************************************************************
  20. 2019-08-05 00:51:03,479 [INFO  ] Diff results: 1 added,  0 removed,  0 moved,  0 modified
  21. 2019-08-05 00:51:03,480 [INFO  ] Running sync...
  22. 2019-08-05 00:51:03,482 [OUTPUT] Self test...
  23. 2019-08-05 00:51:03,858 [OUTPUT] Loading state from /config/snapraid.content...
  24. 2019-08-05 00:51:03,859 [OUTPUT] Scanning disk mnt1...
  25. 2019-08-05 00:51:03,859 [OUTPUT] Scanning disk mnt2...
  26. 2019-08-05 00:51:03,860 [OUTPUT] Scanning disk mnt3...
  27. 2019-08-05 00:51:03,860 [OUTPUT] Using 0 MiB of memory for the file-system.
  28. 2019-08-05 00:51:03,860 [OUTERR] WARNING! UUID is unsupported for disks: 'mnt1', 'mnt2', 'mnt3'. Noons.
  29. 2019-08-05 00:51:05,860 [OUTPUT] Initializing...
  30. 2019-08-05 00:51:05,860 [OUTPUT] Resizing...
  31. 2019-08-05 00:51:05,860 [OUTPUT] Saving state to /config/snapraid.content...
  32. 2019-08-05 00:51:05,860 [OUTPUT] Saving state to /mnt1/snapraid.content...
  33. 2019-08-05 00:51:05,870 [OUTPUT] Verifying /config/snapraid.content...
  34. 2019-08-05 00:51:05,870 [OUTPUT] Verifying /mnt1/snapraid.content...
  35. 2019-08-05 00:51:05,871 [OUTPUT] Syncing...
  36. 2019-08-05 00:51:06,093 [OUTPUT] Using 32 MiB of memory for 32 cached blocks.
  37. 2019-08-05 00:51:06,095 [OUTPUT] 100% completed, 1 MB accessed in 0:00
  38. 2019-08-05 00:51:06,102 [OUTPUT]
  39. 2019-08-05 00:51:06,102 [OUTPUT] mnt1  0% |
  40. 2019-08-05 00:51:06,102 [OUTPUT] mnt2  0% |
  41. 2019-08-05 00:51:06,103 [OUTPUT] mnt3  0% |
  42. 2019-08-05 00:51:06,103 [OUTPUT] parity  0% |
  43. 2019-08-05 00:51:06,103 [OUTPUT] raid 28% | *****************
  44. 2019-08-05 00:51:06,103 [OUTPUT] hash  9% | *****
  45. 2019-08-05 00:51:06,103 [OUTPUT] sched 60% | *************************************
  46. 2019-08-05 00:51:06,103 [OUTPUT] misc  0% |
  47. 2019-08-05 00:51:06,104 [OUTPUT] |______________________________________________________________
  48. 2019-08-05 00:51:06,104 [OUTPUT] wait time (total, less is better)
  49. 2019-08-05 00:51:06,104 [OUTPUT]
  50. 2019-08-05 00:51:06,104 [OUTPUT] Everything OK
  51. 2019-08-05 00:51:06,108 [OUTPUT] Saving state to /config/snapraid.content...
  52. 2019-08-05 00:51:06,109 [OUTPUT] Saving state to /mnt1/snapraid.content...
  53. 2019-08-05 00:51:06,111 [OUTPUT] Verifying /config/snapraid.content...
  54. 2019-08-05 00:51:06,111 [OUTPUT] Verifying /mnt1/snapraid.content...
  55. 2019-08-05 00:51:06,413 [INFO  ] ************************************************************
  56. 2019-08-05 00:51:06,413 [INFO  ] All done
  57. 2019-08-05 00:51:06,430 [ERROR ] Failed to send email because smtp host is not set
  58. 2019-08-05 00:51:06,430 [INFO  ] Run finished successfully
复制代码


2)群晖计划任务
用户自定义脚本.png

  1. docker exec SnapRAID /usr/bin/python /app/snapraid-runner/snapraid-runner.py -c /config/snapraid-runner.conf
复制代码







那是云论坛 - 国内知名的NAS交流平台
http://www.nasyun.com
分享淘帖
回复 印象

使用道具

0

精华

98

回帖

1777

积分

发烧玩家

Rank: 2

云币
0
贡献
4
活跃
1707
精华
0
zbigbird 发表于 2019-8-8 10:09 来自 中国广东珠海
感谢楼主的无私分享,这个能实现数据冗余备份吗

点评

这个就是 冗余备份 用的呀 [attachimg]32200[/attachimg]  详情 回复 发表于 2019-8-9 00:13
回复 支持 反对 印象

使用道具 举报

0

精华

10

回帖

126

积分

入门用户

Rank: 1

云币
1
贡献
4
活跃
100
精华
0
进驻(fejich) 发表于 2019-8-9 00:13 来自 中国广东肇庆
zbigbird 发表于 2019-8-8 10:09
感谢楼主的无私分享,这个能实现数据冗余备份吗

这个就是 冗余备份 用的呀
RAID 比较.jpg
回复 支持 反对 印象

使用道具 举报

0

精华

196

回帖

1万

积分

登峰造极

Rank: 5Rank: 5

云币
0
贡献
254
活跃
9034
精华
0
pio9999 发表于 2019-8-10 09:09 来自 中国广西百色
确实是难得好帖啊,顶先
回复 支持 反对 印象

使用道具 举报

0

精华

7

回帖

102

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
98
精华
0
izumiko 发表于 2021-2-14 23:55 来自 中国北京
感谢分享,抄一份配置
回复 支持 反对 印象

使用道具 举报

0

精华

9

回帖

74

积分

入门用户

Rank: 1

云币
1
贡献
0
活跃
69
精华
0
非凡想像 发表于 2021-2-15 03:20 来自 中国上海
这个是好东西啊啊 我要看下现在raid5
回复 支持 反对 印象

使用道具 举报

0

精华

68

回帖

178

积分

入门用户

Rank: 1

云币
1
贡献
0
活跃
144
精华
0
Bright·W 发表于 2021-3-1 13:31 来自 中国重庆
置一个 nfig 目录存放 snaprai
回复 支持 反对 印象

使用道具 举报

0

精华

10

回帖

79

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
74
精华
0
wingedboy 发表于 2023-8-9 18:45 来自 中国广东深圳
感谢感谢大神的分享。{:3_41:}
回复 支持 反对 印象

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群
懒人地图| 手机版|小黑屋| 智能生活 , 上那是云 |闽ICP备2020018196号-1 |网站地图