IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在 FreeBSD 10 上搭建 Time Machine 备份服务

    vpsee发表于 2015-09-22 11:59:50
    love 0

    Backblaze 是一家在线存储服务商,每隔一段时间他们就会发布他们的存储服务器 Storage Pod 设计细节(Storage Pod 4.5),一些第三方公司就按照这个设计造出一些廉价的存储服务器来出售。

    没调查清楚头脑一热就买了,买回来拆开一看有点后悔:

    • 只有一个系统盘,OS 装在一个盘上太危险,至少应该双硬盘 RAID1;
    • 只有一个电源,服务器系统至少需要配用2个可用电源;
    • 没有硬件 RAID,这个无所谓,我们也不打算用任何 RAID;
    • 只有2个 GigE 网卡,我们购买了额外2个 10 GigE;
    • 开箱操作不方便,更换一个硬盘每次都要把10几个螺丝钉卸下来;
    • 没有硬盘指示灯,哪个硬盘坏了无法从45个硬盘里迅速识别出来。
    • ……

    backblaze

    不过我们对这台存储服务器没太多要求,主要做归档备份用,不是我们的主备份,也不太在乎它是否可靠,所以先凑合着用吧。两年前我们提到 “把 Time Machine 备份到 FreeNAS 上”,我们打算这次直接用 FreeBSD + ZFS 做我们的备份服务器。

    ZFS 准备工作

    我们选择 FreeBSD 做备份的主要原因就是因为 ZFS,ZFS 操作起来太方便了。把30个硬盘连起来创建一个叫做 backup 的大存储池,采用 raidz2(相当于 RAID6):

    # zpool create backup raidz2 /dev/da0 /dev/da1 /dev/da2 /dev/da3 /dev/da4 /dev/da5 /dev/da6
     /dev/da7 /dev/da8 /dev/da9 /dev/da10 /dev/da11 /dev/da12 /dev/da13 /dev/da14 /dev/da15 /
    dev/da16 /dev/da17 /dev/da18 /dev/da19 /dev/da20 /dev/da21 /dev/da22 /dev/da23 /dev/da24
    /dev/da25 /dev/da26 /dev/da27 /dev/da28 /dev/da29
    

    在 pool 上创建一个文件系统 timemachine,创建好后就自动挂载好了,不用再手动 mount:

    # zfs create backup/timemachine
    
    # df -h
    Filesystem            Size    Used   Avail Capacity  Mounted on
    /dev/ada0p2           447G    2.3G    409G     1%    /
    devfs                 1.0K    1.0K      0B   100%    /dev
    backup                 31T    278K     31T     0%    /backup
    backup/timemachine     31T    1.0G     31T     0%    /backup/timemachine
    

    对每个使用 Mac/Time Machine 的用户需要在 FreeBSD 系统上增加一个对应的帐户,并把帐户加到 timemachine 组里面便于统一管理:

    # pw useradd -n vpsee -s /bin/csh -m
    # passwd vpsee
    
    # pw groupadd timemachine
    # pw groupmod timemachine -m vpsee
    # pw groupshow timemachine
    timemachine:*:1002:vpsee
    

    在 /backup/timemachine 下面新建一个用户目录,并给予适当权限:

    # mkdir /backup/timemachine/vpsee
    # chown vpsee:timemachine /backup/timemachine/vpsee
    # chmod 700 /backup/timemachine/vpsee
    # chmod 777 /backup/timemachine
    

    安装和配置 Netatalk

    Netatalk 是一个开源的 AFP (Apple File Protocol) 文件服务器,为 Mac OS X 提供文件共享服务。Avahi 是 Apple Zeroconf 协议的开源实现,类似 Bonjour 的功能,它可以让你在 Mac 系统里自动发现你的 FreeBSD 服务器。我们直接使用 pkg 安装软件包:

    # pkg install netatalk3
    # pkg install nss_mdns
    # pkg install avahi
    

    修改 nsswitch.conf:

    # vi /etc/nsswitch.conf
    #
    # nsswitch.conf(5) - name service switch configuration file
    # $FreeBSD: releng/10.2/etc/nsswitch.conf 224765 2011-08-10 20:52:02Z dougb $
    #
    ...
    hosts: files dns mdns
    ...
    

    配置 afp:

    # vi /usr/local/etc/afp.conf
    ;
    ; Netatalk 3.x configuration file
    ;
    
    [Global]
    vol preset = default_for_all_vol
    log file = /var/log/netatalk.log
    log level = default:info
    hosts allow = 172.20.0.0/23
    mimic model = TimeCapsule6,116
    disconnect time = 1
    
    [default_for_all_vol]
    file perm = 0640
    directory perm = 0750
    cnid scheme = dbd
    
    [TimeMachine]
    time machine = yes
    path=/backup/timemachine/$u
    valid users = @timemachine
    #512 GB limit
    vol size limit = 512000
    

    配置完后启动各服务:

    # /usr/local/etc/rc.d/dbus onestart
    # /usr/local/etc/rc.d/avahi-daemon onestart
    # /usr/local/etc/rc.d/netatalk onestart
    

    如果测试后都好用的话别忘了把服务加到启动文件里:

    # vi /etc/rc.conf
    ...
    zfs_enable="YES"
    dbus_enable="YES"
    avahi_daemon_enable="YES"
    avahi_dnsconfd_enable="YES"
    netatalk_enable="YES"
    ...
    

    Mac 配置

    在 Mac 上把这个选项打开:

    $ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
    

    打开 Finder -> Go -> Connect to Server… 填入 FreeBSD 的 IP 地址(afp://192.168.2.201)后点击 Connect,使用刚才创建的帐号和密码登录进入之后就会看到 TimeMachine 文件夹。

    打开 System Preferences -> Time Machine -> On 选择 TimeMachine 文件夹,然后点击 Use Disk 就应该能用了。

    timemachine



沪ICP备19023445号-2号
友情链接