CentOS 6.x下配置iSCSI网络存储

一、简介

iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的、可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。

iSCSI是一种基于TCP/IP 的协议,用来建立和管理IP存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。SCSI 结构基于C/S模式,其通常应用环境是:设备互相靠近,并且这些设备由SCSI 总线连接。

iSCSI 的主要功能是在TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。

完整的iSCSI系统的拓扑结构如下:

iscsi

二、实验环境

操作系统:CentOS release 6.3 (Final)

iSCSI Target:192.168.1.21 / scsi-target-utils-1.0.24-12.el6_5.i686

iSCSI Initiator:192.168.1.22 / iscsi-initiator-utils-6.2.0.873-10.el6.i686

防火墙已关闭/iptables: Firewall is not running.

SELINUX=disabled

三、准备工作

iSCSI可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等,下面我们将准备其中的几种来测试,其他类型大家可以自行测试。

3.1 模拟镜像

在iSCSI Target的/srv目录下创建一个200M大小的镜像文件。

# mkdir /srv/iscsi

# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=200

# ll -lh /srv/iscsi/disk1.img

1

3.2 建立分区

创建一个500M大小的分区/dev/sdb1.

# fdisk /dev/sdb

2

3.3 创建逻辑卷

创建一个800M大小的LV.

# pvcreate /dev/sdc

# vgcreate vg0 /dev/sdc

# lvcreate -L 800M -n lv1 vg0

3

四、配置iSCSI Target

4.1 安装tgt

CentOS 自带了scsi-target-utils 软件,我们使用该软件进行target设置。

# yum -y install scsi-target-utils

4.2 配置tgt

tgt的主配置文件为/etc/tgt/targets.conf,下面我们来设置改文件。

在该文件最后新增以下设置:

<target iqn.2014-07.dev.iscsi-target:iscsidisk> 
    backing-store /srv/iscsi/disk1.img 
    backing-store /dev/sdb1 
    backing-store /dev/vg0/lv1 
    backing-store /dev/sdd 
</target>

说明:

iqn = iSCSI Qualified Name

iSCSI target的名称规则如下:

iqn.2014-07.dev.iscsi-target:iscsidisk

iqn.年份-月份.域名反写.设备识别

每个在同一个target上的backing-store 称为逻辑单元号(Logical Unit Number,LUN),这个实验中有4个LUN。

其他高级设置如initiator-address、incominguser,大家自行查资料。

4.3 启动iSCSI target

# /etc/init.d/tgtd start

# chkconfig tgtd on

# netstat -tulnp|grep tgt

4

4.4 查看iSCSI target

# tgt-admin –show

5

6

LUN0 是控制器,可以看到各个LUN的大小和磁盘路径。

至此,iSCSI Target 设定完毕。

五、配置iSCSI Initiator

5.1 安装initiator

# yum -y install iscsi-initiator-utils

5.2 设置开机启动

# chkconfig iscsid on

# chkconfig iscsi on

5.3 配置文档

initiator的配置文档位于/etc/iscsi/,该目录下有两个文件,initiatorname.iscsi 和iscsid.conf,

其中iscsid.conf 是其配置文件,initiatorname.iscsi 是标记了initiator的名称,它的默认名称是InitiatorName=iqn.1994-05.com.redhat:b45be5af6021,我们可以根据实际情况进行更改,比较好区分,这里我们修改为InitiatorName=iqn.2014-07.dev.iscsi-initiator:initiator。

8

因为在target里面,我们并没有设置访问限制,所以iscsid.conf 文件并不需要修改。

5.4 侦测target

如果我们事先不知道目标主机的target名称,我们就需要进行侦测,下面来讲解。

# iscsiadm -m discovery -t sendtargets -p 192.168.1.21

9

说明:

-m discovery  //侦测target
-t sendtargets  //通过iscsi协议
-p IP:port  //指定target的IP和port,不写port的话,默认为3260

5.5 查看nodes

iscsiadm 侦测到的结果会写入/var/lib/iscsi/nodes/ 中,因此只需启动/etc/init.d/iscsi 就能够在下次开机时,自动连接到正确的target了。

# ll -R /var/lib/iscsi/nodes/

10侦测信息都写入了/var/lib/iscsi/nodes/iqn.2014-07.dev.iscsi-target:iscsidisk/192.168.1.21,3260,1/default 文件中了。

5.6 连接target

查看目前系统上面所有的target

# iscsiadm -m node

登录target

# iscsiadm -m node -T iqn.2014-07.dev.iscsi-target:iscsidisk –login

11

5.7 查看磁盘情况

# fdisk –l

12

可以看到,initiator 上面多了四块硬盘,大小和target上的LUN一致。这时你就可以像使用本地磁盘一样使用这些iSCSI设备了,下面我们来测试。

5.8 将/dev/sdb 和/dev/sdc 创建成LV挂载使用

创建LV

# pvcreate /dev/sdb /dev/sdc

# vgcreate iscsi /dev/sdb /dev/sdc

# lvcreate -L 1G -n iscsilv iscsi

14

格式化并挂载

# mkfs.ext4 /dev/iscsi/iscsilv

# mkdir /mnt/iscsi

# vi /etc/fstab

15

创建测试文件

16

挂载成功,创建测试文件成功。

5.9 重启测试

17

测试成功。

5.10 查看target信息

# tgt-admin –show

13
可以看到,此时使用该target的initiator 为iqn.2014-07.dev.iscsi-initiator:initiator,也就是我们上面更改的initiatorname,IP地址为192.168.1.22。

至此,iSCSI 置完毕。

Set up an iSCSI Target and Initiator

27.1. iSCSI Target Creation

An iSCSI target can be a dedicated physical device in a network, or it can be an iSCSI software-configured logical device on a networked storage server. The target is the end point in SCSI bus communication. Storage on the target, accessed by an initiator, is defined by LUNs.

Procedure 27.1. Create an iSCSI Target

  1. Install scsi-target-utils.
    ~]# yum install scsi-target-utils
  2. Open port 3260 in the firewall.
    ~]# iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT
    ~]# service iptables save
    
  3. Start and enable the target service.
    ~]# service tgtd start
    ~]# chkconfig tgtd on
    
  4. Allocate storage for the LUNs. In this example a new partition is being created for block storage.
    ~]# fdisk /dev/vdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table
    Building a new DOS disklabel with disk identifier 0x43eb8efd.
    
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): *Enter*
    Using default response p
    Partition number (1-4, default 1): *Enter*
    First sector (2048-2097151, default 2048): *Enter*
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +250M
    Partition 1 of type Linux and of size 250 MiB is set
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
  5. Edit the /etc/tgt/targets.conf file to create the target.
    ~]# cat /etc/tgt/targets.conf
    ...
    default-driver iscsi
    <target iqn.2015-06.com.example.test:target1>
    	backing-store /dev/vdb1
    	initiator-address 10.10.1.1
    </target>
    
    In the above example a simple target containing one backing store and one allowed initiator has been created. It must be named with an iqn name in the format of iqn.YYYY-MM.reverse.domain.name:OptionalIdentifier. The backing store is the device the storage is located on. The initiator-address is the IP address of the initiator to access the storage.
  6. Restart the target service.
    ~]# service tgtd restart
    Stopping SCSI target daemon:     [ OK ]
    Starting SCSI target daemon:     [ OK ]
    
  7. Check the configuration.
    ~]# tgt-admin --show
    Target 1: iqn.2015.06.com.example.test: server
    	System information:
    		Driver: iscsi
    		State: ready
    	I_T nexus information:
    	LUN information:
    		Lun: 0
    			Type: controller
    			SCSI ID: IET    00010000
    			SCSI SN: beaf10
    			Size: 0 MB, Block size: 1
    			Online: Yes 
    			Removable media: No
    			Prevent removal: No
    			Readonly: No
    			Backing store type: null
    			Backing store path: None
    			Backing store flags:
    		LUN: 1
    			Type: disk
    			SCSI ID: IET     00010001
    			SCSI SN: beaf11
    			Size: 2147 MB, Block size: 512
    			Online: Yes
    			Removable media: No
    			Prevent removal: No
    			Readonly: No
    			Backing store type: rdwr
    			Backing store path: /dev/vdb1
    			Backing store flags:
    	Account information:
    	ACL information:
    		10.10.1.1
    

⁠27.2. iSCSI Initiator Creation

An iSCSI initiator is the client who wishes to access the storage on a target, or server. The IP address of the target needs to be known for this process.

Procedure 27.2. Create an iSCSI Initiator

  1. Install iscsi-initiator-utils.
    ~]# yum install iscsi-initiator-utils
  2. Discover the target. Use the target’s IP address, the one used below serves only as an example.
    ~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.1
    Starting iscsid:     [ OK ]
    192.168.1.1:3260,1 iqn.2015-06.com.example.test:target1
    
    The above shows the target’s IP address and IQN address. It is the IQN address that is needed for future steps.
  3. Connect to the target.
    ~]# iscsiadm -m node -T iqn.2015-06.com.example:target1 --login
    Logging in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.1,3260] (multiple)
    Login in to [iface: default, target: iqn.2015-06.com.example:target1, portal: 192.168.1.1,3260] successful.
    
  4. Find the iSCSI disk name.
    ~]# grep "Attached SCSI" /var/log/messages
    Jun 19 01:30:26 test kernel: sd 7:0:0:1 [sdb] Attached SCSI disk
    
  5. Create a file system on that disk.
    ~]# mkfs.ext4 /dev/sdb
  6. Mount the file system.
    ~]# mkdir /mnt/iscsiTest
    ~]# mount /dev/sdb /mnt/iscsiTest
    
  7. Make it persistent across reboots by editing the /etc/fstab file.
    ~]# blkid /dev/sdb
    /dev/sdb: UUID="766a3bf4-beeb-4157-8a9a-9007be1b9e78" TYPE="ext4"
    ~]# vim /etc/fstab
    UUID=766a3bf4-beeb-4157-8a9a-9007be1b9e78	/mnt/iscsiTest	ext4	_netdev	0 0
    

发表评论