Linux 环境下搭建NFS服务NFS(Network File System),网络文件存储系统,它最早是由 Sun 公司开发的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP 网络共享资源 。通过 NFS 协议 , 我们本地 NFS 的客户端应用可以透明的读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便 。简单的理解,NFS 就是可以透过网络,让不同的主机,不同的操作系统可以共享存储的服务 。
NFS 在文件传送或信息传送过程中依赖 RPC(Remote Procedure Call)协议,即远程过程调用,NFS的各项功能都必须向 RPC 来注册,如此一来 RPC 才能了解 NFS 这服务的各项功能 Port,PID,NFS 在服务器所监听的 IP 等,而客户端才能透过 RPC 的询问找到正确对应的端口,所以 NFS 必须要有 RPC 存在是才能成功的提供服务,简单的理解二者关系:NFS 是一个文件存储系统,而 RPC 是负责信息的传输 。
通过上面的简介,我们知道 NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装rpcbind和nfs-utils ,客户端只需要安装 nfs-utils 即可,由于我们选用 CentOS 系统,所以可以使用 yum 快速的安装 。
然后安装 NFS 服务
另:Ubuntu 16.04 安装命令
我们在服务端创建一个共享目录 /data/share , 作为客户端挂载在远端入口,然后设置权限
然后,修改 NFS 配置文件 /etx/exports
说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边 。此处,我配置了将 /data/share 文件目录设置为允许IP为192.168.0.0/24区间的客户端挂载 。然后 , 如果客户端IP不在该区间也想要挂载的话,可以设置IP区间更大或者设置为*即允许所有客户端挂载,例如: /home *(ro, sync,insecure,no_root_squash)设置/home目录允许所有客户端只读挂载 。
接下来 , 我们先启动 RPC 服务
我们发现,启动了 NFS 服务后,RPC 注册的端口列表明显增多 。现在服务端都启动起来了 , 在服务端看下是否正确加载了设置的 /etc/exports 配置
最后 , 在另一台Linux虚拟机上测试一下,是否能够正确挂载 。首先,我们可以在客户端查看下NFS服务端设置可共享的目录信息
然后 , 在客户端创建挂载目录/share
最后,挂载远端目录到本地/share 目录
可以看到,可以正确将远端 NFS 目录挂载到本地 。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录
最后,我们在 NFS 服务端/data/share目录下创建一个文件 , 看下客户端能否正确读取并修改
都可以了,这里因为上面设置了 NFS 远端目录权限为rw拥有读写权限,如果设置为ro,那么客户端只能读?。?不能写入 。根据实际应用场景合理配置 。
NFS 默认使用 UDP协议进行挂载,为了提供 NFS 的稳定性 , 可以使用 TCP 协议挂载,那么客户端挂载命令如下:
最后,卸载命令
LINUX怎么挂载NFS?在linux客户端挂接(mount)NFS磁盘共享之前 , 必须先配置好NFS服务端 。\x0d\x0a1、Solaris系统NFS服务端配置方法如下:\x0d\x0a (1)修改 /etc/dfs/dfstab, 增加共享目录\x0d\x0ashare -F nfs -o rw /export/home/sunky\x0d\x0a (2)启动nfs服务\x0d\x0a# /etc/init.d/nfs.server start\x0d\x0a (3)NFS服务启动以后,也可以使用下面的命令增加新的共享\x0d\x0a# share /export/home/sunky1\x0d\x0a# share /export/home/sunky2\x0d\x0a 注:/export/home/sunky和/export/home/sunky1是准备共享的目录\x0d\x0a\x0d\x0a2、linux系统NFS服务端配置方法如下:\x0d\x0a (1)修改 /etc/exports,增加共享目录\x0d\x0a/export/home/sunky 10.140.133.23(rw)\x0d\x0a/export/home/sunky1 *(rw)\x0d\x0a/export/home/sunky2 linux-client(rw)\x0d\x0a 注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、 linux-client是被允许挂接此共享linux客户机的IP地址或主机名 。如果要使用主机名linux-client必须在服务端主机 /etc/hosts文件里增加linux-client主机ip定义 。格式如下:\x0d\x0a 10.140.133.23 linux-client\x0d\x0a (2)启动与停止NFS服务\x0d\x0a /etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)\x0d\x0a /etc/rc.d/init.d/nfs start 启动NFS服务\x0d\x0a /etc/rc.d/init.d/nfs stop 停止NFS服务\x0d\x0a 注:若修改/etc/export文件增加新的共享 , 应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用 。使用命令exportfs -rv也可以达到同样的效果 。\x0d\x0a3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享\x0d\x0a # mkdir _p /mnt/nfs\x0d\x0a 注:建立一个目录用来作挂接点(mount point)\x0d\x0a #mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs\x0d\x0a 注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义 。/export/home/sunky为服务端共享的目录 。\x0d\x0a如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了 。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86sparc环境下测试通过 。\x0d\x0a权限问题:\x0d\x0a假设 server 端的使用者 jack, user id 为 1818, gid 为 1818, client 端也有一个使用者 jack , 但是 uid 及 gid 是 1818 。client 端的 jack希望能完全读写 server 端的 /home/jack 这个目录 。server 端的 /etc/exports 是\x0d\x0a这样写的:\x0d\x0a/home/jack*(rw,all_squash,anonuid=1818,anongid=1818)\x0d\x0a这个的设定档的意思是,所有 client 端的使用者存取 server 端 /home/jack 这\x0d\x0a目录时,都会 map 成 server 端的 jack (uid,gid=1818) 。我 mount 的结果是\x0d\x0a1. client 端的 root 可以完全存取该目录, 包括读、写、杀??等\x0d\x0a2. client 端的 jack (uid,gid=1818) 我可以做:\x0d\x0arm -rf server_jack/*\x0d\x0acp something server_jack/\x0d\x0amkdir server_jack/a
推荐阅读
- 路由器怎么用手机连网络,路由器怎么手机连接
- hbase数据恢复,hbase修复命令
- 免费linux服务器,免费linux服务器国外
- 教师在家做的体育游戏活动,老师体育游戏
- linux查操作系统命令 linux查询操作系统
- 如何做学生会新媒体部部长,学生会新媒体部长个人总结
- 虚拟机光驱断开,虚拟光驱重启
- 使命召唤7显卡怎么用不了,使命召唤7为什么卡顿
- php本地连接远程数据库 php远程访问