配置NFS服务器的过程。

配置NFS服务器的过程。,第1张

在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
RPC(Remote Procedure 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
pcnfsd:主要复杂登陆权限检测等。
rpcmountd:负责NFS的档案系统,当CLIENT端通过rpcnfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP
nfs-utils:提供rpcnfsd 及 rpcmountd这两个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/public 1921680(rw) (ro)
/home/test1921680100(rw)
/home/linux  the9com(rw,all_squash,anonuid=40,anongid=40)
设定好后可以使用以下命令启动NFS:
/etc/rcd/initd/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rcd/initd/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 19216801:/tmp /mnt/nfs
Solaris:mount -F nfs 19216801:/tmp /mnt/nfs
BSD: mount 19216801:/tmp /mnt/nfs
3、mount nfs的其它可选参数:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192168010:/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妙(07秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用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 192168030:/tmp /nfs
请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
4、/etc/fstab的设定方法
/etc/fstab的格式如下:
fs_spec fs_filefs_type fs_optionsfs_dump fs_pass 
fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:19216801:/NFS
fs_file:本地的挂载点
fs_type:对于NFS来说这个字段只要设置成nfs就可以了
fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。
fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为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/rcd/initd/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在复杂的网络环境中保持最好的传输稳定性。可以参考这篇文章: >NFS文件系统本来是liunx的服务想在win7下实现需要用软件,如果想在不想用软件会很麻烦!!!!
Windows 7中加入了NFS 客户端功能,可以通过控制面板中的“程序和功能”->“打开和关闭Windows功能”-> "NFS服务"
来开启,当然默认下Telnet客户端也是无效的,也可以在这里打开。安装完成后,就可以在Windows的命令行窗口中通过mount
以及showmount命令使用NFS的共享了。
C:\>showmount /
用法: showmount -e [server]
showmount -a [server]
showmount -d [server]
C:\>mount /
用法: mount [-o options] [-u:username] [-p:<password | >] <\\computername\sharename> <devicename | >
-o rsize=size 设置读取缓冲区的大小(以 KB 为单位)。
-o wsize=size 设置写入缓冲区的大小(以 KB 为单位)。
-o timeout=time 设置 RPC 调用的超时值(以秒为单位)。
-o retry=number 设置软装载的重试次数。
-o mtype=soft|hard 设置装载类型。
-o lang=euc-jp|euc-tw|euc-kr|shift-jis|big5|ksc5601|gb2312-80|ansi
指定用于文件和目录名称的编码。
-o fileaccess=mode 指定文件的权限模式。
这些模式用于在 NFS 服务器上创建的
新文件。使用 UNIX 样式模式位指定。
-o anon 作为匿名用户装载。
-o nolock 禁用锁定。
-o casesensitive=yes|no 指定在服务器上执行区分大小写的文件查找。
-o sec=sys|krb5|krb5i
简单的例子:
C:\Windows\SUA\bin>showmount -enfs_serv1
导出列表在nfs_serv1:
/vol/volz 所有计算机
/vol/volx 所有计算机
/vol/Do_NOT_Delete 所有计算机
/vol/vol7 所有计算机
/vol/vol0 nfs_cli1
/vol/vol0/home 所有计算机
/vol/isan 所有计算机
/vol/vsc 所有计算机
/vol/nfs_smvi nfs_cli1
/vol/vol_t1 所有计算机
C:\>mount \\nfs_serv1\vol\vol0 Z:
Z: 现已成功连接到 \\nfs_serv1\vol\vol0
需要注意的是,mount point和Linux和UNIX有所不同,不是使用一个目录作为挂载点,而是使用一个未使用的盘符。
例如上例中的"Z:"。这样就可以通过Z:盘访问你的共享了。非常方便。比起CIFS的方式更加快捷。
使用完后,可以用umount命令卸载共享。
C:\Users\leiz>umount
用法: [-f] <-a | drive_letters | network_mounts>
-a 删除所有 NFS 网络装入点
-f 强制删除 NFS 网络装入点
C:\Users\leiz>umount Z:
正在断开 Z: \\nfs_serv1\vol\vol0
连接上存在打开的文件和/或未完成的目录搜索。
要继续此 *** 作吗 (Y/N) [N]:y
命令已成功完成。
C:\Users\leiz>mount
本地 远程 属性
-------------------------------------------------------------------------------
Z: \\10128132175\vol\vol0 UID=-2, GID=-2
rsize=32768, wsize=32768
mount=soft, timeout=16
retry=1, locking=yes
fileaccess=755, lang=GB2312-80
casesensitive=no

*** 作步骤如下:

1首先先要打开“windows功能”的窗口:然后在打开"控制面板”窗口在中间单击"程序"超 链接,从而打开"程序”窗口,最后在"程序与功能"栏中单击"打开或者关闭Windows功能"超 链接。

2其次我们要单击选择要打开的功能:打开"Windows功能”窗口单击NFS服务选项按钮,接着展开这个功能的所有选项。选择"NFS客户端"跟"管理工具"复选框。单击确定按钮。

3最后在打开windows功能:这时系统会打开显示对话框显示你正在改变的功能结束改变后就会自动关掉"Windows功能"窗口。

服务器端

1检查所需要的包

[root@app71 ~]# rpm -qa | grep nfs

nfs-utils-123-36el6x86_64

nfs4-acl-tools-033-6el6x86_64

nfs-utils-lib-115-6el6x86_64

2 配置输出选项

[root@app71 ~]# vi /etc/exports

/mnt/iso 19216811(rw,sync,no_root_squash)

3 启动NFS服务

[root@app71 ~]# service nfs start

4 查看共享

[root@app71 ~]# showmount -e

Export list for app71:

/mnt/iso 3232990/24

5 开机启动

[root@app71 ~]# chkconfig --level 35 nfs on

客户端

创建挂载点mkdir -p /mnt/bk

mount -t nfs 192168110:/mnt/iso /mnt/bk

使用df -h查看/mnt/bk是否挂载成功。

将/etc/mtab中关于nfs的行增加到/etc/fstab中,实现自动挂载,注意先启动服务器。使用mount -av来查看自动挂载是否正常,正常情况文件系统挂载点无任何变化。

如果是oracle备份需要指定参数,包括读写缓冲,版本,超时等。更多信息可查看man 手册

1\点击开始->管理工具->服务器管理器,在左边的树中选中”
功能”项,右边的窗口中会列出功能的详细信息,点击”添加功能”

2\进入添加功能向导窗口,远程服务器管理工具->文件服务工具->勾选网络文件系统服务

工具,点击下一步

3\点击安装,开始安装

4\安装完成后,添加角色服务,在服务器管理器的左边的树中选中”角色”, 右边会列出角色的详细信息,点击”添加角色”,

5\进入添加角色向导,点击下一步,勾选文件服务,点击下一步,下一步,确保选项”文件服务器”和”网络文件系统服务”为勾选状态,点击下一步,

6\点击安装,开始安装

7\安装完成后,选择一个文件夹,如F:\share, 右键点击,选择属性

8\切换到”NFS共享”页面, 点击”管理NFS共享”

9\勾选”共享此文件夹”, 设置共享文件夹名称(这里使用预设名称),编码选择GB2312-80,点击权限

10\根据需要设置访问类型和编码(访问类型一般设置为读写,编码设置为GB2312-80),设置完成后点击确定,回到NFS高级共享界面,此界面其余设置使用预设值,点击确定

11\设置完成后点击确定,完成搭建

12\测试连接,开启NFS服务,输入\\ip_ADDRESS

举例,有台机器叫AAA,想把自己机器根下的一个叫abc的目录极其里面的所有文件都共享给一台叫BBB的机器。
在这里AAA就可看成是服务器,BBB为客户端,方法如下:
(在AAA上先配置)
1
vi
/etc/exports
(用vi编辑器打开共享资源,在里面填写共享的属性,linux下nfs的共享资源路径为etc下的exports)
打开编辑器后,里面可能什么都没有,需要自己填写,然后保存即可,在这里填写
2
/abc
BBB(ro)
之后按Esc停止文字录入,然后按Shift+;键,在出来的冒号后输入wq,表示保存退出!
(这个的格式是这样的:先给出要共享的路径,然后空格,后面写共享给谁,可以是IP地址或主机名。再后面的括号里表示以什么方式来共享,ro是客户端只能读,如果想让客户端可以改,可设为rw,即可读写)
3
service
portmap
start
service
nfs
start
ntsysv
(这是3行不同的命令,第一个是将portmap服务打开,也就是先打开nfs共享通讯的端口,第二个是开启nfs服务,第三步是进入一个图像画面,在里面找到nfs服务,然后用空格选择上,以保证下次机器启动时,系统会自动运行nfs服务的意思)
在客户段 *** 作如下:
mkdir
/abc
mount
AAA:/abc
/abc
service
portmap
start
service
nfs
start
ntsysv
第一步是在本机的根上建立一个叫abc的目录
第二步是将AAA机器上的abc目录挂载到本机的abc目录上
第三步和第四步是启动客户端的端口和服务
最后一步是保证下次系统启动时自动运行什么服务
说了这么多,应该够详细了吧?
^_^

如何通过Windows
Server
2008
R2建立NFS存储
在我们日常工作的某些实验中,会需要使用存储服务器。而硬件存储成本高,如StarWind之类的iSCSI软存储解决方案需要单独下载服务器端程序,且配置比较繁琐,令很多新手们很是头疼。
事实上,利用Windows
Server
2008
R2,我们可以很容易地将其作为一台NFS存储服务器,方便地得到一个NFS软存储,轻松解决某些环境下的问题。接下来以Windows
Server
2008
R2
SP1
企业版为例,分享一下具体的实现步骤。
首先,打开服务器管理器,选择”添加角色”;
点击下一步,开始添加服务器角色;
添加”文件服务”,点击下一步;
点击下一步,开始添加角色服务;
添加”网络文件系统服务”,即”Network
File
System
(NFS)”;
点击安装,开始执行;
安装完成后,在容量适合的分区下建立一个文件夹,选择属性,找到”NFS共享”选项卡,点击”管理NFS共享”;
保持选项默认,点击”权限”;
此处可以看到此存储的默认访问权限,默认为所有计算机都具有只读权限。我们可以将这条权限策略调整为”不可读”,并点击”添加”设置其他策略;
点击”添加”后,会出现如上图窗口,在”添加名称”栏填写允许访问此存储的主机的IP地址,设置访问类型,并按需勾选是否允许访问根目录即可。
以上,通过其他设备添加
“此服务器IP地址:/共享文件夹名称”,即可访问NFS存储


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13453844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-09
下一篇 2023-08-09

发表评论

登录后才能评论

评论列表(0条)

保存