iSCSI 是一种由 IBM 公司研究开发的 IP SAN 技术,该技术是将现有 SCSI 接口与以太网络技术相结合,基于 TCP/IP 的协议连接 iSCSI 服务端和客户端,使得封装后的 SCSI 数据包可以在通用互联网传输,最终实现 iSCSI 服务端映射为一个存储空间提供给已连接认证后的客户端。
SCSI 是种 I/O 技术,规范一种并行的 I/O 总线和相关的协议,SCSI 数据传输是以块的方式进行的。
SCSI 总线通过 SCSI 控制器来和硬盘之类的设备进行通信, SCSI 的控制器称为 Target,访问客户端应用称为 Initiator。
窄 SCSI 总线最多允许 8 个、宽 SCSI 总线最多允许 16 个不同的 SCSI 设备和它进行连接,每个 SCSI 设备都必须有自己唯一的 SCSI ID 设备的地址。
LUN 逻辑单元号,是为使用和描述更多设备及对象而引进的一个方法,每个 SCSI ID 上最多有 32 个 LUN,一个 LUN 对应了一个逻辑设备。
iSCSI Initiator 客户端。iSCSI 启动器,本质上说,iSCSI 启动器是一个客户端设备,用于将请求连接并启动到服务器。iSCSI 的启动器有三种实现方式,可以完全基于硬件实现,比如 iSCSI HBA 卡,硬件 TOE 卡与软件结合的方式,完全基于软件实现,而且软件 iSCSI 启动器适用于大部分主流操作系统平台;
iSCSI Target 服务端。即 iSCSI 目标,它是 iSCSI 网络服务器组件,用于包含所需要的数据并回应来自 iSCSI 启动器的请求。
Initiator 发出请求后,会在本地的操作系统会生成了相应的 SCSI 命令和数据 I/O 的请求,然后这些命令和请求被封装加密成为 IP 信息包,通过以太网 TCP/IP 传输到 Targer。
当 Targer 接收到信息包,将进行解密和解析,将 SCSI 命令和 I/O 请求分开。SCSI 命令被发送到 SCSI 的控制器,再传送到 SCSI 的存储设备。
设备执行 SCSI 命令的响应,经过 Target 封装成 iSCSI 响应 PDU,再通过已连接的 TCP/IP 网络传送给 Initiator。
Initiator 会从 iSCSI 响应 PDU 里解析出 SCSI 响应并传送给操作系统,操作系统再响应给应用程序。
SAN 与 NAS 是完全不相同架构的存储方案,SAN 支持 Block 协议,后者则支持 File 协议;SAN 结构中,文件管理系统还是分别在每一个应用服务器上,会产生 I/O 操作,而 NAS 则是每个应用服务器通过网络共享协议使用同一个文件管理系统,所以 CPU 密集型的应用可以选用 NAS。SAN 是将目光集中在磁盘、磁带以及联接它们的可靠的基础结构,NAS 是将目光集中在应用、用户和文件及它们共享的数据上。
以上区别具体到 iSCSI 和 NFS。iSCSI 可优化空间更大,性能稍好,但是技术难度更高;而 NFS 在系统层面的支持更多,例如一些备份、恢复等操作较简单。