分享
 
 
 

深入理解Linux网络文件系统

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

作者:马路遥

网络文件服务器(Network File System,简称 NFS)是 Linux 上最容易配置的服务之一。尽管它的规则简单,却有着丰富的内涵。本刊今年第 2 期曾经介绍了如何构建 Linux 上的NFS服务器。但 NFS 还有许多 Unix/ Linux 爱好者,甚至系统管理员应该注意的特别之处。本文旨在帮助读者更深入地了解 NFS。

NFS Server 的配置

首先介绍一下 Server 端和 NFS 相关文件的含义:

◆ /etc/exports 是 NFS Server 最基本的配置文件之一,文件中列出了共享的文件系统和允许访问这些文件系统的主机。这个文件可以用通配符或网段,以及一组主机名的形式来表示客户机列表。它有很大的灵活性,一般由系统管理员配置。

◆ /proc/fs/nfs/exports 导出文件列表的内核视图,包括导出的参数。

◆ /var/lib/nfs/etab 状态文件,其中列出了当前的高级列表。此文件包含了 /etc/exports 中相同格式的所有项目,同时包含了由 exportfs -i 手工导入的项目。

◆ /var/lib/nfs/rmtab 状态文件,列出了挂接导出文件的远程客户机清单。

◆ var/lib/nfs/xtab 状态文件,当前的低级导出清单。

例如,/etc/exports 有下列一行 /data *.flying.com.cn (rw),显然有多个主机可以匹配这个域。如果两个主机,如 mail.flying.com.cn 和 ftp.flying.com.cn 都请求访问该文件系统,则 /var/lib/nfs/xtab 文件包含了这个文件系统的两个基本相同的项目。

/etc/exports 是纯文本文件,空行和以 “#” 开头的行会被忽略,长行可以用斜杠 “/” 分解为多行。文件中列出了允许 NFS 客户机访问服务器的文件系统,定义了导出文件系统和访问权限。

/etc/exports 文件中任意行的格式如下:

vol_name host_name1(option1,opeion2....) host_name2(option1,option2)

其中 vol_name(卷名)表示要导出的文件系统,除去卷名以外,其它参数都可以不写,不显示指出的参数都会采用缺省参数。host_name1 ( 主机名 ) 如果不写的话,则任何主机都可以请求该文件系统。主机名的定义非常灵活,既可以指定某台主机,也可以指定一组主机。可以用下列四种方法来描述:

◆ 单个主机 可以用短名及完全限定名,或者用IP地址,例如 student01、student01.flying.com.cn 或者 192.168.10.1 都是合法的主机名。

◆ 网组 可以列出 /etc/netgroup 文件中或 NFS 网组映射中定义的整组主机。网组名以 “@” 开头,例如 @teacher 或 @students。

◆ 通配符主机 用通配符可以列出一个域中的所有主机器,通配符可以使用 “*” 和 “?”、“*” 匹配 0 个或多个字符及 “?” 匹配一个字符,但通配符不能匹配主机名中的点号。*.flying.com.cn 可以匹配 ftp01.flying.com.cn,但不能匹配 backup.ftp01.flying.com.cn,而 *.*.flying.com.cn 就可以匹配 backup.ftp01.flying.com.cn。 ftp??.flying.com.cn可以匹配 ftp01.flying.com.cn 和 ftp02.flying.com.cn。

◆ 主机网络 可以用主机网络的方式导出特定的子网或几个子网,用 192.168.10.0/255.255.255.0 的方式可以匹配从 192.168.10.1 到 192.168.10.255 所有主机。导出选项用逗号分隔,但不能包含空格,长度可以任意设定。多数选项都是布尔选项,值为 True 或 False,选项与性能或者安全性有关。当 /etc/exports 文件没有给出值时,系统会自动采用缺省值。选项的详细用法可以用 man exportfs 命令来获得。

更改 /etc/exports 文件后,可以用 exportfs 命令将文件的改变告诉服务器,也可以忽略 /etc/exports 文件,直接使用 exportfs 命令导出共享卷。exportfs 可以指定导出或非导出卷时影响的选项,可以影响一个卷或几个卷的选项,见表1。

NFS 锁及远程配额监控程序

在 Unix 中可以锁定文件,保证不会有两个用户同时写入文件的同一部分,以确保数据的一致。保证一致性的关键是内核要仲裁锁定和写入请求。

而在 NFS/Samba 之类的分布式文件系统中,许多客户可能同时要求写入和锁定同一文件。此时,只有服务器本身能扮演仲裁的角色。Unix/ Linux 的方法是增加一个 RPC 协议处理锁操作,这就是 NFS 锁监控程序 (NLM, NFS Lock Manager)。通常不需要关心它的具体运行方式,将此服务打开即可。

rpc.rquotad 监控程序实现 RQUOTA 协议,在 Linux 中 NFS 服务器总是执行配额,不管是否运行了 rpc.rquotad。

启动和关闭 NFS Server 的顺序

1. 启动 NFS Server

/etc/rc.d/init.d/portmap start /etc/rc.d/init.d/nfslock start /etc/rc.d/init.d/nfs start

其实,读者可以根据 /etc/rc.d/rc3.d或 rc5.d 下的文件里,以 “S” 开头的带有 portmap、nfslock nfs 的文件中数字的大小来判断哪个服务应该优先启动。在笔者的机器上,它们分别是 S13portmap、S14nfslock 和 S60nfs,这几个数字清楚地表明了以上启动的顺序。

2. 关闭 NFS Server 的顺序

/etc/rc.d/init.d/nfslock stop /etc/rc.d/init.d/nfs stop /etc/rc.d/init.d/portmap stop

如果在客户端取消挂接前关闭 NFS Server, 显而易见会发生错误,因此应该尽量避免。

NFS Client 的配置

配置 NFS 客户机,可以通过配置 /etc/fstab 文件或运行 mount 命令来进行。

对于那些需要在启动时就挂接的文件系统而言,往往将其写入 /etc/fstab 文件中,其中要包括 NFS 服务器的主机名或 IP 地址、文件系统、挂接点、选项等。对于那些临时需要的 NFS 共享卷来说,则多数会使用 mount 命令将其手动挂接。这两种方法的参数使用基本上是一样的。下面就以 /etc/fstab 文件为例,说明挂接 NFS 卷时参数的使用。

该文件中有关 NFS 卷的写法通常如下:

servername:/shareplace mountpoint nfs option01,option02,...optionX

表 2 列出了用于所有文件系统的一般选项。

对于 NFS 文件系统,还有一些可以使用的独特选项,使用的时候可以和一般选项混合使用,顺序任意。表 3 列出了 NFS 客户机可用的部分挂接选项。

请注意,NFS 客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式 mount,虽然可以成功 mount 上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。

NFS 性能优化和测试

1. 同步或异步写入

了解了 NFS 配置的各种选项以后,再来看看各选项对性能及安全性的影响。Server 端同步写入 (sync) 能提供较好的稳定性,但会减慢磁盘的速度。在高负载的服务器上,应用程序会经常花费大量的时间等待写入完成。异步写入 (async) 是服务器不把数据立即写入磁盘,而先将其保存到内核内存 (缓冲区) 中,计划在后边的某个时刻写入,迅速向客户机返回写入成功的信息。这种方法大大地提高了性能,但却牺牲了可靠性,如果系统在将缓冲区中的内容写入磁盘之前崩溃,则数据会永远丢失。

NFS 客户端也可以采用异步写入的方式,在客户端缓存用户进程写入的数据, Linux 的缺省方式如此。这种方法使得客户机的速度更快,当客户机崩溃时只丢失该客户端的数据。显而易见,客户端异步写入的风险比服务端异步写入的风险要小。鉴于 Linux 是个相当稳定的系统,为了得到比较好的 NFS 性能,值得采用客户端异步写入的办法。

2. 选择 TCP 还是 UDP

早期,Sun 公司曾将 NFS v2 设计成为只使用 UDP 协议,主要原因是当时机器的内存、网络速度和 CPU 的影响,不得不选择对机器负担较轻的方式。而到了 NFS v3,Sun 公司选择了 TCP 协议作为缺省的传输方式。在 Linux 上,UDP 协议是缺省使用的协议。作为服务器而言,别无选择。但作为客户端,可以使用 TCP 协议和其它使用 TCP 的 Unix NFS 服务器互连。

3. NFS性能测试

通常使用测试硬盘读写速度的方法来测试 NFS 的读写速度,但要注意以下几点:

◆ 保证主机和网络工作正常,集线器、交换机、路由器等网络设备工作正常;

◆ 分别在网络安静、普通和繁忙的时候进行测试,真实地了解实际状况和理想状况,以及最坏的状况;

◆ 没有必要为提高少许的性能而花费更多的精力。

基本测试可以用 ping 工具来检查网络状况,分别从服务器 ping 客户机,以及从客户机 ping 服务器。如果没有非对称路由的问题,这两种方法的结果应该相近。如果丢包率小于 5%,就会造成 NFS 的性能不良。

测试程序用下面命令就可以完成:

time dd if=/dev/zero of=nfs.dat bs=4k count=4098

这个命令意思是在 nfs.dat 文件里写 4098 个 4KB 的块,也就是一个 16MB 的文件,也可以根据需要改变命令的参数, 但要注意每次实验时使用不同的文件名,否则又会和缓冲有关。

可能返回的结果如下:

4098+0 records in 4098+0 records out

real 0m23.984s

user 0m0.260s sys 0m4.080s

这里主要关心

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有