一、安装包安装
二、docker安装
一、安装包安装。
步骤:安装相关的包,配置,挂载。
1、安装
sudo apt-get install nfs-kernel-server
(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap)
分开看就是
1.服务器端:sudo apt-get install portmap
2.服务器端:sudo apt-get install nfs-kernel-server
3.客户端:sudo apt-get install nfs-common
2、配置nfs,编辑文件 sudo vim /etc/exports
在末尾一行加入
/some/where/share *(rw,sync,no_root_squash,no_subtree_check)
各个参数之间的含义:
/some/where/share与nfs服务客户端共享的目录,
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限。
no_subtree_check:不检查父目录的权限。更多的参数说明我在文章下面贴出来了!
设置 /some/where/share 目录权限
sudo chmod 777 work -R
重启服务:
···
sudo /etc/init.d/portmap restart <---重启portmap,
sudo /etc/init.d/nfs-kernel-server restart <---重启nfs服务
showmount -e <---显示共享出的目录
···
另:nfs是一个RPC程序,使用它前,经常要映射好端口,通过portmap设定,不过我这里没设
重启nfs服务有2种方式
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo service nfs-kernel-server restart
3、挂载
sudo mount -t nfs localhost:/some/where/share /mnt
sudo mount 127.0.0.1:/some/where/share /mnt
- 注:localhost为本机linux的IP地址
- 取消挂载用:
sudo umount /mnt
如果用在嵌入式设备上挂载,要加上参数-o nolock
mount -t nfs -o nolock 192.168.1.8:/some/where/share /mnt
apt-cache search nfs
nfs 30000000 192.168.1.8:/some/where/share/fs.yaffs2
这和用tftp下载一样的效果
二、docker安装
1、先安装docker。
2、下载镜像itsthenetwork/nfs-server-alpine lates
[root@monitor ~]# docker images | grep nfs
itsthenetwork/nfs-server-alpine latest 30f582fb8f6e 6 months ago 51.9MB
3、运行docker镜像
[root@monitor ~]# docker run -d --name nfs --privileged -p 2049:2049 -v /tmp/test:/nfsshare -e SHARED_DIRECTORY=/nfsshare itsthenetwork/nfs-server-alpine:latest
参数说明:
- -e 环境变量SHARED_DIRECTORY指定的任何目录
- --net=host或-p 2049:2049通过主机网络堆栈从外部访问共享。
- -v /tmp/test 共享的文件路径
-
-e READ_ONLY=true
将导致导出文件包含ro
而不是rw
仅允许客户端进行读取访问。 -
-e SYNC=true
将导致导出文件包含sync
而不是async
启用同步模式
由于/ etc / exports文件中fsid=0设置了参数,因此从客户端安装时无需指定文件夹名称。例如,即使正在安装和共享的文件夹是/ nfsshare,这也可以正常工作:
挂载:
sudo mount -v ip:/ /some/where/here
ip:共享文件的ip。
卸载:
sudo umount /some/where/here
除非由上面列出的环境变量修改,否则/ etc / exports文件包含这些参数:
*(rw,fsid=0,async,no_subtree_check,no_auth_nlm,insecure,no_root_squash)
- 请注意,showmount由于rpcbind未运行,该命令将无法对服务器起作用。