linux:NFS

1.简介

2.安装

安装分为服务端和客户端

【1】我们先拿一台机做服务端

yum install nfs-utils rpcbind -y

然后我们查查看安装没有,查询一个包是否被安装
# rpm -q < rpm package name>

列出所有被安装的rpm package
# rpm -qa

那么我们查查看执行没有

rpm -qa nfs-utils rpcbind

linux:NFS

【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

linux:NFS

【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盘是不安全的。
 
 
 
 
上一篇:JavaScript:获取系统当前时间,构造格式化的字符串


下一篇:MySQL 连接本地数据库、远程数据库命令