一、简介
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)之间进行大量数据的封装和可靠传输过程。
二、配置环境
操作系统:KylinV4serverX86
iSCSI Target:192.168.47.131/ tgt 1:1.0.63-1kord1
操作系统:KylinV4DesktopX86
iSCSI Initiator:192.168.47.128/ open-iscsi 2.0.873+git0.3b4b4500-14kord3
防火墙已关闭:Firewall is not running.
SELINUX=disabled
三、准备工作
iSCSI可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等,我们给出配置示例的是镜像和分区。
3.1 模拟镜像
在iSCSITarget的/srv目录下创建一个200M大小的镜像文件。
# mkdir /srv/iscsi
# dd if=/dev/zero of=/srv/iscsi/disk1.img bs=1M count=200
# ll -lh /srv/iscsi/disk1.img
3.2 建立分区
创建一个1G大小的分区/dev/sdb1。
# fdisk /dev/sdb
四、配置iSCSI Target
4.1 安装tgt
Kylin使用tgt软件做为iscsitarget端,我们使用该软件进行target设置。
# apt-get install tgt
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
</target>
说明:
iqn = iSCSI Qualified Name
iSCSI target的名称规则如下:
iqn.2014-07.dev.iscsi-target:iscsidisk
iqn.年份-月份.域名反写.设备识别
每个在同一个target上的backing-store 称为逻辑单元号(Logical Unit Number,LUN),这个实验中有2个LUN。
其他高级设置如initiator-address、incominguser,大家自行查资料。
· iscsi target 配置文档与管理程序
·
· /etc/tgt/targets.conf 主配置文档,设置要分享的磁盘
· /usr/sbin/tgt-admin 线上查询、删除target 等功能的管理工具;
· /usr/sbin/tgt-setup-lun 建立target 以及设置分享的磁盘与可使用的用户端等工具软体。
· /usr/sbin/tgtadm 手动直接管理的管理员工具(可使用配置文档取代);
· /usr/sbin/tgtd 主要提供iSCSI target 服务的主程式;
· /usr/sbin/tgtimg 建置预计分享的映像档装置的工具(以映像档模拟磁盘)
4.3 重启iSCSI target
# systemctl restart tgt
# ss -tulnp|grep tgt
查看tgt服务是否已正常启动
4.4 检查iSCSI target运行状态
4.5查看iSCSI target
# tgt-admin --show
LUN0 是控制器,可以看到各个LUN的大小和磁盘路径。
注意:initiator端连接后才能show出此效果。第六行可以看到客户端的initiator。
4.6将iSCSI Target服务配置为开机自启动
查看是否开机自启动:
systemctl is-enabled tgt
如果显示enabled,则表示tgt服务开机会自启动。
否则,配置开机自启动:
systemctl enable tgt
再次检查systemctl is-enabled tgt
至此,iSCSI Target 设定完毕。
五、在客户端配置iSCSI Initiator
5.1 安装initiator
# apt-get install open-iscsi
5.2检查客户端运行状态,如果未运行则开启
# systemctl status open-iscsi
# systemctl restart open-iscsi
5.3 发现Target
iSCSI客户端连接Target,首先要发现Target
# iscsiadm -m discovery -t sendtargets -p 192.168.47.131
说明:
-m discovery //侦测target
-t sendtargets //通过iscsi协议
-p IP:port //指定target的IP和port,不写port的话,默认为3260
5.4 显示已发现target
查看目前系统上面所有的target
# iscsiadm -m node
5.5 连接target
登录target
# iscsiadm -m node -p 192.168.47.131 --login
如果怕指定IP什么太烦,直接连接所有Target
# iscsiadm -m node --login all
5.6 查看磁盘情况
# ls /dev/sd*
可以看到,initiator 上面多了/dev/sdb和/dev/sdc,与target上的LUN一致。这时你就可以像使用本地磁盘一样使用这些iSCSI设备了,下面我们来测试。
5.7查看iSCSI session信息
用iscsiadm -m session查看iSCSI session和设备信息。
5.8 设置开机自动登录到iscsi-target
重启后没有自动登录,想要自动登录target,需要在initiator端修改配置文件/etc/iscsi/nodes/iqn.2014-07.dev.iscsi-target:iscsidisk/192.168.47.131,3260,1/default
配置内容 | 对应语句 |
在开机后是否自动登录Target。 | node.startup = automatic 表示自动登录(默认是automatic), node.startup = manual 表示需手动登录。 |
将node.startup= manual修改为node.startup = automatic,重启后自动登录生效。
5.9将/dev/sdb格式化为ext4并挂载到本地使用
# fdisk /dev/sdb
根据提示创建主分区/dev/sdb1
n,p,回车,回车,w,q
格式化成ext4格式:
mkfs.ext4 /dev/sdb1
创建挂载点:
mkdir /mnt/iscsi01
挂载到本地:
mount /dev/sdb1 /mnt/iscsi01
开机自动挂载,修改/etc/fstab文件,增加一行。
/dev/sdb1 /mnt/iscsi01 ext4 defaults 0 0
但是因为文件系统挂载时iscsi磁盘还没有准备好,因此系统会启不来!
修改/etc/fstab文件,将挂载方式的defaults修改为_netdev,即可成功自动挂载!
/dev/sdb1 /mnt/iscsi01 ext4 _netdev 0 0
如果怕系统重启后,磁盘设备的名称可能会发生飘移,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题。
查看UUID:
blkid
修改/etc/fstab,增加或修改/dev/sdb1的挂载配置如最后一行:
UUID=dec7bc24-4133-475a-bc3b-2b849a57267f /mnt/iscsi01 ext4 _netdev 0 0
保存退出,系统重启后可见/dev/sdb1已自动挂载到/mnt/iscsi01
--------------------------
银河麒麟操作系统是天津麒麟信息技术有限公司自主研发的类Linux操作系统,目前有桌面版和服务器版以及一些特种行业的定制版本。银河麒麟社区版可在http://www.ubuntukylin.com/downloads/自由下载使用。