文件系统概述 —— 从 Time Machine 备份磁盘开始

前言

本来以为要实现局域网自动备份很简单,网上有现成的方案:在 NAS 设备上安装 netatalk 提供 afp 协议服务,在 macOS 系统自动挂载,然后在 Time Machine 中配置。
下面三步都很简单,但是在配置 automount 的时候很艰难,一直报错。于是决心复习一遍 unix 系统的文件系统知识,研究一下最新的使用 NAS 配置 Time Machine 局域网备份的方法。

  • Netatalk>) 是一个 Apple Filing Protocol (AFP) 的开源实现。它为 Unix 风格系统提供了与 Macintosh 文件共享的功能。CentOS 系统服务端使用 yum install netatalk 轻松安装,修改配置文件重启。
  • 在 Finder 使用 Connect To Server 在界面上交互挂载。
  • 在 Time Machine 中配置。

Time Machine 备份磁盘介绍和本次配置目标

早期的系统仅支持 AFP 网络文件协议[1],但最新的官方支持文档[2]仅推荐了 SMB 网络文件协议。我这次选择按照最新推荐的协议进行配置。

要使用“时间机器”备份您的 Mac,您需要以下任一类型的储存设备:

本次配置的目标是

许多第三方 NAS 设备支持通过 SMB 进行的“时间机器”备份。有关详细信息,请查看适用于您 NAS 设备的文稿。

  • SMB protocol version 3.x, including SMB 3.x signing。NAS 服务需要支持 SMB 3.x 。
  • Support for Bonjour discovery. NAS 服务需要支持 Bonjour discovery 。

Unix 文件系统架构简述

文件系统是从 Unix/类 Unix 操作系统层面进行的描述,自上而下可以分为以下几个层面。

操作系统标准——人机交互

Unix 的标准化包括 ISO C、IEEE POSIX(Portable Operating System Interface 可移植操作系统界面)、SUS(Single Unix Specification 单一 Unix 规范) 等。

image.png
标准约定了文件系统应该具备什么样的概念和功能,具体而言就是规定了有哪些系统例程以及相关参数。不关心具体的实现。

操作系统实现——系统与磁盘交互

不同的操作系统有不同的文件系统实现,不同的文件系统有不同的特性,影响到文件操作性能和数据安全。
同一个操作系统运行时可以同时挂载多个文件系统。

简单列举几种常见的实现。

  • NTFS:NTFS(英語:New Technology File System),是 Microsoft 公司开发的专用文件系统,Mac OS X 内核能对 NTFS 进行有限的读操作。Linux 和 BSD 提供自由及开放源代码的软件,可用于读写 NTFS 文件。
  • APFS:苹果文件系统(英語:Apple File System,APFS)是一个适用于 macOS、iOS、tvOS 和 watchOS 的文件系统,目前正在由苹果公司开发和部署。
  • XFS:XFS,一种高性能的日志文件系统,特别擅长处理大文件,同时提供平滑的数据传输。目前 CentOS 7 也将 XFS+LVM 作为默认的文件系统。
  • ext4:第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是 Linux 系统下的日志文件系统,是 ext3 文件系统的后继版本。

除了单文件大小,个人用户通常不会碰到其他文件系统的问题。大量的云平台遮蔽了文件系统之间的差异,软件开发工程师通常无需关心底层使用的是哪种文件系统,架构师需要关心各文件系统的性能及其他特性。

网络存储

这里所指的网络存储是指的不通过主板硬件接口连接存储设备,而是通过网络挂载的存储设备。

  • NFS:网络文件系统(英语:Network File System,缩写作 NFS)是一种分布式文件系统,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由昇阳电脑(已被甲骨文公司收购)开发,于 1984 年发布
  • SMB:伺服器讯息区块(Server Message Block,缩写为 SMB),又称网路文件共享系统(Common Internet File System,缩写为 CIFS, /ˈsɪfs/),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
  • AFP:苹果归档协议(英语:Apple Filing Protocol,缩写 AFP)也称 Apple 文件协议、Apple 归档协议,以前称为 AppleTalk Filing Protocol,它是一个专有网络协议,并且是 Apple File Service(苹果文件服务,缩写 AFS)的一部分,为 macOS 和经典 Mac OS 提供文件服务。目前在苹果文件系统(APFS)中已弃用。
  • 对象存储:无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。不同的云厂商有不同的实现和产品名。

最后是集各种接口于一身的新一代分布式存储。Linux 通过 Samba+Avahi 搭建 Time Machine 服务image.png

磁盘驱动和实现

磁盘包括软盘、磁带、机械硬盘、SSD 等。
磁盘的驱动和实现由存储设备厂商负责,通常都已经集成到了操作系统中,即插即用,普通用户无需关心。

最新 NAS 配置方法

需要配置:

  1. samba:提供 SMB 服务
  2. avahi-daemon:提供 Bonjour discovery 服务

samba

安装 yum install samba
启动 systemctl start smb.service
配置 vim /etc/samba/smb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[global]
# 下面两个属性为添加
min protocol = SMB2
ea support = yes

[tmbackup]
comment = macos time machine backup
path = 你的备份路径
browseable = yes
public = no
writable = yes
create mask = 0700
valid users = 授权用户名
# 加载模块以支持AAPL拓展,注意顺序很重要!
# catia: 兼容linux/macos中合法但在Windows/SMB中非法的字符
# fruit: 增强macos的的兼容性,并提供Netatalk AFP服务
# streams_xattr: 通过Linux文件系统提供Windows NTFS属性字段
vfs objects = catia fruit streams_xattr
# 支持aapl
fruit:aapl = yes
# 存储os x的元数据
fruit:metadata = stream
# 设置服务器在finder中的图标
fruit:model = MacPro
# 支持time machine,非常重要!
fruit:time machine = yes
# 文件清理的一些配置
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes

avahi

Avahi 不需要配置。没错,直接启动就好了。

# systemctl enable –now avahi-daemon

其他

如果开启了防火墙,需要开启一下 mDNS 端口 5353,CentOS 8 的指令如下
firewall-cmd –zone=public –add-port=5353/udp

个人初次使用 TimeMachine 第一选择硬盘时,必须先在 Finder 挂载才能看到,之后就能够自动连接了。

参考资料

  1. OS X Lion: 您可以与 Time Machine 配合使用的磁盘 https://support.apple.com/kb/PH4327?locale=zh_CN
  2. 可与“时间机器”搭配使用的备份磁盘 https://support.apple.com/zh-cn/HT202784
  3. Linux 通过 Samba+Avahi 搭建 Time Machine 服务 https://blog.dazzyd.org/providing-time-machine-on-linux/
  4. 配置 samba 作为苹果电脑 time machine 的备份硬盘 https://tlanyan.me/setup-samba-as-time-machine-destination/
坚持原创技术分享,您的支持将鼓励我继续创作!