NFS网络文件系统的搭建
NFS到底是个什么东西?
简而言之,就是一个文件系统,用来存储文件。
与其他文件系统所不同的是,这个文件系统在客户端使用上避免了调用API等繁琐的方式,只需要将NFS客户端上的路径和NFS服务器上的路径进行挂载mount
(客户端的路径挂在到服务器上的路径)。
这样,客户端就可以直接在自己的文件路径中写入文件,写入的文件可以在所有挂载在同一个NFS服务器路径下的所有的客户端的路径下可见。同样,其他客户端在挂载路径下写入和修改的操作,对其他客户端和服务端都是可见的。
两个字,丝滑~~~~~
搭建过程
环境
node02:192.168.23.13 NFS服务端
node03:192.168.23.14 NFS客户端
操作系统:Linux centos 6.5
先准备服务端,这样客户端才有地方挂载!
网上NFS的架构图一大堆,简单来说,就是NFS
的服务每次启动的端口都不一样,这样我们的客户端没办法去找到服务端的接口去进行操作,所以需要一个rpc工具
,这样客户端就可以在访问NFS前先去访问rpc
获得在rpc上注册的NFS的各个服务的端口,这样客户端就可以访问正确的NFS端口了。
因此有两个个非常重要
的点,
- 一个NFS服务需要安装两个工具:
rpcbind
、nfs-utils
- RPC的服务要在NFS服务启动前启动,用于NFS服务注册端口
搭建服务端:
1,安装工具
yum install nfs-utils rpcbind -y
2,创建挂载目录
创建一个文件夹,用于其他客户端进行挂载。
mkdir -p /home/shareDir
3,将文件夹的权限所属赋给NFS安装时所创建的用户及用户组
chown -R nfsnobody.nfsnobody /home/shareDir/
4,编辑NFS配置文件,设置挂载点,及访问权限等
vi /etc/exports
内容:
/home/shareDir 192.168.23.0/24(rw,sync,no_root_squash)
格式:挂载点 访问机器IP(权限)
权限
参数 | 解释 |
---|---|
Ro | 该主机对该共享目录有只读权限 |
Rw | 该主机对该共享目录有读写权限 |
sync | 数据同步写入硬盘。 |
async | 不同步写在硬盘中,在内存中缓存,这样速度更快,但是在极端情况下可能丢失数据 |
no_root_squash | 不压制root权限,用root登录nfs,身份就是root |
root_squash | 压制root权限 ,使用root登录nfs,身份自动切换为nfsnobody,nfsnobody是一个匿名用户 |
5,启动rpc服务和nfs服务
注意启动先后顺序
-- 先启动 rpc 服务
[aaa@qq.com home]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[aaa@qq.com home]# /etc/init.d/rpcbind status
rpcbind (pid 1535) is running...
-- 再启动 NFS 服务
`[aaa@qq.com home]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[aaa@qq.com home]# /etc/init.d/nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 1637) is running...
nfsd (pid 1652 1651 1650 1649 1648 1647 1646 1645) is running...
6,查看本机rpc信息
rpcinfo -p localhost
注意端口为111
和2049
的服务,分别是rpc提供的服务和nfs主要提供服务的端口,只有这两个端口是固定的。
7,查看本机可以对外提供的挂载点和可访问的IP
[aaa@qq.com home]# showmount -e localhost
Export list for localhost:
/home/shareDir 192.168.23.0/24
8,至此服务端基本上就准备好了
为什么说基本上?因为服务端的相关的端口可能未加进防火墙,客户端访问的时候会报错。
注意,此处是客户端访问
[aaa@qq.com home]# showmount -e 192.168.23.13
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
因此需要将服务端对外访问的111
端口和2049
端口设置进防火墙,为了省事,我关闭了防火墙。
[aaa@qq.com home]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
然后客户端就可以访问,服务端可以挂在的挂载点了。
[aaa@qq.com home]# showmount -e 192.168.23.13
Export list for 192.168.23.13:
/home/shareDir 192.168.23.0/24
9,至此服务端基本上就又准备好了
为什么要说又呢?
因为我们有时候会需要去修改我们的服务端的配置文件/etc/exports
,让其去生成不同的挂在规则,这个时候有一些点就需要去注意了。
例如:
[aaa@qq.com ~]# vi /etc/exports
/home/shareDir 192.168.23.14/24(rw,sync,no_root_squash)
[aaa@qq.com ~]# exportfs -rv
exporting 192.168.23.14/24:/home/shareDir
我们重新设置了,这个挂载点只能192.168.23.14的IP进行挂载。要让其生效,我们需要执行命令exportfs -rv
。
ok 服务可以了!
搭建客户端:
搭建客户端非常的简单,和服务端一样,我们需要安装nfs-utils
和rpcbind
1,安装工具
yum install nfs-utils rpcbind -y
2,创建挂载目录
[aaa@qq.com ~]# mkdir -p /home/shareDir
[aaa@qq.com ~]# cd /home/shareDir/
3,查看服务端的挂载策略
[aaa@qq.com home]# showmount -e 192.168.23.13
Export list for 192.168.23.13:
/home/shareDir 192.168.23.0/24
[aaa@qq.com home]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 97G 1.1G 91G 2% /
tmpfs tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 ext4 194M 28M 157M 15% /boot
可以看到服务端目前允许IP为192.168.23.0
子网掩码为255.255.255.0
的网段进行挂载。
允许挂载的目录为/home/shareDir
。
同时,我们使用的了dh -Th
查看了目前,客户端的磁盘挂载情况。等下我们挂载NFS服务端后我们对比看下。
4,将需要的文件夹挂载在服务端
命令行:mount -t nfs 服务器IP:服务端挂载目录 本机挂载目录
[aaa@qq.com home]# mount -t nfs 192.168.23.13:/home/shareDir/ /home/shareDir/
[aaa@qq.com home]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 97G 1.1G 91G 2% /
tmpfs tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 ext4 194M 28M 157M 15% /boot
192.168.23.13:/home/shareDir/ nfs 97G 1.1G 91G 2% /home/shareDir
挂载完毕后我们可以看到我们的本机的磁盘挂载下出现了一条挂载记录。
文件系统为:192.168.23.13:/home/shareDir/
系统类型为nfs
以及大小、使用率等和在本机的挂载目录。
测试
1,服务端新增文件 客户端查看
服务端:
[aaa@qq.com shareDir]# touch 1.txt
[aaa@qq.com shareDir]# ll
total 0
-rw-r--r--. 1 root root 0 Apr 23 23:56 1.txt
客户端:
[aaa@qq.com shareDir]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 23 23:56 1.txt
可以看到服务端新增文件,我们在客户端的挂载目录中可以进行访问。
2,客户端新增文件 服务端查看
客户端:
[aaa@qq.com shareDir]# touch 2.txt
[aaa@qq.com shareDir]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 23 23:56 1.txt
-rw-r--r--. 1 root root 0 Apr 24 00:51 2.txt
服务端:
[aaa@qq.com shareDir]# ll
total 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 Apr 23 23:56 1.txt
-rw-r--r--. 1 root root 0 Apr 24 00:51 2.txt
可见,NFS文件系统可以实现,多台服务器上的文件的共享服务,在对文件的访问,修改等操作上,可以实现像在本机操作一样的。使用起来非常方便。
以上,是本人的一次NFS的搭建过程的记录,浅陋的很,网上有很多大牛的教程,都可以拿来拜读。
参考此教程,非常的清除:NFS文件服务器的使用