打造小兴看看云存储 - 思路版

2016-05-19 15:35
家里有台小兴看看网络摄像头,监控视频支持tf卡、云、nfs/samba保存功能,因为支持nfs/samba功能才买的它,而买了后发现家里的nas也不常开,而tf卡又不安全,就想到了小兴看看内置的云存储功能,它家用的是七牛提供的服务,价格是7天循环保存每月18元,30天循环保存每月30元,太贵了,于是想利用手头的资源,将监控视频存放在云端。

首先想到的利用树莓派,外接U盘,在树莓派上运行samba软件,将视频存放在u盘中,然后树莓派放在弱电箱中,这个很容易就实现了,但好像不对,这监控视频还在家里,不在云端...

然后想到了阿里云的oss,正好官方出了linux版本的ossfs,能将bucket挂载到本地,于是git clone下来编译了树莓派的arm版本,成功运行,配置samba,将oss目录共享出来,多完美的想法,不是么?没想到失败了,通过samba经常文件写入失败,或者根本写入不了,经过调测,最后得出samba与ossfs不兼容--!!

灵感又一现,想到使用samba共享u盘,然后再使用lsyncd将视频实时同步到oss,这想法也漂亮吧?又出问题了,且听我说,如果开启小兴看看的仅在画面变化时录制视频,当从监控录制开始时,到第一次通过samba写入,中间相隔了约12秒,然后每隔10秒左右写入,暂停几秒,再写入,再暂停...直至一个视频文件完全写完,那么lsyncd实时同步就有问题,如果将inotifyMode配置为“CloseWrite”,就会隔许久才会将视频同步到oss,可能几分钟,也可能十分钟,这对有轻微强迫症的博主来说,实在受不了!如果将inotifyMode配置为“CloseWrite or Modify”,就会造成:小兴看看还没写完一个视频文件,lsyncd就给同步到了ossfs挂载的目录中,然后过几秒小兴看看还在追着写同一个文件,lsyncd又给同步了,然而ossfs并不支持追加写入,就会把原来的文件删除,然后重新上传,一个原本7M左右的视频文件,完整上传的流量太考张了,比如:
小兴每次只写入1M,写完7M的文件需要7次,那么就得在oss上传7次,
第一次1m,
第二次将第一次上传的1m删除,重新上传2m,
第三次将第二次上传的2m删除,重新上传3m,
第四次将第三次上传的3m删除,重新上传4m,
第五次将第四次上传的4m删除,重新上传5m,
...

这么明显的问题,弃了。

最终解决方法:
vps+vpn+samba+lsyncd+ossfs

由于使用的是智能路由器,还有一个小空间的vps,于是让路由器通过vpn连接vps,vps上安装samba,配置samba,使vpn网段才可访问,vps上再安装ossfs

小兴看看通过vpn实时将视频存储在vps上,lsyncd使用CloseWrite,排除*.tmp文件,同步samba目录至oss,并执行定时任务删除samba目录中的超过2天的视频文件(vps上空间有限嘛),删除oss上超过30天的视频文件,收工。

ps:之后还尝试了树莓派安装nfs服务,挂载oss目录的失败组合。

总结:实践出真知,但是人生苦短,还是要多思考,后行动,少折腾。


3 条回复

说两句