6.7 KiB
在RHEL/CentOS/Fedora上使用iSCSI Target创建集中式安全存储 - 第一部分
iSCSI 是一种就块级别协议,用于通过TCP/IP网络共享原始存储设备,可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种远程iSCSI服务器或者taget上的远程硬盘。
我们不需要在客户端为了稳定的连接和性能而占用很大的资源。iSCSI服务器称为Target,它共享存储。iSCSI客户端称为Initiator,它访问Target服务器行的存储。市场中有用于大型存储服务如SAN的iSCSI适配器。
我们为什么要在大型存储领域中使用iSCSI适配器
以太网适配器(NIC)被设计用于在系统、服务器和存储设备如NAS间传输分组数据,它不适合在Internet中传输块级别数据。
iSCSI Target的功能
- 可以在一台机器上运行几个iSCSI target
- 一台机器的多个iSCSI target可以在iSCSI中访问
- 一个target就是一块存储,并且可以通过网络被初始化器(客户端)访问
- 把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN(逻辑单元号)
- iSCSI支持在同一个会话中含有多个连接
- iSCSI初始化器在网络中发现目标接着用LUN验证并登录,这样就可以本地访问远程存储。
- 我们了一在本地挂载的LUN上安装任何操作系统,就像我们安装我们本地的操作系统一样。
为什么需要iSCSI?
在虚拟化中,我们需要存储拥有高度的冗余性、稳定性,iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来,我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。
现在我开始使用iSCSI Target安装并配置安全存储。本篇中,我们遵循下面的步骤
- 我们需要隔离一个系统来设置iSCSI Target服务器和初始化器(客户端)。
- 可以在大型存储环境中添加多个硬盘,但是我们除了基本的安装盘之外只使用一个额外的驱动器。
- 现在我们只使用2块硬盘,一个用于基本的服务器安装,另外一个用于存储(LUN),这个我们会在这个系列的第二篇描述。
主服务器设置
- 操作系统 – CentOS release 6.5 (最终版)
- iSCSI Target IP – 192.168.0.200
- 使用的端口 : TCP 860, 3260
- 配置文件 : /etc/tgt/targets.conf
安装 iSCSI Target
打开终端并使用yum命令来搜索我们需要在iscsi target上安装的包名。
# 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
We got the search result as above, choose the Target package and install to play around. 你会的到上面的那些结果,选择Target包来安装
# yum install scsi-target-utils -y
列出安装的包来了解默认的配置、服务和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 页面
最终我们需要为iSCSI添加iptable规则,如果你的target服务器上存在iptable的话。首先使用netstat命令找出iscsi target的端口号,target总是监听TCP端口3260。
# netstat -tulnp | grep tgtd
找出iSCSI端口
下面加入如下规则让iptable允许广播iSCSI target发现包。
# 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
现在我们已经部署了一个target服务器来共享LUN给通过TCP/IP认证的初始化器。这也适用于从小到大规模的生产环境。
在我的下篇文章中,我会展示如何在Target服务器中使用LVM创建LUN,并且如何在客户端中共享LUN,在此之前请继续关注TecMint获取更多的更新,并且不要忘记留下有价值的评论。
via: http://www.tecmint.com/create-centralized-secure-storage-using-iscsi-targetin-linux/
作者:Babin Lonston 译者:geekpi 校对:校对者ID