概
常见的文件服共享方式比如FTP , FTP协议的本质是传输文件,而非共享文件。
Lin 和 Win 共享文件
1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题。
Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。 Samba服务程序还可以实现Linux系统之间的文件共享 。
如果觉得Samba服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是Linux系统,推荐在客户端部署NFS服务来共享文件 。
NFS-Network FileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。
NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
需求
集群环境下,三台机器A、B、C,没有文件服务器,但是还要访问同一个目录,目录中都是文件,传统的做法是把这些图片分别放到A、B、C。
所以需要搭建一个NFS服务,将NFS只需要放到A上,然后A共享给B和C,访问的时候,B和C是通过RPC的方式去访问A资源。
原理
网上找的图,大佬们凑合看看吧,实在是不想画了。。。。
环境信息
Server | Comments |
172.168.17.12 | 服务端 |
172.168.17.11 | 客户端 |
检查依赖
测试环境 , 建议关闭防火墙 ,因为nfs要通过rpc远程端口访问。
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl disable firewalld.service
如何找mips的rpm包
奈何,这几台server都是内网的,并不能使用yum 直接访问 Internet, 而且也没有光盘,没办法通过修改yum源的配置从本地加载,自己找找吧。
如果使用rpm安装,一堆依赖,那工作量…
rpm从哪里下? 下哪些?
想了想,还是找找系统自带的yum配置文件吧
[ns7-mips64el-os] name=NeoKylin Linux Advanced Server 7 - Os baseurl=http://download.cs2c.com.cn/neokylin/server/releases/7.0/ls_64/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=1 [ns7-mips64el-extras] name=NeoKylin Linux Advanced Server 7 - Addons baseurl=http://download.cs2c.com.cn/neokylin/server/everything/7.0/ls_64/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=0 [ns7-mips64el-updates] name=NeoKylin Linux Advanced Server 7 - Updates baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=0
baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/
从哪里下载搞定了 , 下什么。。。。。
我有x86的,我也比对着下呗
方式一: 参考 x86的
[root@localhost rpm]# yum -y install nfs-utils --downloadonly --downloaddir /root/rpm
然后下载 mips的依赖包
你要是这么懒, 地址拿去 。。。
NFS服务端
下面的操作均在 服务端端 IP 172.168.17.12上进行
上传RPM安装包
[root@localhost ~]# pwd
/root
[root@localhost ~]# mkdir rpm
安装RPCBIND和NFSSERVER
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps
创建共享目录
[root@localhost rpm]# mkdir -p /home/zf/share
配置文件/etc/exports
编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等
[root@localhost rpm]# vim /etc/exports # (格式:FS共享的目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)) /home/zf/share 172.168.17.11(rw,insecure,no_root_squash,no_all_squash,sync)
其中的ip为客户端的IP
添加的内容表示:允许ip 地址范围在172.168.17.11 (当然了也可以配置比如ip地址范围172.168.17.* )的计算机以rw,insecure,no_root_squash,no_all_squash,sync的权限来访问 /home/zf/share 目录
如果设置为 /home/zf/share *(rw,insecure,no_root_squash,no_all_squash,sync)
则对所以的IP都有效
配置项
【常用选项】
- ro:客户端挂载后,其权限为只读,默认选项;
- rw:读写权限;
- sync:同时将数据写入到内存与硬盘中;
- async:异步,优先将数据保存到内存,然后再写入硬盘;
- Secure:要求请求源的端口小于1024
【用户映射】
- root_squash:当NFS客户端使用root用户访问时,映射到NFS服务器的匿名用户;
- no_root_squash:当NFS客户端使用root用户访问时,映射到NFS服务器的root用户;
- all_squash:全部用户都映射为服务器端的匿名用户;
- anonuid=UID:将客户端登录用户映射为此处指定的用户uid;
- anongid=GID:将客户端登录用户映射为此处指定的用户gid
加载配置文件
[root@localhost rpm]# exportfs -arv
开机启动
[root@localhost rpm]# systemctl enable rpcbind.service [root@localhost rpm]# [root@localhost rpm]# systemctl enable nfs-server.service Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
启动服务
[root@localhost rpm]# systemctl start rpcbind.service [root@localhost rpm]# systemctl start nfs-server.service
至此 ,nfs server端配置完毕 。接下来进行客户端部分的操作,在IP 172.168.17.11上进行
客户端安装
下面的操作均在 客户端 IP 172.168.17.11上进行
上传RPM安装包
[root@localhost ~]# pwd /root [root@localhost ~]# mkdir rpm [root@localhost rpm]# ll 总用量 1480 -rw-r--r-- 1 root root 99664 11月 24 21:34 gssproxy-0.7.0-4.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 55024 11月 24 21:34 keyutils-1.5.8-3.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 24536 11月 24 21:34 libbasicobjects-0.1.1-27.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 38380 11月 24 21:34 libcollection-0.6.2-27.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 196096 11月 24 21:34 libevent-2.0.21-4.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 58000 11月 24 21:34 libini_config-1.3.0-27.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 47176 11月 24 21:34 libnfsidmap-0.25-17.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 27208 11月 24 21:34 libpath_utils-0.2.1-27.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 25924 11月 24 21:34 libref_array-0.1.5-27.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 80552 11月 24 21:34 libtirpc-0.2.4-0.10.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 8284 11月 24 21:34 libverto-libevent-0.2.5-4.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 412084 11月 24 21:34 nfs-utils-1.3.0-0.48.ns7_4.1.01.mips64el.rpm -rw-r--r-- 1 root root 179316 11月 24 21:34 quota-4.01-14.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 91280 11月 24 21:34 quota-nls-4.01-14.ns7_4.noarch.rpm -rw-r--r-- 1 root root 59680 11月 24 21:34 rpcbind-0.2.0-42.ns7_4.mips64el.rpm -rw-r--r-- 1 root root 80880 11月 24 21:34 tcp_wrappers-7.6-77.ns7_4.mips64el.rpm [root@localhost rpm]#
安装RPCBIND和NFSSERVER
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps 警告:gssproxy-0.7.0-4.ns7_4.mips64el.rpm: 头V3 RSA/SHA1 Signature, 密钥 ID 7a486d9f: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:libtirpc-0.2.4-0.10.ns7_4 ################################# [ 6%] 2:rpcbind-0.2.0-42.ns7_4 ################################# [ 13%] 3:libref_array-0.1.5-27.ns7_4 ################################# [ 19%] 4:libevent-2.0.21-4.ns7_4 ################################# [ 25%] 5:libcollection-0.6.2-27.ns7_4 ################################# [ 31%] 6:libbasicobjects-0.1.1-27.ns7_4 ################################# [ 38%] 7:libverto-libevent-0.2.5-4.ns7_4 ################################# [ 44%] 8:tcp_wrappers-7.6-77.ns7_4 ################################# [ 50%] 9:quota-nls-1:4.01-14.ns7_4 ################################# [ 56%] 10:quota-1:4.01-14.ns7_4 ################################# [ 63%] 11:libpath_utils-0.2.1-27.ns7_4 ################################# [ 69%] 12:libini_config-1.3.0-27.ns7_4 ################################# [ 75%] 13:gssproxy-0.7.0-4.ns7_4 ################################# [ 81%] 14:libnfsidmap-0.25-17.ns7_4 ################################# [ 88%] 15:keyutils-1.5.8-3.ns7_4 ################################# [ 94%] 16:nfs-utils-1:1.3.0-0.48.ns7_4.1.01################################# [100%] [root@localhost rpm]#
创建共享目录
[root@localhost rpm]# mkdir -p /home/zf/share
开机启动
[root@localhost rpm]# systemctl enable rpcbind.service [root@localhost rpm]# systemctl enable nfs-server.service Creat
启动服务
[root@localhost rpm]# [root@localhost rpm]# systemctl start rpcbind.service [root@localhost rpm]# systemctl start nfs-server.service [root@localhost rpm]#
客户端挂载
[root@localhost rpm]# mount -t nfs -o nolock,nfsvers=3,vers=3 -o proto=tcp 172.168.17.12:/home/zf/share /home/zf/share
172.168.17.12 为nfs server的IP
查看nfs信息
# 查看nfs服务端信息 $ nfsstat -s # 查看nfs客户端信息 $ nfsstat -c
测试
11 上创建文件/目录,去12访问
12上创建文件/目录,去11访问
权限和你的配置有关系哈 (/etc/exports)
测试木问题呀
NFS开机挂载
无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载,如果你不嫌麻烦的话,可以在每次使用之前执行mount命令进行手动挂载
如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:
172.168.17.12:/home/zf/share /home/zf/share nfs defaults 0 0
AutoFs自动挂载服务
如果开启了自动挂载NFS , 如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。
autofs自动挂载服务可以帮我们解决这一问题。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,我们将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。
[root@localhost ~]# yum install autofs ....... Complete! [root@localhost ~]#
如何使用可以Google一篇入门,这里就不研究了,暂时不需要。
行了 就到这儿吧