ubuntu 18.04 安装NFS 共享文件夹,Linux挂载,Mac 挂载

20190102 ubuntu 18.04 安装NFS 共享文件夹

一、官网文档

https://help.ubuntu.com/lts/serverguide/serverguide.pdflinux

参考文档

https://edu.aliyun.com/a/10469ubuntu

** 不少文档中安装的包为portmap,可是这个包已经被rpcbind替代
** 这文档写的很是清楚!我基本上是照抄的!感谢!

https://www.howtoing.com/how-to-set-up-an-nfs-mount-on-ubuntu-18-04vim

二、实践环境:

Mac 下 VisualBox 安装的 2 个虚拟机
	192.168.1.191 ubuntu 18.04 Server,做为 NFS 服务端,对外提供共享文件夹
	192.168.1.192 ubuntu 18.04 Server,做为 linux 客户端,获取共享文件夹

** 排除防火墙因素,因此服务端和客户端,都关闭防火墙
sudo ufw status
	Status: inactive

三、服务端 (192.168.1.191)安装 nfs 服务

1). sudo apt install nfs-kernel-server

2).确认一下安装包
dpkg -l |grep nfs
	ii  libnfsidmap2:amd64                    0.25-5.1                           amd64        NFS idmapping library
	ii  nfs-common                            1:1.3.4-2.1ubuntu5                 amd64        NFS support files common to client and server
	ii  nfs-kernel-server                     1:1.3.4-2.1ubuntu5                 amd64        support for NFS kernel server

3). 确认一下nfs 服务是否已经运行
ps -ef |grep nfs
	root       737     2  0 14:21 ?        00:00:00 [nfsd]
	root       738     2  0 14:21 ?        00:00:00 [nfsd]
	root       739     2  0 14:21 ?        00:00:00 [nfsd]
	root       740     2  0 14:21 ?        00:00:00 [nfsd]
	root       741     2  0 14:21 ?        00:00:00 [nfsd]
	root       742     2  0 14:21 ?        00:00:00 [nfsd]
	root       743     2  0 14:21 ?        00:00:00 [nfsd]
	root       744     2  0 14:21 ?        00:00:00 [nfsd]
	dhbm      2189  2069  0 16:22 pts/0    00:00:00 grep --color=auto nfs

4).确认一下 nfs 状态
	** centos 7 和 ubuntu 18 缺省支持 nfs v4
	** nfs v4 和以前主要差异在于支持并行
	** 协议具体细节不在这里多讨论
	
nfsstat
	Server rpc stats:
	calls      badcalls   badfmt     badauth    badclnt
	0          0          0          0          0 

5).设置对外(共享)输出目录
sudo vim  /etc/exports
增长如下 2 行 内容
	/var/nfs/general    192.168.1.*(rw,sync,no_subtree_check)
	/home       192.168.1.*(rw,sync,no_root_squash,no_subtree_check)

四、服务端 (192.168.1.191)设置共享文件夹

1).创建共享文件夹
	sudo mkdir -p /var/nfs/general
	另一个共享文件夹直接使用 /home,无需再创建

2).设置共享目录权限
** /var/nfs/general: 不属于任何人、任何组!谁均可以读写!
sudo chown nobody:nogroup /var/nfs/general

确认一下:
ls -la /var/nfs/general
	drwxr-xr-x 2 nobody nogroup 4096 Jan  2 11:51 .
	drwxr-xr-x 3 root   root    4096 Jan  2 11:33 ..
	-rw-r--r-- 1 nobody nogroup   15 Jan  2 11:51 1
	-rw-r--r-- 1 nobody nogroup   15 Jan  2 11:51 test20190102

home 不能乱容许!它属于 dhbm (我这里给 dhbm 具备root 权限)
确认一下:
ls -la /home
	drwxr-xr-x  5 dhbm dhbm 4096 Jan  2 11:58 dhbm

3).看看哪些文件夹已经被共享
showmount -e
	Export list for ubuntu1804-191:
	/home            192.168.1.*
	/var/nfs/general 192.168.1.*

4).本身共享本身试试
** 习惯性思惟!本身挂载本身会是什么样?windows 下是能够的!

sudo mount 192.168.1.191:/var/nfs/general /common/general
	access denied by server while mounting 192.168.1.191:/var/nfs/general

sudo mount 192.168.1.191:/home /common/home
	mount.nfs: access denied by server while mounting 192.168.1.191:/home

** 虽然提示不是 does not exist ,我也试试看
sudo mkdir -p /common/general
sudo mkdir -p /common/home
再次本身挂载本身!
结果同上!

** 为何不容许?之后再来理解!

五、客户端 (192.168.1.192) 安装 nfs-common 服务

1).sudo apt install nfs-common

2).看看哪些文件夹已经被共享
showmount -e 192.168.1.191
	Export list for 192.168.1.191:
	/home            192.168.1.*
	/var/nfs/general 192.168.1.*
	
** 说明有能够共享的文件夹,可供挂载!
** 实践过程当中,务必保证 服务端(192.168.1.191)开启

六、客户端 (192.168.1.192)挂载共享盘

1).直接挂载试试
sudo mount 192.168.1.191:/var/nfs/general /common/general
	mount.nfs: mount point /common/general does not exist

sudo mount 192.168.1.191:/home /common/home
	mount.nfs: mount point /common/home does not exist

** 显然,客户端没有创建对应的共享目录!
** 出错了!linux 挂载设备或文件夹,都要先设置一个挂载目标路径(或者叫:挂载点、挂载目录)

2).新建共享文件夹 挂载目录
	sudo mkdir -p /common/general
	sudo mkdir -p /common/home

	** 重复以上步骤 1)再来挂载,ok!

3).查看客户端挂载的磁盘
	df -h
		Filesystem                      Size  Used Avail Use% Mounted on
		...
		tmpfs                           395M     0  395M   0% /run/user/1000
		192.168.1.191:/var/nfs/general   98G  6.8G   87G   8% /common/general
		192.168.1.191:/home              98G  6.8G   87G   8% /common/home

4).查看共享目录占用状况
	du -sh /common/home
		60K	/common/home

	du -sh /common/general
		4.0K	/common/general

5).实际测试共享状况
** 这里只列出一个共享目录操做状况
cd /common/home/
sudo vim home20191002.test
随便输入一些内容,保存!退出!

/common/home/dhbm$ ls
	1  2_nfs_root  home20191002.test

回到服务端 192.168.1.191
pwd
	/home/dhbm
ls
	1  2_nfs_root  home20191002.test

能够看到服务端也同时创建了相同的文件!

七、客户端 (192.168.1.192)开机自动挂载共享盘

1).直接重启服务端(192.168.1.192)和客户端(192.168.1.192)
2).服务端 ps -ef |grep nfs 和 showmount -e ,都是正确的!
3).客户端 df -h 发现并无挂载以上 2 个共享文件夹

4).须要修改的文件是/etc/fstab
命令格式以下:
<NFS服务端>:<共享目录> <本地目录> <文件系统类型> <选项> <dump> <pass>
*** 参数具体意义之后慢慢体会,照猫画虎作一次!

sudo vim /etc/fstab,在文件中添加下面这行配置
192.168.1.191:/home /common/home nfs defaults 0 0
192.168.1.191:/var/nfs/general /common/general nfs defaults 0 0

参数说明:
	前面 2 个参数和以上操做是同样的,最后 2 个0 的意思以下
	第一个数字:0表示开机不检查磁盘,1表示开机检查磁盘; 
	第二个数字:0表示交换分区,1表明启动分区(Linux),2表示普通分区

6).直接重启服务端(192.168.1.192)和客户端(192.168.1.192)
	而后在查看,服务端、客户端都正确的共享个挂载了!

八、Mac 上挂载以上共享文件夹

1).参考

https://www.cyberciti.biz/faq/apple-mac-osx-nfs-mount-command-tutorial/windows

2).打开 mac 终端,一样方式创建一个供挂载的空目录
	sudo mkdir -p /common/general
	
	** 这里就只实践一个
	
3).挂载到 /common/general
sudo mount -t nfs 192.168.1.191:/var/nfs/general /common/general
	错误提示
mount_nfs: can't mount /var/nfs/general from 192.168.1.191 onto /common: Operation not permitted

4).按照以上官网提示修改没加上共享权限
sudo mount -t nfs -o resvport,rw 192.168.1.191:/var/nfs/general /common/general
ok!

4).尝试从mac电脑 cp 一个 zip 文件到 /common/general,提示如下错误
sudo cp ca* /common/general/
	Password:
	cp: ca.crt: could not copy extended attributes to /common/general/ca.crt: Operation not permitted

	cp: ca.key: could not copy extended attributes to /common/general/ca.key: Operation not permitted

...could not copy extended attributes to ....
可是,发现文件实际已经 cp 过去了!
管他呢!继续使用,发现都是正常的!

以上是最简化环境下的操做,实际环境下须要配合防火墙等进行进一步配置!

相关文章
相关标签/搜索