Ubuntu 部署 NFS 服务

Ubuntu 部署 NFS 服务

参考:https://blog.csdn.net/weixin_47906106/article/details/134684327

Ubuntu 部署 NFS 服务

 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

案例操作系统:Ubuntu 20.04.4

1、NFS 服务安装

# 服务端
apt install nfs-kernel-server

# 客户端
apt install nfs-common

2、配置共享目录

服务端创建一个共享目录 /data,作为客户端挂载的远端入口,并设置权限。

mkdir -p /data
chmod 666 /data

修改 NFS 配置文件 /etc/exports

sudo vim /etc/exports
# 将 /data 文件目录设置为允许任意IP的客户端挂载
/data *(rw,async,nohide,insecure,no_subtree_check,no_root_squash)

# 重新加载配置
sudo exportfs -a

配置项功能介绍:

参数描述
ro共享目录只读;
rw共享目录可读可写
sync同步,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async异步,将数据先保存在内存缓冲区中,必要时才写入磁盘,效率高,但有丢失数据的风险;
wdelay(默认)如果有多个客户端要对同一个共享目录进行写操作,则将这些操作集中执行。对有很多小的IO写操作时,使用该选项可以有效的提高效率;
no_wdelay如果有多个客户端要对同一个共享目录进行写操作则立即写入。当设置了async选项时,no_wdelay选项无效,应与sync配合使用;
root_squash(默认)将来访的root用户映射为匿名用户或用户组;
no_root_squash来访的root用户保持root帐号权限;
all_squash所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认)访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
anonuid=指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
anongid=指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
secure(默认)限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure允许客户端从大于1024的tcp/ip端口连接服务器;
subtree_check若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check(默认)即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
hide共享一个目录时,不共享该目录的子目录;
no_hide共享子目录;

3、启动 RPC 服务

$ service rpcbind start

# 或者
/bin/systemctl start rpcbind.service

查看 NFS 服务项 rpc 服务器注册的端口列表

# 此时还没有启动 NFS 服务话,只监听了 111 端口,下面再启动 NFS 服务,再来看下注册的端口列表。
$ rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

注意:此时还没有启动 NFS 服务,只监听了 111 端口,下面再启动 NFS 服务,再来看下注册的端口列表。

4、启动 NFS 服务

$ systemctl restart nfs-kernel-server

# 或者使用如下命令
service nfs start
/etc/init.d/nfs-kernel-server restart
/bin/systemctl start nfs.service
/bin/systemctl start nfs-server.service

# 提示没有服务的话,查看所有服务,确认正确的服务名称
systemctl list-units --type=service|grep nfs

启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表,rpc 注册的端口列表明显增多。

$ rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  60024  status
    100024    1   tcp  50417  status
    100005    1   udp  54892  mountd
    100005    1   tcp  55981  mountd
    ...

服务端看下是否正确加载了设置的 /etc/exports 配置。

$ showmount -e localhost
Export list for localhost:
/data 192.168.1.0/24

5、挂载

客户端查看下 NFS 服务端 (上边服务端 IP 为:192.168.240.5) 可共享的目录信息。

 $ showmount -e 192.168.240.5
 Export list for 192.168.240.5:
 /data 192.168.1.0/24

客户端创建挂在目录 /data

$ mkdir -p /data

挂载远端目录到本地/data目录

$ mount 192.168.240.5:/data /data

$ df -h | grep 192.168.240.5
Filesystem                 Size  Used  Avail Use% Mounted on
192.168.240.5:/data   27G   11G   17G   40%  /data

可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /data 目录必须已经存在,而且目录中没有文件或子目录。

6、NFS 测试

在 NFS 服务端 /data 目录下创建一个文件,看下客户端是否能够正确读取并修改。

# 服务端写入
$ echo "This is NFS server." > /data/nfs.txt
$ ll /data/data/
total 4
-rw-r--r-- 1 root root 20 Nov  5 16:49 nfs.txt

# 客户端读取
$ ll /data/
total 4
-rw-r--r-- 1 root root 20 Nov  5 16:49 nfs.txt
$ cat /data/nfs.txt
This is NFS server.

# 客户端写入
$ echo "This is NFS client." >> /data/nfs.txt

# 服务端读取
$ cat /data/nfs.txt
This is NFS server.
This is NFS client.

7、TCP 协议挂载

NFS 默认使用用 UDP 协议来进行挂载。为了提高 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令可使用如下命令:

$ sudo mount 192.168.240.5:/data /data -o proto=tcp -o nolock

8、取消卸载

# 卸载挂载点
$ umount /data
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值