利用NFS进行Linux之间的目录共享

最近需要在linux下共享个目录到另外一台linux下用用,如果有桌面环境用鼠标点点就可以轻松配个samba出来,但服务器版则要改一堆配置才行,太麻烦。后来突然想到如果只是linux之间的共享不涉及到windows其实用NFS就可以,还简单一点。

NFS简单描述:

NFS是一个sun创建的网络协议,NFS运行在一个区域网直接进行文件共享。etc…

1.修改/etc/exports文件。

exports文件用于暴露需要共享的文件给NFS客户端,是一个访问控制列表。

2.添加要共享的目录到文件。

1
2
vi /etc/exports
/home/xxx/ttt/ 26.47.136.*(rw,sync,no_root_squash)

配置以空格分割。

  • /home/xxx/ttt/ 指要共享的目录。
  • 26.47.136.* 术语叫:Machine Name Formats,理解为客户端的授权方式,这里配置的允许客户端来自26.47这个网段,还支持域名、nis netgroups等方式。
  • 括号里的是配置项
    • rw 允许读写
    • sync 确保文件存储到磁盘后才响应客户端,与之对应的是async。
    • no_root_squash 使用者如果是root,那么对于这个目录他就有root权限。一般正式环境不建议用这个选项,不安全,与之对应的是root_squash。

保存修改后,NFS服务端的配置已经完成。运行脚本启动NFS服务:

1
2
/etc/init.d/portmap start
/etc/init.d/nfs start

3.另外一台服务器做为客户端挂载共享目录。

1
2
mount -t nfs 26.47.136.19:/home/xxx/ttt /mnt/xxx
ls /mnt/xxx

挂载类型使用nfs,就可以将共享目录挂载到/mnt/xxx下。

出现的问题

1
failed: RPC Error: Program not registered

使用命令查看NFS服务端的服务器进程:

1
ps aux|grep rpc

正常应该有两个进程 rpc.statd 和 rpc.mountd,如果没有启动则手动启起来,一般在/usr/sbin下。

1
Access deny

检查下iptables,hosts.allow等配置。