远程块存储iSCSI
简介
1. Internet小型计算机系统接口(iSCSI)是一个基于TCP/IP的协议,用于通过IP网络仿真SCSI高性能本地存储总线,从而为远程块存储设备提供数据传输和管理 2. 作为存储区域网络SAN协议,iSCSI跨本地和广域网络(LAN、WAN以及Internet)扩展SAN,通过分布式服务器和数组提供独立于位置的数据存储检索 3. SCSI协议套件提供基于设备总线通信协议的命令描述器块CDB命令集。对于每个通道的所有设备,原始SCSI拓扑使用长度限制为20米的物理布线 4. 设备使用唯一数字目标ID(0-7,对于双通道为0-15) 5. 广泛实施的光纤通道(FC)已淘汰了物理SCSI磁盘和布线,FC保留了SCSI的CDB命令集,但是将磁盘和总线通信更换为协议以便进行更长且速度更快的光纤布线 6. iSCSI协议还保留了CDB命令集,在通过标准TCP/IP封装的iSCSI系统之间执行总线通信 7. iSCSI服务器使用文件、逻辑卷或任何类型的磁盘作为底层存储来仿真呈现为目标的SCSI设备 8. iSCSI服务通常在层次高于操作系统TCP/IP堆栈或TCP卸载引擎TOE的软件中实施 9. iSCSI还可以作为主机总线适配器HBA以硬件方式实施,以更大地提高性能
企业级SAN专用流量基础架构
1. FC的独立光纤布线和交换机保证了隔离 2. iSCSI应该在独立于标准LAN流量的布线中实施,因为性能可能会由于共享网络上的带宽拥塞而降级 3. 以太网和FC现在均提供铜缆和光缆布线选项,允许网络整合与流量分类组合使用
安全性
1. 存储区域网络流量通常是未加密的,因为物理服务器到存储器的布线通常密封在安全的数据中心内 2. 对于WAN安全性,iSCSI和以太网光纤通道FCoE可以利用互联网协议安全性IPsec,这是一个用于保护IP网络流量的协议套件 3. 选择可以提供加密的联网硬件(首先NIC、TOE和HBA) 4. iSCSI提供质询握手身份验证协议CHAP用户名和密码作为身份验证机制,以限制所选启动器和目标之间的连接
iSCSI协议的运行方式
类型于客户端-服务器配置
客户端系统将启动器软件配置为SCSI命令发送到远程服务器存储目标,访问的iSCSI目标在客户端系统上显示为本地且未格式化的SCSI块设备
术语 | 描述 |
---|---|
启动器 | 一个iSCSI客户端,通常以软件提供,但是也可以作为iSCSI HBA来实施。必须为启动器授予唯一名称 |
目标 | 一个iSCSI存储资源,针对来自iSCSI服务器的连接而配置。必须为目标授予唯一名称。目标提供一个或多个带有编号的块设备,称为逻辑单元。一个iSCSI服务器可以同时提供多个目标 |
ACL | 访问权限控制列表,一种使用节点IQN来验证启动器的访问权限的访问限制 |
发现 | 查询目标服务器以列出配置的目标。目标使用要求其他的访问步骤 |
IQN | iSCSI限定名称,一个全球唯一名称,用于以强制命名格式来识别启动器和目标:iqn.YYYY-MM.com.reversed.domain[:optional_string](iqn表示此名称将使用域作为其标识符) |
登录 | 向目标或LUN进行身份验证以开始使用客户端块设备 |
LUN | 逻辑单元号,带有编号的块设备,连接到目标并且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标仅提供一个LUN |
节点 | 任何iSCSI启动器或iSCSI目标,由其IQN来标识 |
门户 | 目标或启动器上用于建立连接的IP地址和端口。一些iSCSI实施将门户和节点互换使用 |
TPG | 目标门户组,某个特定iSCSI目标将要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置 |
targetcli配置目标服务器
准备:
CentOS7服务器一台,IP:192.168.198.128
CentOS7客户端一台,IP:192.168.198.129
服务器端
# 安装 yum install -y targetcli # 运行targetcli进入交互模式 targetcli # 准备好一个逻辑卷 http://www.cnblogs.com/cq146637/p/7806542.html # 创建后备存储 # 1. block 服务器上定义的块设备。磁盘驱动器、磁盘分区、逻辑卷、多路径设备以及服务器上定义的任何b类型的设备文件 # 2. fileio 在服务器的文件系统中创建一个指定大小的文件。此方法类似于使用映像文件作为虚拟机磁盘映像的存储 # 3. pscsi 物理SCSI。允许透传到连接服务器的物理SCSI设备。通常不使用此后备存储类型 # 4. ramdisk 在服务器上的内存中创建一个指定大小的ramdisk设备。重启时,所有数据都将丢失 # 创建一个块设备 /backstores/block create server.disk1 /dev/iscsi_vg/iscsi_lvm # 为目标创建IQN /iscsi create iqn.2018-01.com.example:server # 在TPG中,创建一个ACL以供客户端节点稍后使用 /iscsi/iqn.2018-01.com.example:server/tpg1/acls create iqn.2018-01.com.example:client # 在此TPG中,为每个现有后备存储创建一个LUN /iscsi/iqn.2018-01.com.example:server/tpg1/luns create /backstores/block/server.disk1 # 在TPG中,创建一个门户配置以指定侦听IP地址和端口 /iscsi/iqn.2018-01.com.example:server/tpg1/portals create 192.168.198.128 # 保存配置 saveconfig # 退出 exit # 启动服务,并配置为开机自启动 systemctl enable target systemctl restart target
客户端
# 安装 yum install -y iscsi-initiator-utils # 修改配置中的ACL为服务器指定的ACL vim /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2018-01.com.example:client :wq # 启动服务,并配置为开启自启动 systemctl enable iscsi iscsid systemctl restart iscsi iscsid # 发现一下服务器,两次iscsiadm -m node是为了防止不能正常重启的BUG iscsiadm -m discovery -t st -p 192.168.198.128 iscsiadm -m node -T iqn.2018-01.com.example:server iscsiadm -m node -T iqn.2018-01.com.example:server -l # 发现到块设备以磁盘形式挂载到系统上,使用命令就可以查看到相应大小的存储设备 fdisk -l # 使用此设备,一定要看清楚是否是相应大小的设备,如果对正在使用的磁盘制作文件系统后果不堪设想!!! mkfs.ext4 /dev/sdb # 追加磁盘UUID到fstab文件中,配置开机自动挂载 blkid /dev/sdb >> /etc/fstab
vim /etc/fstab UUID="ec694b7a-9d33-4053-a4f5-a8b0cbeabad8" /mnt/iscsi ext4 defaults,_netdev 0 0 # 创建挂载点 mkdir /mnt/iscsi # 挂载 mount -a # 查看 df -h # 结果: /dev/sdb 2.0G 6.0M 1.9G 1% /mnt/iscsi # 重启客户端后依然可以看到挂载成功!!!