• iSCSI


    声明:本文是转载的,只是为了方便自己学习,原文戳这里

    谈到iSCSI,我能想到的就是存储分为NAS和SAN,NAS与SAN都是在DAS的基础上发展起来的,是新型数据存储模式中的两个主要发展方向。
    网络存储技术(Network Storage Technologies) 网络存储技术是基于数据存储的一种通用网络术语。网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage)、网络连接式存储(NAS:Network Attached Storage)和存储网络(SAN:Storage Area Network)。
    DAS (直连式存储,Direct Attached Storage)
    是一种直接与主机系统相连接的存储设备,如作为服务器的计算机内部硬件驱动。
    将存储设备通过SCSI 接口或光纤通道直接连接到一台计算机上。其缺点是服务器成为网络瓶颈,存储容量不易扩充; 服务器发生故障时,连接在服务器上的存储设备中的数据不能被存取。
    NAS (网络连接式存储Network Attached Storage)
    一种采用直接与网络介质相连的特殊设备实现数据存储的机制。由于这些设备都分配有 IP 地址,所以客户机通过充当数据网关的服务器可以对其进行存取访问,甚至在某些情况下,不需要任何中间介质客户机也可以直接访问这些设备。
    NAS的优点
    第一,NAS适用于那些需要通过网络将文件数据传送到多台客户机上的用户。NAS设备在数据必须长距离传送的环境中可以很好地发挥作用。
    第二,NAS设备非常易于部署。可以使NAS主机、客户机和其他设备广泛分布在整个企业的网络环境中。NAS可以提供可靠的文件级数据整合,因为文件锁定是由设备自身来处理的。
    第三,NAS应用于高效的文件共享任务中,例如UNIX中的NFS和Windows NT中的CIFS,其中基于网络的文件级锁定提供了高级并发访问保护的功能。
    SAN (存储网络Storage Area Network)
    SAN 是指存储设备相互连接且与一台服务器或一个服务器群相连的网络。其中的服务器用作 SAN 的接入点。在有些配置中,SAN 也与网络相连。SAN 中将特殊交换机当作连接设备。它们看起来很像常规的以太网络交换机,是 SAN 中的连通点。SAN 使得在各自网络上实现相互通信成为可能,同时并带来了很多有利条件。
    SAN的优点
    SAN是通过网线连接的磁盘阵列,具备磁盘阵列的所有主要特征:高容量、高效能、高可靠。
    1、SAN 具有安装容易、快速的特点
    2、易于维护
    3、非常好的可扩展性
    4、具有更快的响应速度和更高的数据带宽
    5、对服务器的要求降低,可大大降低服务器的成本,有利于高性能存储系统在更广的范围内普及及应用。

    NAS与SAN的区别
    NAS有文件操作和管理系统,而SAN却没有
    SAN主要是高速信息存储,NAS偏重文件共享。
    SAN和NAS相比不具有资源共享的特征
    SAN是只能独享的数据存储池,NAS是共享与独享兼顾的数据存储池。
    NAS是网络外挂式,而SAN是通道外挂式。
    SAN高效可扩,NAS简单灵活

    一般用在NAS中的有CIFS(在windows主机之间进行网络文件共享),NFS(用于unix上的网络文件系统),在SAN中有iSCSI(Internet 小型计算机系统接口),FCP(光纤信道协议)

    ESX storage只支持NFS,iSCSI,FCP协议,不支持cifs协议
    说了这么多有的没的,下面开始进入正题iSCSI
    什么是 iSCSI
    早期的企业使用的服务器若有大容量磁盘的需求时,通常是透过SCSI来串接SCSI 磁盘,因此服务器上面必须要加装SCSI卡,而且这个SCSI是专属于该服务器的。 后来这个外接式的SCSI设备被SAN的架构所取代,在SAN的标准架构下,虽然有很多的服务器可以对同一个SAN 进行存取的动作,不过为了速度需求,通常使用的是光纤通道。但是光纤通道很贵,不但设备贵,服务器上面也要有光纤卡,很麻烦,所以光纤的SAN在中小企业很难普及。
    后来网络实在太普及,尤其是以IP封包为基础的LAN技术已经很成熟,再加上以太网路的速度越来越快,所以就有厂商将SAN的连接方式改为利用IP技术来处理。 然后再透过一些标准的设定,最后就得到Internet SCSI (iSCSI)这个的产生! iSCSI主要是透过TCP/IP的技术,将储存设备端透过iSCSI target (iSCSI目标端)功能,做成可以提供磁盘的服务器端,再透过iSCSI initiator (iSCSI初始化用户)功能,做成能够挂载使用iSCSI target的用户端,如此便能透过iSCSI设置来进行磁盘的应用了。
    也就是说,iSCSI 这个架构主要将储存装置与使用的主机分为两个部分,分别是:

    • iSCSI target:就是储存设备端,存放磁盘或RAID的设备,目前也能够将Linux主机模拟成iSCSI target了! 目的在提供其他主机使用的『磁盘』;
    • iSCSI initiator:就是能够使用target的用户端,通常是服务器。 也就是说,想要连接到iSCSI target的服务器,也必须要安装iSCSI initiator的相关功能后才能够使用iSCSI target提供的磁盘。

    配置iSCSI实验环境:两台主机
    主机A:
    主机名:Jerry (initiator端)
    eth0:192.168.186.130
    主机B:
    主机名:Tom(target端)
    eth0:192.168.186.207
    先来配置initiator端
    安装iscsi initiator
    可以用rpm –qa |grep iscsi查看是否安装,iscsi initiator可以从linux系统镜像中找到.rpm安装就行。
    安装好以后,我们再来看看initiator的配置文件
    /etc/iscsi/initiatorname.iscsi 只有一行iqn,是target端识别initiator的唯一标识,默认就行。
    iqn.yyyy-mm.:identifier
    iqn.年-月.单位网域名的反转写法:这个分享的target名称
    例如我的就是:iqn.2012-04.com.redhat:2cc7d328b934
    这个iqn是initiator端 /etc/iscsi/initiatorname.iscsi文件中的,即target端通过initiator端的iqn号把新设备/dev/sdb 注册给initiator,这样initiator就可以用新的磁盘了。

    /etc/iscsi/iscsid.conf 主要的配置文件

    node.startup = automatic 是表示当iscsi initator启动时就会自动登陆到target。
    CHAP Settings” 主要是一些安全设置。
    Timeouts” 部分是我们重点关注的地方:
    node.session.timeo.replacement_timeout 指网络出现问题,多长时间通知上层:

    node.session.timeo.replacement_timeout = 120 

    一般我们可以把这个时间改小,防止IO被hang太长时间,如:
    node.session.timeo.replacement_timeout = 3

    下面两个时间是sessison登录和登出Target的超时时间,也可以适当减少。

     node.conn[0].timeo.login_timeout = 15 
      node.conn[0].timeo.logout_timeout = 15

    node.conn[0].timeo.noop_out_interval 指发ping包的时间间隔,
    node.conn[0].timeo.noop_out_timeout 为接收心跳包的超时时间

      node.conn[0].timeo.noop_out_interval = 5 
      node.conn[0].timeo.noop_out_timeout = 5 

    这两个时间根据需要减少,如:

      node.conn[0].timeo.noop_out_interval = 1 
      node.conn[0].timeo.noop_out_timeout = 1

    node.session.initial_login_retry_max 为登录的重试次数:
    node.session.initial_login_retry_max = 4
    可以适当减少到 2:

    node.session.initial_login_retry_max = 2

    启动iscsi initiator服务
    service iscsi start/etc/init.d/iscsi start

    配置target端
    iSCSI 就是透过一个网路介质,将现有的磁盘给分享出去就是了。那么有哪些类型的磁盘可以分享呢?这包括:
    使用dd 指令所建立的大型文件可供模拟为磁碟(无须预先格式化);
    使用单一分区(partition) 分享为磁盘;
    使用单一完整的磁盘(无须预先分区);
    使用磁碟阵列分享(其实与单一磁盘相同方式);
    使用软磁盘阵列(software raid) 分享成单一磁盘;
    使用LVM 的装置分享为磁盘。
    其实没有那么复杂,我们大概知道可以透过(1)大型文件; (2)单一分区; (3)单一设备(包括磁盘、阵列、软磁盘阵列、LVM装置文件等等) 来进行分享。要注意,等一下我们要分享出去的资料,最好不要被使用,也最好不要开机就被挂载(/etc/fstab 当中没有存在记录的意思)
    既然iSCSI要分享的是磁盘,那么我们要准备一个新的磁盘,在虚拟机中加一块新的磁盘/dev/sdb
    解压软件包

    cd /usr/local/src/
    tar zxvf iscsitarget-1.4.20.2.tar.gz
    make
    make install

    加入系统服务
    chkconfig --add iscsi-target 就可以通过service iscsi-target start来启动他了
    配置iSCSI target

    vim  /etc/iet/ietd.conf
    Target iqn.2012-04.com.redhat:2cc7d328b934
    Lun 0 Path=/dev/sdb,Type=blockio,ScsiId=xyz,ScsiSN=xyz

    其中内容中的Target后面是Target的名称,一般名称为:iqn..com.:,
    其中为年月,为主机名,<为存储的名称,可以随便起一个名字。
    Lun 1是指这个设备共享出去的Lun Id,同一个Target Lun Id不能重复。Type=blockio是指定使用blockio的方式,
    也可以使用fileio,如果使用了fileio,会使用操作系统的文件缓存,如果出现掉电,可能会丢数据。使用blockio则没有这个问题。
    IscsiId是这个Lun的名字,随便起一个名字就可以了。
    启动iSCSI target

    service iscsi-target start

    查看iSCSI-target共享出的硬盘

    cat /proc/net/iet/volume

    查看客户端(initiator端)登陆到target的情况

    cat /proc/net/iet/session

    两端的基本配置设置好后
    iscsi initiator主要通过iscsiadm命令管理,我们先查看提供服务的iscsi target机器上有哪些target:
    iscsiadm --mode discovery --type sendtargets --portal 192.168.186.207
    然后就可以登陆某个target了,登陆成功某个target后,这个target下的硬盘也就都共享过来了:

    iscsiadm --mode node --targetname iqn.2012-04.com.redhat:2cc7d328b934 –portal 192.168.186.207:3260 --login

    登陆之后要对新磁盘进行分区,格式化,然后在挂载即可
    完成这些命令后,iscsi initator会把这些信息记录到/var/lib/iscsi目录下:
    /var/lib/iscsi/send_targets记录了各个target的情况,/var/lib/iscsi/nodes记录了各个target下的nodes情况。
    下次再启动iscsi initator时(service iscsi start),就会自动登陆各个target上。如果想让重新手工登陆各个target,需要把/var/lib/iscsi/send_targets目录下的内容和/var/lib/iscsi/nodes下的内容全部删除掉。
    要查看各个iscsi的信息:

     iscsiadm -m session -P 3

    这个只是简单地共享一个磁盘,真正的企业中用到的应该是共享raid,nfs等,以后真正实践了再更新吧。第一次写技术博客,写的时候又是激动又是骄傲的,有很多不好的地方,以后会多多注意,我相信只要多做,多写,多理解,一定可以变得更优秀。。。

  • 相关阅读:
    Sublime 官方安装方法
    Notepad2、Sublime_text带图标的右键快捷打开方式
    创业公司如何实施敏捷开发
    如果有人让你推荐编程技术书,请叫他看这个列表
    Spring cron表达式详解
    Spring定时任务的几种实现
    spring注解方式 idea报could not autowire,eclipse却没有问题
    mysql处理海量数据时的一些优化查询速度方法
    Hexo重装小结
    修改JAVA代码,需要重启Tomcat的原因
  • 原文地址:https://www.cnblogs.com/zandon/p/11923621.html
Copyright © 2020-2023  润新知