目录
一、服务端
1、安装nfs服务端组件
sudo apt install nfs-kernel-server
2、配置共享目录
(1)新建即将共享出去的目录
例如,我想在/mnt目录下建一个testdir目录
sudo mkdir /mnt/testdir
(2)配置/etc/exports
sudo vi /etc/exports
在最下边加入
/mnt/testdir *(rw,sync,no_subtree_check,no_root_squash)
其中
- /mnt/testdir表示将要共享出去的目录;
- 后边的星号(*)表示所有用户都可连接这台服务器,如果想限定某个网段的用户可以写成类似192.168.1.*这样的形式,如果想限定只有某个用户可以访问可以直接写这个用户的IP;
- 括号中的部分,rw代表客户端将来可读可写,如果写成ro就是只读;
- sync表示同步?表示所有数据在请求时写入共享,这个不太理解;
- no_subtree_check表示不检测父目录的权限;
- no_root_squash表示不能降低root用户的权限;
3、重启nfs服务
sudo /etc/init.d/nfs-kernel-server restart
4、查询nfs是否启动
ps -A|grep nfs
如果输入以下类似内容则证明已启动
3662 ? 00:00:00 nfsd4_callbacks
3664 ? 00:00:00 nfsd
3665 ? 00:00:00 nfsd
3666 ? 00:00:00 nfsd
3667 ? 00:00:00 nfsd
3668 ? 00:00:00 nfsd
3669 ? 00:00:00 nfsd
3670 ? 00:00:00 nfsd
3671 ? 00:00:00 nfsd
3711 ? 00:00:00 nfsiod
二、客户端
Windows客户端就不多说了,除了企业版和旗舰版自带的nfs服务似乎没有任何第三方nfs客户端可选,只讨论ubuntu客户端的连接方式(ubuntu也可以自己访问自己,可以用来测试nfs服务有无建立成功)。
1、客户端安装nfs-common
sudo apt install nfs-common
2、查看服务端共享出来了哪些目录
例如我的服务器地址是192.168.86.132
showmount -e 192.168.86.132
由于我之前在服务器端共享出的目录是/mnt/testdir,所以会显示如下内容
Export list for 192.168.86.132:
/mnt/testdir *
这样客户端就知道服务器提供了哪些目录可供连接。
3、挂载服务器端目录至客户端本地
(1)在客户端建一个目录用于接收nfs
比如我的目录建在/mnt/nfsclient
sudo mkdir /mnt/nfsclient
(2)开始挂载
sudo mount 192.168.86.132:/mnt/testdir /mnt/nfsclient/
其中:
- 192.168.86.132是我的服务器地址,你应该换成你的;
- /mnt/testdir是我的服务器共享出来的目录,你应该换成你的;
- /mnt/nfsclient是我客户端用来挂载共享的目录,你应该换成你的;
挂载完成,可以cd到挂载的目录下查看文件。
4、客户端查看挂载情况
命令行输入df回车,可以看到类似如下内容
Filesystem 1K-blocks Used Available Use% Mounted on
udev 477296 0 477296 0% /dev
tmpfs 99756 4844 94912 5% /run
/dev/sda2 19548440 2017744 16514632 11% /
tmpfs 498768 0 498768 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 498768 0 498768 0% /sys/fs/cgroup
vmhgfs-fuse 124054524 89496464 34558060 73% /mnt/hgfs
tmpfs 99756 0 99756 0% /run/user/1000
192.168.86.132:/mnt/testdir 19548544 2017792 16514688 11% /mnt/nfsclient
其中最后一行可以看到我的客户端已经挂载了192.168.86.132这台服务器的/mnt/testdir目录,挂载到了我这台客户端的/mnt/nfsclient下。
5、客户端取消挂载
取消挂载需要先退出挂载的目录,否则会显示device is busy,cd到根目录或其它目录,输入以下命令解除挂载
sudo umount /mnt/nfsclient
其中/mnt/nfsclient是我的客户端的目录,注意这里应该填写客户端接收挂载的这个目录名,而不是服务端的目录名,这里你应该换成你的客户端用于接收的目录。
再次输入df可以看到已经取消挂载了
xyvm@ubuntu:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 477296 0 477296 0% /dev
tmpfs 99756 4840 94916 5% /run
/dev/sda2 19548440 2017744 16514632 11% /
tmpfs 498768 0 498768 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 498768 0 498768 0% /sys/fs/cgroup
vmhgfs-fuse 124054524 89496464 34558060 73% /mnt/hgfs
tmpfs 99756 0 99756 0% /run/user/1000