实现效果:不实际接入真实硬盘, 而是使用局域网内(公网主机也行, 只是速度取决于带宽)另一主机上的硬盘(或者是目录)

实现方案: 使用NFS来实现

准备:

  • 一个树莓派
  • 一台Linux主机, 系统Ubuntu 20.04, ip是10.0.0.239

操作步骤:

服务端(Linux主机)

  1. IP为10.0.0.239的主机安装nfs server

    1
    sudo apt install nfs-kernel-server
  2. 创建nfs共享目录(如果已经存在, 可以不创建), 也就是要挂载到树莓上的目录

    1
    mkdir -p /mnt/media/download
  3. 配置nfs服务, 编辑配置文件:vim /etc/exports, 添加一行

    1
    /mnt/media/download *(rw,sync,no_root_squash,no_subtree_check)

    各个字段说明如下:

    • /mnt/media/download: 要共享的目录
    • *:指定可以访问共享目录的用户 ip, * 代表所有用户。192.168.3. 指定网段。192.168.3.29 指定 ip。
    • rw:可读可写。如果想要只读的话,可以指定 ro。
    • sync:文件同步写入到内存与硬盘中。
    • async:文件会先暂存于内存中,而非直接写入硬盘。
    • no_root_squash:登入 nfs 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!但如果你需要在客户端对 nfs 目录进行写入操作。你就得配置 no_root_squash。方便与安全不可兼得。
    • root_squash:在登入 nfs 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
    • subtree_check:强制 nfs 检查父目录的权限(默认)
    • no_subtree_check:不检查父目录权限
  4. 配置完成后, 执行如下命令:

    1
    2
    sudo exportfs -a
    sudo service nfs-kernel-server restart
  5. 此时服务端配置完成

客户端(树莓派)

  1. 安装nfs客户端

    1
    apt install  nfs-common
  2. 将树莓派的目录挂载到之前在另外一台主机上共享出来的文件夹, 例如将树莓派的/mnt/download目录挂载到刚刚在另外一台Linux主机上创建的/mnt/media/download目录, 命令如下:

    1
    mount 10.0.0.239:/mnt/media/download /mnt/download/
  3. 在10.0.0.239的/mnt/media/download下创建一个文件, 此时可以看到树莓派的/mnt/download/目录下也存在刚刚新建的文件