天天向上 - NAS三部曲1:Snapraid
Contents
最近在折腾NAS,家里的那块Mycloud看着要挂,做一个自检,整个SMART都没反应了。毕竟mycloud是Debian深度定制版,我也不想去折腾。
指望着一个NAS跑NFS做vCenter的datastore,怎么解,再弄一个NAS把。于是瞄上了OMV(NAS三部曲)。今天讲备份,于是瞄上了Snapraid,新技能get。
题记
少年的我有过硬盘损坏的硬伤,导致丢失了很多数据,最要命的是照片,那青春的定格现在只存在恍惚的记忆里面了。
所以任何时刻我都会有移动硬盘的备份;还得+2,还得异地。因为只是离线快照,所以一直以来用FreeFileSync就搞定了。
总之我们的口号就是:我们我们猴子,爱吃爱吃桃子… oh 不,简单就是美。
公司用Office 365,所有的存储都用onedrive,云存储好处在于实时同步与备份;坏处就是Admin可以随时获取你onedrive文件内容。谁在窥探我的隐私!oh不, 公司的电脑不就是工作么。但是最近Work From Home和COVID 19一起大流行。
以至于我有点分不清东南西北了,但是决定抛弃onedrive而拥抱nextcloud(NAS三部曲)
回到今天的主题snapraid;安装过程真是很曲折,Exsi Virtual Machine(VM)跑OpenMediaVault(OMV),然后OMV上装snapraid的插件,当然OMV上装docker插件跑nextcloud。
那么问题来了,snapraid是干什么吃的?这哥们说到底就是做离线快照,顺带把数据给备份了。它使用类似RAID的检验算法(Parity),在文件层上做备份。而文件层上备份的好处是其高移动性(不受底层硬盘限制),和NAS简直是绝配。
Snapraid好处多多
- 保证数据完整性(data integrity to avoid silent corruption)
- 做备份/快照不需要硬盘格式化(文件层面)
- 随时恢复上一个快照的的文件或者目录
Snapraid的使用
快照(snapshot)
snapraid sync
小提示: 使用增量备份策略,第一次做快照会进行全盘索引,跑个大半天?后续增量快照会比较快
snapraid diff
小提示: 列出下次要备份的文件列表(从上次快照到现在的文件变动)
snapraid list | more
小提示: 列出快照索引文件列表
数据完整性检查
snapraid scrub
小提示: 数据存储时间越长,越容易产生完整性问题。此操作检查10天前8%的硬盘数据完整性。你要100%全覆盖检查200天前的数据完整性?
snapraid scrub -p 100 -o 200 scrub
快照状态
snapraid status
小提示: 看到no error就ok;如果有坏道/完整性错误,标记之
snapraid -e fix
快照恢复
毕竟是做文件快照,所以除了恢复硬盘这个基础需求,它还可以恢复当个文件和文件夹
恢复单个文件
snapraid fix -f ‘<文件名>’
小提示: 单个文件恢复,不用写文件路径: snapraid fix -f ‘Feels Like Summer’
恢复整个文件夹
snapraid fix -f ‘<文件目录>’
小提示: 文件夹(含文件)恢复,只需要输入OMV的相对文件夹路径: snapraid fix -f ‘/Media/’
OMV的共享文件夹目录通过在mntent xml进行设置 /srv/dev-disk-by-label-VOLUME1
如果我把硬盘标签设置为nas,那么共享文件夹的根目录就在:/srv/dev-disk-by-label-nas。
Snapraid要备份的就是OMV的共享文件目录。
所以我在这个目录下创建了一个共享文件夹叫Media,恢复的时候就输入 /Media/
恢复上次快照前的误删除文件
snapraid fix -m
小提示: 有点版本回滚的意思,snapraid是做文件快照,但它不会存储多个文件快照,所以离线备份不能丢。
恢复整个硬盘
snapraid -d <硬盘名> -l fix.log fix
小提示: 全盘扫描,哪怕没有数据变更,速度很慢很慢,很慢很慢,很慢很慢。
snapraid -d <硬盘名> -a check
小提示: 恢复后进行数据验证
Snapraid移除硬盘
这个得要CLI 操作了,目标硬盘d2 (snapraid的命名d2 硬盘)
SSH 登录OMV
找一个空目录,比如 #cd /etc #mkdir tmp
#nano /etc/snapraid.conf
- #content /srv/874d8aa7-1214-40c8-8bbd-c2347692661d/snapraid.content
- #disk d2 /srv/874d8aa7-1214-40c8-8bbd-c2347692661d
- disk d2 /etc/tmp
#snapraid sync -E
#snapraid status
你会发现d2没有use了
#nano /etc/snapraid.conf
- #disk d2 /etc/tmp
然后d2就没有了
Snapraid配置文件
OMV的存放目录: /etc/snapraid.conf
ls -l /etc/sn*
划重点就是设定硬盘类型 - data (数据盘): 放电影,放音乐,放飞自我….. - content (索引文件):所有数据盘和校验盘里都保存一份(索引文件丢了,咋恢复) - parity (校验盘):不可以存储数据!一个校验盘可以支持四个数据盘,前提是校验盘一定是所有硬盘中最大容量的。
小提示: 一个校验盘只能恢复一个数据盘,所以如果同时两块硬盘挂了,你只能其中恢复部分数据。所以离线备份还是不能丢(万一连续几块硬盘坏呢?)
Snapraid功能限制
Only file, time-stamps, symlinks and hardlinks are saved. Permissions, ownership and extended attributes are not saved.
如果ssh到OMV服务器上做单个目录恢复的话,目录权限会变成root;意味着恢复之后NAS的用户就无法读写了。所以只能硬改用户权限了
#chown -R
Snapraid只做硬盘快照(文件层面),你可以定时备份策略1小时,1天,1星期;但就是不能实时。
每个文件都会建立索引,所以如果硬盘上有大量的琐碎文件,索引就会变的非常大
小提示: 家用NAS系列,要搞企业级,还是别当真了。