存储系列篇(New Begin)之三种存储技术及基本概念

参考资料:https://blog.51cto.com/xslwahaha/1617781

三种存储技术简介

  • DAS: Direct Attached Storage,直接附加存储,存储设备通过SCSI接口电缆直接连接到服务器,存储设备不带有任何操作系统。它依赖于服务器,存储设备就是将硬件堆叠起来的。DAS也可以称为SAS(Server Attached storage,即服务器附加存储)。

  • DAS 具有如下特性:

  1. DAS 设备不带有任何操作系统,文件系统位于服务器端,以块级别进行数据传输。
  2. 通过SCSI接口电缆与服务器相连,因此,会增加服务器的I/O操作,占用CPU,降低网络和服务性能。
  3. 不支持多种系统的数据共享
    DAS 存储一般适用于中小型企业。

NAS : Network Attached Storage, 网络附加存储。NAS是基于IP协议的文件级数据存储,支持现有的网络技术,比如以太网,FDDI等。NAS设备完全以数据为中心,将存储设备和服务器彻底隔离,集中管理数据,从而有效释放带宽,大大提高了网络整体性能。

  • NAS 设备是一种特殊的数据存储服务器,内嵌系统软件,可以提供NFS,CIFS/SMB的文件共享。

NAS设备特点:

  1. 由于NAS设备内嵌系统,因此数据是以文件级别的方式进行传输。
  2. 由于是一个单独的存储服务器,一次你只负责服务器的IO操作,因此大大提高网络性能。
  3. NAS支持标准的网络文件系统,支持跨平台存储。
  4. 服务器只存储数据,可以实现集中化的管理数据。
    NAS存储设备适用于中小型企业。

SAN : Storage Area Network, 存储区域网络,这是一个共享的高速存储网络,存储设备位于服务器的后端,且存储设备和服务器之间一般通过光纤(FC)交换机相连,因此传输速率比较快。当然也可以通过IP网络来进行传输。对于SAN来说,存储设备和服务器完全分离,服务器通过光纤交换机(或IP网络)与不同地区的各个存储设备相连起来,可以实现集中化的管理。

SAN 具有特点:

  1. 文件系统位于服务器上,本身不带有任何操作系统,因此数据是以块级别的方式进行传输。
  2. 存储服务器使用光接口,因此传输速率快、高。
  3. 可以将不同区域的服务器通过光纤交换机相连起来,集中化的进行管理。
  4. 由于存储设备位于不同区域,可以实现大容量存储数据共享。

由于组建一套SAN系统比较昂贵,因此适用于大型企业。

如今我们所涉及的SAN(Storage Area Network),其实现数据通信的主要要求是:

  1. 数据存储系统的合并;
  2. 数据备份;
  3. 服务器群集;
  4. 复制;
  5. 紧急情况下的数据恢复

FC -SAN & IP-SAN的对比:
在这里插入图片描述


三种存储技术比较:

在这里插入图片描述
在这里插入图片描述


基本概念介绍

SCSI协议 & LUN & SCSI通信模型 & iSCSI协议

Small Computer System Interface, SCSI最初是一种专门为小型计算机系统设计的IO技术,但由于其架构和协议自身的优点,后被广泛应用于实现DAS以及作为SAN的底层技术。

所有的SCSI设备是通过一根总线将其连接起来,这个线就叫做SCSI总线。SCSI总线是SCSI设备之间传输数据的通路。SCSI总线又被称作SCSI通道。SCSI总线最终会连接到SCSI控制器上,SCSI控制器也称为主机适配器(HBA),它控制着SCSI总线上所有的设备与计算器之间的通信。控制器既可以是插入可用插槽的卡,也可以内置在主板上。

因此,SCSI控制器和SCSI设备的连接方式如下图所示:

在这里插入图片描述


在SCSI 总线末端上有一个终结器,用来减小相互影响的信号,维持SCSI链上的电压恒定。

  • SCSI ID

一个独立的SCSI总线按照规格不同可以支持8或16个SCSI目标设备(可以称为Target),每个SCSI目标设备都必须具有唯一的标识符(ID)才能正常工作。SCSI ID实际上就是这些目标设备的地址。

窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI目标设备和它进行连接。但是一般SCSI控制器需要使用一个ID,因此,能使用的ID理论比实际要少一个。

  • LUN

在每一个SCSI目标设备(Target)下还可以连接多个逻辑设备(如磁盘,卷组等等),为了让系统区分每一个逻辑设备,因此每一个逻辑设备都有一个LUN(Logical Unit Number)来标识自己。每个SCSI ID最多有32个LUN,默认从0开始(不过0被占用了),每一个LUN对应着一个逻辑设备。

  • ** SCSI通信模型**
    SCSI是一个C/S架构,其中client端叫做initiator(启动器),服务器端叫做target(目标设备)。SCSI协议采用了分层的思想,SCSI协议簇从上向下可以分为四层:设备特定命令集,共享命令集,传输协议,互联网层。并且SCSI的数据传输是以块的方式进行的。

  • iSCSI协议
    虽然SCSI控制器可以连接多个存储设备,形成自己的网络,但是它只能与直接相连的存储设备进行通信,只能在在局域网内部使用,不能在以太网上共享。因此,对于SCSI协议来说,传输数据的距离是非常有限的。因此,人们为了利用SCSI协议长距离的传输数据,于是就研发了一种新的技术,就是iSCSI协议.
    iSCSI协议是一种新的存储技术,它是将SCSI接口与以太网(Ethernet)技术结合起来工作的,简单的说iSCSI协议是将用户的请求转换成SCSI规则编码,然后再将这些数据封装在IP包中以便在以太网中进行传输的协议。

  • iSCSI协议的功能
    iSCSI:internet Small Computer System Interface的缩写,即Internet小型计算机接口。iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。它是基于TCP/IP协议的,用来建立和管理IP存储设备、主机和客户机之间的相互连接,并创建SAN。这样使得SAN利用SCSI协议应用在高速数据传输网络成为可能。不过这种传输是以块级别的方式在各个存储设备上进行的。

  • iSCSI的结构
    由于SCSI协议是一个C/S架构,因此iSCSI协议也是一个C/S结构,其中client是initiator,server端为target。iSCSI协议的主要功能是利用TCP/IP网络,在主机系统(可称为initiator)和目标存储设备(称为target)之间进行大量的数据封装和可靠传输过程。此外,iSCSI协议还将SCSI协议封装在IP网络上,并且运行在TCP上。
    因此,ISCSI协议的协议栈为下图所示:
    在这里插入图片描述


  • iSCSI协议的工作原理
    iSCSI协议的工作过程:当iSCSI主机发起数据读写操作后,操作系统会生成一个SCSI指令集,然后该SCSI指令集在iSCSI initiator端被封装成iSCSI消息包,并通过TCP/IP网络传输到存储区域,当存储区域的iSCSI target收到iSCSI消息包时会将其解开,读取其中的SCSI指令,然后再将其SCSI指令传送给SCSI设备执行其指令。当SCSI指令被执行后,返回的数据经过SCSI设备传送给iSCSI target时被封装为iSCSI的响应PDU,然后再通过TCP/IP网络传输给iSCSI initiator端,iSCSI initiator解开其iSCSI PDU包,读取其中的SCSI响应内容,并将其提交给操作系统进行处理,然后操作系统在将其处理后的内容返回给应用程序。

  • iSCSI的优点
    iSCSI最大的优点就是节约成本,利用iSCSI协议构建一个存储网络,除了需要存储设备,交换机、线缆还有以太网接口以外,基本就不需要其他的设备了,只需要在现有的网络上安装iSCSI就可以实现构建一个比较大的存储网络了。对于一个企业来说,这些设备都相同廉价。因此,总体来说,其成本相对比较廉价。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要调用 SQL Server 存储过程,你可以使用以下步骤: 1. 首先,确保你的 SQL Server 已经安装并运行,并且你有访问权限。 2. 在 SQL Server Management Studio (SSMS) 中创建存储过程。你可以使用 T-SQL 语言编写存储过程,例如: ```sql CREATE PROCEDURE YourProcedureName @Parameter1 INT, @Parameter2 VARCHAR(50) AS BEGIN -- 在这里编写存储过程的逻辑 -- 例如查询、更新或插入数据等 END ``` 3. 保存并执行上述脚本,以创建存储过程。 4. 在你的 Web 服务项目中,添加对 SQL Server 的引用。你可以使用 Entity Framework、ADO.NET 或其他适当的技术来连接和与 SQL Server 进行交互。 5. 在你的 Web 服务方法中,调用存储过程。具体的代码取决于你选择的技术。以下是使用 ADO.NET 执行存储过程的示例代码: ```csharp using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand("YourProcedureName", connection)) { command.CommandType = CommandType.StoredProcedure; // 添加存储过程的参数 command.Parameters.AddWithValue("@Parameter1", parameter1Value); command.Parameters.AddWithValue("@Parameter2", parameter2Value); connection.Open(); command.ExecuteNonQuery(); connection.Close(); } } ``` 6. 替换 `connectionString` 为你的 SQL Server 连接字符串,`YourProcedureName` 为你的存储过程名称,`parameter1Value` 和 `parameter2Value` 为相应的参数值。 通过以上步骤,你就可以在你的 Web 服务中调用 SQL Server 存储过程了。记得根据你的实际需求修改代码和参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值