1.简介
2.安装
安装分为服务端和客户端
【1】我们先拿一台机做服务端
yum install nfs-utils rpcbind -y
然后我们查查看安装没有,查询一个包是否被安装
# rpm -q < rpm package name>
列出所有被安装的rpm package
# rpm -qa
那么我们查查看执行没有
rpm -qa nfs-utils rpcbind
【2】
vi /etc/exports
配置格式
复制代码
<输出目录> 客户端(选项:访问权限,用户映射,其他]
输出目录是指NFS系统中所定义的共享给客户端使用的文件系统
客户端是定义网络中可以访问这个NFS共享目录的IP地址或网段或域名等
客户端常用的指定方式
指定ip地址的主机:192.168.100.1
指定一个子网:192.168.100.0/ 也可以写成:192.168.100.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
简单配置
/data *(async,insecure,no_root_squash,no_subtree_check,rw) /data:与nfs服务客户端共享的目录
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
async:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限。
no_subtree_check:不检查父目录的权限。
一定要记得给目录授权
chown -R nfsnobody.nfsnobody /data
设置服务开机启动并立即启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service systemctl start rpcbind.service
systemctl start nfs-server.service
检验
showmount -e 你的ip
【2】再开一台机做客户端,在客户端上执行
(/upfile是客户端的路径,/data是你服务端的路径)
scp -r /upfile root@服务端ip:/data
安装nfs,客户端不需要服务,但需要对应的命令
yum install nfs-utils -y
然后进行挂载。
mount -t nfs 1.*.*.37:/data /upfile
这个时候进入/upfile目录,可以看到1.*.*.37的/data下面的东西了。
【3】常用指令
查看挂载情况
df -h
解除挂载
umount 本机被挂载的目录
关于umount,经常遇到device busy的情况,这时候一般加个参数-l ,表示lazy umount,关于这个下面解释一下(来源于互联网)
这是最常用的一种方式,这种方式要求被卸载分区是空闲的。如: # umount /dev/sdb1 # umount /media/disk 第一条命令把设备sdb上的第一个分区从系统上卸载。而第二条命令的作用则是卸载被挂载到/media/disk上的分区。 注意,只有在分区未被程序使用的情况下才能成功用此法卸载,否则会报错,如: umount: /dev/sdb1: device is busy lazy umount lazy umount正是针对上面错误中的busy而提出的,即可以卸载“busy”的文件系统。 举个例子,假设/dev/sdb1被mount到/media/disk,且处于“busy”状态,那么可以执行: # umount -l /media/disk 请注意,该方法并不是完全安全的,lazy umount主要完成如下操作: 立即从目录结构中实现卸载,即新进程将无法通过/media/disk访问/dev/sdb1。 正在访问该文件系统的程序不受影响。即正在操作/media/disk的进程不会被打断,且仍可以读写/dev/sdb1中的所有文件。 如果所有进程对/media/disk的操作都执行完,那么才真正地umount。 由此可知,lazy umount并没有真正实现umount,仅用于特殊需要的情况,而用这种方法来卸载U盘是不安全的。