linux搭建nfs

1.nfs介绍

NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。

NFS一般用来存储共享视频,图片等静态数据。

2.挂载原理

 

当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。

挂载后,NFS客户端查看磁盘信息命令:

1
df -h # 或者lsblk

3.NFS工作原理

      1.首先服务器端启动RPC服务,并开启111端口。

       2.服务器端启动NFS服务,并向RPC注册端口信息。

       3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口。

       4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

       5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

4.安装nfs服务端

1
2
3
yum -y install nfs-utils
systemctl enable nfs-server
systemctl restart nfs-server

5.关闭防火墙和selinux

1
2
3
4
5
6
7
8
systemctl stop firewalld
systemctl disable firewalld
# 临时关闭,重启后失效
setenforce 0
# 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 永久关闭需要重启
reboot

6.查看

1
2
3
systemctl restart rpcbind
systemctl restart nfs
netstat -anpt | grep rpcbind        #查看rpcbind是否开启,rpcbind服务默认使用111端口

7.nfs配置

配置文件:/etc/exports 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
默认是一个空文件,需要自己编写内容
  
格式是:
  
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
  
A:输出目录
输出目录是指NFS系统中需要共享给客户机使用的目录;
  
B:客户端
客户端是指网络中可以访问这个NFS输出目录的计算机;
  
客户端常用的指定方法:
指定IP地址的主机;例192.168.1.1
指定子网里的主机;例192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名内的主机;例david.bsmart.cn
指定域中所有的主机;例*.bsmart.cn
指定所有主机:*
  
C:NFS选项
a:访问权限选项:
ro :只读
rw:读写
b.用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
c.其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

8.nfs服务挂载

创建共享目录

1
2
mkdir /data
chmod 755 /data

配置共享目录

 

 exports挂载共享目录

1
exportfs -rv

exportfs命令需要参考配置文件“/etc/exportfs”。也可以直接在命令行中指定要共享的NFS文件系统。

语法格式:

1
export [参数] [目录]

常用参数

1
2
3
4
-a    全部挂载或者全部卸载
-r    重新挂载
-u    卸载某一个目录
-v    显示共享目录

安装完成后,重启一下nfs服务就可以使用了

1
2
3
4
5
systemctl restart rpcbind
systemctl restart nfs
  
#查看nfs共享信息
showmount -e

9.nfs客户端配置

1
yum install nfs-utils -y

查看服务端共享的目录

1
showmount -e 192.168.185.6

 

客户端创建挂载目录

1
mkdir /test

将服务端目录挂载到本地

1
mount -t nfs 192.168.185.6:/data /test

查看挂载信息

1
df -h

 取消挂载

1
umount /test

  

 

posted @   NAVYSUMMER  阅读(1134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
交流群 编程书籍
点击右上角即可分享
微信分享提示