• 使用iSCSI Target创建集中式安全存储(一)


    iSCSI 是一种块级别的协议,用于通过TCP/IP网络共享原始存储设备,可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种由远程iSCSI服务器(target)提供的远程硬盘。

    Install iSCSI Target in Linux

    在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 目标器上安装的包名。

    1. # yum search iscsi

    输出示例

    1. ========================== N/S matched: iscsi =======================
    2. iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs
    3. iscsi-initiator-utils-devel.x86_64 :Development files for iscsi-initiator-utils
    4. lsscsi.x86_64 :List SCSI devices (or hosts)and associated information
    5. scsi-target-utils.x86_64 :The SCSI target daemon and utility programs

    你会的到上面的那些结果,选择Target包来安装。

    1. # yum install scsi-target-utils -y

    Install iSCSI Utils

    安装iSCSI工具

    列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。

    1. # rpm -ql scsi-target-utils.x86_64

    List All iSCSI Files

    列出所有的iSCSI包里面的文件

    让我们启动iSCSI服务,并检查服务运行的状态,iSCSI的服务名是tgtd

    1. # /etc/init.d/tgtd start
    2. # /etc/init.d/tgtd status

    Start iSCSI Service

    启动iSCSI服务

    现在我们需要配置开机自动启动。

    1. # chkconfig tgtd on

    现在验证tgtd服务的运行级别是否配置正确。

    1. # chkconfig --list tgtd

    Enable iSCSI on Startup

    开机启动iSCSI

    现在使用tgtadm来列出在我们的服务器上已经配置了哪些target和LUN。

    1. # tgtadm --mode target --op show

    tgtd已经安装并在运行了,但是上面的命令没有输出因为我们还没有在Target服务器上定义LUN。要查看手册,可以运行‘man‘命令。

    1. # man tgtadm

    iSCSI Man Pages

    iSCSI Man 页面

    如果你的目标器上有iptable的话,那么我们需要为iSCSI添加iptable规则。首先使用netstat命令找出iscsi target的端口号,目标器总是监听TCP端口3260。

    1. # netstat -tulnp | grep tgtd

    Find iSCSI Port

    找出iSCSI端口

    下面加入如下规则让iptable允许广播iSCSI 目标器发现包。

    1. # iptables -A INPUT -i eth0 -p tcp --dport 860 -m state --state NEW,ESTABLISHED -j ACCEPT
    2. # iptables -A INPUT -i eth0 -p tcp --dport 3260 -m state --state NEW,ESTABLISHED -j ACCEPT

    Open iSCSI Ports

    打开iSCSI端口

    Add iSCSI Ports to Iptables

    添加iSCSI端口到iptable中

    注意: 规则可能根据你的默认链策略而不同。接着保存iptable并重启该服务。

    1. # iptables-save
    2. # /etc/init.d/iptables restart

    Restart iptables

    重启iptable

    现在我们已经部署了一个目标器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。

    在我的下篇文章中,我会展示如何在目标器中使用LVM创建LUN,并且如何在客户端中共享LUN,不要忘记留下有价值的评论。

  • 相关阅读:
    PHP遍历数组元素
    In PHP5, what is the difference between using self and $this? When is each appropriate?
    了解如何构建 Metro 样式的应用程序
    HTML5在路上
    meta 之 viewport
    dede数据库连接文件
    windows 环境安装wamp软件实现php开发环境
    域名空间那些事
    Javascript编程风格
    apache 服务器修改网站默认首页
  • 原文地址:https://www.cnblogs.com/wycc/p/6544507.html
Copyright © 2020-2023  润新知