㈠ 配置NFS服务器的过程。
在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
RPC(Remote Procere Call)
NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议勇士用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT 的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
NFS需要启动的DAEMONS
pc.nfsd:主要复杂登陆权限检测等。
rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
NFS SERVER在REDHAT linux平台下一共需要两个套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件
portmap:NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。
一:服务器端的设定(以LINUX为例)
服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:
欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)
上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。
可以设定的参数主要有以下这些:
rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
anongid:同 anonuid ,但是变成 group ID 就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。
例如可以编辑/etc/exports为:
/tmp*(rw,no_root_squash)
/home/public192.168.0.*(rw) *(ro)
/home/test192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)
设定好后可以使用以下命令启动NFS:
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start
exportfs命令:
如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的时候,将详细的信息输出到屏幕上。
具体例子:
[root @test root]# exportfs -rv
2、mount nfs目录的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可选参数:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。
rsize和wsize:
文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
fg:和bg正好相反,是默认的参数
nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
mountport:设定mount的端口
port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
tcp:使用tcp作为nfs的传输协议
namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255
acregmin=n:设定最小的在文件更新之前cache时间,默认是3
acregmax=n:设定最大的在文件更新之前cache时间,默认是60
acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
acdirmax=n:设定最大的在目录更新之前cache时间,默认是60
actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。
retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
noac:关闭cache机制。
同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
4、/etc/fstab的设定方法
/etc/fstab的格式如下:
fs_specfs_filefs_typefs_optionsfs_mpfs_pass
fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS
fs_file:本地的挂载点
fs_type:对于NFS来说这个字段只要设置成nfs就可以了
fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。
fs_mp-该选项被"mp"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
fs_pass-该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 。
5、与NFS有关的一些命令介绍
nfsstat:
查看NFS的运行状态,对于调整NFS的运行有很大帮助
rpcinfo:
查看rpc执行信息,可以用于检测rpc运行情况的工具。
四、NFS调优
调优的步骤:
1、测量当前网络、服务器和每个客户端的执行效率。
2、分析收集来的数据并画出图表。查找出特殊情况,例如很高的磁盘和CPU占用、已经高的磁盘使用时间
3、调整服务器
4、重复第一到第三步直到达到你渴望的性能
与NFS性能有关的问题有很多,通常可以要考虑的有以下这些选择:
WSIZE,RSIZE参数来优化NFS的执行效能
WSIZE、RSIZE对于NFS的效能有很大的影响。
wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等)。
下面这个命令可以测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数。对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试。在每次测试的时候最好能重复的执行一次MOUNT和unmount。
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于测试的WSIZE,RSIZE最好是1024的倍数,对于NFS V2来说8192是RSIZE和WSIZE的最大数值,如果使用的是NFS V3则可以尝试的最大数值是32768。
如果设置的值比较大的时候,应该最好在CLIENT上进入mount上的目录中,进行一些常规操作(LS,VI等等),看看有没有错误信息出现。有可能出现的典型问题有LS的时候文件不能完整的列出或者是出现错误信息,不同的操作系统有不同的最佳数值,所以对于不同的操作系统都要进行测试。
设定最佳的NFSD的COPY数目。
linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的,默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值。
UDP and TCP
可以手动进行设置,也可以自动进行选择。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的 Performance 大幅降低甚至使网络瘫痪。所以对于不同情况的网络要有针对的选择传输协议。nfs over tcp比较稳定, nfs over udp速度较快。在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议)。在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性。可以参考这篇文章: http: //www.hp.com.tw/ssn/unix/0212/unix021204.asp
版本的选择
V3作为默认的选择(RED HAT 8默认使用V2,SOLARIS 8以上默认使用V3),可以通过vers= mount option来进行选择。
LINUX通过mount option的nfsvers=n进行选择。
五、NFS故障解决
1、NFSD没有启动起来
首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。
2、mountd 进程没有启动
mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果没有起来的话可以检查是否安装了PORTMAP组件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
5、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。
7、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。
六、NFS安全
NFS的不安全性主要体现于以下4个方面:
1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现
2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制
3、较早的NFS可以使未授权用户获得有效的文件句柄
4、在RPC远程调用中,一个SUID的程序就具有超级用户权限
加强NFS安全的方法:
1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。
2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。
4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。
6、使用Kerberos V5作为登陆验证系统
㈡ 如何使用NFS和NAS解决虚拟服务器存储问题
然而,这样的灵活性有一个条件:物理机能够看到所有虚拟磁盘镜像。这通常会导致存储网络成为一个使用网络文件系统(NFS)和虚拟网络附属存储(NAS)集群的开放网络。
在传统基于块的存储中,如iSCSI和光纤通道存储区域网络(FC SAN),这意味着我们必须能够分配和操作逻辑单元号(LUN),以便在迁移虚拟机时可以迅速重新分配LUN给其它物理机。这个操作不仅是在最初部署时很难执行,随着环境越来越大和复杂,它也会很难执行。要为每个虚拟机分配一个LUN,然后还要能够迅速地将它重新分配给其它物理主机,这对IT人士来说已然是一个越来越严重的问题。
在越来越多的环境里,IT管理员都开始使用更大的LUN来承载多个虚拟机。尽管这可以减轻分配多个LUN给多个虚拟机的重担,但无法解决分区和LUN增长的问题。
NFS解决方案
现在,VMware支持通过NFS启动部署虚拟机。通过可启动的NFS加载(mount)部署虚拟机是解决这个问题的一个理想方法,而且也被越来越广泛地接受。
NFS是一个客户端或服务器系统,允许用户跨网络访问文件,并能够像操作本地文件目录一样操作这些远程文件。它是通过输出(exporting)和载入(mounting)两个过程完成的。输出过程是指NFS服务器向远程客户端提供文件访问的过程;载入过程是指文件系统对操作系统和用户变为可用的过程。NFS主要用于Unix-to-Unix文件共享,即使你的所有虚拟机都是基于Windows的,你也可以选用NFS。尽管Windows无法引导NFS,但VMware将NFS建立在它的磁盘虚拟层,所以Windows无需引导NFS。
NFS工作站很容易创建和操作。每个物理服务器都能看到所有的虚拟磁盘镜像,而且VMotion等功能也更加容易操作。与iSCSI或FC SAN中的每个VMDK创建一个LUN不同,你可以在一个NFS卷中共置多个VMDK(VMware Virtual Disk)文件。因为VMDK只是文件,而不是真正的磁盘。为什么使用NFSNFS让存储和VMware管理员的工作变得容易得多,而且在很多VMware环境下都不会有任何性能损失。除了一些例外的存储厂商提供虚拟化解决方案以外,LUN管理对存储和VMware管理员来说都很具有挑战性。而有了NFS执行,与单个文件系统的交互让VMware镜像供应更加容易。
访问控制通过内置NFS安全性被启用后,可以向一组VMware管理员提供NFS文件系统。有了NFS,就不需要微操作每一个LUN了。例如,VMware镜像在文件夹中可以根据应用类型进行分组,而且可以同时提供给一系列应用使用。
此外,访问路径是基于传统的以太网,这不仅节省了成本,也更加易于进行故障检修。因为,大多数企业对于IP管理的了解要远远多于对FC管理的了解。
NFS有一个优点就是访问简易。所有ESX服务器都可以连接到载入点(mount point),这使得VMotion的使用更加容易。在FC部署中,每个ESX服务器都必须能够看到所有其它ESX服务器的LUN,这很不利于配置和管理。NFS是一项共享技术,所有共享访问都是内置的。
NFS的另一优势在于数据保护方面。尽管通过NFS提供的VMware镜像无法使用VMware VCB,但Unix或Linux主机可以载入这些镜像来进行备份。利用支持NDMP的备份软件可以备份这些镜像。通过Linux主机的方法可以访问VMware镜像,而且可以通过这种方法可以载入快照和备份卷。此外,你还可以综合利用NFS主机的复制工具保障业务持续性和灾难恢复,而不用购买VMware专门的复制工具。
说得直白一点,NFS不是唯一的协议,它也有不太适合的时候。例如,Microsoft Cluster Service必须有成组存取(block access),而且有些情况下就需要光纤通道。iSCSI有一些很独特的功能,其中一个是它能够直接分配一个LUN给一个子操作系统,而不用通过VMware磁盘虚拟层。这些独特的功能可以快速地将特定的LUN转移出VMware环境。
这个执行需要的不仅仅是一个标准的文件服务器或NAS,因为除了保存用户数据以外,它还是架构的一个关键部分。
利用虚拟NAS集群解决I/O问题
通过NAS集群虚拟化可以缓解某些物理存储相关问题,如I/O限制。
随着负荷的不断增加,传统的NAS无法有效地扩展升级。部署多个物理服务器会迅速加重I/O带宽的负担,这样的负荷比在多数文件服务器环境中的负荷要大得多。要减轻I/O带宽负担,就必须部署更多的NAS,而这又会导致NAS蔓延。
这使得我们必须在满足额外的NAS系统需求以解决文件服务需求的同时,还要让这些NAS系统必须能处理虚拟服务器环境不断变化的I/O需求。有了单独的NAS head,VMotion就很难适用了,唯一的其它选择是购买更大的单一的NAS head。在VMware环境下,这样的升级不是因为容量限制而进行的,而是为了提供更高的性能而升级。
下面,我们说说虚拟NAS集群。一个虚拟NAS集群代表着整个ESX环境的一个NAS对象,即使这个对象是多个NAS head。一个虚拟NAS集群是一系列NAS节点,这些节点是作为一个整体被管理的。性能或容量的升级就成为相互独立的事了,I/O性能升级只是连接更多的节点到集群,而容量升级则是连接更多的磁盘,互不影响。
此外,虚拟NAS集群还可以为环境提供冗余。如果集群的其中一个节点出错,该节点的文件系统会自动转向集群中的其它节点。这个功能可以保障数据访问不受中断,对于虚拟服务器环境非常重要。因为,虚拟服务器环境下的一个错误可能会导致几十个虚拟机受到严重影响,多层冗余对于这样的环境就显得尤为重要。
Global Files System
将虚拟服务器从一台物理机迁移到另一台物理机是一项势在必行的工作,它可以给数据中心带来很大的灵活性。而数据中心的灵活性也正是客户所寻求的。相关虚拟磁盘的迁移,尤其是从一个阵列到另一阵列或一个NAS head到另一NAS head的迁移,并不是不可能的任务,但是会非常耗费时间,并且会中断服务。
而在虚拟NAS集群环境下,这就是一件非常简单的工作,而且不会造成服务中断。这进一步提高了虚拟环境的灵活性。例如,如果某台物理机中的好几个虚拟机存在I/O带宽需求高峰期,那么你可以将其它虚拟机磁盘镜像移开它们所在的节点来应对I/O高峰期。这个功能还可以用于虚拟NAS集群中的标准文件系统,因为它们可以根据需求进行重新分配。
虚拟NAS和FC
在VMware近期的白皮书中,基于FC的块I/O仍是一个尚未成熟的I/O性能领导者。尽管有些NAS供应商会对这些结果存在争议,但这并不影响我们对这二者的利用。
首先,不到万不得已不要使用FC。现在市场上有两种不同的产品。第一种是NAS供应商(如Network Appliance)为他们的NAS head提供的FC和iSCSI服务。NAS head必须在NAS文件系统中创建一个封装的FC LUN。第二种是EMC和OnStor等公司提供的网关(Gateway)解决方案,这些解决方案允许本地FC访问存储系统。在EMC的解决方案中,这当然是一个通向Clarriion阵列的网关。OnStor允许你通过它们的NAS网关(NAS gateway)为你现有的存储添加一个有Global Files System的虚拟NAS集群。
㈢ NFS服务器的安装与配置
由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程。
NFS 服务器可以让客户端将网络远程的 NFS 服务器分享的目录,直接挂载到本地端的机器当中。本地端的机器通过直接读写挂载的目录,就可以同步到NFS服务器之上。
系统平台:Ubuntu 14.04
NFS Server IP:192.168.1.2
iptables关闭: Firewall is disable.(NFS端口使用在默认情况下是不固定,所以若配置NFS服务器需要搭配防火墙使用的话,请配置固定端口)
SELINUX=disabled
NFS的安装只需要安装rpcbind与nfs-server就可以对外提供服务了。
NFS服务器的主要配置文件就是:/etc/exports。不过这个配置文件不一定会存在,可能需要使用 vim 主动新建这个文件。
/etc/exports文件由以下选项构成:
每一行最前面是要分享出来的目录,目录可以依照不同的权限分享给不同的主机。若权限参数不止一个时,则以逗号 (,) 分开。且主机名与小括号是连在一起的喔!其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay 当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
下面是一些NFS共享的常用参数:
这里我们使用了NFS v3的配置,如下图所示:
配置完/etc/exports之后,接下来就可以启动NFS服务器了。
为了使NFS服务器能正常工作,需要启动rpcbind和nfs-kernel-server两个服务,并且rpcbind一定要先于nfs-kernel-server启动。
若要开机自启动nfs服务,可以通过sysv-rc-conf配置自启动服务。
客户端的挂载很简单,先建立一个挂载目录
之后客户端对应的文件目录便挂载上对应的文件系统了。
客户端可以通过命令配置开机自启动挂载NFS的文件系统。
将对应的命令 mount -t nfs 192.168.12:/tmp /mnt/nfs
添加至/etc/rc.d/local,不要尝试在直接在/etc/fstab/里挂载
小结 :梳理了一下在ubuntu之下NFS服务器的安装与配置。当然RedHat系列的发行版也是大同小异。若有疏漏,望指点斧正。
㈣ NFS服务搭建及数据无缝迁移
五一节办公室要停电,机房虽有UPS,但也支撑不了8小时。
因生产环境有业务系统挂了办公室机房的NAS存储,故需要进行迁移,步腊册骤记录如下:
先闲谈下技术-----------------------
NFS和samba的区别
samba是混合型网络中的共享服务,windows服务器可建samba服务,linux服务器也可建samba服务
nfs只面向unix、linux间的共享,linux服务器可建nfs服务(winodws系统也可以挂载nfs,就是有点不稳定)
NFS服务器上的操作--------------------------
nfs服务器操作系统版本:
[root@c7110 ~]# more /etc/system-release
CentOS Linux release 7.9.2009 (Core)
nfs服务器安装nfs服务
[root@c7110 ~]# yum -y install nfs-utils rpcbind
创建nfs目录,并授权
[root@c7110 ~]# mkdir /opt/nfs-test
[root@c7110 ~]# chmod 777 /opt/nfs-test
编辑nfs服务配置文件
[root@c7110 ~]# vi /etc/exports
内容如下:
/opt/nfs-test *(rw,root_squash,all_squash,sync)
重新加载nfs配置:
[root@c7110 ~]# exportfs -r
nfs服务设置开机启动
[root@c7110 ~]# systemctl enable rpcbind
[root@c7110 ~]# systemctl enable nfs
[root@c7110 ~]# systemctl enable nfs-lock
[root@c7110 ~]# systemctl enable nfs-idmap
启动nfs服务
[root@c7110 ~]# systemctl start rpcbind
[root@c7110 ~]# systemctl start nfs
[root@c7110 ~]# systemctl start nfs-lock
[root@c7110 ~]# systemctl start nfs-idmap
查看nfs服务启动后,所监听的端口信息:判局蚂
[root@c7110 ~]# rpcinfo -p
linux服务器服务器上操作-------------------------------
业务服务器安装nfs软件客户掘埋端
[root@c7111 ~]# yum -y install nfs-utils
建立一个挂载目录
[root@c7111 ~]# mkdir /opt/test-m
挂载nfs服务器共享出来的目录
[root@c7111 ~]# mount -t nfs 10.x.x.10:/opt/nfs-test /opt/test-m/
查看下已挂载的nfs
[root@c7111 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 8.8M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 2.3G 95G 3% /
/dev/sda1 1014M 171M 844M 17% /boot
tmpfs 297M 0 297M 0% /run/user/0
10.x.x.6:/opt/nfs-test 97G 4.1G 93G 5% /opt/test-m
经测试,数据可读可写,证明nas服务没有问题,于是进行数据同步,数据同步用rsync命令。
rsync -avp [email protected]::nas_6 /mnt/guidang/ --password-file=/root/rsync_pass --bwlimit=100000
数据同步完,通知研发进行挂载切换。研发同事在测试时,发现文件属性中的uid及gid与原来的不一致,有些担心,于是又小完善了一下NFS服务。
编辑nfs服务配置文件
[root@c7110 ~]# vi /etc/exports
内容如下:
/opt/nfs-test *(no_all_squash,anonuid=600,anongid=600)
重新加载nfs配置:
[root@c7110 ~]# exportfs -r