收藏 分享(赏)

netapp存储配置练习_NFS.doc

上传人:精品资料 文档编号:8154410 上传时间:2019-06-11 格式:DOC 页数:24 大小:3.96MB
下载 相关 举报
netapp存储配置练习_NFS.doc_第1页
第1页 / 共24页
netapp存储配置练习_NFS.doc_第2页
第2页 / 共24页
netapp存储配置练习_NFS.doc_第3页
第3页 / 共24页
netapp存储配置练习_NFS.doc_第4页
第4页 / 共24页
netapp存储配置练习_NFS.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、NetApp 存储基础学习汇总(第四部分 )目 录一、NFS 管理 .11.1、NFS 基础知识 11.2、NFS 启动的 RPC daemons(后台进程) .41.3、NFS 的文件存取权限(以 linux 为例) 51.4、NFS Server 端的设定 61.5、/etc/exports 文件讲解 .91.6、exportfs 命令 121.7、主机端如何 mount 输出的资源 13二、NETAPP 关于 NFS 的文档 152.1、NFS 基础知识 152.2、NFS 的配置 172.3、访问权限测试 .202.4、NFS 的性能调整 23一、NFS 管理1.1、NFS 基础知识N

2、FS 就是 Network FileSystem 的缩写,最早是由 Sun 公司所提出的。 它最大的功能就是可以通过网络,让不同的计算机、不同的操作系统、可以彼此分享档案 (share files)。所以,也可以简单的将它看做是一个档案服务器 (file server)!这个 NFS 服务器可以让你的 PC 将网络远端的 NFS 主机分享的目录,挂载到本地端的机器当中, 在本地端的机器看起來,那个远端主机的目录就好像是自己的一个磁盘分区(partition)!使用上相当的方便!既然 NFS 是通过网络来进行资料的传输,那么 NFS 使用那个 port 来进行传输呢?答案是不知道!因为 NFS

3、用来传输的 port 是随机选择小于 1024 以下的端口来使用的。 那用户端怎么知道服务器端使用那个 port 呢?这时候就得要远程过程调用(Remote Procedure Call, RPC) 协议来辅助了。远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器。因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些 port 来传输资料,因此

4、, NFS 的功能所对应的 port 才没有固定住, 而是采用随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器的困扰, 因为客户端必须要知道服务器端的相关端口才能够连接。这时候 RPC 最主要的功能就是指定每个 NFS 功能所对应的 port number ,并且反馈给客户端,让客户端可以连接到正确的端口上去。 那 RPC 又是如何知道每个 NFS 的端口呢?这是因为服务器在启动NFS 时会随机取用数个端口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需

5、求并反馈客户端正确的端口。所以在服务器端启动 NFS 服务之前, RPC 对应的 portmap 服务就要启动了,否则 NFS 无法注册端口。由于 NFS 的各项功能都必須要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能的 port number, PID, NFS 服务器所监听的 IP 等等,而客户端才能够通过 RPC 找到正确对应的端口。 也就是说,NFS 必須要有 RPC 存在时才能成功的提供服務, 因此我们称 NFS 为 RPC server 的一种。事实上,有很多这样的服务器都是向 RPC 注册的, 比如,NIS (Network Information

6、Service) 也是 RPC server 的一种。 此外,不论是客户端还是服务器端,在要使用 NFS 时,两者都需要启动 RPC 才行。在 linux 服务器上启动 NFS 服务的过程rootrhel5 # service nfs start =没有启动 portmap 服务前,NFS 启动不了Starting NFS services: OK Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refusedrpc.rquotad: unable to regis

7、ter (RQUOTAPROG, RQUOTAVERS, udp).FAILEDStarting NFS daemon: FAILEDStarting NFS mountd: Cannot register service: RPC: Unable to receive; errno = Connection refusedFAILEDrootrhel5 # service portmap start =先启动 portmap 服务后,NFS 启动正常Starting portmap: OK rootrhel5 # service nfs startStarting NFS services:

8、 OK Starting NFS quotas: OK Starting NFS daemon: OK Starting NFS mountd: OK -rootrhel5 # ps -ef|grep rpcroot 1842 1 0 Dec12 ? 00:00:00 rpc.statdroot 1875 1 0 Dec12 ? 00:00:00 rpc.idmapdrpc 9280 1 0 18:53 ? 00:00:00 portmaproot 9310 1 0 18:53 ? 00:00:00 rpc.rquotadroot 9319 7 0 18:53 ? 00:00:00 rpcio

9、d/0root 9326 1 0 18:54 ? 00:00:00 rpc.mountdrootrhel5 # netstat -ultnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5

10、901 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:752 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1010 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:47093 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0

11、:601 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN tcp 0 0 :6001 :* LISTEN tcp 0 0 :22 :* LISTEN udp 0 0 0.0.0.0:1024 0.0.0.0:* udp 0 0 0.0.0.0:2049 0.0.0.0:* udp 0 0 0.0.0.0:1212 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp 0 0 0.0.0.0:746 0.0.0.0:*

12、udp 0 0 0.0.0.0:749 0.0.0.0:* udp 0 0 0.0.0.0:1007 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 0.0.0.0:631 0.0.0.0:* udp 0 0 0.0.0.0:1022 0.0.0.0:* udp 0 0 :1025 :* udp 0 0 :5353 :* rootrhel5 # rpcinfo -p localhostprogram vers proto port100000 2 tcp 111 portmapper100000 2 udp 111 portmapper10001

13、1 1 udp 1007 rquotad100011 2 udp 1007 rquotad100011 1 tcp 1010 rquotad100011 2 tcp 1010 rquotadNFS 版本100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100021 1 udp 1212 nlockmgr100021 3 udp 1212 nlockmgr100021 4 udp 1212 nlo

14、ckmgr100021 1 tcp 47093 nlockmgr100021 3 tcp 47093 nlockmgr100021 4 tcp 47093 nlockmgr100005 1 udp 1022 mountd100005 1 tcp 601 mountd100005 2 udp 1022 mountd100005 2 tcp 601 mountd100005 3 udp 1022 mountd100005 3 tcp 601 mountd rootrhel5 # cat /etc/services|grep 111sunrpc 111/tcp portmapper # RPC 4.

15、0 portmapper TCPsunrpc 111/udp portmapper # RPC 4.0 portmapper UDPtan netstat -an =在存储上看 111 端口也是开的Active TCP connections (including servers)Local Address Remote Address Swind Send-Q Rwind Recv-Q State *.80 *.* 0 0 0 0 LISTEN *.445 *.* 0 0 0 0 LISTEN *.139 *.* 0 0 0 0 LISTEN *.10568 *.* 0 0 0 0 LIST

16、EN *.10569 *.* 0 0 0 0 LISTEN *.10567 *.* 0 0 0 0 LISTEN *.10571 *.* 0 0 0 0 LISTEN *.22 *.* 0 0 0 0 LISTEN *.514 *.* 0 0 0 0 LISTEN *.23 *.* 0 0 0 0 LISTEN *.4047 *.* 0 0 0 0 LISTEN *.4045 *.* 0 0 0 0 LISTEN *.4046 *.* 0 0 0 0 LISTEN *.2049 *.* 0 0 0 0 LISTEN *.111 *.* 0 0 0 0 LISTEN Active UDP soc

17、kets (including servers)Local Address Remote Address Send-Q Recv-Q*.138 *.* 0 0*.137 *.* 0 0*.69 *.* 0 0*.161 *.* 0 0*.4049 *.* 0 0*.4047 *.* 0 0*.4045 *.* 0 0*.4046 *.* 0 0*.2049 *.* 0 0*.111 *.* 0 0*.520 *.* 0 0NFS 是一个分布式文件系统,它容许用户访问远程系统上的文件和目录,这些文件和目录对用户来说好像是在本地。用户可以使用 OS 命令创建,删除,读写远程文件和目录,以及设置远程

18、文件和目录的属性,而这一切都是在本地完成的。NFS 使用 RPC 而不受本地机器类型、OS 和网络结构的限制。NFS 基于客户机/服务器模式。一个 NFS 服务器拥有本地磁盘上的文件,客户机通过 NFS 访问它。拥有实际磁盘,并通过 NFS 将这些磁盘共享出来的主机叫 NFS 服务器,通过 NFS 访问文件系统的叫 NFS客户机。服务器给客户机共享文件系统的操作叫做导出(export ).客户机要访问服务器导出的文件系统之前,必须在本地先挂接(mount)这个文件系统。NFS 服务器导出的目录叫做远程资源,并通常写做:hostname:pathname 格式,其中 hostname 是 NFS

19、服务器的主机名,pathname 是服务器上被导出目录的绝对路径。在客户机上安装远程资源的那个目录叫做挂接点(mount point)。1.2、NFS 启动的 RPC daemons(后台进程)NFS 服务器主要的任务是进行文件系统的分享,文件系統的共享是与权限有关的。 所以 NFS 服务器启动时至少需要两个 daemons ,一个管理 client 端是否能够登入的问题, 一个管理 client 端能够取得的权限。如果你还想要管理 quota 的话,那么 NFS 还得要再载入其他的 RPC 程序。我們以比较单纯的 NFS 服务器来说:rpc.nfsd:这个 daemon 主要的功能就是在管理

20、 Client 是否具有登入主机的权限,其中还包含这个登入者的 ID 的判別。 rpc.mountd:这个 daemon 主要的功能,则是在管理 NFS 的文件系统了。当 Client 端顺利的通过 rpc.nfsd 而登入服务器之后,在它可以使用 NFS 服务器提供的文件之前,还会经过文件使用权限 (就是那个 -rwxrwxrwx 与 owner, group 那几个权限) 的认证程序,它会去读 NFS 的设定文件 /etc/exports 来比对 Client 的权限,当通过一关之后 Client 就可以取得使用 NFS 文件的权限了 (注:这也是我们用来管理 NFS 分享目录的使用权限与

21、安全设定的地方了)rpc.lockd (非必要)这个后台进程可以用在管理文件的锁定 (lock) 用途。为何文件需要锁定呢? 因为既然分享的 NFS 文件可以让客户端使用,那么当多个客户端同时尝试写入某个文件时, 就可能对该文件造成一些问题!这个 rpc.lockd 可以用来克服这个问题。 但 rpc.lockd 必須要同时在客户端與与服器端都开启才可以。此外, rpc.lockd 也常与 rpc.statd 同时启用。rpc.statd (非必要)可以用来检查文件的一致性,与 rpc.lockd 有关,若发生因为客户端同时使用同一文件造成文件可能有所损坏, rpc.statd 可以用来检测並

22、尝试恢复该文件。与 rpc.lockd 一样的,这个功能必須要在服务器端与客户端都启动才会生效。 1.3、NFS 的文件存取权限(以 linux 为例)假如我们在 NFS client 1 上面以 dmtsai 这个使用者身份想要去访问 /home/data/sharefile/ 这个来自 NFS server 所提供的文件系統时, NFS server 所提供的文件系统会让我们以什么身份去访问,是 dmtsai还是其它什么呢?NFS 服务本身并没有进行身份登入的识别, 所以说,当你在客户端以 dmtsai 的身份想要存取服务器端的文件系統时, 服务器端会以客户端的使用者 UID 与 GID

23、等身份来尝试读取服务器端的档案系統。这时候如果客户端与服务器端的使用者身份并不一致怎么办?见下图:当我们以 dmtsai 这个一般身份使用者要去访问来自服务器端的文件时,你要先注意到的是: 文件系統的 inode 所记录的属性为 UID, GID 而非账号与组名。 那一般 Linux 主机会主动的以自己的 /etc/passwd, /etc/group 来查询对应的使用者和其组的名称。 所以当 dmtsai 进入到该目录后,会参照 NFS client 1 的使用者与群组名称。 但是由于该目录的文件主要来自 NFS server ,所以可能就会出现几个情況: NFS server/NFS cl

24、ient 刚好有相同的账号与组则此时使用者可以直接以 dmtsai 的身份进行服务器所提供的文件系統的存取。 NFS server 上的 UID=501 这个 UID 账号对应为 vbird若 NFS 服务器上的 /etc/passwd 里面 UID 501 的使用者名称为 vbird 时, 则客户端的 dmtsai 可以存取服务器端的 vbird 这个使用者的文件!只因为二者具有相同的 UID 。这就造成很大的問題了!因为没有人可以保证客户端的 UID 所对应的账号会与服务器端相同, 那服务器所提供的资料不就可能会被错误的使用者乱改? NFS server 上没有 501 这个 UID另一个

25、极端的情況是,在服务器端并没有 501 这个 UID 的存在,则此时 dmtsai 的身份在该目录下会被会变成匿名者, 一般 NFS 的匿名者会以 UID =65534 为其使用者,早期的 Linux distributions 这个 65534 的账号名称通常是 nobody ,CentOS 则取名为 nfsnobody 。 如果使用者身份是 root 时有个比较特殊的使用者,那就是每个 Linux 主机都有的 UID 为 0 的 root 。 想一想,如果客户端可以用 root 的身份去存取服务器端的档案系统的时候,那服务器端的资料那还有什么保护性? 所以在预设的情況下, root 的身份

26、会被主动的变成匿名者。 总之,客户端使用者能做的事情是与 UID 及其 GID 有关的,那当客户端与服务器端的 UID 及账号的对应不一致的时候, 可能就会造成文件系統使用上的困扰,这个就是 NFS 档案系統在使用上面的一个很重要的地方! 而在了解使用者账号与 UID 及文件系统的关系之后,要实际在客户端以 NFS 取用服务器端的文件系統时, 还需要具有: NFS 服务器有可写入的权限 (与/etc/exports 设定有关); 实际的档案具有可写入 (w) 的权限。 也就是说 (1)、使用者账号,亦即 UID 的相关身份; (2)、NFS 服务器允许有写入的权限; (3)、文件确实具有 w

27、的权限时,你才具有该文件的可写入权限。尤其是身份 (UID) 确认的环节部分,最容易搞错!也因为如此, 所以 NFS 通常需要与其它身份验证的软件配合使用。1.4、NFS Server 端的设定既然要使用 NFS 的话,就得要安裝 NFS 所需要的套件了以 RHEL AS5 为例的话,要设定好 NFS 服务器我们必须要有两个套件才行,分别是: NFS 主程式: nfs-utils RPC 主程式:portmap rootrhel5 # rpm -qa | grep nfs nfs-utils-1.0.9-16.el5nfs-utils-lib-1.0.8-7.2rootrhel5 # rpm

28、-qa | grep portmap portmap-4.0-65.2.2.1在 NetApp 存储要启用 NFS 必须要具有 NFS 的 license,也可以通过 nfs off 来打开或者 nfs stop 关闭 NFS 服务。此外,不论是客户端还是服务器端,在要使用 NFS 时,两者都需要启动 RPC 才行。tan license =在存储上看 license 情况a_sis not licensedcifs site DZDACHDcluster not licensedcluster_remote not licensedcompression not licenseddisk_s

29、anitization not licensedfcp not licensedflex_clone not licensedflex_scale not licensedflexcache_nfs not licensedgateway_hitachi not licensedhttp not licensediscsi site BSLRLTGmultistore not licensednearstore_option not licensednfs site BQOEAZLoperations_manager not licensedprotection_manager not lic

30、ensedprovisioning_manager not licensedsmdomino not licensedsmsql not licensedsnaplock not licensedsnaplock_enterprise not licensedsnapmanager_oracle not licensedsnapmanager_sap not licensedsnapmanager_sharepoint not licensedsnapmanagerexchange not licensedsnapmirror not licensedsnapmirror_sync not l

31、icensedsnapmover not licensedsnaprestore site DNDCBQHsnapvalidator not licensedsv_linux_pri not licensedsv_ontap_pri not licensedsv_ontap_sec not licensedsv_unix_pri not licensedsv_windows_ofm_pri not licensedsv_windows_pri not licensedsyncmirror_local not licensedv-series not licensedvld not licens

32、edtan options nfsnfs.acache.persistence.enabled on nfs.assist.queue.limit 40 nfs.export.allow_provisional_access on nfs.export.auto-update on nfs.export.exportfs_comment_on_delete on nfs.export.harvest.timeout 1800 nfs.export.neg.timeout 3600 nfs.export.pos.timeout 36000 nfs.export.resolve.timeout 6

33、 nfs.hide_snapshot off nfs.ifc.xmt.high 16 nfs.ifc.xmt.low 8 nfs.kerberos.enable off nfs.locking.check_domain on nfs.mount_rootonly on nfs.mountd.trace off group.strict off nfs.notify.carryover on nfs.ntacl_display_permissive_perms off nfs.per_client_stats.enable off nfs.require_valid_mapped_uid off

34、 nfs.response.trace off nfs.response.trigger 60 nfs.rpcsec.ctx.high 0 nfs.rpcsec.ctx.idle 360 nfs.tcp.enable on nfs.udp.enable on nfs.udp.xfersize 32768 nfs.v2.df_2gb_lim off nfs.v3.enable on nfs.v4.acl.enable off nfs.v4.enable off nfs.v4.id.domain nfs.v4.read_delegation off nfs.v4.write_delegation

35、off nfs.webnfs.enable off nfs.webnfs.rootdir XXX nfs.webnfs.rootdir.set off NFS 的套件结构NFS 的设置文件只有一个,执行文件也不多, 记录文件也很少。 /etc/exports这个文件就是 NFS 的主要设置文件了!不过,系統并沒有预设值,所以这个文件不一定存在,可能需要使用 vi 来的建立起这个文件。 /usr/sbin/exportfs这个是维护 NFS 分享资源的指令,我们可以利用这个指令重新分享 /etc/exports 文件中的目录资源、将 NFS Server 分享的目录卸载或重新分享等等,这个指令是

36、 NFS 系统里面相当重要的一个。 /usr/sbin/showmount这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。这个 showmount 可以用来查看 NFS 分享出來的目录资源。 /var/lib/nfs/*tab在 NFS 服务器的登陆档案都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登陆档案, 一个是 etab ,主要记录了 NFS 所分享出來的目录的完整权限设定值;另一个 xtab 则记录曾经连接到此 NFS 主机的相关用户端资料。 Lunux RHEL AS

37、5,预设内核是支持 NFS 功能的,所以只要确认的核心版本是目前新的 2.6.x 版,并且使用你的 distribution 所提供的核心,就不会有问题。至于 NFS 服务器的架设在很简单,只要编辑好主要设置文件 /etc/exports 之后, 先启动 portmap ,然后再启动 nfs ,NFS 服务器就架设成功了。在 NetApp 存储也是内核就支持 NFS 功能,只需要检查其 license 和 options 选项即可,还需要查看/etc/exports 文件。1.5、/etc/exports 文件讲解作为系统管理员,你想控制 NFS 客户端访问有 NFS license 的存储上

38、的文件和目录。需要输出客户想要访问的资源。客户机只能 mount 输出的资源。有两个办法输出资源: 为了永久有效,在/etc/exports 文件里面指定需要 export 的资源,然后在命令行执行 exportfs a 使其立即生效。 为了临时访问,可以使用 exportfs 命令来输出不是定义在/etc/exports 里面的资源或者是在/etc/exports文件里面定义了但访问权限不一样,命令行里面的设置,重启后就失效。wangjun rdfile /etc/exports =这是 setup 过程中生成的文件,定义了 adminhost 可以访问根卷。tan rdfile /etc/

39、exports =setup 完,缺省的/etc/exports 配置#Auto-generated by setup Sat Dec 19 22:53:36 GMT 2009/vol/vol0 -sec=sys,ro,rw=192.168.0.103,root=192.168.0.103,nosuid/vol/vol0/home -sec=sys,rw,root=192.168.0.103,nosuidtan rdfile /etc/exports#Auto-generated by setup Tue Dec 15 04:10:30 GMT 2009要输出的资源目录/vol/vol0 -s

40、ec=sys,ro,rw=192.168.0.79,root=192.168.0.103,nosuid对上面一句的解释:192.168.0.79 对根卷是读写权限、192.168.0.103 有完全的权限、其它主机是只读权限,安全风格是UNIX 传统风格 ,不允许客户端 setuid 或 setgid/vol/vol0/home -sec=sys,rw,root=192.168.0.103,nosuid/vol/vol1 -sec=sys,rw,root=192.168.0.79,nosuid/vol/vol2 -sec=sys,rw,root=192.168.0.103,nosuid/vol

41、/vol3 -sec=sys,rw,root=192.168.0.103,nosuid/etc/exports 文件格式解释:pathname -option,option .条目 解释Pathname 要被输出的文件或目录的路径名anon=uid|name 如果客户端是以 root 用户发起连接请求,则屏蔽 root 权限,设置为uid=65534,除非授予连接上来的主机 root option。anon=65534 这是缺省值。在 Netapp 这个用户是 pcuseranon=65535 这是不允许 root 访问,netapp 这个用户是 nobabyanon=0 这是客户端 root

42、 用户具有根权限 anon 也可以用名字定义。nosuid 不允许客户端采用 setuid 或 setgid 功能,缺省状态时允许的。ro | ro=hostname:hostname. 输出的路径以 ro 方式给客户端rw | rw=hostname:hostname. 输出的路径以 rw 方式给客户端,如果没有定义这个选项则缺省就是 rwroot=hostname:hostname. 给指定的主机根访问权限,注意没有-root 选项,而且 root 后面一般都跟一个主机名或 ip 作为参数。 sec=secflavor:secflavor. The supported security f

43、lavors are:sys for Unix(tm) style security based on uids and gidskrb5 for Kerberos(tm) Version 5 authentication.krb5i for Kerberos(tm) Version 5 integrity servicekrb5p for Kerberos(tm) Version 5 privacy serviceHOSTNAMES 如果允许主机具有 ro 或 rw 权限,则允许它 mount NFS 服务器输出export-machine name|netgroup|machine IP|subnet|DNS domain上面是表示主机的几种方式。这几种方式表达的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报