跳到正文

把一个被控端配置为 NAS ​

这个场景让一台 Linux 被控端专门存文件:文件放在它磁盘上的 ZFS 存储池里,笔记本把共享挂成文件夹或盘符,手机在“文件”应用里打开它,在家和在外面都一样。

这台机器上装两个模块。ZFS 存储 把空盘建成存储池,再在池上建数据集,每个数据集是机器上一个挂好的文件夹。文件共享 经 SMB 把这个文件夹共享出去。中枢在 服务 页上列出每个共享,并转发客户端的连接:客户端连中枢的 8443,中枢把连接交给这台机器的被控端,被控端再连本机回环地址上的 SMB 端口 445。

开始之前 ​

  • 做完了第零步。
  • 一台 Linux 机器装好被控端,加入了中枢,下文叫它 nas。装法见安装被控端。
  • nas 上有一块或几块空着的整盘,盘上的东西都不要了。
  • 下文的存储池叫 tank,数据集叫 media,共享用户叫 family,换成你自己的名字也行。

装上 ZFS 存储 ​

  1. 在面板的 模块 页,从 选择机器 里选 nas。
  2. 在 模块配置 里选 ZFS 存储 标签。没有这个标签时,用模块列表末尾的 + 加上它。
  3. 选择 安装,等标签上的 安装中 消失。
  4. 选择 配置。

除了 Ubuntu,各发行版的默认软件源里都没有 ZFS。安装时,模块先加上发行版存放 ZFS 的软件源。内核里没有 ZFS 模块时,Debian 和 RHEL 系上还要当场编译一个,这一步要几分钟。

建存储池 ​

  1. 在 存储池 下选择 创建存储池。
  2. 在 池名 里填 tank。
  3. 在 第一个 vdev 的磁盘 里勾选空盘。
  4. 在 vdev 布局 里选布局:两块盘选 镜像,只有一块盘选 单盘。
  5. 选中的盘上有数据时,输入 wipe 确认抹掉。
  6. 选择 创建存储池。

WARNING

创建存储池 抹掉勾选的每块盘上的全部内容。

拓扑 里出现 tank 和它的磁盘。三块盘以上能用的布局,见 ZFS 存储页的建池一节。

server 的 ZFS 存储标签,一个存储池和它的磁盘

建数据集 ​

  1. 在 数据集 下选择 添加数据集。
  2. 在 存储池 里选 tank,在 名称 里填 media。
  3. 挂载点 留空,数据集挂在 /tank/media。
  4. 在 压缩 里选 lz4。
  5. 在 记录大小 里选 1M。
  6. 选择 创建数据集。

照片、视频和归档适合 1M 这样的大记录。数据库和虚拟机镜像适合小记录。表单默认是 128K。

装上文件共享并加一个用户 ​

  1. 在 模块配置 里选 文件共享 标签,没有时同样用 + 加上。
  2. 选择 安装,等 安装中 消失。
  3. 选择 配置。
  4. 在 用户 下填用户名 family 和一个密码,选择 添加用户。
  5. 选择 应用用户。

用户那一行写着 就绪。这个用户只用来挂载共享,模块在 nas 上为它建一个不能登录的账户。记下用户名和密码,挂载时要用。

共享数据集 ​

  1. 回到 ZFS 存储 标签,在 tank/media 那一行选择 共享。
  2. 在 谁可以用 里勾选 family。
  3. 选择 共享。

这一行多出 smb · media 标记。中枢当场把这个共享写进 nas 的文件共享配置,不用再按 应用共享:共享名取数据集名的最后一段,路径是挂载点 /tank/media,勾选的用户能读写。被控端把这个文件夹的属组设成 sambashare,共享用户新建的文件,彼此都能改。

要只读的共享,或者只共享数据集里的一个子文件夹,改在 文件共享 标签的 共享 下选择 添加共享。路径 填 /tank/media 或它下面的文件夹,打开 只读,再选择 应用共享。

desktop 的文件共享标签,一个用户和一个共享

在笔记本上挂载 ​

  1. 在笔记本的客户端窗口打开 文件 页。
  2. 在 media 那一行选择 配置。
  3. 在 共享用户名 和 共享密码 里填 family 和它的密码。
  4. Linux 上保留 挂载路径,Windows 上选一个 盘符。macOS 上没有要选的。
  5. 选择 保存。
  6. 选择 挂载。

Linux 上,media 挂到 挂载路径 那个文件夹;macOS 上,它成为访达里的一个卷;Windows 上,它成为一个盘符。各个系统弹出的确认框,见文件共享和挂载。

共享已挂载的文件页

文件资源管理器里映射的盘符

人在外面时,步骤不变。客户端经第零步设好的外部访问连到中枢,共享照样挂得上。

在手机上打开 ​

  1. 在手机上打开 微子 的 文件 页。
  2. 在 media 那一行选择 在“文件”中打开。
  3. 在 共享用户名 和 共享密码 里填 family 和它的密码。
  4. 保持勾选 记住,选择 连接。

Android 的“文件”应用打开 media,里面是 /tank/media 的内容。

“文件”应用里作为一个位置的共享

服务页上的这一行 ​

面板 服务 页的 文件 组里有一行 media,带 模块 标记,状态是 提供服务中。来源一栏写着 nas 的地址和模块名,例如 由 192.168.1.20 上的文件共享模块发布。

客户端有 文件 权限,才看得到这一行。这项权限默认开着,在客户端页上收窄。

照看磁盘 ​

  • 在 tank 上选择 校验,ZFS 按校验和检查池里的每个数据块,进度显示在池上。
  • 拓扑 里每块盘写着 SMART 正常 或 SMART 即将故障。
  • 一块盘要换时,选中它,选择 替换,挑一块空闲盘,再选择 开始重建。

各个按钮的说明见 ZFS 存储。共享挂不上或打不开时,按故障排查里电脑和手机的两节查。

微子 · 个人开发基础设施