1 NFS工作原理
NFS,network file system,网络文件系统,主要用于Linux与Unix系统中共享目录的实现,以及用于存储。采用C/S架构,工作原理:服务器端首先启动RPC(portmap)服务,再启动NFS服务,NFS服务会向RPC服务注册自己使用的通信端口。客户端如果需要连接NFS服务,首先客户端的RPC服务会连接服务器端的RPC服务,询问NFS的工作端口,然后使用客户端的端口向NFS服务端的端口进行连接,建立连接后,实现数据传输。
现在的NFS服务器还会连接一个源数据服务器,用于存储描述数据的信息,与iNode的作用相类似,客户端存储的数据都会记录在源数据服务器里。
2 配置NFS服务器端
第一步:安装软件 yum install nfs-utils -y
第二步:创建共享目录 mkdir /mnt/share
第三步:编辑NFS配置文件 vim /etc/exports,写入:
共享目录 可以访问的客户端(权限)
注:可以访问的客户端要写IP时加上子网掩码 /**
例1: /mnt/share *(rw)
例2: /mnt/share 192.168.1.1(rw)
例3: /mnt/share client(rw,no_root_squash)
第四步:启动RPC服务 systemctl restart rpcbind
启动NFS服务 systemctl restart nfs-server
注:每次修改/etc/exports 文件后都要重启NFS服务,systemctl restart nfs-server
第五步:查看NFS服务状态 systemctl status nfs-server
查看RPCbind端口状态 netstat -lantu | grep 111
查看NFS端口状态 netstat -lantu | grep 2049
注:查看本机启动的服务所对应的端口 #cat /etc/services | grep 服务名
3 配置客户端
第一步 安装软件 yum install nfs-utils -y
第二步 创建挂载点 mkdir /mnt/nfs
第三步 查看服务器端共享出的目录 showmount -e 服务器IP/主机名
例: showmount -e server
第四步 挂载服务器端共享目录
mount -t nfs 服务器IP/主机名:/服务器共享目录 本地挂载点
例: mount -t nfs server:/mnt/share /mnt/nfs
4 NFS配置文件解析
1)共享的目录:必须是目录,不能是文件;如果共享多个目录,每个目录分别写一行即可
2)可以挂载的客户端可写的选项:
客户端的主机名(该主机名必须能够被解析) 客户端IP地址
指定网段的客户端 指定域内的主机 * 任何客户端
注:使主机名能够被解析 vim /etc/hosts 在最后添加 IP地址 主机名
例:vim /etc/hosts
192.168.1.1 自己的主机名(自己的IP写哪个都可以)
192.168.1.2 其他主机名(IP写离自己近的)
以此类推。
3)权限:rw 读写 ro只读
no_root_squash 客户端以服务器端的root用户身份操作共享目录
sync 数据立即同步写入内存和硬盘
async 数据先写入内存,再写到硬盘
注意:除了在 /etc/exports 中设定的权限外,共享出的share目录本身也具有权限,为了防止目录本身权限对服务配置造成影响,常给共享的目录赋予最大权限 chmod 777 share。
例:让客户端对服务器共享目录有root权限
vim /etc/exports
/mnt/share *(rw,no_root_squash)
5 共享目录的大小
可以将某个指定大小的磁盘或分区挂载到共享目录上,那么共享目录的大小就和这个磁盘或分区的大小一样。
6 客户端自动挂载服务器端的共享目录
(1)开机自动挂载,编辑文件 vim /etc/fstab,末尾添加:
NFS服务器:共享目录 本地挂载点 文件系统格式 权限 是否备份 是否检查
例1: nfs-server:/mnt/share /mnt/nfs nfs defaults 0 0
例2: 192.168.1.1:/mnt/share /mnt/nfs nfs defaults 0 0
(2)使用autofs实现自动挂载
第一步 安装软件 #yum install autofs -y
第二步 生成配置文件 #cd /etc/auto.master.d/
vim 文件名.autofs
内容: /- 配置文件 // “/-”代表去查找后面的文件,所有的配置都在文件里
例: /- /etc/auto.master.d/f1 //f1是配置文件,放在哪个目录下都行
vim f1
内容: 本地挂载点 挂载的权限 服务器共享目录
例: /mnt/nfs -type=nfs,rw,sync 192.168.1.1:/mnt/share
注:权限设置要与服务器设置的一样
第三步 启动服务 #systemctl restart autofs
第四步 开机自动挂载, #systemctl enable autofs
7 举例说明
(1)在server上创建共享目录 /mnt/share,要求只允许client挂载,挂载到 /mnt/nfs。编辑文件 vim /etc/fstab,设置开机自动挂载,用的是主机名,不能用ip地址。
第一步:ping通了之后,首先更改主机名,hostnamectl set-hostname 主机名,主机名分别为server,r1,r2,client 。
第二步:然后添加各个主机名的域名解析,vim /etc/hosts ,里面内容为:主机 IP地址 主机名。本题对sever机设置:192.168.1.1 server
192.168.1.2 r1
192.168.2.2 r2
192.168.3.2 client
对其他主机的设置以此类推。
第三步:对server机设置如下
安装软件 yum install nfs-utils -y
创建共享目录 mkdir /mnt/share
编辑NFS配置文件 vim /etc/exports,写入:/mnt/share client(rw)
启动RPC服务 systemctl restart rpcbind
启动NFS服务 systemctl restart nfs-server
查看NFS服务状态 systemctl status nfs-server
查看RPCbind端口状态 netstat -lantu | grep 111
查看NFS端口状态 netstat -lantu | grep 2049
第四步:对客户端设置如下
安装软件 yum install nfs-utils -y
创建挂载点 mkdir /mnt/nfs
查看服务器端共享出的目录 showmount -e server
挂载服务器端共享目录 mount -t nfs server:/mnt/share /mnt/nfs
第五步:客户端设置开机自动挂载共享目录 vim /etc/fstab
server:/mnt/share /mnt/nfs nfs defaults 0 0
第六步:重启并检验,在server的/mnt/share下echo hahaha > f1;去客户端的/mnt/nfs下查看f1。
(2)在server上创建共享目录 /mnt/share1,在R2上做,要求在共享目录中创建的文件属主属组都是root,且使用autofs开机自动挂载到 /mnt/nfs1 。
第一步 略 第二步 略
第三步:对server机设置如下
安装软件 yum install nfs-utils -y
创建共享目录 mkdir /mnt/share1
编辑NFS配置文件 vim /etc/exports,写入:/mnt/share1 *(rw,no_root_squash)
启动RPC服务 systemctl restart rpcbind
启动NFS服务 systemctl restart nfs-server
查看NFS服务状态 systemctl status nfs-server
查看RPCbind端口状态 netstat -lantu | grep 111
查看NFS端口状态 netstat -lantu | grep 2049
第四步:对客户端设置如下
安装软件 yum install nfs-utils -y
创建挂载点 mkdir /mnt/nfs1
查看服务器端共享出的目录 showmount -e server
挂载服务器端共享目录 mount -t nfs server:/mnt/share1 /mnt/nfs1
第五步:客户端设置开机自动挂载共享目录 vim /etc/fstab
server:/mnt/share1 /mnt/nfs1 nfs defaults 0 0
第六步:重启并检验,在server的/mnt/share1下echo hahaha > test;去客户端的/mnt/nfs1下查看test,并且查看test的详细信息 ll ,可以看到属主属组都是root。