这里写目录标题
1. NFS简介
NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。
NFS 通常用在 Unix 操作系统上(比如 Solaris、AIX及HP-UX)和其他类Unix 的操作系统(例如 Linux 及 FreeBSD)。
2. NFS实现步骤
假设一个客户端需要访问存储在其他机器上(主机)的数据(NFS 服务器),通常包括以下步骤:
- 服务端实现 NFS 守护进程,默认运行 nfsd,用来使得数据可以被客户端访问。
- 服务端系统管理员可以决定哪些资源可以被访问,导出目录的名字和参数,通常使用 /etc/exports 配置文件 和 exportfs 命令。
- 服务端安全-管理员保证它可以组织和认证合法的客户端。
- 服务端网络配置保证可以跟客户端透过防火墙进行协商。
- 客户端请求导出的数据,通常调用一个 mount 命令。
3. 测试平台
服务器端:Ubuntu系统18.04
客户端:rv1126
3. NFS安装方法
1)安装 NFS 软件包
sudo apt-get install nfs-kernel-server # 安装 NFS服务器端
sudo apt-get install nfs-common # 安装 NFS客户端
2)设置 NFS 共享目录
首先在/home路径下创建share文件夹。
mkdir share
然后输入如下命令查看配置文件。
sudo vim /etc/exports
在文件最后面添加下面一行,即可将share文件夹设置为共享文件夹。
/home/share *(rw,sync,no_subtree_check,no_root_squash)
上面命令中()定义了客户房屋特性, *代表所有的网段都可以访问这台服务器,rw代表其他人访问这个目录有读写权限(ro为只读),sync为同步,代表所有数据在请求时写入共享(async为异步,数据先暂存内存),no_subtree_check代表不检测父目录的的权限,no_root_squash代表root用户具有根目录的的完全管理访问权限。
保存后可以使用如下命令查看是否设置成功
showmount -e
3)主机启动NFS
sudo /etc/init.d/nfs-kernel-server start //首次启动
sudo /etc/init.d/nfs-kernel-server restart //重启
显示如下命令则启动成功
[ ok ] Starting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
4. 客户端配置方法
1)连接客户端和服务器
首先将客户端和服务器用网线连在同一个路由器上,然后利用telnet+客户端IP命令登录客户端,若有账号密码,输入账号密码即可进入客户端。
username@username:~/rv1126$ telnet 192.168.10.18 //192.168.10.18为客户端IP
Connected to 192.168.10.18
Escape character is '^]'.
RV1126 login: root
Password:
[root@~]#
2)ping服务器端
利用ping命令测试与服务器端是否联通
[root@~]# ping 192.168.10.23
PING 192.168.10.23 (192.168.10.23) 56(84) bytes of data.
64 bytes from 192.168.10.23: icmp_seq=1 ttl=64 time=1.05 ms
64 bytes from 192.168.10.23: icmp_seq=2 ttl=64 time=1.12 ms
64 bytes from 192.168.10.23: icmp_seq=3 ttl=64 time=1.17 ms
3)挂载
mount -t nfs 192.168.10.23:/home/share /share -o nolock
4)测试
在服务器端创建文件夹,查看客户端是否有该文件夹
//服务器端进入/home/share文件夹下
mkdir aaa
//客户端进入/share文件夹下
ls
客户端进入/share文件夹下出现aaa文件夹即为挂载成功。
如果不再需要挂载文件,执行如下命令:
sudo umount /share
5. 常见错误处理
- 错误1:
运行sudo apt-get install nfs-kernel-server安装命令报下面的错误
Err:1 https://mirrors.ustc.edu.cn/ubuntu bionic-updates/main amd64 rpcbind amd64 0.2.3-0.6ubuntu0.18.04.1
404 Not Found [IP: 202.141.176.110 443]
Unable to correct missing packages.
E: Failed to fetch https://mirrors.ustc.edu.cn/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.6ubuntu0.18.04.1_amd64.deb 404 Not Found [IP: 202.141.176.110 443]
E: Aborting install.
解决方法:手动下载安装
wget http://archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.6ubuntu0.18.04.4_amd64.deb
sudo dpkg -i rpcbind_0.2.3-0.6ubuntu0.18.04.4_amd64.deb
- 错误2
运行sudo apt-get install nfs-common报如下错误
The following packages have unmet dependencies:
nfs-common : Depends: libnfsidmap2 but it is not going to be installed
Depends: libtirpc1 (>= 0.2.4) but it is not going to be installed
Depends: keyutils
rpcbind : Depends: libtirpc1 (>= 0.2.5-1.2~) but it is not going to be installed
解决方法:采用如下命令安装依赖库
sudo apt-get install libtirpc1
sudo apt-get install libnfsidmap2
sudo apt-get install keyutils
libnfsidmap2也依赖libtirpc1,因此需要先安装libtirpc1
最后再运行下面安装命令即可安装成功
sudo apt-get install nfs-common