一、定义
NFS(Network File System)即网络文件系统,可以实现多台计算机之间资源共享。该系统需要基于RPC服务(portmap)而使用,分为服务端和客户端。
二、相关服务说明
nfsd:保证客户端能正常访问登录服务器;
mountd:当NFS客户端向服务端共享同步文件时,需要mountd服务针对服务端配置的/etc/exports文件对客户端进行权限验证,只有验证通过完成后才允许其客户端进行文件共享。
portmap:NFS服务器端与客户端之间通话是通过TCP/IP进行传输,该通话会使用随机端口方式进行通话,该端口的分配就交由portmap服务进行端口管理并提供给NFS客户端。服务端、客户端都依赖此服务。
三、服务端
a)安装portmap服务
sudo apt-get install portmap
b)安装服务端NFS软件
sudo apt-get install nfs-kernel-server
c)配置 /etc/exports 文件
var/nfs 11.10.12.11(rw,sync,no_subtree_check) 11.10.12.12(rw,sync,no_subtree_check) 11.10.12.13(rw,sync,no_subtree_check)
var/nfs:服务端地址共享文件存放地址
11.10.12.11/12/13:NFS服务端/客户端IP地址,如果服务端也充当客户端使用,这里也需要为其赋权。
rw:可读可写
ro:只读
sync:数据同步写入内存缓冲区与磁盘中,虽然这样做效率较低,但可以保证数据的一致性(适合于小文件传输)
async:数据先暂时放于内存,而非直接写入硬盘,等到必要时才写入磁盘(适合于大文件传输)
no_root_squash:使用nfs时,如果用户是root,不进行权限压缩,即root用户在nfs上创建的文件 属组和属主仍然是root(不安全,不建议使用)
root_squash:使用nfs时,如果用户是root,则进行权限压缩,即把root用户在nfs上创建的文件 属组和属主修改为nfsnobody
all_squash:所有的普通用户使用nfs都将使用权限压缩,即:将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(一般均为nfsnobody)
no_all_squash:所有的普通用户使用nfs都不使用权限压缩,即:不将远程访问的所有普通用户及所属用户组都映射为匿名用户或者用户组(默认设置)
anonuid=XXX:anon即anonymous(匿名者),前面关于*_squash提到的匿名用户的uid的设置值,通常为nobody或者nfsnobody,使用这个参数可以自行设定这个uid值,这个uid必须存在 于/etc/passwd
anongid=XXX:将远程访问的所有用户组都映身为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=XXX)
insecure:允许客户端从大于1024的TCP/IP端口连NFS服务器
secure:限制客户端只能从小于1024的TCP/IP端口连接NFS服务器(默认设置)
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可提高效率(默认设置)
no_wdelay:若有写操作则立即执行(应与sync配置)
subtree_check:若输出目录是一个子目录,则NFSW:务器将检查其父目录的权限(默认设置)
no_subtree_check:即使输出目录是一个子目录,NFS服务器也不检查其父目录的权限,这样做可提高效率
d)启动portmap服务
sudo /etc/init.d/portmap restart
e)启动NFS服务
sudo service nfs-kernel-server restart
f)查看启动状态
protmap服务:service protmap status
nfs服务:service nfs-kernel-server status
四、客户端
a)安装portmap服务
sudo apt-get install portmap
b)安装客户端NFS软件
sudo apt-get install nfs-common
c)启动portmap服务
sudo /etc/init.d/portmap restart
d)启动NFS服务
sudo service nfs-kernel-server restart
e)查看启动状态
protmap服务:service protmap status
nfs服务:service nfs-kernel-server status
f)客户端共享路径挂载--手动挂载
sudo mount 11.10.12.11:/var/nfs /mnt/nfs/
mount:挂载命令
11.10.12.11:服务端IP地址
/var/nfs:服务端地址共享文件存放地址
/mnt/nfs/:客户端需共享地址
g)客户端开机自动挂载--自动挂载
将以下代码添加到/etc/fstab文件中
11.10.12.11://var/nfs /mnt/nfs/ nfs4 defaults 0 0
retrans:当客户端加载NFS不成功时,重试次数,已经无法成功报错。默认缺省hard-mount一直尝试。
其他参数可参照http://jianzong2000.iteye.com/blog/1631074
h)查看是否挂载成功
命令:df -h
查询结果如下所示:
Filesystem Size Used Avail Use% Mounted on
....
11.10.12.11:/var/nfs ...G ..G ...G ..% /mnt/nfs
此时在客户端/mnt/nfs目录下添加文件,就会同步到服务端及各个客户端。