共计 3014 个字符,预计需要花费 8 分钟才能阅读完成。
iSCSI 是一种块级别的协议,用于通过 TCP/IP 网络共享 原始存储设备,可以用已经存在的 IP 和以太网如网卡、交换机、路由器等通过 iSCSI 协议共享和访问存储。iSCSI target 是一种由远程 iSCSI 服务器(target)提供的远程硬盘。
在 Linux 中安装 iSCSI Target
我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI 服务器称为“Target(目标器)”,它提供服务器上的存储共享。iSCSI 客户端称为“Initiator(发起程序)”,它访问目标器共享的存储。市场中有卖的用于大型存储服务如 SAN 的 iSCSI 适配器。
我们为什么要在大型存储领域中使用 iSCSI 适配器
以太网适配器(NIC)被设计用于在系统、服务器和存储设备如 NAS 间传输分组数据,它不适合在 Internet 中传输块级数据。
iSCSI Target 的功能
- 可以在一台机器上运行几个 iSCSI 目标器
- 一台机器可以提供多个 iSCSI 目标器用于 iSCSI SAN 访问
- 一个目标器就是一块存储,并且可以通过网络被发起程序(客户端)访问
- 把这些存储汇聚在一起让它们在网络中可以访问的是 iSCSI LUN(逻辑单元号)
- iSCSI 支持在同一个会话中使用多个连接
- iSCSI 发起程序在网络中发现目标接着用 LUN 验证并登录,这样就可以本地访问远程存储。
- 我们可以在本地挂载的 LUN 上安装任何操作系统,就像我们安装我们本地的操作系统一样。
为什么需要 iSCSI?
在虚拟化中,我们需要存储拥有高度的冗余性、稳定性,iSCSI 以低成本的方式提供了这些特性。与使用光纤通道的 SAN 比起来,我们可以使用已经存在的设备比如 NIC、以太网交换机等建造一个低成本的 SAN。
现在我开始使用 iSCSI 目标器安装并配置安全存储。本篇中,我们遵循下面的步骤:
- 我们需要隔离一个系统来设置 iSCSI 目标器和发起程序(客户端)。
- 在大型存储环境中可以添加多个硬盘,但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。
- 这里我们只使用了 2 块硬盘,一个用于基本的服务器安装,另外一个用于存储(LUN),这个我们会在这个系列的第二篇描述。
主服务器设置
- 操作系统 – CentOS 6.5 (Final)
- iSCSI 目标器 IP – 192.168.0.200
- 使用的端口 : TCP 860, 3260
- 配置文件 : /etc/tgt/targets.conf
安装 iSCSI Target
打开终端并使用 yum 命令来搜索需要在 iscsi 目标器上安装的包名。
- # yum search iscsi
输出示例
- ========================== N/S matched: iscsi =======================
- iscsi–initiator–utils.x86_64 : iSCSI daemon and utility programs
- iscsi–initiator–utils–devel.x86_64 :Development files for iscsi–initiator–utils
- lsscsi.x86_64 :List SCSI devices (or hosts)and associated information
- scsi–target–utils.x86_64 :The SCSI target daemon and utility programs
你会的到上面的那些结果,选择 Target 包来安装。
- # yum install scsi-target-utils -y
安装 iSCSI 工具
列出安装的包里面的内容来了解默认的配置、服务和 man 页面的位置。
- # rpm -ql scsi-target-utils.x86_64
列出所有的 iSCSI 包里面的文件
让我们启动 iSCSI 服务,并检查服务运行的状态,iSCSI 的服务名是tgtd。
- # /etc/init.d/tgtd start
- # /etc/init.d/tgtd status
启动 iSCSI 服务
现在我们需要配置开机自动启动。
- # chkconfig tgtd on
现在验证 tgtd 服务的运行级别是否配置正确。
- # chkconfig –list tgtd
开机启动 iSCSI
现在使用 tgtadm 来列出在我们的服务器上已经配置了哪些 target 和 LUN。
- # tgtadm –mode target –op show
tgtd已经安装并在运行了,但是上面的命令没有 输出 因为我们还没有在 Target 服务器上定义 LUN。要查看手册,可以运行‘man‘命令。
- # man tgtadm
iSCSI Man 页面
如果你的目标器上有 iptable 的话,那么我们需要为 iSCSI 添加 iptable 规则。首先使用 netstat 命令找出 iscsi target 的端口号,目标器总是监听 TCP 端口 3260。
- # netstat -tulnp | grep tgtd
找出 iSCSI 端口
下面加入如下规则让 iptable 允许广播 iSCSI 目标器发现包。
- # iptables -A INPUT -i eth0 -p tcp –dport 860 -m state –state NEW,ESTABLISHED -j ACCEPT
- # iptables -A INPUT -i eth0 -p tcp –dport 3260 -m state –state NEW,ESTABLISHED -j ACCEPT
打开 iSCSI 端口
添加 iSCSI 端口到 iptable 中
注意 :规则可能根据你的 默认链策略 而不同。接着保存 iptable 并重启该服务。
- # iptables-save
- # /etc/init.d/iptables restart
重启 iptable
现在我们已经部署了一个目标器来共享 LUN 给通过 TCP/IP 认证的发起程序。这也适用于从小到大规模的生产环境。
在我的下篇文章中,我会展示如何在目标器中使用 LVM 创建 LUN,并且如何在客户端中共享 LUN,不要忘记留下有价值的评论。
————————————– 分割线 ————————————–
基于 RHCS+iSCSI+CLVM 实现 Web 服务的共享存储集群架构 http://www.linuxidc.com/Linux/2013-05/84888.htm
Linux 环境 iSCSI 存储及多路径功能配置 http://www.linuxidc.com/Linux/2013-05/84635.htm
构建基于 IP SAN 的 iSCSI 存储系统 http://www.linuxidc.com/Linux/2013-05/84570.htm
iSCSI 连接不上解决 http://www.linuxidc.com/Linux/2013-01/78462.htm
Citrix XenServer 中安装 CentOS 6.0 并配置 iSCSI 服务 http://www.linuxidc.com/Linux/2013-01/78461.htm
CentOS 5.3 使用 iSCSI 挂载存储磁盘柜 http://www.linuxidc.com/Linux/2011-01/31529.htm
带你 3 步快速掌握 iSCSI 搭建 http://www.linuxidc.com/Linux/2014-09/106853.htm
————————————– 分割线 ————————————–