在 ubuntu 22.04 中,通过 apt 在线安装 NFS 服务
系统环境
标题 | 版本 | 备注 |
---|---|---|
系统版本 | ubuntu 22.04.3 LTS (Jammy Jellyfish) | - |
内核版本 | 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux | - |
Server 端 | - | 10.10.10.203 |
Client 端 | - | 10.10.10.204 |
NFS | v4.2 | - |
NFS 简介
NFS 是 Network File System 的缩写,即网络文件系统。它是一种分布式文件系统,允许客户端远程访问和共享服务器上的文件。它是在UNIX和类UNIX操作系统之间共享文件的标准方式之一。NFS最初由Sun Microsystems开发,并成为了许多UNIX和类UNIX操作系统的标准组件
特点
- C/S架构: NFS采用客户端-服务器架构,其中客户端请求访问远程文件并与服务器通信。服务器则负责管理文件系统和处理客户端请求。
- 跨平台: NFS 可以让不同操作系统之间的机器共享文件,例如 Linux 可以访问 Windows 上的文件。
- 透明性: 对于应用程序来说,NFS 是透明的,就像访问本地文件一样。
- 易用性: NFS 配置简单,使用方便。
- 高性能: NFS 在局域网中具有较高的性能。
- 安全性: NFS提供了一些安全功能,例如访问控制列表(Access Control Lists,ACLs)和Kerberos认证,以保护文件免受未经授权的访问。
应用场景
NFS 常见于以下应用场景:
- 共享文件: 在局域网中共享文件,例如共享打印机、CD-ROM 等。
- Web 服务器: 将 Web 服务器的根目录挂载到 NFS 共享上,可以方便地更新网站内容。
- 数据库: 将数据库文件存储在 NFS 共享上,可以提高数据库的性能和可用性。
- 虚拟机: 将虚拟机镜像文件存储在 NFS 共享上,可以方便地管理虚拟机。
工作机制
NFS 使用 RPC 协议进行通信,RPC 是远程过程调用协议。NFS 可以看作是一个 RPC 服务器,主要功能是管理需要共享的目录和文件。
NFS 的工作机制如下:
- 客户端发起一个 RPC 调用,请求服务器打开一个文件。
- 服务器收到请求后,打开文件并返回文件句柄给客户端。
- 客户端使用文件句柄对文件进行读写操作。
- 客户端完成操作后,关闭文件句柄。
配置
NFS 的配置相对简单,只需要在服务器端和客户端进行配置即可。
服务器端配置
- 安装 NFS 服务软件。
- 创建要共享的目录。
- 配置 NFS 共享。
客户端配置
- 安装 NFS 客户软件。
- 挂载 NFS 共享。
总结
NFS 是一种简单易用的网络文件系统,适用于在局域网中共享文件。NFS 具有跨平台、透明性、易用性、高性能等特点,广泛应用于各种场景。
NFS 安装
NFS 服务端
1.执行 apt 命令在线安装 nfs 服务端包:
1 | $ sudo apt install -y nfs-kernel-server |
按转完成后,可以执行命令 cat /proc/fs/nfsd/versions
查看目前 nfs 所支持的版本:
1 | $ sudo cat /proc/fs/nfsd/versions |
2.创建文件共享目录:
1 | $ sudo mkdir -p /data/nfs |
3.由于是默认的共享方式,NFS会将客户机上的所有root操作都映射为nobody:nogroup身份,因此,我们需要修改该目录的拥有权,以便匿名身份可以读写该目录:
1 | $ sudo chown nobody:nogroup /data/nfs |
4.编辑 /etc/exports
文件,配置授权(允许哪些 IP 能访问 nfs)
1 | $ sudo sh -c 'cat << EOF >> /etc/exports |
配置参数说明:
5.执行命令 systemctl restart nfs-kernel-server.service
重启下 nfs 服务(第一次修改 /etc/exports
文件):
1 | $ sudo systemctl restart nfs-kernel-server.service |
6.查看其启动状态:
1 | $ $ sudo systemctl status nfs-kernel-server.service |
NFS 客户端
手动挂载
1.执行 apt 命令,在线安装客户端包 nfs-common
:
1 | $ sudo apt install -y nfs-common |
2.执行 showmount -e SERVER_ip
,查看服务端提供哪些共享目录:
1 | $ sudo showmount -e 10.10.10.203 |
3.接下来就可以对服务器提供的共享目录进行挂载了:
1 | $ sudo mount -t nfs 10.10.10.203:/data/nfs /data/shared/ |
4.命令执行成功后,可以执行 df -h
命令进行确认,查看挂载是否成功:
1 | $ df -h |egrep '/data/shared' |
卸载挂载
如果要卸载挂载目录,则只需要执行 umount /data/shared
即可。偶尔在卸载时会提示设备正处于 busy 状态,则在卸载的同时,加参数 -l
即可!:
1 | $ sudo umount /data/shared/ # or sudo umount -l /data/shared |
自动挂载
1.如果要想让服务器每次重启后都能自动挂载 NFS 共享,则编辑 /etc/fstab
文件,在底部追加一行配置,如下:
1 | $ sudo sh -c 'cat << EOF >> /etc/fstab |
如果想手动测试下自动挂载是否能成功,则可以使用命令 mount -a
,前提是你之前没有挂载过共享目录!
测试
1.在客户端端上往挂载目录写入一个文件,如下:
1 | $ echo 1111 > /data/shared/1.txt |
2.在服务端上确认共享目录下是否有生成的文件,并确认下内容:
1 | $ cat /data/nfs/1.txt |