今天没什么事,研究了一下linux,我在oracle vbox中安装的是红旗server6.0操作系统,按网上的步骤,先把光盘加载到光驱,挂载到文件夹下,红旗的rpm包都在Packer里面,rpm -ivh nfs及rpcbind文件,在/etc/exports编辑,指定nfs路径,比如/tmp,文件夹,输入权限rw,no—— root_squash 。执行exportfs -v,重新启动nfs服务,/etc/init.d/nfs restart /etc/init.d/rpcbind restart /etc/init.d/nfslock restart。挂载文件夹mount ip:/tmp /mnt/usb。OK!附上网上详细配置手册:
下面以实例来讲述如何在Linux下配置NFS服务器,假定我们需要共享的目录是/vmsnfs。
如果这个目录还不存在,那么就先创建它;否则,跳过此步。 mkdir /vmsnfs
将该目录中所有文件和子目录的属主和组更改为nfsnobody。 chown -R nfsnobody /vmsnfs chgrp -R nfsnobody /vmsnfs 或者并作一条执行 chown -R nfsnobody:nfsnobody /vmsnfs 注:如果以后直接在服务器上的共享目录创建文件或目录,要记得将属主和组设置为nfsnobody。否则客户端在访问时会出现“Permission denied”。
在/etc/exports文件中添加所需要共享的目录及参数,比如 /vmsnfs *(rw,async) 这里的意思是说,需要共享/vmsnfs这个目录,对所有客户端(*)都是可读写的(rw),并且是异步方式来访问。 因为不设置其他参数, 客户端创建文件或目录时默认的属主和组就是nfsnobody,即使客户端使用的账号是root。这也就是上面为什么要更改文件或目录的属主和组为nfsnobody的原因。
让共享目录生效 (重新)启动nfs服务 service portmap start service nfs restart 或者 exportfs -a
检查防火墙设置 如果开启了防火墙,那么就要检查一下与nfs有关的端口是否允许访问。 目前我尝试了一些方法,都没法在开启防火墙的情况下正常使用nfs,所以干脆把防火墙关掉了。 chkconfig iptables off service iptables stop 有这方面经验的大虾请帮忙补充一下解决办法。
如果要永久的共享此目录,最好将相关的服务设置为开机自动启动。 chkconfig portmap on chkconfig nfs on
至此,在Linux下配置NFS服务端的任务就完成了。(建议:重启一下系统确认配置能自动设置)
2.2 在Linux下配置NFS的其它问题
Q:能限定共享目录客户端的网段和读写权限吗? A:可以。比如:可以设置有些网段或机器是只读的,有些是可读写的。如下所示: /vmsnfs 192.168.0.0/24(rw,async) 192.168.1.0/255.255.255.0(ro,sync) /vmsnfs 192.168.0.0/24(rw) *(ro) /vmsnfs 192.168.6.179(rw) 192.168.6.17(ro) 如果想了解更多NFS配置参数,请参考NFS相关资料【1】。
Q:怎么确认nfs共享服务已经在运行了? A:使用chkconfig命令查看portmap和nfs服务是否都已经启动,如下所示: [root@new55 ~]# chkconfig --list portmap portmap 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@new55 ~]# chkconfig --list nfs nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@new55 ~]#
Q:怎么确认某个目录已经被分享? A:使用exportfs可以看到共享目录列表,exportfs -v可以看到更详细的信息。 [root@new55 ~]# exportfs /vmsnfs <world> [root@new55 ~]# exportfs -v /vmsnfs <world>(rw,async,wdelay,root_squash,no_subtree_check,anonuid=65534,anongid=65534) [root@new55 ~]# showmount -e Export list for new55: /vmsnfs * [root@new55 ~]#
Q:修改了/etc/exports如何使之生效? A:有多种方式,如下之一: exportfs -a exportfs -r service nfs restart
Q:如何显示哪些端口用来提供rpc服务? A:rpcinfo -p 或者 rpcinfo -p localhost 在 NFS服务没有启动时 [root@new55 ~]# rpcinfo -p 程序 版本 协议 端口 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 984 status 100024 1 tcp 987 status 启动 NFS服务之后 [root@new55 ~]# rpcinfo -p 程序 版本 协议 端口 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 984 status 100024 1 tcp 987 status 100011 1 udp 1006 rquotad 100011 2 udp 1006 rquotad 100011 1 tcp 1009 rquotad 100011 2 tcp 1009 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 34440 nlockmgr 100021 3 udp 34440 nlockmgr 100021 4 udp 34440 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 tcp 37635 nlockmgr 100021 3 tcp 37635 nlockmgr 100021 4 tcp 37635 nlockmgr 100005 1 udp 609 mountd 100005 1 tcp 612 mountd 100005 2 udp 609 mountd 100005 2 tcp 612 mountd 100005 3 udp 609 mountd 100005 3 tcp 612 mountd
Q:怎么看哪些客户端正在用共享目录? A: 使用showmount -a查看被客户端挂载过的详细信息,showmount -d查看被客户端挂载过的共享目录。在showmount手册页中可以 看到showmount -a看到的信息是不可靠的,像下面列出192.168.6.113就只是曾经访问nfs服务器的机器,而此时并未启动。 [root@new55 ~]# showmount -a All mount points on new55: 192.168.6.113:/vmsnfs 192.168.6.179:/vmsnfs 192.168.6.17:/vmsnfs [root@new55 ~]# showmount -d Directories on new55: /vmsnfs [root@new55 ~]#
Q:怎么从别的机器看nfs服务端共享了哪些目录? A:使用showmount -e <ip_or_host>就可以看到nfs服务器上共享的目录情况。 [root@sunrise17 ~]# showmount -e 192.168.6.55 Export list for 192.168.6.55: /vmsnfs * [root@sunrise17 ~]#
Q:在Linux配置了防火墙的情况下怎么启用NFS服务? A:有待研究,欢迎高手指点。我使用的RHEL5.5上默认的防火墙设置如下: [root@new55 ~]# iptables-save # Generated by iptables-save v1.3.5 on Thu Nov 18 09:44:44 2010 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [900:105354] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Thu Nov 18 09:44:44 2010
|