nfs网络文件系统及samba文件共享

任务背景

   由于业务驱动,为了提⾼⽤户的访问效率,现需要将原有web服务器上的静态资源文件分离出来,单独保存到⼀台文件服务器上。

任务要求

1、⼀台应⽤服务器web-server部署apache,静态⽹⻚资源存放在另外⼀台

NFS服务器上。

2、对于NFS服务器上保存的静态资源实⾏实时备份(inotify + rsync)

任务拆解

web-server(192.168.2.11)服务器的配置

# web-server服务器的作用是发布nginx服务的web项目,(挂载)共享存储的

静态资源。

1、环境准备:

[root@web-server ~]# systemctl stop firewalld

[root@web-server ~]# setenforce 0

[root@web-server ~]# vim /etc/selinux/config

2、配置一个本地的nginx仓库

[root@web-server ~]#yum -y install --downloadonly --downloaddir=./soft/ nginx  

# 只下载不安装,其中--downloadonly 选项表示只进行下载操作,不进行安装。

 --downloaddir=./soft 则指定了下载的软件包保存的目录为当前目录下的 soft

文件夹。

[root@web-server ~]#tree ./soft/

3、创建本地仓库,安装createrepo,使用createrepo生成仓库文件

# createrepo 是一个用于创建 YUM 软件仓库的命令行工具。它的主要作用是根

据指定目录中的 RPM 软件包生成元数据,包括软件包的依赖关系、版本信息等,

以便yum客户端能够正确地解析和安装所需的软件。                        

[root@web-server ~]#yum -y install createrepo

4、soft目录中生成一个repodata目录

# 举例:现有一个目录 /opt/packages ,其中包含了一些 RPM 软件包,此时我

们可以在该目录下运行 createrepo /opt/packages命令来创建软件仓库。在

/opt/packages 目录下生成一些元数据文件,如 repodata 目录,其中包含了

repomd.xml 等重要的配置和描述文件。

[root@web-server ~]#createrepo ./soft/  # 把soft⽂件夹做成⼀个本地的自建仓

5、检测soft目录中是不是保存是了一个repo

[root@web-server ~]#cd ./soft/

[root@web-server ~]#tree ./soft/

6、在/etc/yum.repos.d/新建一个repo文件,文件名为nginx

[root@webserver ~]#vim /etc/yum.repos.d/nginx.repo

[nginx]

name=nginx

baseurl=file:///root/soft

gpgcheck=0

enable=1

7、建立缓存

[root@webserver ~]#yum clean all

[root@webserver ~]#yum makecache

8、安装nginx,找到nginx的资源文件,查看是否安装

[root@webserver ~]#yum list installed|grep nginx

[root@webserver ~]#rpm -ql nginx

9、目前不用修改nginx,只需发布一个简单的项目

[root@webserver ~]#/usr/share/nginx/html/

[root@webserver ~]#tree /usr/share/nginx/html/

10、启动服务

[root@webserver ~]#which nginx

/usr/sbin/nginx

[root@webserver ~]#ls -l /usr/sbin/nginx

11、启动服务之前先关闭防火墙,检查服务是否启动

[root@webserver ~]#systemctl status firewalld

[root@webserver ~]#nginx

ps -aux|grep nginx  # 查看进程号

ss -lntpu|grep nginx

12、远程访问,向web页面中添加图片和视频,上传图片和视频到

[root@webserver ~]#/usr/bin/nginx/html/

13、修改/usr/bin/nginx/html/index.html,在本地物理机上使用scp上传

scp -p22 aaa.png root@192.168.2.201:/usr/share/nginx/html/

14、检查文件是否已经存在

[root@webserver ~]#ls /usr/share/nginx/html/

15、编辑html文件,

[root@webserver ~]#vim /usr/share/nginx/html/index.html

<img src="a.png" /><!--插入图片-->  # 153行

<!--插入视频-->  # 154

<video>       

<source src="ppt.mp4" />

</video>

最后访问web浏览器,进行测试

nfs-server(192.168.2.10)的具体配置

概述:NFS(Network File System)网络文件系统。主要⽤于linux系统上实现

文件共享的⼀种协议,其客户端主要是Linux;没有⽤户认证机制,且数据在⽹

络上传送的时候是明文传送,⼀般只能在局域⽹中使⽤;⽀持多节点同时挂载及

并发写⼊。

企业应⽤:为集群中的web server提供前端端存储

该服务包括的组件:

RPC(Remote Procedure Call Protocol):远程过程调⽤协议,它是⼀种通过⽹络

从远程计算机程序上请求服务,不需要了解底层⽹络技术的协议。

安装步骤:

1、安装rpcbind nfs-tools

# 负责NFS的数据传输,远程过程调⽤tcp/udp协议端⼝;nfs-utils:控制共享哪些

⽂件,权限管理。

[root@nfs-server ~]#yum -y install nfs-utils.x86_64 rpcbind.x86_64

# NFS服务相关软件包

nfs-utils-1.2.3-26.el6.x86_64 nfs服务的⼀个脚本控制⼯具(服务端与客户端)

nfs4-acl-tools-0.3.3-6.el6.x86_64 acl 具包

nfs-utils-lib-1.1.5-4.el6.x86_64 nfs

[root@nfs-server ~]# rpm -q rpcbind

rpcbind-0.2.0-11.el6.x86_64

[root@nfs-server ~]# rpm -aq|grep ^nfs

nfs-utils-1.2.3-39.el6.x86_64

nfs-utils-lib-1.1.5-6.el6.x86_64

nfs4-acl-tools-0.3.3-6.el6.x86_64

2、准备目录,/share编辑配置文件

[root@nfs-server ~]#mkdir /share  # 创建共享⽬录及⽹站的静态资源文件

[root@nfs-server ~]#touch /share/passwd

[root@nfs-server ~]#tree /share/

3、将之前下载的图片、视频文件传过去

[root@nfs-server ~]#scp root@192.168.2.11:/usr/share/nginx/html/a.png /share/

[root@nfs-server ~]#scp root@192.168.2.11:/usr/share/nginx/html/ppt.mp4

/share/

4、配置文件:(# man 5 exports,帮助文档)

[root@nfs-server ~]#vim /etc/exports

共享目录  共享选项(同步|异步) 

/share     *(rw,sync|async)

# 共享主机:

* :代表所有主机

192.168.0.0/24:代表共享给某个⽹段

192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同⽹段

192.168.0.254:共享给某个IP

*.itcast.com:代表共享给某个域下的所有主机

# 共享选项:

ro:只读

rw:读写

sync:实时同步,直接写⼊磁盘

async:异步,先缓存在内存再同步磁盘

anonuid:设置访问nfs服务的⽤户的uid,uid需要在/etc/passwd中存在

anongid:设置访问nfs服务的⽤户的gid

root_squash :默认选项 root⽤户创建的⽂件的属主和属组都变成nfsnobody,

其他⼈nfs-server端是它自己,client端是nobody。

no_root_squash:root⽤户创建的⽂件属主和属组还是root,其他⼈server端是

它⾃⼰uid,client端是nobody。

all_squash: 不管是root还是其他普通⽤户创建的⽂件的属主和属组都

是nfsnobody。

说明:

anonuid和anongid参数和all_squash⼀起使⽤。

all_squash表示不管是root还是其他普通⽤户从客户端所创建的⽂件在服务器端

的拥有者和所属组都是nfsnobody;服务端为了对⽂件做相应管理,可以设置

anonuid和anongid进⽽指定⽂件的拥有者和所属组。

[root@nfserver ~]# ss -antlp|grep rpcbind 

LISTEN     0      128          *:111                      *:*                   users:(("rpcbin",pid=3612,fd=8))

[root@nfs-server ~]# service rpcbind start  # 启动服务检查端口是否监听

Starting rpcbind: [

OK ]

[root@nfserver ~]# systemctl start rpcbind

[root@nfs-server ~]# service nfs start

[root@nfserver ~]# systemctl start nfs

5、回到webserver主机,创建目录/usr/share/nginx/html/static/(此目录用来挂载

nfs-server服务器的数据)

[root@webserver ~]#mkdir /usr/share/nginx/html/static/

[root@webserver ~]#mount -t nfs 192.168.2.201:/share(对方目录)

/usr/share/nginx/html/static(自己目录)  # 挂载nfs-server的文件

[root@webserver ~]#ls /usr/share/nginx/html/static/  # 查看挂载目录,nfs拿到

了一个文件的链接,不是真实的文件。

a.png passwd ppt.mp4/

6、文件的测试(测试结果:只能下载不能上传

(1)测试可读:

# 向/share目录中添加数据

[root@nfserver ~]#echo “今天天气适合睡觉” > /share/a.txt

# 回到web服务器,修改index.html文件,从static目录中引用图片和视频

[root@webserver ~]#vim /usr/share/nginx/html/index.html

<img src="static/a.png" /><!--插入图片-->  # 153行

<!--插入视频-->  # 154 

<video>       

<source src="static/ppt.mp4" />  # 此时读取到的挂载目录中文件(nfs服务

器的文件)

</video>

然后进行查看web-server服务器时候已经更新

[root@webserver ~]#ls /usr/share/nginx/html/static/

浏览器进行访问192.168.2.11:/static/a.txt:

今天天气适合睡觉

(2)在static目录中添加文件,查看nfs-server服务器中的文件是否被更新

[root@webserver ~]#touch /usr/share/nginx/html/static/b.txt  # 权限不足,无法

创建

客户端访问常见的问题:

[root@client ~]# showmount -e 192.168.2.11

clnt_create: RPC: Port mapper failure - Unable to receive:

errno 113 (No route to host)

原因:

1. nfs-server端rpcbind服务没开

2. ⽹络问题

3. 防⽕墙问题

bakserver服务器的配置

备份静态文件(指令:scp cp rsync): 备份是复制一份文件,共享是获取文件链接

# 当nfs(192.168.2.10)的share目录中的文件发生改变(新增、修改、删除、属性

发生改变)时备份到bakserver中。

步骤分解:

(1)创建备份主机bakserver(192.168.2.12)

(2)停用selinux和firewalld

[root@bakserver ~]#systemctl stop firewalld

[root@bakserver ~]#setenforce 0

(3)要想支持rsync备份同步,依次bakuphost和nfs-server主机都安装rsync

[root@nfs-server ~]#yum -y install bakuphost

(4)在nfs主机上安装inotify-tools监听/share目录

[root@nfs-server ~]#yum -y install inotify-tools

(5)先同步一份到bakup主机的tmp目录下

[root@nfs-server ~]#rsync -av /share/ root@192.168.2.12:/tmp/

(6)需要输入密码才会同步,为了自动化,设置免密

[root@nfs-server ~]#ls ~/.ssh/

known_hosts

[root@nfs-server ~]#ssh-keygen  # 生成

[root@nfs-server ~]#ls ./.ssh

Id_rsa id_rsa.pub known_hosts

[root@nfs-server ~]# cd ~/.ssh/

# 将公钥添加到对方家目录的authorizer_key文件中,也可使用scp将id_rsa.pub

文件上传到bakserver主机,手工将文件中的字符串复制到authorizer_key文件中.

[root@nfs-server .ssh]#ssh-copy-id -i id_rsa.pub root@192.168.2.12

[root@nfs-server ~]#ssh root@192.168.2.12

[root@bakserver ~]#     # 免密登录成功

确定全部都免密,实时rsync是否能免密备份

[root@nfs-server ~]#rsync -av /share/ root@192.168.2.12:/tmp/

(7)backserver主机上创建/backup

# 解决不需要交互有两种方案,其⼀可以配置免密登录;其二可以在backup机

搭建rsync服务。

[root@bakserver ~]#mkdir /backup

(8)nfs-server主机上创建一个脚本rn.sh,添加x权限,执行脚本

[root@nfs-server ~]#vim rn.sh

#!/bin/bash

inotifywait /share -mrq -e modify,create,delete,attrib,move|while read events

do

  rsync -av --delete/share/ root@192.168.2.12:/bakup/

  echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1

  # 输出日志

done

[root@nfs-server ~]#chmod +x rn.sh  # 脚本增加执行权限

[root@nfs-server ~]#nohup ./rn.sh&  # 放入后台运行

[root@nfs-server ~]#cat nohup.out  # 启动

[root@nfs-server ~]#touch /share/abc.txt

[root@nfs-server ~]#jobs -l  # 查看后台任务

[root@nfs-server ~]#touch /share/abc.abc

[root@bakserver ~]#ls /bakup

abc  abc.abc  a.png  ppt.mp4

backup备份机查看数据同步情况:

[root@bakserver ~]# ll

drwxr-xr-x 2 root root 4096 Dec 30 07:31 abc

-rw-r--r-- 1 root root 25 Dec 30 02:48 abc.abc

samba文件共享

一、概述:

1、SMB(Server Message Block)协议实现文件共享,也称为CIFS(Common

Internet File System);

2、它是Windows和类Unix系统之间共享文件的⼀种协议;

3、客户端主要是Windows;支持多节点同时挂载以及并发写⼊;

4、主要⽤于windows和Linux下的⽂件共享、打印共享;

5、实现匿名与本地⽤户文件共享

6、samba服务的主要进程:

smbd进程:控制发布共享⽬录与权限;负责⽂件传输——TCP 139、445

nmbd进程:⽤于名称解析netbios——UDP 137 138;基于NETBIOS协议

获得计算机名称——>解析为相应IP地址,实现信息通讯。

7、NetBIOS是Network Basic Input/Output System的简称,⼀般指⽤于局域⽹通

信的⼀套API。

## 需求:搭建⼀个SAMBA服务,共享⼀个⽬录/samba/share,客户端使⽤user01/123通过windows或者Linux可以在该⽬录⾥创建⽂件删除⽂件

二、基于window的samba文件共享:

1、配置过程:

环境准备:

关闭防火墙和selinux;配置yum源;软件三步曲。

(1)在backuphost主机上安装samba

[root@bakserver ~]#yum -y insatll samba

[root@bakserver ~]#rpm -qa|grep samba

samba-3.6.9-164.el6.x86_64   # 服务端软件包

samba-common-3.6.9-164.el6.x86_64

samba-winbind-3.6.9-164.el6.x86_64

samba-client-3.6.9-164.el6.x86_64

samba-winbind-clients-3.6.9-164.el6.x86_64

samba4-libs-4.0.0-58.el6.rc4.x86_64

(2)修改配置文件

[root@bakserver ~]#vim /etc/samba/smb.conf

# 了解配置⽂件:

[global]  # 全局选项

 workgroup = MYGROUP  # 定义samba服务器所在的⼯作组

 server string = Samba Server Version %v  # smb服务的描述

 log file = /var/log/samba/log.%m   # ⽇志⽂件

 max log size = 50   # ⽇志的最⼤⼤⼩(KB)

 security = user    # 认证模式:share匿名|user⽤户密码|server外部服务器⽤

户密码

 passdb backend = tdbsam   # 密码格式

load printers = yes  # 加载打印机

 cups options = raw  # 打印机选项

[homes]   # 局部选项(共享名称

 comment = Home Directories   # 描述

 browseable = no  # 隐藏共享名称

 writable = yes  # 可读可写

[printers]   # 共享名称

 comment = All Printers   # 描述

 path = /var/spool/samba  #本地的共享目录

 browseable = no 隐藏

 guest ok = no ——> public = no 需要帐号和密码访问

 writable = no ——> read only =yes 不可写

 printable = yes 打印选项

[share]

 path = /dir1

 guest ok = no

 writable = yes

# 修改部分——行尾追加:

[smb_share]

        comment = samba service

        path = /samba/share

        guest ok = no

        writable = yes

(3)设置用户user01,samba认证123密码

[root@bakserver ~]#useradd user01

[root@bakserver ~]#smbpasswd -a user01  #window要访问bakup中的文件,使

用user01,密码为123

(4)启动名称管理

[root@bakserver ~]#systemctl start nmb.server

[root@bakserver ~]#systemctl start smb.server

(5)为共享文件添加写权限,执行完后在window

[root@bakserver ~]#setfacl -m u:user01:rwx /bakup

三、基于Linux实现文件共享

环境准备:

关闭防火墙和selinux;配置yum源;软件三步曲。

[root@web-server ~]#yum -y install samba-client  # 安装客户端

[root@web-server ~]#smbclient -L 192.168.2.12 -U user01

[root@web-server ~]#smbclient //192.168.2.12/smb_share  -U user01  #window

中写的路径

smb:\>mkdir aaa

smb:\>echo “aaaa” > aaa.txt

smb:\>quit

[root@web-server ~]#yum -y install cifs-utils  

[root@web-server ~]#mkdir yy

[root@web-server ~]#mount.cifs -o user=user01,pass=123 //192.168.2.12/smb_share 

~/yy/  # 挂载

[root@web-server ~]#ls -l yy/

遇到的问题:windows下如果⽆法访问,请查看是否开启了smb客户端程序。

访问控制方面的问题:

没有mount.cifs命令,请安装cifs-utils-4.8.1-19.el6.x86_64

# 控制读写权限

 writable = yes/no

 readonly = yes/no

# 如果资源可写,但只允许某些⽤户可写,其他都是只读

write list = admin, root, @staff(⽤户组)

read list = mary, @students

# 控制访问对象

 valid users = tom,mary,@itcast

 invalid users = tom

注意:以上两个选项只能存在其中⼀个

# 网络访问控制

hosts deny = 192.168.0.  拒绝某个⽹段

hosts allow = 192.168.0.254  允许某个IP

hosts deny = all  拒绝所有

hosts allow = 192.168.0. EXCEPT 192.168.0.254 允许某个⽹段,但拒绝某个单个IP

注意:deny和allow同时存在,allow优先

# 总结

1、 ftp 局域⽹和外⽹都可以

2、 nfs 局域⽹ 挂载⽅式访问 mount.nfs

3.、samba 局域⽹ 直接访问(smbclinet) 挂载的⽅式mount.cifs

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值