NFS服务搭建

一、NFS简介

NFS是Network File System 的缩写以及网络文件系统。NFS主要功能是通过局域网让不同的主机系统之间可以共享文件或者目录。

NFS系统和window 网络共享,网络驱动器类似,只不过Windows用于局域网,NFS用于企业集群架构中,如果是大型网站会,会用到更加复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph

 

NFS服务搭建

 

 

二、NFS 应用

1 用户访问NFS客户端,将强求转化为函数
2 NFS 通过TCP/IP连接服务端
3 NFS服务端接受请求,会先调用portmap 进程进行端口映射
4 RPc.nfsd 进程用于判断NFS 客户能否链接服务端
5 .Rpc.mount进程用于判断客户端对服务端的操作权限
6 如果通过权限验证,可以对服务端进操作,修改或读取

NFS服务搭建

三、NFS实践

1、服务端

1、安装NFS和rpcbind
[root@nfs ~]# yum install nfs-utils rpcbind -y

2、创建挂载点
[root@nfs ~]# mkdir /web/nfs{1..9}
查看创建的目录:  ll /web/ 
3、配置挂载点
[root@nfs ~]# vim /etc/exports
格式:
[挂载点] [可以访问的IP]([权限])
/web/nfs1  172.16.1.0/20(rw,sync,all_squash)

4、关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld

5、启动Nfs和rpcbind服务
[root@nfs ~]# systemctl start nfs-server 
[root@nfs ~]# systemctl start rpcbind

6、检查服务端是否正常
[root@nfs ~]# showmount -e [服务端的地址,默认是本机地址]

[root@nfs ~]# showmount -e
Export list for nfs:
/web/nfsv1 172.16.1.0/20
[root@nfs ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/web/nfsv1 172.16.1.0/20

[root@nfs ~]# cat /var/lib/nfs/etab

7、给挂载点授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web
查看授权是否成功:  ll /web/
total 0
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs1
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs2
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs3
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs4
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs5
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs6
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs7
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs8
drwxr-xr-x 2 nfsnobody nfsnobody 6 Dec 30 10:20 nfs9

2、客户端

 1、安装NFS
[root@web01 opt]# yum install -y nfs-utils

2、创建目录
[root@web01 opt]# mkdir /opt/nfs/
ll  
3、挂载NFS
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/

4、测试NFS文件同步功能
[root@web01 opt]# touch nfs/{1..9}.txt
[root@web01 opt]# ll nfs/ 
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 2.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 3.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 4.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 5.txt
-rw-r--r-- 1 nfsnobody nfsnobody 



0 Dec 30 11:08 6.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 7.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 8.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 9.txt
[root@nfs ~]# ll /web/nfs1
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 2.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 3.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 4.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 5.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 6.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 7.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 8.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 11:08 9.txt

 

四、NFS配置详解

 

nfs共享参数
参数作用
rw 读写权限(常用)
ro

制度权限(不常用)

root-squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)
no-root-squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用)
all-squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)
no-all-squash 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用)
sync 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用)
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用)
anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用)
anongid 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用)

 

1、控制读写
rw、ro
查看是否启动成功了
`systemctl status nfs-server rpcbind
卸载挂载
`umount /opt/nfs/
查看挂载详情
df -h
删除/opt/nfs/*目录下的所有的内容
rm -rf /opt/nfs/*
2、控制文件权限
root_squash
no_root_squash
all_squash
no_all_squash

3、控制写模式
sync
async

4、控制用户
anonuid
anongid

统一用户:

1、创建用户
[root@nfs nfs1]# groupadd www -g 666
[root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin 

2、修改挂载点权限
[root@nfs nfs1]# chown -R www.www /web/

3、使用

五、搭建考试系统

搭建WEB服务

1、安装web软件
[root@web01 opt]# yum install httpd php php-devel -y

2、将代码放置于网站的根目录
[root@web01 opt]# cd /var/www/html/

# 上传代码
查看: ll
解压:
[root@nfs html]# unzip kaoshi.zip

3、授权
[root@web01 html]# chown -R www.www /var/www/html

4、关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld

5、修改web软件的用户
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www

6、启动web软件
[root@web01 html]# systemctl start httpd

7、测试

    1、上传  172.16.1.7
    寻找上传资料
    image.baidu.com
    查看错误;查看日志
    [root@web01 html]# tail -f /var/log/messgges
    查看错误日志
    [root@web01 html]# tail -f /var/log/httpd/
tail: error reading ‘/var/log/httpd/’: Is a directory
tail: /var/log/httpd/: cannot follow end of this type of file; giving up on this name
tail: no files remaining
[root@web01 html]# tail -f /var/log/httpd/error_log
[Thu Dec 30 16:42:29.769337 2021] [suexec:notice] [pid 2534] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe8b:7a67. Set the 'ServerName' directive globally to suppress this message
[Thu Dec 30 16:42:29.816757 2021] [lbmethod_heartbeat:notice] [pid 2534] AH02282: No slotmem from mod_heartmonitor
[Thu Dec 30 16:42:29.828160 2021] [mpm_prefork:notice] [pid 2534] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
[Thu Dec 30 16:42:29.828180 2021] [core:notice] [pid 2534] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'


[root@web01 html]# ll
total 80
-rw-r--r-- 1 www www 38772 Apr 27  2018 bg.jpg
-rw-r--r-- 1 www www  2633 May  4  2018 index.html
-rw-r--r-- 1 www www    52 May 10  2018 info.php
-rw-r--r-- 1 www www 26995 Dec 30 16:39 kaoshi.zip
drwxr-xr-x 2 www www    29 Dec 30 16:52 upload
-rw-r--r-- 1 www www  1192 Jan 10  2020 upload_file.php
[root@web01 html]# ll /ipload
ls: cannot access /ipload: No such file or directory
[root@web01 html]# ll /upload
ls: cannot access /upload: No such file or directory
[root@web01 html]# 
[root@web01 html]# ll upload
total 84
-rw-r--r-- 1 www www 83100 Dec 30 16:52 1_linux.jpg.jpg
    2、访问
    http://172.16.1.7/upload/1_linux.jpg.jpg
    3、同时设置web2 web3 
1、安装web软件
[root@web01 opt]# yum install httpd php php-devel -y

2、将代码放置于网站的根目录
[root@web01 opt]# cd /var/www/html/

# 上传代码
[root@web01 html]# scp kaoshi.zip 172.16.1.8:/var/www/html/
[root@web03 html]# unzip kaoshi.zip
[root@web02 html]# unzip kaoshi.zip
3、授权
[root@web01 html]# chown -R www.www /var/www/html

4、关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld

5、修改web软件的用户
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
在末行模式输入apache 全部修改成www即可
User www
Group www

6、启动web软件
[root@web01 html]# systemctl start httpd

7、测试

配合NFS实现文件共享

 

1、修改NFS配置文件
[root@nfs nfs1]# vim /etc/exports
/web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)

2、创建挂载点
[root@nfs nfs1]# mkdir /web/upload
[root@nfs nfs1]# chown www.www /web/upload

3、重启NFS
[root@nfs nfs1]# systemctl restart nfs-server rpcbind

4、客户端安装NFS软件
[root@web01 html]# yum install nfs-utils -y
[root@web02 html]# yum install nfs-utils -y
[root@web03 html]# yum install nfs-utils -y

5、挂载
[root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
[root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

6、测试
用web2上传,web3查看

 

上一篇:Linux之NFS


下一篇:Linux网络文件系统NFS