返回顶部

linux 综合架构 nfs 存储服务

 nfs 存储服务概念介绍

NFS 是 Network File System 的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录

存储服务的种类

  • samba windows--linux之间数据传输 Linux部署samba

  • NFS linux--linux之间数据传输

NFS存储服务作用

  • 实现数据的共享存储

  • 编写数据操作管理

  • 节省购买服务器磁盘开销

NFS服务快速部署流程

服务端部署

第一个历程: 下载安装软件

rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind

第二个历程: 编写nfs服务配置文件 /etc/exports 查看帮助文档(man exports)

# 根据客户端的 ip 设置白名单
/data   172.16.1.0/24(rw,sync)

第三个历程: 创建一个存储目录,在安装 nfs 的时候,会自动创建 nfsnobody 用户

mkdir /data
chown nfsnobody.nfsnobody /data

第四个历程: 启动服务程序

#先启动 rpc服务
systemctl start rpcbind.service 
systemctl enable rpcbind.service
#再启动 nfs服务
systemctl start nfs
systemctl enable nfs

客户端部署

第一个历程: 安装nfs服务软件

yum install -y nfs-utils

第二个历程: 实现远程挂载共享目录 (把本地的 /mnt 目录共享到服务端 /data 目录中)

mount -t nfs 172.16.1.31:/data  /mnt 

客户端创建文件(在 /mnt 下)

在服务端查看 进入(/data)查看

nfs 服务端详细配置说明

实现多个网段主机可以进行挂载

第一种方法

/data   172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)

第二种方法

/data   172.16.1.0/24(rw,sync) 
/data   10.0.0.0/24(rw,sync)

共享目录的权限和哪些因素有关

  • 和存储目录的本身权限有关 (755 属主:nfsnobody)

  • 和配置文件中的权限配置有关 rw/ro xxx_squash anonuid/anongid

  • 和客户端挂载命令的参数有关 ro

NFS配置参数权限

  • rw -- 存储目录是否有读写权限

  • ro -- 存储目录是否时只读权限

  • sync -- 同步方式存储数据 直接将数据保存到磁盘(数据存储安全)

  • async -- 异步方式存储数据 直接将数据保存到内存(提高数据存储效率)

  • no_root_squash -- 不要将root用户身份进行转换

  • root_squash -- 将root用户身份进行转换

  • all_squash -- 将所有用户身份都进行转换

  • no_all_squash -- 不要将普通用户身份进行转换

操作演示all_squash参数功能(将所有用户身份都进行转换

修改配置 /etc/exports

/data   172.16.1.0/24(ro,sync,all_squash)

把文件属主和属组自动转换成 nfsnobody  

[oldboy@backup mnt]$ touch oldboy_data.txt
[oldboy@backup mnt]$ ll
total 4
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May  9 12:11 oldboy_data.txt

操作演示no_all_squash参数功能(不将普通用户的身份进行转换

修改配置文件  /etc/exports

/data   172.16.1.0/24(rw,sync,no_all_squash)

普通用户的属组和属主不变,需要在修改文件其他用户权限  

[oldboy@backup mnt]$ touch oldboy_data02.txt
touch: cannot touch ‘oldboy_data02.txt’: Permission denied
解决权限问题:
[root@nfs01 ~]# chmod o+w /data/
[root@nfs01 ~]# ll /data/ -d
drwxr-xrwx. 2 nfsnobody nfsnobody 52 May  9 12:11 /data/
[oldboy@backup mnt]$ touch oldboy_data02.txt
[oldboy@backup mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 7 May  9 10:57 backup_data.txt
-rw-rw-r-- 1 oldboy    oldboy    0 May  9 12:17 oldboy_data02.txt
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May  9 12:11 oldboy_data.txt

操作演示root_squash参数功能将 root 身份进行转换

编写配置文件  /etc/exports

/data   172.16.1.0/24(rw,sync,root_squash)

把 root 用户创建文件的属主和属组,转换成 nfs 用户  

[root@backup mnt]# touch root_data.txt
[root@backup mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 May  9 12:20 root_data.txt

如何让root用户可以操作管理www用户管理的data目录

配置 root_squash 选项把 root 用户进行身份转换,可以指定映射的用户信息 anonuid=,anongid

/data   172.16.1.0/24(rw,sync,root_squash,anonuid=1002,anongid=1002)

企业中如何编辑nfs配置文件

通用方法 *****

/data   172.16.1.0/24(rw,sync)

特殊情况 (让部分人员不能操作存储目录 可以看目录中的数据)

/data   10.0.0.0/24(ro,sync)

修改默认的匿名用户

/data   10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)

nfs客户端详细配置说明

mount -t nfs 172.16.1.31:/data  /mnt

客户端mount命令参数

  • rw --- 实现挂载后挂载点目录可读可写 (默认)

  • ro --- 实现挂载后挂载点目录可读可写

  • suid --- 在共享目录中可以让setuid权限位生效 (默认)

  • nosuid --- 在共享目录中可以让setuid权限位失效 提供共享目录的安全性

  • exec --- 共享目录中的执行文件可以直接执行

  • noexec --- 共享目录中的执行文件可以无法直接执行 提供共享目录的安全性

  • auto --- 可以实现自动挂载 mount -a 实现加载fstab文件自动挂载

  • noauto --- 不可以实现自动挂载

  • nouser --- 禁止普通用户可以卸载挂载点

  • user --- 允许普通用户可以卸载挂载点

客户端如何卸载

  • umount -lf /mnt --- 强制卸载挂载点

  • -l 不退出挂载点目录进行卸载

  • -f 强制进行卸载操作

如何实现自动挂载

(1)利用rc.local

echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local

(2)利用fstab文件 /etcfstab

172.16.1.31:/data                         /mnt                    nfs     defaults        0 0

NFS服务挂载不上排查方法

服务端进行排查

1. 检查nfs进程信息是否注

rpcinfo -p localhost/172.16.1.31

问题原因:

  • 服务启动顺序不对,没有启动nfs服务

2. 检查有没有可用存储目录

showmount -e 172.16.1.31

问题原因:

  • 配置文件编写有问题,重启nfs服务

3. 在服务端进行挂载测试

  • 是否能够在存储目录中创建或删除数据

客户端测试

1. 检查nfs进程信息是否注册

rpcinfo -p localhost/172.16.1.31

问题原因:

  • 服务启动顺序不对,没有启动nfs服务

2. 检查有没有可用存储目录

showmount -e 172.16.1.31

问题原因:

  • 配置文件编写有问题,重启nfs服务

网络问题

  • ping 172.16.1.31

  • telnet 172.16.1.31 111

如何找到一台服务器开机运行了哪些服务

ll /etc/systemd/system/multi-user.target.wants/

实现开机自动挂载前提

  • /etc/rc.local 文件要有执行权限

  • /etc/fstab 实现fstab文件挂载自动加载nfs存储目录 必须让remote-fs.target服务开机自启

  • centos7 必须启动 remote-fs.target

  • centos6 必须启动 netfs  

 

posted @ 2019-11-25 23:55  Crazymagic  阅读(214)  评论(0编辑  收藏  举报