NFS(网络文件系统)安装及配置以及在Linux与Winodws下挂载

NFS(网络文件系统)用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操作系统无关。

NFS分服务器和客户机,当使用远端文件时只需要用mount命令就可以把远端NFS服务器上的文件系统挂载在本地文件系统之下,NFS服务器所共享文件或目录记录在/etc/exports文件中。

一、安装NFS

使用
  1. sudo apt-get install nfs-kernel-server
安装NFS

二、配置NFS

修改/etc/exports文件,在其中增加NFS服务器目录。一个NFS服务器可以共享多个NFS目录,在/etc/exports文件中,每个目录的设置独占一行,格式如下:
NFS共享目录路径            客户机ip或名称(参数1,参数2,……,参数n)
说明:
1.NFS共享目录可以是主机的任何一个目录,为了方便使用,最好将权限设置为777
2.客户机指的是可以访问共享目录的客户机的ip或者主机名,可以是指定ip或者主机名。如果使用ip,可以使用通配符。如:指定192.168.1.x的客户机可以访问,可以写成192.168.1.*,*代表任何客户机都可以访问。
3.访问参数可以是一个,也可以是多个,中间用逗号隔开。具体参数表如下:

参数

说明

ro

只读访问

rw

读写访问

sync

所有数据在请求时写入共享

async

nfs在写入数据前可以响应请求

secure

nfs通过1024以下的安全TCP/IP端口发送

insecure

nfs通过1024以上的端口发送

wdelay

如果多个用户要写入nfs目录,则归组写入(默认)

no_wdelay

如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置

hide

在nfs共享目录中不共享其子目录

no_hide

共享nfs目录的子目录

subtree_check

如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)

no_subtree_check

不检查父目录权限

all_squash

共享文件的UID和GID映射匿名用户anonymous,适合公用目录

no_all_squash

保留共享文件的UID和GID(默认)

root_squash

root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squash

root用户具有根目录的完全管理访问权限

anonuid=xxx

指定nfs服务器/etc/passwd文件中匿名用户的UID

anongid=xxx

指定nfs服务器/etc/passwd文件中匿名用户的GID

三、启动或重启NFS服务器

  1. sudo service portmap start(restart)
  2. sudo service nfs-kernel-server start(restart)

四、本地验证NFS服务器

将NFS服务器目录挂载到本机另外一个目录下:
  1. sudo mount -t nfs 127.0.0.1:/home/jy/nfstest /mnt
进行验证

五、挂载NFS服务器

Linux下
  1. sudo mount -t nfs ip/home/jy/nfstest /mnt
Windows下
首先在程序与功能->启动或者关闭windows功能中打开nfs服务
在cmd中使用
  1. showmount -e ip 
可以看到ip中的共享目录以及共享客户机名
使用
  1. mount \\ip/目录 z:
将挂载nfs服务器挂载在z盘
使用
  1. umount z:
卸载
注意:
Windows NFS客户端访问Linux NFS服务问题Windows NFS客户端使用mount命令挂载NFS服务之后,

文件系统对Windows只读,无法写入文件,无法新建文件夹,此时使用mount命令可以查看到如下状态:
可以看到UID=-2由于在存储设备上共享出来的NFS文件系统归属于root权限,并且无法修改
该所属用户,而Windows通过UID=-2的用户去写,肯定写不进去。
解决办法就是让Windows在挂载NFS的时候将UID和GID改成0即可:打开注册表:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ClientForNFS/CurrentVersion/Default,增加两项:AnonymousUid,AnonymousGid
重新启动计算机,重新mount

六、其他

1.如果在使用中需要增加新的NFS共享目录,直接修改/etc/exports文件即可。修改后使用exportfs命令重新共享输出:
  1. exportfs  [-aruv]
参数说明:
-a:全部挂载(或卸载)/etc/exports的设置
-r:重新挂载
-u:卸载某一个目录
-v:在输出的时候,把共享目录显示出来
在NFS已经启动的情况下使用
  1. exportfs -ra
即可重新共享输出

Leave a Reply

Your email address will not be published. Required fields are marked *