Linux之文件共享服务

本笔记来源: 文件共享服务FTP、NFS、Samba数据同步实战_哔哩哔哩_bilibili

NFS服务

背景

把网络中的资源通过NFS共享出来,共享出来以后,通过挂载NFS的远程资源把它挂到本机,一旦挂到本机以后,就和使用本地硬盘没有区别。这种逻辑带来的结果就是多个用户同时把NFS资源挂载到本机,可能会出现多个用户同时编辑一个文件的情况,必然会产生冲突问题。因为都在打开这个文件,会造成这个文件的破坏。所以在NFS服务器中,为了保证数据的一致性,它有很多相关的NFS进程来保证文件的完整性,所以NFS比其他文件服务要复杂。体现在端口号复杂,因为它的端口号是变化的。端口变化用户去连接NFS服务器呢,这就涉及到注册中心。

 什么是注册中心: 服务提供者把提供的服务注册在注册中心上,用户只需联系注册中心就行了,注册中心就把服务器的地址提供给用户,继而就可以连接了。有点像某宝的概念

NFS概念 

 Network File System网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol远程过程调用) 实现RPC采用C/S模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

工作原理图 

RPC服务提供了注册中心的功能。NFS再启动的时候,会把自己的端口信息注册到RPC服务中,然后RPC服务就记录了你当前服务端使用的端口

安装rpcbind.service

  

查看状态

 

rpcbind.sock负责监听端口号111,通常rpcbind.service是没有启动的,它俩相分离,而rpcbind.sock是启动的,只有用户访问这个端口时,才会自动激活rpcbind.service,它才会启动 .

那我们会有疑问,服务都没启动,谁会监听111呢,下图就说明了一切。可以看出是systemd负责监听111,当用户访问时,它会自动激活rpcbind.service

安装nfs

通过安装过程发现,nfs与rpcbind是有依赖性的 

启动nfs 

按照理论逻辑当nfs启动的时候它会自动把端口号注册到rpcbind

如下图,看到rpcbind的服务启动了起来,之前没有起来,现在为什么突然起来了呢?我们知道从CentOS7开始服务能自动解决依赖性,当nfs启动的时候,又因为rpcbind与它有依赖,所以nfs会连着它也一起启动。

软件介绍 

nfs支持网络共享和远程的客户端进行远程的挂载

rpc.statd: 当有多个用户访问资源时,会对某个文件同时进行修改,可能造成这个文件破坏,为了避免这个问题,开启这个进程进行保护。ftp是没有这个功能的,所以ftp不支持同时在线修改,它支持在线下载到本地,然后在本地修改

nfs-utils需在客户端和服务端都要安装 

/usr/sbin/showmount : 客户端程序。可以通过showmount命令查看nfs上的共享资源 ,也可以挂载资源

nfs只能用于内网环境中,不能应用于外网,因为nfs端口具多且易变化,防火墙不容易配置 

NFS配置文件 

/etc/exports #主配置文件 放共享资源的共享规则
/etc/exports.d/*.exports #子配置文件
这两个文件都行,随便选

 NFS共享配置文件格式

/dir     主机(opt1,opt2)      主机2(opt1,opt2)

 格式说明:

         主机格式

单个主机: ipv4, ipv6, FQDN
IP networks: 两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards: 主机名通配.例如*.magedu.com.IP不可以
netgroups: NIS域的主机组.@group_name 用的不多
anonymous:表示使用*通配所有客户端 匿名,相当于*

       每个条目指定目录导出到的哪些主机,及相关的权限和选项

默认选项: (ro,sync,root_squash,no_all_squash) 
ro,rw 只读和读写
async 异步,数据变化后不立即写磁盘,性能高 #数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高,但有可能会丢数据
sync(1.0.0后为默认)同步,数据在请求时立即写入共享存储磁盘 #即当你远程的把数据写入磁盘以后,会立即写入磁盘中去,不会放到缓存里.安全可靠,性能不好
root_squash (默认) 远程root映射为nfsnobody,UID为65534,CentOS8为nobody,早期版本是4294967294(nfsnobody) #压榨root
no_root_squash 远程root映射成root用户
all_squash 所有远程用户(包括root)都变成nfsnobody,CentOS8为nobody
no_all_squash (默认)保留共享文件的UID和GID #普通用户不压榨
anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用

Ps:  

LDAP:轻量级的目录访问协议 #它可以集中的存储所有账号,即其他机器的账号都来自于它,这样用它来登录验证,就能达到uid统一的效果,不用担心用户在不同的机器上访问UID不同,造成权限不同。 

 NFS工具

exportfs

 exportfs: 可用于管理NFS导出的文件系统

 常见选项:

    • -v  查看本机所有NFS共享

    • -r  重读配置文件,并共享目录

    • -a 输出本机所有共享

    • -au 停止本机所有共享

mount.nfs

客户端NFS挂载

NFS相关的挂载选项: man 5 nfs

    • fg(默认)后台挂载 #就算挂载不上,也不影响前台挂载命令

    • bg后台挂载

    • hard (默认) 持续请求 #就算挂不上去,也一直挂,就卡在那

    • soft 非持续请求 #挂不上去,可以等一会再挂,不会导致命令卡在那儿无法操作

    • intr和hard配合,请求可中断(ctrl+c中断)

    •rsize和wsize一次读和写数据最大字节数, rsize=32768

    •_netdev 无网络不挂载

提示: 基于安全考虑, 建议使用nosuid,_netdev,noexec挂载选项

范例: 临时挂载NFS共享

mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/

范例: 开机挂载

vim /etc/fstab
172.16.0.1:/public    /mnt/nfs    nfs    defaults,_netdev    0    0

自动挂载 

可使用autofs服务按需要挂载外围设备,NFS共享等,并在空闲5分钟 

  相关包和文件

  软件包: autofs

  服务文件: /usr/lib/systemd/system/autofs.service

  配置文件: /etc/auto.master

  配置文件格式

   参看帮助: man 5 autofs

   所有导出到网络中的NFS启用特殊匹配-host至'browse'

   范例: /net目录可以自动挂载NFS共享

cat    /etc/auto.master
/net    -hosts
cd    /net/192.168.8.100/ 

要使用自动挂载服务,首先要安装: yum -y install autofs 

自动挂载资源有两种格式: 

      •相对路径法: 将挂载的目标文件夹(也就是挂载点)分成 dirname 和 basename 分别配置, 可能会影响现有的目录结构

      •绝对路径法: 直接匹配全部绝对路径名称,不会影响本地目录结构

相对路径法:

 1. /etc/auto.master格式

挂载点的dirname    指定目录的配置文件路径(也就是子配置文件)

2. 指定目录的配置文件格式

挂载点的basename    挂载选项    选项设备

范例: 相对路径法

[root@centos8 ~]#vim /etc/auto.master
/misc    /etc/auto.misc
[root@centos8 ~]#vim /etc/auto.misc
cd    -fstype=iso9660,ro,nosuid,nodev    :/dev/cdrom

范例: 相对路径法为支持通配符

vim /etc/auto.master
/misc    /etc/auto.misc

vim /etc/auto.misc
#表示/misc下面的子目录和nfs共享/export目录的子目录同名
*  server:/export/&

 绝对路径法

  1./etc/auto.master

/-        指定配置文件路径

   2、指定配置文件格式

绝对路径        挂载选项    选项设备

  范例: 绝对路径法

vim  /etc/auto.master:
/-                    /etc/auto.direct

vim /etc/auto.direct:
/foo             -fstype=nfs server1:/export/foo
/user/local      -fstype=nfs.vers=3  server1:/usr/local
/mnt/cdrom       -fstype=iso9660     :/dev/cdrom

利用自动挂载可以实现:把家目录都挂载到一个目录里,网络中有很多用户,他们分别在不同的主机上登录. 比如以wang的身份,它在网络上有三台机器, 他在每个机器上都有账号,他在第一台机器上登录并在自己家目录上新建了一些文件,然后他又去到别的机器上也以王的账号登录,但他看到的家目录数据是这台机器的数据,并不是上一台机器家目录的数据,就是说数据不能漫游。所以我们可以专门搭一台NFS服务器,把所有用户的家目录都映射到NFS共享的目录下面去,这样无论我们去哪台机器上登录看到的资源都是同一台NFS服务器的资源。可以自动挂载或者永久挂载(/etc/fstab),手动挂很麻烦

如下图,甲用户想上传资源到LAP服务器上,例如这个资源存放目录在/var/www/html/wp-content里,

如果甲用户上传的资源没有进行nfs挂载,只是上传到本地,那么当其他用户访问时可能会访问其他LAP服务器,导致访问不到甲用户上传的资源,为了解决这个问题,我们可以把这个目录挂载到nfs服务器上的/data/www上。用户上传资源到/var/下这个目录实际上上传到了/data/www下。像图片,静态资源上传到nfs服务器上,像文章上传到Mysql服务器上

步骤 

1.创建共享目录

2.编辑共享规则

#我们要共享哪个目录         #共享哪个主机 不加括号就是只读
/data/www                 *

 3.重启服务

systemctl restart nfs或exportfs -r   #exports  -r加载配置文件,不用重启

 exportfs  -v #查看有哪些共享目录

客户端 

1.查看服务器上有哪些共享目录

2.在客户端上把共享目录挂载到本机 

4.df -h验证是否挂载成功 

实战案例

 


 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux系统中部署文件共享服务器通常使用Samba(Server for Unix SMB/CIFS)工具,它允许你在Linux系统上提供类似Windows网络驱动器的功能。以下是部署步骤: 1. **安装Samba**: 首先,你需要确保你的系统已经安装了基本的软件包管理器,如apt或yum。然后,你可以运行相应的命令来安装Samba: ```sh sudo apt-get update sudo apt-get install samba samba-common-bin samba-doc # 或者,如果使用yum sudo yum install samba samba-client samba-server ``` 2. **配置smb.conf**: Samba的配置主要在`smb.conf`文件中。创建或编辑这个文件(通常位于`/etc/samba/smb.conf`),添加如下基本配置: - 共享目录定义:指定你想共享的目录及其权限。 - 工作模式:设置为`server`,表示作为SMB服务器。 - 安全性:设置密码加密类型,如`useSplashes = yes`启用密码保护。 ```ini [your_share_name] path = /path/to/shared/directory browseable = yes writable = yes guest ok = no create mask = 0775 directory mask = 0775 read only = no force user = your_username ``` 3. **启动服务并设置开机自启**: 启动Samba服务: ```sh sudo service smbd start sudo service nmbd start ``` 设置开机自启: ```sh sudo systemctl enable smb.service sudo systemctl enable nmb.service ``` 4. **访问共享资源**: 在其他Linux或Windows机器上,通过IP地址加上共享目录的名称(例如 `\\your_ip_address\your_share_name`)即可访问共享文件夹。 5. **防火墙配置**: 如果有防火墙,需要确保开放TCP端口139和445(SMB协议)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Turbo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值