SAN它是storage area network(存储区域网络)速记,早期san光纤通道技术被用于。当迟到iscsi协议后出现,为了在这两者之间区分。它分IP SAN和FC SAN。FC SAN由于其价格高格因此,许多公司回避。IP SAN一个非常好的取代产品出如今了人们的视线中。如今大部分存储设备提供支持基于TOE技术的接口,能够在硬件基础上处理TCP/IP协议。这意味着ISCSI设备能够处理速度已接近GigE、约100MB/秒的传输数据速率来处理I/O进程。其速率可与FC SAN的相比



    IP SAN的操作流程大体例如以下:

    initiator作为server端去使用远程target上的一个lun(逻辑单元号),一个target即一个主机。一个主机上能够共享多个硬盘给initiator使用。我们把每个硬盘叫做一个lun。为了使用iscsi协议。initiator上要封装scsi driven,iscsi driven和tcp/ip的报文通过网络发送给target上,target以此扯掉这些报文。发现对方发送的scsi协议,进而交给本地的硬盘驱动处理。所以target上不用必须装scsi的硬盘。像传统的sata盘都能够在这个架构中使用。从用户的角度来看,就像在使用本地的client一样,方便简单。



    这里我们来完毕一个IP SAN的实验:

   192.168.1.121做我们的initator

   192.168.1.122做我们的target,而且提供1块10G的IDE硬盘和10G的SCSI硬盘输出。(当然也能够创建一个分区输出。可是不建议这样做)

    

    第一块硬盘:

Disk /dev/sda: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



    第二块硬盘:

Disk /dev/sdc: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000



    192.168.1.122的操作流程例如以下:

    # yum install scsi-target-utils

    # rpm -ql scsi-target-utils(能够查看一些包信息)

    # service tgtd restart

    # chkconfig tgtd on

    # tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2014-05.com.qiguo.node:target1

    解释:--lld指定driven。--mode指定模式。--op指定模式操作,--tid指定target_id。--targetname指定target的名称,这里使用iqn的命名方式,这里就是新增了一个target,而且target_id为1。target的名称为iqn.2014-05.com.qiguo.node:target1

    # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sda

    解释:这里就是在target_id为1的上面添加了一个lun。其值为1。后端的存储设备为/dev/sda,一个target上最多存储32个lun

    # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 --backing-store /dev/sdc

    # tgtadm --lld iscsi --mode target --op show

    解释:能够查看当前的target信息和lun信息

    # tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.1.121

    解释:target_id为1的同意IP为192.168.1.121的这台主机訪问

   

    192.168.1.121的操作流程例如以下:

    # yum install iscsi-initiator-utils

    # echo "InitiatorName=`iscsi-iname -p iqn.2013-05.com.qiguo.initiator1`" > initiatorname.iscsi  #生成initiator的名称

    # iscsiadm -m discovery -t st -p 192.168.1.122:3260   #使用的时候会自己主动启动iscsid进程。意思为在192.168.1.122的3260port以sendtargets的类型寻找iscsi target设备

    显示内容例如以下:192.168.1.122:3260,1 iqn.2014-05.com.qiguo.node:target1 

    # iscsiadm -m node -d 2 -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -l #-d显示debug的级别,-T指定远程主机的targetName,-l选择登陆到远程主机

    # fdisk -l



    假设看到两个新的硬盘。证明登陆成功。就能够对其进行分区了。

当client不想使用这个iscsi设备的时候,使用iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -u就可以。

可是这仅仅是在当前有效,当重新启动以后,仅仅要server端继续在共享这个设备。client仍然会看到这个设备。这时须要删除数据库的信息。使用iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -o delete就能够把/var/lib/iscsi/sent_targets中的发现设备信息删除。当再次又一次启动的时候就不会有这个设备信息了。

 

    当server端不想给某台主机共享iscsi设备的时候。能够使用tgtadm --lld iscsi --mode target --op unbind --tid 1 --initiator-address 192.168.1.121;假设不想提供某个lun的时候能够使用tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 2;假设不想提供target的时候能够使用tgtadm --lld iscsi --mode target --op
delete --tid 1。



    iscsi不只能够使用基于ip的认证,还能够做使用用户的认证,其认证用的是CHAP(Challenge Handshake Authentication Protocol)挑战试握手认证协议。iscsi默认支持两种级别的CHAP认证。

基于initiator的认证和基于target的认证。基于initiator的认证就是当initiator连接target的时候,initiator须要提供一个账号和password供target进行认证,这样的账号叫做incoming账号。基于target的认证就是当initiator连接target的时候,target须要提供一个账号和password供initiator进行认证。这样的账号叫做outcoming账号。

initiator认证能够单独使用,而target认证须要同一时候使用initiator认证。以下再来配置一个双向认证的过程,主机仍然是上面的主机。

在target上面的操作例如以下:

    # tgtadm --lld iscsi --mode account --op new --user qiguo --pass qiguo 创建一个incoming账号

    # tgtadm --lld iscsi --mode account --op new --user qiguoin --pass qiguoin 创建一个outcomming账号

    # tgtadm --lld iscsi --mode account --op bind --tid 1 --user qiguo 

    # tgtadm --lld iscsi --mode account --op bind --tid 1 --user qiguoin --outgoing

    

    在initiator上面的操作例如以下:

    编辑配置文件/etc/iscsi/iscsid.conf,改动例如以下几项

    node.session.auth.authmethod = CHAP

    node.session.auth.username = qiguo

    node.session.auth.password = qiguo

    node.session.auth.username_in = qiguoin

    node.session.auth.password_in = qiguoin

    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -u 

    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -o delete

    # rm -rf /var/lib/iscsi/send_targets/

    # iscsiadm -m discovery -t st -p 192.168.1.122:3260

    # iscsiadm -m node -T iqn.2014-05.com.qiguo.node:target1 -p 192.168.1.122:3260 -l

    基于CHAP的双向认证过程,须要做到下面几点:

    1.CHAP不支持discovery的发现认证,所以在发现的时候须要借用到ip的认证

    2.改动配置文件iscsid.conf以后。须要删除曾经的发现信息。要保证/var/lib/iscsi/文件夹中的send_targets,nodes,ifaces文件夹下没有不论什么内容

    3.要保证incoming和outcoming的账号必须保持一值。否则会登陆不了



    最后还要说明一点,当server端重新启动以后,server端上的target和lun就会不见。要想让其有效,须要使用配置文件/etc/tgt/targets.conf,使用上面介绍的双向认证的配置文件为:

    <target iqn.2014-05.com.qiguo.node:target1>

    backing-store /dev/sda

    backing-store /dev/sdc

    initiator-address 192.168.1.121

    incominguser qiguo qiguo

    outgoinguser qiguoin qiguoin

    </target>

    此番启动后再次。只有到tgtd服务启动。会不会自己主动保存的配置信息

版权声明:本文博主原创文章,博客,未经同意不得转载。

基于ip san的iscsi操作执行过程的更多相关文章

  1. Linux下IP SAN共享存储操作记录

    一.简单介绍SAN,即存储区域网络(storage area network and SAN protocols),它是一种高速网络实现计算机与存储系统之间的数据传输.常见的分类是FC-SAN和IP- ...

  2. 一条 sql 的执行过程详解

    写操作执行过程 如果这条sql是写操作(insert.update.delete),那么大致的过程如下,其中引擎层是属于 InnoDB 存储引擎的,因为InnoDB 是默认的存储引擎,也是主流的,所以 ...

  3. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  4. JVM--a == (a = b)基于栈的解释器执行过程

    前言 在翻阅ConcurrentLinkedQueue的代码的时候,发现这样一段代码在JDK源码中总是出现. t != (t = tail) 原先总是以为这不就是 t != t ?很是纳闷,遂Demo ...

  5. jvm | 基于栈的解释器执行过程

    一段简单的算术代码: public class Demo { public static void main(String[] args) { int a = 1; int b = 2; int c ...

  6. [转帖]DAS、NAS、SAN、iSCSI 存储方案概述

    目前服务器所使用的专业存储方案有DAS.NAS.SAN.iSCSI几种.存储根据服务器类型可以分为:封闭系统的存储和开放系统的存储:        (1)封闭系统主要指大型机.        (2)开 ...

  7. DAS、NAS、SAN、iSCSI 存储方案概述

    (转自https://blog.csdn.net/tianlesoftware/article/details/6201346) 目前服务器所使用的专业存储方案有DAS.NAS.SAN.iSCSI几种 ...

  8. 《Linux内核分析》第八周 进程的切换和系统的一般执行过程

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK EIGHT ...

  9. LINUX内核分析第八周学习总结:进程的切换和系统的一般执行过程

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.进程切换的关 ...

随机推荐

  1. 【Android进阶】自定义控件实现底部扇形展开菜单效果

    这个项目是优化的其他人的,主要优化了界面菜单的显示,下面开始. 先看效果图 项目的总结构 下面开始贴代码,由于必要的地方都添加了注释,所以不过多讲解 anim_button.xml <?xml ...

  2. linux内核数据包转发流程(三)网卡帧接收分析

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 每一个cpu都有队列来处理接收到的帧,都有其数据结构来处理入口和出口流量,因此,不 ...

  3. —教训深刻—SQL Server大约TempDB使用

    场景现象 中午查询了流水,因未与业务人员沟通好.忘了删选条件,导致TempDB不能分配空间,SQL Server高负载执行. 错误分析 我们来看看错误日志: 再来看看TempDB自增长记录: 事件 逻 ...

  4. openocd 如何支持FreeRTOS 8.1.2

    沉寂了数年,认为我们应该分享一下.前段时间通过FreeRTOS做点什么,大家纷纷拿出来拍砖. 我应该说,Linux现在粉丝.所以,我的业余时间来分享它通常应用的经验Linux作为桌面开发平台.无需再费 ...

  5. Windows创建的基本含义和进程的进程的内核

    过程 1 这意味着过程: 1.1   一个是在操作系统的内核对象管理处理. 的统计信息的地方. 1.2   还有一个是地址空间.它包括全部可运行模块或DL L 模块的代码和数据.它还包括动态内存分配的 ...

  6. apache-maven-3.2.1设备

    maven 是一个项目管理工具,并建立自己主动.本文所讲apache-maven-3.2.1设备. 它的下载: http://maven.apache.org/download.cgi ,选apach ...

  7. 设置SQLServer数据库中某些表为只读的多种方法

    原文:设置SQLServer数据库中某些表为只读的多种方法 翻译自:http://www.mssqltips.com/sqlservertip/2711/different-ways-to-make- ...

  8. ZOJ 2760 How Many Shortest Path(Dijistra + ISAP 最大流)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 题意:给定一个带权有向图 G=(V, E)和源点 s.汇点 t ...

  9. iOS一个开发系列中 - UIButton 使用摘要

    // 初始化button并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 可以定义的UIButto ...

  10. [SignalR]初步认识以及安装

    原文:[SignalR]初步认识以及安装 1.什么是ASP.NET SignalR? ASP .NET SignalR是一个 ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时 ...