GetNAS Logo

iSCSI 块级存储服务

  • iSCSI 是一种可靠的数据存储协议。通过iSCSI,FreeNAS® 可以实现通过以太网进行连接的存储区域网络(SAN) 。准确的说,FreeNAS通过iSCSI协议为客户端(通常被称之为initiators)提供与硬盘类似的块设备,iSCSI客户端可以像使用真实的硬盘一样使用该设备。传统的SAN依赖光纤网络,必须使用光纤通道HBA卡、光纤交换机以及离散布线等光纤基础设施。而iSCSI只需要当前最普遍的以太网络,当然,配置专用网络可以提升iSCSI的性能。

    创建iSCSI存储必须了解的一些概念

    1. CHAP:它是一种身份认证方法,使用一个共享秘钥和三向认证来确定是否授权系统访问存储设备,同时会周期性的重复确认会话是否被其他系统劫持。在 iSCSI 中,CHAP 身份认证initiator (客户端)执行。
    2. Mutual CHAP(双向 CHAP):CHAP 的超集,服务端和客户端互相通信验证,进一步请百度。
    3. Initiator(发起端/客户端):把被授权访问 FreeNAS 块级存储的客户端称作 Initiator。该客户端系统需要安装 initiator 发起程序才能连接 iSCSI存储。
    4. Target(目标端/服务端):FreeNAS 系统上的存储资源称为 Target。每个 target 都有唯一的名称,这个名称被称为 IQN(iSCSI Qualified Name)。
    5. Internet Storage Name Service (iSNS) 网络存储名称服务:是一种通过 TCP/IP 网络自动发现 iSCSI 设备的协议。
    6. Extent(范围?):iSCSI共享的存储空间,就像CIFS共享需要指定数据集一样,iSCSI共享需要指定Extent作为存储空间,通常在卷中创建Zvol虚拟磁盘用于Extent。
    7. Portal(门户/入口): 监听连接请求的 IP 地址和端口。
    8. LUN:逻辑单元号,用来标识 SCSI 逻辑存储设备。iSCSI 的工作方式是这样的,Initiator 发起端与 Target 目标端协商建立一个到 LUN 的模拟连接,Initiators 发起端会把 iSCSI LUN 视为原生的 SCSI 硬盘或 IDE 硬盘。注意,如果创建了多个 iSCSI LUN,则需要为每个 LUN 分别创建新的 target。
  • 创建最简单的iSCSI存储

    FreeNAS创建iSCSI看似复杂,其实只要创建一次就会发现整个过程很有规律,并没有想象中那么难。接下来,我们一起创建一个不带身份验证的iSCSI存储,并将其附加到Windows 7系统上使用。

    创建过程分为以下7个步骤(步骤虽多,但每一步都非常简单):

    1. 在存储菜单中创建一个Zvol虚拟磁盘,该磁盘将用于Extent设置;
    2. 检查Target目标端全局配置;
    3. 创建“Portal”门户;
    4. “Initiator”发起端授权配置;
    5. 创建“Target”目标端;
    6. 创建“Extent”;
    7. 指定“Extent”与“Target”关联;

    开始吧,先创建一个Zvol虚拟磁盘。如下图所示,主菜单点选“Storage”存储,点选“Volumes”卷子菜单,在卷列表中选择Zvol要创建在哪个数据集上,然后点击下方的“Create zvol”创建Zvol按钮。在弹出窗口中输入zvol相关信息:

    1. zvol name:虚拟磁盘的名称,可以随意设置,本例名称设置为 getnas
    2. Size for this zvol:设定虚拟磁盘的容量,注意不要忘记添加单位“GiB”,本例创建的容量为 10 GiB
    3. Force size:强制设置,通常情况下,如果FreeNAS系统的可用存储空间低于总容量的80%,系统将不允许创建 Zvol 虚拟设备,如果执意要创建,则勾选此项;本例不涉及这种情况,因此保持默认不用勾选;
    4. Compression level:压缩级别,一般不需要设置,保持默认Inherit继承即可;
    5. Sparse volume:松散卷,与VirtualBox虚拟机中创建虚拟硬盘时选择动态分配或固定分配类似,创建时不会完全占用指定的空间,在使用过程中动态的占用实际的存储空间,官方不推荐这项设置。本例不涉及此项,保持默认不勾选;
    6. Block size:块大小,点击高级模式按钮会显示此项,通常,系统会自动选择最优化的设置,如有需要可以据实设置;本例不涉及此项,保持默认设置;

    设置完成,点击窗口下方“Add zvol”按钮完成虚拟磁盘创建。

    20150205205922

    zvol创建完成,在卷列表中会显示出新建的虚拟磁盘,如下图。

    20150205211811

    第二步,主菜单点选“Sharing”共享,在共享管理界面点击“Block (iSCSI)”二级菜单。先查看“Target Global Configuration”目标端全局配置,如下图所示。这里我们只需要了解一下第一项“Base Name”基本名称,系统默认的基本名称为 iqn.2011-03.org.example.istgt 这是一个标准的格式,而且使用起来没有任何问题。你也可以根据自己的偏好进行修改,比如把它改成 iqn.2015-02.org.office.istgt 。好吧,既然提到了,我们就把基本名称改成它,修改好以后点击下面的“Save”保存按钮。

    基本名称格式:iqn.<date>.<domain>.<name>.istgt

    20150205212140

    第三步,创建“Portal”门户,如下图所示,依次点选,窗口中“IP Address”这一项下拉列表中选择FreeNAS主机的IP地址即可,选择完成点击“OK”确定即可。

    20150205213506

    第四步,“Initiator”发起端授权配置,如下图所示,依次点选。这一步主要用来设置可以访问iSCSI存储的主机和网络,默认两项均设置为ALL,代表所有主机和网络均可访问;

    20150205213754

    第五步,创建“Target”目标端,如下图所示,依次点选。“Target Name”目标端名称可以随意设置,本例为myone。“Portal Group ID”和“Initiator Group ID”分别对应着第三步和第四步创建的两项ID,直接在下拉列表中选择即可。其他均保持默认,设置完成点击“OK”完成设置。

    20150205214256

    第六步,创建“Extent”,如下图所示,依次点选。“Extent Name”范围名称可随意设置,本例为 myext。“Extent Type”范围类型选择“Device”设备,并在“Device”设备这一项的下拉列表中选择第一步创建的Zvol虚拟硬盘。其他选项保持默认,设置完 成点击“OK”完成设置。

    20150205215028

    第七步,指定“Extent”与“Target”关联,如下图所示,依次点选。“LUN ID”这一项可以选择“Auto”自动,也可以在列表中选择确定的LUN ID号,本例选择自动。“Target”和“Extent”这两项分别对应第五步和第六步创建的目标端和范围,在下拉列表中分别选择即可。点击“OK”完 成设置。

    20150205215436

    重中之重,不要忘记在FreeNAS中开启iSCSI服务。

    20150205220252

    经过前面七个步骤的设置,iSCSI存储就已经配置完成了,接下来我们为 Windows 7 系统配置和使用这个块级存储。点击开始菜单,在搜索框中输入 iscsi。点击打开“iSCSI 发起程序”,如下图所示。

    20150205215948

    在“目标”中输入FreeNAS的IP地址,本例为192.168.1.111,请根据实际信息填写。填写完成,点击右侧的“快速链接”按钮。

    20150205220414

    如下图所示,快速连接中的“已发现的目标”中会显示出iSCSI存储的基本名称 iqn.2015-02.org.office.istgt。点击完成按钮。

    20150205220441

    可以看到iSCSI发起程序中显示我们创建iSCSI存储状态为“已连接”,代表这个块设备已经连接到Windows7主机上了,不信吗?往下看。

    20150205220821

    开始菜单中鼠标右键点击“计算机”,在弹出菜单中点选“管理”。

    20150205221047

    在计算机管理工具中点击左侧菜单中的“磁盘管理”,看到了吗,出现了一块容量为10GB未初始化的磁盘。

    20150205221317

    鼠标右键点击下图红色箭头起始的位置,在弹出菜单中点选“初始化磁盘”

    20150205221552

    在弹出的初始化磁盘窗口中选择磁盘分区形式,默认MBR即可,点击确定。

    20150205221706

    参照下方动态图片,创建分区。

    20150205221856