大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
NFS(Network File System),网络文件存储系统,它最早是由 Sun 公司开发的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP 网络共享资源。通过 NFS 协议,我们本地 NFS 的客户端应用可以透明的读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机,不同的操作系统可以共享存储的服务。
成都地区优秀IDC服务器托管提供商(成都创新互联).为客户提供专业的资阳服务器托管,四川各地服务器托管,资阳服务器托管、多线服务器托管.托管咨询专线:18980820575
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 协议挂载,那么客户端挂载命令如下:
最后,卸载命令
最近做了一个文件的异地备份,采用网络挂载的方式,效果比之前用sync拷贝要方便的多。
也比之前简单的多,其实也就是几件事情。
首先是,需要备份的服务器和备份的服务器都装上nfs。
yum install nfs-utils
有的可能还需要单独安装一下rpcbind
那就
yum install rpcbind
接着在被挂载服务器编写配置文件
vim /etc/exports
/root/work 192.168.0.3(rw,no_root_squash,no_all_squash,async)
/root/work 192.168.0.16(rw,no_root_squash,no_all_squash,async)
如像这样,授权了本地的/root/work 目录可以被两个服务器访问,权限是读写(rw)
这一部分就完成了。
接下来是需要备份的服务器:
安装玩nfs以后,在/mnt目录下建一个目录(通常都是在这个目录下,别问为什么?问就是通用习惯。)
cd /mnt
mkdir backserver
这就完成了目录创建
接着也是最重要的一步
mount -t nfs 192.168.0.18:root/work/backup /mnt/backserver/
这条命令的意思是挂载192.168.0.18:root/work/backup目录到本机的/mnt/backserver/
-t 是指定挂载类型,nfs,就是网络文件系统的简称。
这样之后,本机的/mnt/backserver/存的文件实际上是存在192.168.0.18:root/work/backup目录下的。
接下来就是一个见的文件拷贝命令。
rsync -avz /usr/local/nginx /usr/local/tomcat /mnt/backserver/09back
就把文件备份到192.168.0.18:root/work/backup目录下了。
实现自动备份就更简单了,直接把刚才的命令写入shell脚本
保存为backup.sh
然后加入系统定时计划
crontab -e
30 3 * * * sh /root/work/work/backup.sh
意思是每天三点执行一次脚本,就完成了自动异地备份。
整个过程还是很简答的,其中涉及一个cs的模式。
需要知道:
1,是客户端挂载到服务端。
2,服务端需要授予客户端访问权限。
方法/步骤
首先确认自己的服务器上面是否有portmap和nfs包,一般情况下都会有.
查询命令:
rpm -qa | grep portmap
rpm -qa | grep nfs
如果有就接着向下走
启动portmap和nfs,但是portmap的先于nfs启动,因为portmap为nfs动态分配端口
查看是有启动正常用如下命令
prcinfo -p
如果看到portmap和nfs表示启动正常
设置你要共享的文件和目录 编辑vi /etc/exports
格式如下:
共享目录 允许访问的主机ip(权限)
输出共享目录和文件
1.要不重启nfs服务
2.使用exportfs -rv命令
接着到另一台服务器上面去挂载nfs服务器输出的文件和目录
1.新建你要挂载的目录
2.查看nfs服务器的输出目录
showmount -e nfs的ip
挂载目录或文件
格式如下:
mount NFS服务器地址:/usr/local/web /mnt/websites
查看挂载结果
df -h
测试共享时候成功,在web1上面下面的挂载目录下面新建一个文件然后随便写点东西看web2上面时候同步
卸载目录的命令:
umount /mnt/websites
Linux客户端可以直接通过mount命令挂载NFS文件,
如下操作:
[root@linux-a ~]# mkdir /mnt/nsf1 //创建挂载点
[root@linux-a ~]# mount -t nfs 192.168.0.231:/nfs/frank /mnt/nfs1
[root@linux-a ~]# mount | grep nfs
[root@linux-a ~]# umount /mnt/nfs1
通过修改/etc/fstab文件可以实现开机自动挂载nfs目录
[root@linux-b nfs1]# vim /etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
192.168.0.231:/nfs/frank /mnt/nfs1 nfs defaults 0 0
以上最后一行是针nfs的自动挂载配置。
打开终端输入:mount -t nfs 后面加上加载地址信息即可!
输入u mount -a即可取消挂载!
nfs语法参数解释
(1) nfs共享目录:是NFS服务器需要共享出去的实际目录,文件夹,必须写绝对路径,且注意目录的读写本地权限,如果你允许客户端读写操作,other需要有一个读写的权限(user,group,other三个身份)
(2) NFS客户端地址,也就是NFS服务端授权可以访问共享目录的地址,可以写主机名,可以写通配符,ip地址
(3) 权限参数,对NFS授权的客户端,进行权限控制的参数,详细见下面的案例
nfs客户端地址形式
单一客户端 192.168.178.120 用的很少
允许整个网段访问 192.168.178.0/24 指定局域网网段,用的还是很多的
授权整个域名客户端 nfs.yu.com 用的很少
授权子域名客户端 *.yu.com 用的很少
nfs客户端的权限参数
ro 只读
rw 读写
root_squash 当nfs客户端以root账号访问NFS服务端共享目录数据的时候,把该root映射为NFS服务端的一个匿名用户,该用户的UID,GID会变成nfsnobody的信息
no_root_squash 几乎和上面一样,root账号会映射为root账户,非常不安全,禁用
all_squash 所有nfs客户端的用户都映射为匿名用户,很安全,生产环境常用
sync 数据同步写入到内存和磁盘,优点是保证内存数据安全,但是效率太低
async 数据先写入到内存,再持久化到磁盘,效率非常高,但是可能会有数据丢失的隐患