数码之家

 找回密码
 立即注册
搜索
查看: 5667|回复: 1

家庭freenas存储和服务器4:数据存储和备份方案

[复制链接]
发表于 2020-1-2 22:36:57 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
其实我们搭建nas的目录就是为了存储数据共享数据,在保证数据能快速方便访问的同时,也要保证数据安全性,当然这些都和银子有关,哈哈。这里我把我的一些方案和思路整理以下,给大家做个参考吧。

    我个人包括家人数据粗略分类
    按重要性分类
    a.绝对不能丢失的,比如个人的工作数据和资料,这是很多年的积累,绝对不能丢,方案是双机备份+云盘备份
    b.最好不要丢失,但实在丢失了只有接受,比如家庭成员照片,视频生活资料等等,方案是单机raidz2(raid6)+云盘备份
    c.能不丢就不丢,丢了可以再想办法获取,比如下载的各种资料,方案就是单机raidz(raid5)

    按使用频率和存储模式分类
    a.频繁读取修改的热数据,使用ssd组stripe(raid0),配合双机热备,保证访问效率和安全性
    b.只是经常读取,一般不会修改,使用机械硬盘组raidz(raid5),多用在照片,视频,游戏读取
    c.备份后的数据,永远不会修改了,单机械硬盘+云盘

    这是之前我的贴子里面已经讲了,因此我搭建了3台freenas服务器,原因就是在预算允许的情况下尽量拆分,这样哪里出了问题就解决哪里,混在一起的可能后果就是,随着系统的复杂性增加不稳定性也会增加,最终会因为某个微小的变化导致系统崩溃。


    由于freenas的特点,扩容相对其他nas系统稍显不变,所以特别要把前期规划好。这里我把三台机器分别标记为freenasA/B/C,他们的简单特点和需求如下
    freenasA 重要数据存储/性能优先/小容量/尽量省电/24小时运行/可扩展
    freenasB A的镜像热备/有安全冗余保证/小容量/尽量省电/24小时运行/可扩展
    freenasC 个人和家庭数据/有安全冗余保证/大容量/需要时开启/可扩展

    据此选配的硬件

    freenasA 重要数据存储服务器 1台
        主板:超微X10SRL-F C612, 8个内存插槽,4个pcie3.0x8,2个pcie3.0x4,1个pcie2.0x4,10个sata3,1200元带散热器
        内存:8x16G 纯ECC 三星 ddr4 2133 3200元
        CPU:e5 2650L v3 12核24线程,低压版里面性能比较不错的 460元
        网卡:超微X540-t2 双口10Gb 2块 660元


    freenasB/C 家庭数据和热备机 各1台 配置一样
        主板:寨板x99(实测好像是c612,可以上regecc),1个pcie3.0x16,1个pcie3.0x8,1个pcie2.0x4,1个pcie3.0x1,9个sata3,390元
        内存:4x16G REG ECC 三星 ddr4 2133 780元
        CPU:e5 2650L v3 460元
        网卡:BCM 57840S 双口10Gb 325元

    手头的硬盘
    希捷/WD/HGST等 500g x 6
    酷鱼 2T x 2 3T x 1
    酷狼 4T x 10
    三星840evo/wd等 120g x 6 (ssd)
    新购入三星860evo 500g x 2 西数blue 3d 500g x 2 (ssd)

    把这些硬盘分配到三台freenas上
    freenasA
        500g x 4 (stripe/raid0), 120g x 6 (stripe/raid0)
        这里为什么我选择stripe,其实我测过速度选raidz和stripe速度一样,因为是固态读写都很快,选stripe纯粹是因为有热备的存在,所以希望容量大一点,并不是raidz慢。第一个组合用来存储重要数据,第二个组用来存储临时数据,丢了就丢了,不需要热备也不需要安全冗余。

    freenasB
        机械500g x 5 (raidz/raid5)
        5盘位500g组成raidz可用空间正好和A机器4块500g的stripe一致,留1个盘做B的热备盘。

    freeenasC
        机械4T x 10 (raidz/raid5)
        这里我选的是每5块组成一个raidz,然后两个raidz组成一个stripe,没有选择10块一起组成raidz2/raid6,原因有两个,尽量不组太多盘在一个阵列里面,第二个就是freenas升级扩容必须同组一起扩,10个组一起,以后一次要换10块,还是有点吃不消,而且也有点浪费。当然两个raidz也可以不组合在一起,那样更灵活。我这是根据我手上现有10个盘设计的。

    硬件存储方案大致就是这样了,我这个方案的特点就是根据我的实际情况设计的,硬盘很多是之前购入遗留下来的,只有4块500g ssd是全新购入的,所以大家如果要自己组也别完全按我的方案来,要根据自己的实际情况合理分配。

    硬件上组合完毕了,接下来重要的就是软件,通过软件和不同的服务配置来达到确保安全性某种程度上比硬件更重要。

    1.freenasA和freenasB双机热备

        由于都是freenas系统,那热备处理很简单,就用系统自带的rsync任务调度即可,freenasA作为rsync的客户机,freenasB作为rysnc的服务器接收同步数据。配置流程如下:
        a.现在freenasB上启用rsync服务,依次选择 freenas->服务->Rsync->Configure->Rsync Module

                               
登录/注册后可看大图


路径:即B机器上保存同步数据的路径,我这里B机器数据路径就是/mnt/data(A机器我也是叫做这个路径)
        名称:可以自己定义,等会freenasA需要指定这个rsync服务的模块名称
        Access Mode:选Read and Write,即可读可写模式,这样A机器的数据同步到B时会自动处理新增/修改/删除
        用户:freenasB上使用的用户名
        群组:freenasB上使用的组
            这里用户和群组是指的B这台机器上的用户,因为A数据传到B后,B需要一个用户来处理A过来的数据
        允许主机:这里填上A的ip,也就是B允许哪一台机器同步数据过来,不填的话B会拒绝同步
        之后点击保存,然后在服务页面启动rsync服务,并勾选自动启动,保证以后机器启动后rsync自动开启服务

    b.配置freenasA的rsync计划任务,依次选择 freenasA -> 任务 -> Rsync任务 -> Add

                               
登录/注册后可看大图




        路径:这里是A机器需要向B同步数据时机器A的文件夹位置(我这里A/B机器一样,都是/mnt/data)
        远程主机:这里填B机器的IP地址,即rsync服务器地址
        Rsync 模式:有两种一种是Module,一种是ssh,这里我在内网,不考虑加密选的Module,如果考虑加密可以选择ssh,同理B也要修改
        远程模块名称:选Rsync Module,就需要填名称,就是刚才在B机器上起的名称,这里叫做databk
        方向:Push,即A机器向B发送同步数据。(如果需要从B拉取数据,可以选pull)
        安排Rsync任务:这里就是同步计划的时间安排了,我这里选的时每天0点同步一次
        下面就是几个子选项:
            Recursive:递归,也就是子文件夹是不是一起同步
            耗时:我没仔细研究,默认是勾上的
            压缩:传输时压缩,减小传输量,不过内网也无所谓,默认勾上
            删除:这个重要,默认是不勾的,我这里勾上,是因为如果A机器上某个文件删除了,同步的时候B不会删除,勾上的话B也会同步删除。
            其他都按默认来。
        最后启用,保存任务,这样一个rsync计划任务就编辑好了。

        接下来可以立马测试一下,在Rsync任务界面选择此任务并立即运行,就可以看到效果了
        过几分钟可以去B机器上看看是不是有同步过来的文件,现在我每天早上都可以看到自动同步后的效果,不用管了。

    2.云盘数据同步和备份
    说完了双机热备的事情,接下来就讲下云盘同步的方案,云盘同步数据有两种,一种我是工作要用的重要数据,还有一种是家庭数据,这两种数据有明显的特征:
    工作数据:频繁访问修改,数据量不大,某个项目或产品结束后改项目数据转为冷数据,只需要备份即可,但在使用期会频繁读写
    家庭数据:其实就是照片视频,或者一些自己的私人信息,这类数据最大的特点就是只增不减,只读不写,但是容量巨大

    我这几年一直用的网盘是115和百度网盘,都充过钱的,115的特点是网盘容量只增不减,但是有点贵,百度网盘便宜,但是一旦不充钱就取消容量。然后这两个网盘之前都有同步软件可以很方便的自动上传文件,现在都没有这个功能了,有些第三方个人在做插件但是很不稳定。所以115和百度只适合同步家庭类数据,就是只用上传一次即可,也不会修改,只是读取。

    而工作数据就不一样了,可能会反复读写,如果每天打开115百度之类的,手动上传,累不说,很容易出错,频繁删除/上传不出错才怪。所以一定要找一个可以直接通过插件或工具自动化同步的网盘,而且工作数据安全性一定要高,这样的特征应该是这样的:

        a.IT大厂出品的
        b.对个平台兼容性好,开放性好
        c.价格我能承受
        d.有自动化同步工具或插件,要能兼容freenas

        其实选来选去就这么三家了微软的onedrive,googledrive和苹果icloud,首先排除掉苹果,我用苹果啊,我有mac mini,mac pro(送人了后来),手机也是iphone8,但是icloud价格贵,而且苹果封闭不讨喜。google的话国内连接不稳定,虽然我有梯子,微软的onedrive非常符合我的需求:
        a.国内访问很不错
        b.对各平台兼容好,可以使用rclone这样的自动化插件(话说微软自从换了ceo现在越来越开放了,我喜欢)
        c.价格很合适,在某宝上不到300可以买一年的家庭版,6个帐号每个帐号1t空间
        d.这也是加分项,可以使用office365,我现在完全可以不用windows了,但是不用office是不可能的

    3.freenasA重要数据onedrive云盘同步

    这里A的重要数据我首先又分了三类

        a.readwrite 就是会反复读写的数据
        b.readonly 只读不写
        c.cold 冷数据

        这里我用一个项目数据来举例解释一下,比如我要设计一个机箱,那么机箱的原型图/模型图/施工图在我设计的时候就是readwrite数据,会反复修改直到定稿,定稿了就叫做cold,不会在修改了;那么在设计过程中我会参考一些资料,比如规格说明,案例参考,以及客户给的资料,这些就是readonly,在做项目时会经常看,但是不会修改。

        因此我的结论很简单,a类数据需要及时向云盘同步,确保数据安全,b类数据要经常访问,而且速度要快,放在A服务器也是合理的,但不需要像云盘同步,因为b类数据很容易在项目制作过程中再次获取到。cold数据就是定案不会修改了,那么这类数据直接打包好向115或百度同步

    下面就是如何将freenasA的readwrite数据自动同步到onedrive了,这里我也是参考了一些资料,加上自己的摸索,希望对大家需要的七点做用,按道理同步icloud或google drive或者阿里云的oss存储原理一样。

    首先是要有onedrive帐号,没有就注册一个,免费可以使用15g,如果是个人存储小数据完全足够了。

    有了帐号之后在自己的存储空间设定一个存储文件夹,我这里叫做freenasa


                               
登录/注册后可看大图



    然后去rcloe官网下载一个软件,用来生成同步云的token(可以理解为钥匙)
    [rclone官网下载地址](https://rclone.org/downloads/)

    这个软件根据你生成token的操作机器选择,比如我是在win10上操作的,就选win10 64bit,不是选freebsd

    下载解压以后,通过命令行进入这个软件目录,输入命令
    rclone authorize "onedrive"

    输入后会弹出浏览器,让你登陆one drive帐号,这里选择登陆。

    登陆完毕后,会提示你是否允许rclone访问one drive,选择是。

    之后,在你的命令行窗口会出现一大串字符信息,大概类似我这样的
    D:\tools\rclone-v1.50.2-windows-amd64>rclone authorize "onedrive"
2020/01/02 14:18:11 NOTICE: Config file "C:\\Users\\work\\.config\\rclone\\rclone.conf" not found - using defaults
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=v0oT_lC0nCSYP10wP_K4lA
Log in and authorize rclone for access
Waiting for code...
Got code
Paste the following into your remote machine --->
{"access_token":"EwB4A8l6BAAUO9chh8cJscQLmU+LSWpbnr0vmwwAAe/fAXTU/b1Mc9f9jYDaPGoD2VIC2k4A5+gwZoHZLuaYn/7w9Zsy31e6fawK.................................................................................................................................................................................................................................................................................................................................................................................................................................DgjC0FSmFeO4cQNN9YxwAwjnJG!u0Z374x14BkilAvwwGPD6Zb*mhCvjky2FubJ4yWT*cWlH5v61oj9iSF9A9IHeG78QmRJPaAAtV9vNMl!IsdyK6puvOHgajTJ*MXs6JpU96uK38IIoNDzirJU3eyiqOLC1Ucbewn!UztOz01YQegx36UZBVY7ooIudMyluXGxZ8v9USXrgPedBwuzbN7Xrb!Kg4ymWO!hNCs3z!pDLe6ShYr!fZtQ3jDjkEPSa8aagDaxlV82BZUI1JwRExDN3shCagOQTc1mf5vRD2ywguQHDd19IadncEQ!IGHesshvo$","expiry":"2020-01-02T15:19:35.0633046+08:00"}
<---End paste

    会看到生成了一大串的字符,–>与<–之间的这段就是access_token ,包括“{”和“}”这两个符号,把它复制下来。

    接下来查看登陆onedrive的网址:


                               
登录/注册后可看大图



    这个cid=后面,就是你的网络磁盘id,待会freenas里面云同步设置要用,那么现在token和cid都有了。

    我们可以进入freenas界面进行云同步设置了,依次打开freenasA -> 系统 -> 云凭据 -> Add

                               
登录/注册后可看大图


    名称:自己起,我这里叫做OneDrive
    提供者:这里要选云盘的供应商,Microsoft OneDrive
    访问令牌:就是刚才通过rclone获取的token,复制黏贴过来,不要漏不要错
    Drive Account Type:这里是云盘类型,分个人/企业,我这里是个人,选PERSONAL
    磁盘ID:就是刚才获取到的cid,复制黏贴过来
    后面两个不填即可,我们用令牌同步,就不需要在同步时输入帐号密码了,点击保存

    最后再任务里面,设定云同步任务,依次打开 freenas -> 任务 -> 云同步任务 -> Add


                               
登录/注册后可看大图


    描述:自己填好了
    方向:Push,向服务器云盘同步数据
    凭据:选择刚才创建的凭据,名字叫做OneDrive
    文件夹:这里是指云盘的目录名称,即同步后数据放在云盘哪个目录下
    目录/文件:Freenas需要同步到云盘的目录,我这里需要把/mnt/data/readwrite数据同步只云盘
    传输模式:SYNC,我选同步,还没研究,默认就是这个
    安排云任务:我这里选择的是每小时同步一次,反正家里上传宽带30mbps,同步这种数据够快了,一小时一次没问题
    启用勾选
    保存后,可以选择立即运行,然后去云盘看看,OK了


                               
登录/注册后可看大图


    至此同步成功。以后每天freenas的可读写重要数据会有双保险了,安全性最高。

    4.冷数据和家庭数据(freenasC)的云盘同步
    这个没啥好介绍的,定期(我是每个周末整理一次)打包上传至115或百度,我用115,虽然花点钱,但是安心。

    后记,这些方案的设计,研究,分析,到最后实施,除去硬件外,也花了大概1个月左右,现在基本大功告成。我这么大费周折的处理是有原因的,以前工作数据都是存在公司,即使个人有也不重要,但是只从17年开始有自己的小事后,势必要自己保存这些工作数据了。第二,为什么要配合云盘,因为家里即使有双击热本风险已经很小了,但是还是有出问题的可能,我父母家那栋楼前几年4楼邻居不知道怎么弄出火灾了,虽然消防抢救及时只烧了他们一家,但是因为救火过程中大量的喷水,导致这栋楼下面每家每户像被洪水冲过一样,要是当时我的机器碰巧在那里,估计全部就挂了。所以我对这块是留了个方案的。我的原则很简单,宁愿现在每个月多花点小钱,比如云盘,也比将来抢救数据花大钱要好。就像每天锻炼身体,比不锻炼身体最后送医院要好。

    另外关于硬盘的质量,我用了20多年电脑,从几百MB硬盘用到现在的大硬盘,基本上只要是正规渠道新品,质量都很可靠,不管线上线下,不是正规渠道出问题概率特别大,我有的500g硬盘已经用了10年了,现在还可以用,而且freenas不报错,smart检测正常,有的买回来几天就挂了,淘宝贪便宜买的下场。当然,仅供参考。

    最重要的经验,每天做一点有益事情,比平常不做,只靠最后努力要靠谱得多。

20200102211811052_29412.png
20200102212124239_10119.png
20200102212147172_3146.png
20200102220218663_3991.png
20200102221151840_7657.png
20200102221420989_29190.png
20200102221805987_1330.png
20200102222143131_14757.png

打赏

参与人数 2家元 +70 收起 理由
家睦 + 30
smallanntse + 40 優秀文章

查看全部打赏

发表于 2020-1-27 03:03:37 | 显示全部楼层
感觉内存给太足咯额!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-23 13:30 , Processed in 0.187200 second(s), 17 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表