Linux文件共享简介

tech2022-10-23  126

Linux文件共享简介

Sambasamba是什么SAMBA主要功能SAMBA的安全级别samba两个主服务 NFSNFS简介NFS的工作原理NFS挂载原理:网络文件系统架构编辑网络延迟处理 iSCSIscsi和iscsiISCSI简介了解SCSI了解ISCSI了解ISCSI SAN工作流程iSCSI数据封装部署iscsi前的说明和需求描述 FTP组成部分工作方式FXP用户授权传输模式 对比

Samba

samba是什么

samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。 当Windows是Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。SAMBA是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件SMB(Server Message block)协议是window下所使用的文件共享协议,我们在linux系统或者其类unix系统当中可以通过samba服务来实现SMB功能。 SMB协议又称为CIFS(Common Internet File System)协议

SAMBA主要功能

在网络上共享目录,决定访问权限。在网络上共享打印机,决定访问权限。加入一个windows域环境通过windows域环境进行认证操作。这个相比于NFS是安全的。NFS缺乏认证机制,在局域网当中没有得到更安全的保障。

SAMBA的安全级别

从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:

share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。我在Linux7版本中配置此模式,系统一直报错。user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。

samba两个主服务

smbd (提供samba核心功能也是使用最多的一种功能) 提供文件及打印共享服务功能,使用 139、445端口

nmbd提供Netbios(解析协议慢慢的被淘汰)支持,使用137、138端口,而对于这种协议使用较少,现在都是dns进行解析一般作为文件共享使用samba,则只需要smbd服务

samab服务开启之前需要关闭两个服务,iptables防火墙,selinux服务。 这是为了放行smb的端口。(samba服务需要占用TCP端口139,445 UDP端口 137,138)

Linux samba的配置和使用 SAMBA 的实现原理以及使用方法

NFS

NFS简介

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

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

NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之一。

主要应用在UNIX环境下。最早是由Sun Microsystems开发,现在能够支持在不同类型的系统之间通过网络进行文件共享,广泛应用在FreeBSD、SCO、Solaris等异构操作系统平台,允许一个系统在网络上与他人共享目录和文件。

通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,NFS可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。

NFS的工作原理

是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。服务器程序向其他计算机提供对文件系统的访问,其过程称为输出。NFS客户端程序对共享文件系统进行访问时,把它们从NFS服务器中“输送”出来。文件通常以块为单位进行传输。其大小是8KB(虽然它可能会将操作分成更小尺寸的分片)。NFS传输协议用于服务器和客户机之间文件访问和共享的通信,从而使客户机远程地访问保存在存储设备上的数据。

NFS挂载原理:

当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。

并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。

挂载后,NFS客户端查看磁盘信息命令:#df –h。

既然NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有想对应的网络端口,NFS服务器到底使用哪个端口来进行数据传输呢?

基本上NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;

既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了!

RPC与NFS通讯原理: ​

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。当服务器在启动 NFS 时会随机取用数个埠口,并主动的向 RPC 注册,因此 RPC 可以知道每个埠口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的埠口PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

那么RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,

如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

注意:在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效

NFS客户端和NFS服务器通讯过程:

图:NFS工作原理图

首先服务器端启动RPC服务,并开启111端口 服务器端启动NFS服务,并向RPC注册端口信息 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。Linux下NFS服务器部署 NFS服务所需软件及主要配置文件: 安装NFS服务,需要安装两个软件,分别是: RPC主程序和NFS主程序 RPC主程序:rpcbindNFS 其实可以被视为一个 RPC 服务,因为启动任何一个 RPC 服务之前,我们都需要做好 port 的对应 (mapping) 的工作才行,这个工作其实就是rpcbind 这个服务所负责的!也就是说, 在启动任何一个 RPC 服务之前,我们都需要启动 rpcbind 才行! (在 CentOS 5.x 以前这个软件称为 portmap,在 CentOS 6.x 之后才称为 rpcbind 的!)。NFS主程序:nfs-utils就是提供 rpc.nfsd 及 rpc.mountd 这两个 NFS daemons 与其他相关 documents 与说明文件、执行文件等的软件!这个就是 NFS 服务所需要的主要软件。NFS的相关文件:主要配置文件:/etc/exports 这是 NFS 的主要配置文件了。该文件是空白的,有的系统可能不存在这个文件,主要手动建立。NFS的配置一般只在这个文件中配置即可。NFS 文件系统维护指令:/usr/sbin/exportfs 这个是维护 NFS 分享资源的指令,可以利用这个指令重新分享 /etc/exports 变更的目录资源、将 NFS Server 分享的目录卸除或重新分享。分享资源的登录档:/var/lib/nfs/*tab 在 NFS 服务器的登录文件都放置到 /var/lib/nfs/ 目录里面,在该目录下有两个比较重要的登录档, 一个是 etab ,主要记录了 NFS 所分享出来的目录的完整权限设定值;另一个 xtab 则记录曾经链接到此 NFS 服务器的相关客户端数据。客户端查询服务器分享资源的指令:/usr/sbin/showmount 这是另一个重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 则主要用在 Client 端。showmount 可以用来察看 NFS 分享出来的目录资源。 https://blog.csdn.net/qq_38265137/article/details/83146421

特点

提供透明文件访问以及文件传输;容易扩充新的资源或软件,不需要改变现有的工作环境;高性能,可灵活配置。

网络文件系统架构编辑

- NFS 允许计算的客户 — 服务器模型。服务器实施共享文件系统,以及客户端所连接的存储。客户端实施用户接口来共享文件系统,并加载到本地文件空间当中。 - 在 Linux中,虚拟文件系统交换(VFS)提供在一个主机上支持多个并发文件系统的方法(比如 CD-ROM 上的 International Organization for Standardization [ISO] 9660,以及本地硬盘上的 ext3fs)。 - VFS 确定需求倾向于哪个存储,然后使用哪些文件系统来满足需求。由于这一原因,NFS 是与其他文件系统类似的可插拔文件系统。 - 对于 NFS 来说,唯一的区别是输入/输出(I/O)需求无法在本地满足,而是需要跨越网络来完成。 一旦发现了为 NFS 指定的需求,VFS 会将其传递给内核中的 NFS 实例。 - NFS 解释 I/O 请求并将其翻译为 NFS 程序(OPEN、ACCESS、CREATE、READ、CLOSE、REMOVE 等等)。这些程序,归档在特定 NFS RFC 中,指定了 NFS 协议中的行为。一旦从 I/O 请求中选择了程序,它会在远程程序调用(RPC)层中执行。 - 正如其名称所暗示的,RPC 提供了在系统间执行程序调用的方法。它将封送 NFS 请求,并伴有参数,管理将它们发送到合适的远程对等级,然后管理并追踪响应,提供给合适的请求者。 - 进一步来说,RPC 包括重要的互操作层,称为外部数据表示(XDR),它确保当涉及到数据类型时,所有 NFS 参与者使用相同的语言。 - 当给定架构执行请求时,数据类型表示可能不同于满足需求的目标主机上的数据类型。XDR 负责将类型转换为公共表示(XDR),便于所有架构能够与共享文件系统互操作。 - XDR 指定类型字节格式(比如 float)和类型的字节排序(比如修复可变长数组)。虽然 XDR 以其在 NFS 中的使用而闻名,当您在公共应用程序设置中处理多个架构时,它是一个有用的规范。 - 一旦 XDR 将数据转换为公共表示,需求就通过网络传输给出传输层协议。 - 早期 NFS 采用 Universal Datagram Protocol(UDP),但是,今天 TCP 因为其优越的可靠性而更加通用。 - 在服务器端,NFS 以相似的风格运行。需求到达网络协议栈,通过 RPC/XDR(将数据类型转换为服务器架构) 然后到达 NFS 服务器。 - NFS 服务器负责满足需求。需求向上提交给 NFS 守护进程,它为需求标示出目标文件系统树,并且 VFS 再次用于在本地存储中获取文件系统。 - 注意,服务器中的本地文件系统是典型的 Linux 文件系统(比如 ext4fs)。因此,NFS 不是传统意义上的文件系统,而是访问远程文件系统的协议。

网络延迟处理

- 对于高延迟网络,NFSv4 实现称为 compound procedure 的程序。这一程序从本质上允许在单个请求中嵌入多个 RPC 调用,来最小化通过网络请求的 transfer tax。它还为响应实现回调模式。 - 网络文件系统协议编辑 从客户端的角度来说,NFS 中的第一个操作称为 mount。Mount 代表将远程文件系统加载到本地文件系统空间中。 - 该流程以对 mount(Linux 系统调用)的调用开始,它通过 VFS 路由到 NFS 组件。确认了加载端口号之后(通过 get_port 请求对远程服务器 RPC 调用),客户端执行 RPC mount 请求。 - 这一请求发生在客户端和负责 mount 协议(rpc.mountd)的特定守护进程之间。 - 这一守护进程基于服务器当前导出文件系统来检查客户端请求;如果所请求的文件系统存在,并且客户端已经访问了,一个 RPC mount 响应为文件系统建立了文件句柄。 - 客户端这边存储具有本地加载点的远程加载信息,并建立执行 I/O 请求的能力。这一协议表示一个潜在的安全问题;因此,NFSv4 用内部 RPC 调用替换这一辅助 mount 协议,来管理加载点。 - 要读取一个文件,文件必须首先被打开。在 RPC 内没有 OPEN 程序;反之,客户端仅检查目录和文件是否存在于所加载的文件系统中。 - 客户端以对目录的 GETATTR RPC 请求开始,其结果是一个具有目录属性或者目录不存在指示的响应。 - 接下来,客户端发出 LOOKUP RPC 请求来查看所请求的文件是否存在。如果是,会为所请求的文件发出 GETATTR RPC 请求,为文件返回属性。 - 基于以上成功的 GETATTRs 和 LOOKUPs,客户端创建文件句柄,为用户的未来需求而提供的。 - 利用在远程文件系统中指定的文件,客户端能够触发 READ RPC 请求。READ 包含文件句柄、状态、偏移、和读取计数。 - 客户端采用状态来确定操作是否可执行(那就是,文件是否被锁定)。偏移指出是否开始读取,而计数指出所读取字节的数量。 - 服务器可能返回或不返回所请求字节的数量,但是会指出在 READ RPC 回复中所返回(随着数据)字节的数量。

网络文件系统中的创新

- NFS 的两个最新版本(44.1)对于 NFS 来说是最有趣和最重要的。 - 在 NFSv4 之前,存在一定数量的辅助协议用于加载、锁定、和文件管理中的其他元素。 - NFSv4 将这一流程简化为一个协议,并将对 UDP 协议的支持作为传输协议移除。NFSv4 还集成支持 UNⅨ 和基于 Windows? 的文件访问语义,将本地集成 NFS 扩展到其他操作系统中。 - NFSv4.1 介绍针对更高扩展性和更高性能的并行 NFS(pNFS)的概念。要支持更高的可扩展性,NFSv4.1 具有脚本,与集群化文件系统风格类似的拆分数据/元数据架构。 - pNFS 将生态系统拆分为三个部分:客户端、服务器和存储。您可看到存在两个路径:一个用于数据,另一个用于控制。 - pNFS 将数据布局与数据本身拆分,允许双路径架构。当客户想要访问文件时,服务器以布局响应。 - 布局描述了文件到存储设备的映射。当客户端具有布局时,它能够直接访问存储,而不必通过服务器(这实现了更大的灵活性和更优的性能)- 当客户端完成文件操作时,它会提交数据(变更)和布局。如果需要,服务器能够请求从客户端返回布局。 - pNFS 实施多个新协议操作来支持这一行为。LayoutGet 和 LayoutReturn 分别从服务器获取发布和布局,而 LayoutCommit 将来自客户端的数据提交到存储库,以便于其他用户使用。 - 服务器采用 LayoutRecall 从客户端回调布局。布局跨多个存储设备展开,来支持并行访问和更高的性能。 - 数据和元数据都存储在存储区域中。客户端可能执行直接 I/O ,给出布局的回执,而 NFSv4.1 服务器处理元数据管理和存储。 - 虽然这一行为不一定是新的,pNFS 增加功能来支持对存储的多访问方法。当前,pNFS 支持采用基于块的协议(光纤通道),基于对象的协议,和 NFS 本身(甚至以非 pNFS 形式)。 - 通过 20109 月发布的对 NFSv2 的请求,继续开展 NFS 工作。其中以新的提升定位了虚拟环境中存储的变化。 - 例如,数据复制与在虚拟机环境中非常类似(很多操作系统读取/写入和缓存相同的数据)。由于这一原因,存储系统从整体上理解复制发生在哪里是很可取的。这将在客户端保留缓存空间,并在存储端保存容量。 - NFSv4.2 建议用共享块来处理这一问题。因为存储系统已经开始在后端集成处理功能,所以服务器端复制被引入,当服务器可以高效地在存储后端自己解决数据复制时,就能减轻内部存储网络的负荷。 - 其他创新出现了,包括针对 flash 存储的子文件缓存,以及针对 I/O 的客户端提示 (潜在地采用 mapadvise 作为路径)。

网络文件系统的替代物

- 虽然 NFS 是在 UNIX和 Linux 系统中最流行的网络文件系统,但它当然不是唯一的选择。 - 在 Windows系统中,Server Message Block [SMB](也称为 CIFS)是最广泛使用的选项(如同 Linux 支持 SMB一样,Windows 也支持 NFS)。 - 最新的分布式文件系统之一,在 Linux 中也支持,是 Ceph。Ceph 设计为容错的分布式文件系统,它具有 UNⅨ 兼容的 Portable Operating System Interface(POSⅨ)。您可在 参考资料 中深入了解 Ceph。 - 其他例子包括 OpenAFS,是 Andrew 分布式文件系统的开源版(来自 Carnegie Mellon 和 IBM),GlusterFS,关注于可扩展存储的通用分布式文件系统,以及 Lustre,关注于集群计算的大规模并行分布式文件系统。 - 所有都是用于分布式存储的开源软件解决方案。

iSCSI

scsi和iscsi

传统的SCSI技术是存储设备最基本的标准协议,但通常需要设备互相靠近并用SCSI总线连接,因此受到物理环境的限制。iSCSI(Internet Small Computer System Interface),顾名思义,iSCSI是网络上的SCSI,也就是通过网络连接的SCSI。它是由IBM公司研究开发用于实现在IP网络上运行SCSI协议的存储技术,能够让SCSI接口与以太网技术相结合,使用iSCSI协议基于以太网传送SCSI命令与数据,克服了SCSI需要直接连接存储设备的局限性,使得可以跨越不同的服务器共享存储设备,并可以做到不停机状态下扩展存储容量。iSCSI实现的是IP SAN,数据传输基于以太网。

https://www.linuxidc.com/Linux/2018-05/152535.htm

ISCSI简介

- ISCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口)是一种由IBM公司研究开发的IP SAN技术,它是通过 TCP/IP 网络传输 SCSI 指令的协议,让 SCSI 命令通过网络传送到远程 SCSI 设备上,而 SCSI 协议只能访问本地的 SCSI 设备。 - iSCSI 使用客户/服务器模型。客户端称为 initiator,服务器端称为 target。 - iSCSI 是传输层之上的协议,使用 TCP 连接建立会话。在 initiator 端的 TCP 端口号随机选取, target 的端口号默认是 3260- Initiator:通常指用户主机系统,用户产生 SCSI 请求,并将 SCSI 命令和数据封装到 TCP/IP 包中发送到 IP 网络中。 - Target:通常存在于存储设备上,用于转换 TCP/IP 包中的 SCSI 命令和数据。 这里选用的SCSI target的架构是SCST - SCST是Generic SCST Target Subsystem forLinux的简称,意为Linux通用SCSI目标子系统,是Linux SCSI目标子系统的一种实现。它为SCST Target Driver和Linux内核之间提供了一个统一的接口,同时提供Linux内核与存储后端的句柄连接,连接真实或模拟的存储后端与目标驱动程序。

SCST由三部分构成:scst、iscsi-scst和scstadmin

SCST SCST在Linux内核层和SCSI目标驱动层之间提供统一的、持久的接口,它尽可能地简化了目标驱动的开发。SCST支持如下5种I/O模式: pass-through此模式下,initiators的SCSI命令将不被修改地直接传给Target端的SCSI硬件。fileio默认情况下SCST的导出模式是fileio,它允许使用文件系统上的文件或者块设备作为虚拟的SCSI设备或光驱。Fileio模式可以充分利用Linux的cache。NV_CACHE是fileio的一种模式,它可以提供最好的性能。blockio绕开系统的page-cache(页面缓存)直接bio。该模式适用于后端存储设备比较高端或者不需要caching的应用或者需要大量块级吞吐的环境。user space在SCST环境中使用用户空间的虚拟SCSI设备模拟执行。performance不与底层的SCSI设备发生实际的数据传输,只提供直接的性能改进措施。 iSCSI-SCST 目标驱动,与设备驱动程序一起工作。主要负责接收主机命令,维护目标端和启动段的传输通道,并根据命令处理状态向主机返回信息。在Initiator看来,Target就是一个专属的SCSI Host,将用户分配的LUN或DISK映射成为远程可访问的虚拟设备。 目前为止SCST支持的Target驱动包括:iSCSI-SCST、FC Target、FCoE Target、SAS、InfiniBand和并行的SCSI设备。scstadmin scstadmin是SCST的配置和管理脚本,它可以接受命令行输入或者直接读取SCST的配置文件(/etc/scst.conf)来管理scst。

了解SCSI

SCSI(Small Computer System Interface) 小型计算机系统接口,一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。SCSI是一种智能的通用接口标准。 如下图所示是一张SCSI接口的卡: 在这里插入图片描述 SCSI接口具有应用范围广、多任务、带宽大、 CPU占用率低,以及热插拔等优点。

了解ISCSI

iSCSI(Internet Small Computer System Interface即Internet小型计算机系统接口),是一种在TCP/IP上进行数据块传输的标准,是由CiSCO和IBM两家公司发起的,并且得到了各大存储厂商的大力支持。 iSCSI将SCSI命令封装于TCP/IP包之中,并且使用了一个SCSI帧头。iSCSI可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作,也就是基于网络的存储。 iSCSI又称为IP-SAN(基于IP网络的存储区域网),是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。 iSCSI是一种使用TCP/IP协议,在现有IP网络上传输SCSI块命令的工业标准,它是一种在现有的IP网络上无需安装单独的光纤网络即可同时传输消息和块数据的突破性技术。 iSCSI基于应用非常广泛的TCP/IP协议,将SCSI命令/数据块封装为iSCSI包,再封装至TCP报文,然后封装到IP报文中。iSCSI通过TCP面向连接的协议来保护数据块的可靠交付。由于iSCSI基于IP协议栈,因此可以在标准以太网设备上通过路由器或交换机来传输。

本质上,iSCSI 让两台主机通过 IP 网络相互协商然后交换SCSI命令。这样一来,iSCSI就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。 不像某些 SAN 协议,iSCSI 不需要专用的电缆;它可以在已有的交换和 IP 基础架构上运行。然而,如果不使用专用的网络或者子网( LAN 或者 VLAN ),iSCSI SAN 的部署性能可能会严重下降。 于是,iSCSI 常常被认为是光纤通道(Fiber Channel)的一个低成本替代方法,而光纤通道是需要专用的基础架构的。但是,基于了TCP/IP的port 860 和 3260 作为沟通的渠道。透过两台计算机之间利用iSCSI的协议来交换SCSI命令,让计算机可以透过高速的局域网集线来把SA以太网的光纤通道(FCoE)则不需要专用的基础架构。 虽然 iSCSI 可以与任意类型的 SCSI 设备进行通信,系统管理员几乎总是使用它来连接服务器计算机 (例如,数据库服务器) 和磁盘卷上存储阵列。

使用iSCSI SAN 的目的通常有以下两个

存储集成公司希望将不同的存储资源从分散在网络上的服务器移动到统一的位置(常常是数据中心); 这可以让存储的分配变得更为有效。 SAN 环境中的服务器无需任何更改硬件或电缆连接就可以得到新分配的磁盘卷。灾难恢复公司希望把存储资源从一个数据中心镜像到另一个远程的数据中心上,后者在出现长时间停电的情况下可以用作热备份。 特别是,iSCSI SAN 使我们只需要用最小的配置更改就可以在 WAN 上面迁移整个磁盘阵列,实质上就是,把存储变成了“可路由的”,就像普通的网络通信一样。

了解ISCSI SAN

iSCSI SAN组件与FC SAN组件相类似。包括以下部件:

iSCSI Client/Host:系统中的iSCSI客户端或主机(也称为iSCSI initiator),诸如服务器,连接在IP网络并对iSCSI target发起请求以及接收响应。每一个iSCSI主机通过唯一的IQN来识别,类似于光纤通道的WWN。 要在IP网络上传递SCSI块命令,必须在iSCSI主机上安装iSCSI驱动。 iSCSI Target:iSCSI target是接收iSCSI命令的设备。此设备可以是终端节点,如存储设备,或是中间设备,如IP和光纤设备之间的连接桥。每一个iSCSI target通过唯一的IQN来标识,存储阵列控制器上(或桥接器上)的各端口通过一个或多个IP地址来标识。

本机与异构IP SAN: iSCSI initiator与iSCSI target之间的关系所下图所示:

iSCSI initiator(或client)是主机服务器,而iSCSI target是存储阵列。此拓扑称为本机iSCSI SAN,它包含在TCP/IP上传输SCSI协议的整个组件。 与之相反,异构IP SAN,如下图所示,包含在TCP/IP与光纤交换结构传输SCSI的组件。

为了实现这一点,需要在IP与光纤通道之间安装连接桥或网关设备。连接桥用于TCP/IP与光纤通道之间的协议转换。因此iSCSI主机将连接桥看做iSCSI target。

工作流程

第一步:iSCSI系统由SCSI适配器发送一个SCSI命令,命令封装到TCP/IP包中并送入到以太网络中进行传输。 第二步:接收方从TCP/IP包中提取SCSI命令并执行相关操作,执行完毕后,将返回的SCSI命令和数据封装到TCP/IP包中,把它们发回到发送方; 第三步:发送方的iSCSI系统从接收方发过来的TCP/IP包中提取出数据或命令,并把它们传回到SCSI子系统。

如上图所示,我们会发现使用ISCSI网络存储,客户端会和服务器之间通过SCSI端口建立一条SCSI通道,那么有的人就会有疑问,我的真实设备的接口并不是SCSI接口的,那么是不是不能应用ISCSI网络存储。当然不是的,无论你真实设备的接口是IDE接口或是SATA接口的都可以正常使用ISCSI网络存储,我们可以在这里简单的理解为,客户端与服务器上的SCSI端口是通过SCSI协议标准虚拟出来的用于建立连接的端口。 通过iSCSI实现存储共享,首先创建IQN用于识别启动器和目标,接着建立TPG共享存储组并设置相应的访问控制权限,然后在共享存储组添加lun逻辑单元(即存储设备),最后建立实现共享portals入口(ip port,就是通过IP进行访问的端口号)。

相关概念了解:

TPG共享存储组,某个特定iSCSI目标要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置。ACL访问权限控制列表,一种使用节点IQN(通常是启动器名称)来验证启动器的访问权限的访问限制。IQNiSCSI限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标。 IQN格式如下: iqn.YYYY-MM.com.reversed.domain[:optional_string] iqn:表示此名称使用域为标识符; YYYY-MM:表示拥有域名的年月时间;com.reversed.domain拥有此iSCSI组织的逆向域名optional_string以冒号为前缀的可选字符串,全球唯一,由域所有者分配,其中可包含冒号为分割符的组织边界;LUN逻辑单元号,带有编号的块设备,连接到目标且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标提供一个LUN;portals入口目标或启动器上用于建立连接的IP地址和端口号,端口号一般为3260。目标端的portals入口配置使用targetcli命令。

iSCSI数据封装

initiator向target发起scsi命令后,在数据报文从里向外逐层封装SCSI协议报文、iSCSI协议报文、tcp头、ip头。

封装是需要消耗CPU资源的,如果完全以软件方式来实现iscsi,那么所有的封装过程都由操作系统来完成。在很繁忙的服务器上,这样的资源消耗可能不太能接受,但好在它是完全免费的,对于不是非常繁忙的服务器采用它可以节省一大笔资金。

除了软件方式实现,还有硬件方式的initiator(TOE卡和HBA卡),通过硬件方式实现iSCSI。由于它们有控制芯片,可以帮助或者完全替代操作系统对协议报文的封装。

TOE卡,操作系统首先封装SCSI和iSCSI协议报文,而TCP/IP头则交由TOE内的芯片来封装,这样就能减少一部分系统资源消耗。

HBA卡,操作系统只需封装SCSI,剩余的iSCSI协议报文还有TCP/IP头由HBA芯片负责封装。

显然,HBA卡实现iSCSI是最好的方案,但是它要花钱,还不便宜。

部署iscsi前的说明和需求描述

说明

iscsi在target端是工作在套接字上的,监听端口默认是3260,且使用的是tcp连接。因为要保证数据安全性,使用udp可能会导致丢包。iscsi对客户端有身份认证的需要,有两种认证方式:基于IP认证,基于CHAP认证(双方都进行验证,即双向认证)。

需求描述

找一台服务器A作为iscsi的target,将其中的一块磁盘或分区/dev/sdb当作要共享的存储设备共享出去。再找两台服务器B和C当作iscsi initiator连接到target的共享存储上。

请确保服务器A上已经关闭了防火墙或者允许了3260端口。

下图描述了使用iSCSI的大致过程,后文内容虽然因为介绍各种用法而显得比较杂,但根据这张图的流程,阅读时很容易搞清楚相关内容。

https://blog.csdn.net/ZhangPengFeiToWinner/article/details/87926989

FTP

FTP协议 锁定 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。

组成部分

其一为FTP服务器,其二为FTP客户端。

其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。服务器 同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通常 Windows自带“ftp”命令,这是一个命令行的 FTP客户程序,另外常用的 FTP 客户程序还有FileZilla、 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。

工作方式

FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式)。Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。

这两种方式的工作原理:

Port FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。Passive 在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,通过三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

FXP

FXP FXP说简单点就是一个FTP客户端控制两个FTP服务器,在两个FTP服务器之间传送文件。FXP的全称为File Exchange Protocol――文件交换协议,可以认为FXP本身其实就是FTP的一个子集,因为FXP方式实际上就是利用了FTP服务器的Proxy命令,不过它的前提条件是FTP服务器要支持PASV,且支持FXP方式。FXP传送时,文件并不下载至本地,本地只是发送控制命令,故FXP传送时的速度只与两个FTP服务器之间的网络速度有关,而与本地速度无关。因FXP方式本地只发送命令,故在开始传送后,只要本地不发送停止的命令,就算是本地关机了,FXP仍在传送,直至一个文件传送完成或文件传送出错后,FTP服务器等待本地发送命令时,才会因不能接收到命令而终止FXP传送。因为上述的原因,FXP传送出错时,本地的用户进程还留在FTP服务器中,并没有退出,如此时再次连接FTP服务器,可能会因用户线程超过允许,FTP服务器提示客户已登陆并拒绝客户端的连接,直至服务器中的傀儡进程因超时或其他原因被FTP服务器杀死后,才能再次连接FTP服务器。成功FXP有两个必要条件:①两个FTP服务器均支持FXP;②两个FTP服务器均支持PASV方式。但并不是说满足这两个条件的FTP服务器均经本地操作成功FXP,这还与本地与FTP服务器的网络状况有关。故有时会出现同样两个FTP,别人可以FXP,而你不可以的情况。

用户授权

授权

要连上 FTP 服务器(即“登陆”),必须要有该 FTP 服务器授权的帐号,也就是说你只有在有了一个用户标识和一个口令后才能登陆FTP服务器,享受FTP服务器提供的服务。地址格式 FTP地址如下: ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名 上面的参数除FTP服务器IP或域名为必要项外,其他都不是必须的。如以下地址都是有效FTP地址: ftp://foolish.6600.org ftp://list:list@foolish.6600.org ftp://list:list@foolish.6600.org:2003 ftp://list:list@foolish.6600.org:2003/soft/list.txt

匿名

互联网中有很大一部分 FTP 服务器被称为“匿名”(Anonymous)FTP 服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。许多系统要求用户将Email地址作为口令,以便更好地对访问进行跟综。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息,数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录获取所需的信息资料。虽然使用WWW环境已取代匿名FTP成为最主要的信息查询方式,但是匿名FTP仍是 Internet上传输分发软件的一种基本方法。如red hat 、autodesk等公司的匿名站点。

传输模式

FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。 FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。

ASCII传输模式

假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的是不同的操作系统,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,

二进制传输

二进制传输模式 在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

对比

SambaNFSFTP基本介绍是已故的Sun公司制定的用于分布式访问的文件系统,它的本质是文件系统。主要在Unix系列操作系统上使用,基于TCP/IP协议层,可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作。是Unix系统下实现的 Windows文件共享协议-CIFS,由于Windows共享是基于NetBios协议,是基于Ethernet的广播协议,在没有透明网桥的情况下(如VPN)是不能跨网段使用的。它主要用于unix和windows系统进行文件和打印机共享,也可以通过samba套件中的程序挂载到本地使用。基于TCP/IP。世界上绝大多数系统都会有支持FTP的工具存在,通用性很强。目前少有人把VPS修改成支持FTP组件的形式,主要是因为FTP一开始就不是为了文件系统而设计的。是DEC开始开发的,用于在不同的Unix机器间进行资源共享,采用udp协议。后来基于tcp重新开发后,效率有了很大提高。它使用的协议是SMB。微软不愿意交License费,在windows系统中对该协议重新进行了实现。既然samba和windows中的网络邻居都使用SMB协议。那么,samba自然主要用于在windows和unix之间共享资源。资源包括文件、打印机等等。是SUN开发的,用于UNIX机器之间的资源共享。其设置相当容易,主要是配置/etc/exports文件,然后运行exportfs -a来共享出来。现在NFS已经成为UNIX/LINUX上的标配。简介Samba 是 SMB/CIFS(Server Message Block / Common Internet File System)网络协议的重新实现,可以在局域网不同计算机之间进行文件、打印机等资源共享,和 NFS 功能类似SMB 最早是微软为自己需求设计的专用协议,用来实现微软主机之间的文件共享与打印共享,并不支持在 Linux 上运行。著名黑客、技术大牛 Andrew Tridgell 通过逆向工程,在 Linux 上实现的 SMB / CIFS 兼容协议,命名为 Samba,通过该程序实现了 Windows 和 Linux 之间的文件共享。SMB 协议是 C/S 类型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”,Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。NFS(网络文件系统 Network File System)是一种分布式文件系统协议,力求客户端主机可以访问服务器端文件,并且其过程与访问本地存储时一样,它由 Sun 公司(已被 Oracle 收购)开发,于 1984 年发布,最新版本 NFSv4.2 于 2016 年发布。NFS 基于开放网络运算远程过程调用(ONC RPC)协议:一个开放、标准的 RFC 协议,任何人或组织都可以依据标准实现它。FTP(File Transfer ProtocoL)是TCP/IP应用层中的一个基础协议,通常使用 22 端口,负责将文件从一台计算机传输到另计算机,并保证文件传输的可靠性。FTP 协议的历史源远流长,第一版 FTP 协议于 1971 年发表为 RFC 114,此后经过多年的发展和完善。通常所说的 FTP 既可指 FTP 协议,也可指 FTP 应用程序。由于 FTP 是明文传输安全性不高,后来又出现了 SFTP 和 FTPS 等加密传输。FTP 的特点之一是独立于系统用户组,只要通讯端口开启就能方便访问,所以特别适合外网共享,一些老牌共享软件就常常通过 FTP 发布下载链接。优点兼容性好,在各平台获得了广泛支持,包括 Windows、Linux、macOS 等各系统挂载访问都很方变另外 SMB 也是各种电视、电视盒子默认支持的协议,可以通过 SMB 远程播放电影、音乐和图片。另外 SMB 提供端到端加密、安全性高,配置选项丰富,支持 ACL 并支持多种用户认证模式。内核直接支持,部署简单、运行稳定,协议简单、传输效率高。简单方便、容易部署缺点传输效率稍低,速度不太稳定,会有波动。有加密授权等功能,仅依靠 IP 地址或主机名来决定用户能否挂载共享目录,对具体目录和文件无法进行 ACL 权限控制(NFSv4 以前)。通常的做法是通过 Kerberos 对 NFS 进行认证及加密,不过部署配置比较麻烦。FTP 主要用于客户端和服务器之间的文件上传和下载,并不适用于服务器上文件修改。因为 FTP 通常需要先获取远程文件的副本,然后对副本修改,最后再将修改后的文件副本上传服务器。传输效率低、安全性不佳
最新回复(0)