Linux下挂载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可分享的设备类型有很多,包括镜像文件(*.img)、分区(partition)、物理硬盘、raid设备、逻辑卷等

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

wKiom1ZUD7mipHNCAABsZUEdcG4767.png

Linux环境挂载iSCSI存储

1. 检查系统是否安装iSCSI initiator

[root@justin ~]# rpm -qa|grep iscsi
[root@justin ~]# 
[root@justin ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@justin ~]# cd /mnt/
[root@justin Packages]# find . -name *iscsi* 
./iscsi-initiator-utils-6.2.0.872-41.el6.i686.rpm
[root@justin Packages]# yum list|grep iscsi
Unable to read consumer identity
iscsi-initiator-utils.i686             6.2.0.872-41.el6                     dvd 
[root@justin Packages]# rpm -ivh iscsi-initiator-utils-6.2.0.872-41.el6.i686.rpm ^C
[root@justin Packages]# yum -y install iscsi-initiator-utils^C
[root@localhost ~]# rpm -qa|grep iscsi
iscsi-initiator-utils-6.2.0.873-14.el6.x86_64
iscsi-initiator-utils-devel-6.2.0.873-14.el6.x86_64
[root@localhost ~]#

这个安装将iscsid、iscsiadm安装到/sbin目录下,它还将把默认的配置文件安装到/etc/iscsi目录下:

[root@localhost ~]# cat /sbin/iscsi
iscsiadm     iscsid       iscsi-iname  iscsistart   iscsiuio     
[root@localhost ~]# cat /etc/iscsi/i
initiatorname.iscsi  iscsid.conf          
[root@localhost ~]# cat /etc/iscsi/i

/etc/iscsi/iscsid.conf 所有刚发起的iSCSI session默认都将使用这个文件中的参数设定。
/etc/iscsi/initiatorname.iscsi 软件iSCSI initiator的intiator名称配置文件。
在iscsi启动的时候,iscsid和iscsiadm会读取这两个配置文件。

2. 查看Initiator IQNname 

[root@justin Packages]# more /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:19bd3b75485f
[root@justin Packages]#

3.启动iscsi的服务,并将iscsi写到开机自行加载。

[root@justin Packages]# chkconfig --list|grep iscsi
iscsi          	0:off	1:off	2:off	3:on	4:on	5:on	6:off
iscsid         	0:off	1:off	2:off	3:on	4:on	5:on	6:off
[root@justin Packages]# service iscsi start
[root@justin Packages]# service iscsid start
[root@justin Packages]# /sbin/iscsistart
iscsistart: InitiatorName not set. Exiting iscsistart
[root@APP src]#

安装完成后使用service iscsi start 和service iscsid start无法启动尝试使用/sbin/iscsistart ,启动报:InitiatorName not set. Exiting iscsistart,解决:直接使用iscsiadm通过下面的第4步查询target,自动启动iscsi和iscsid,如果出现“iscsid dead but pid file exist”,输入命令:rm �Cfr /var/run/iscsid.pid

4. 查询ISCSI设备target的iqn号码

首先要在存储设备上划分磁盘阵列的磁盘空间(即Virtual disk),设置好iSCSI 目标方(target),


iscsiadm是基于命令行的iscsi管理工具,提供了对iscsi节点、会话、连接以及发现记录的操作。默认情况下,iscsi发起方和目标方之间通过端口3260连接

iscsiadm的使用说明可以查看/usr/share/doc/iscsi-initiator-utils-6.2.0.742/README,也可以运行man iscsiadm或iscsiadm --help

Discover targets at a given IP address:

            iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.10 --discover

[root@localhost ~]# iscsiadm -m discovery -t st -p 10.0.0.10 
Starting iscsid:                                           [  OK  ]
iscsiadm: No portals found
[root@localhost ~]# ps -ef|grep -i iscsi
root      2259     2  0 07:03 ?        00:00:00 [iscsi_eh]
root      2303     1  0 07:03 ?        00:00:00 iscsiuio
root      2308     1  0 07:03 ?        00:00:00 iscsid
root      2309     1  0 07:03 ?        00:00:00 iscsid
root      2314  2154  0 07:04 pts/0    00:00:00 grep -i iscsi
[root@localhost ~]#

-m discovery  //侦测target

-t sendtargets  //通过iscsi协议

-p IP:port  //指定target的IP和port,不写port的话,默认为3260

iscsiadm: No portals found

这时我们需要到存储上去允许我们接入,这里需要用到Initiator IQNname

[root@localhost ~]# cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:19bd3b75485f
[root@localhost ~]#

wKioL1ZZVu6yyvioAADE5ehRR40731.png

[root@localhost ~]# iscsiadm -m discovery -t st -p 10.0.0.10 
10.0.0.10:3260,1 iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1
[root@localhost ~]#

此时会找到目标target iqn,类似10.0.0.10:3260,1 iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1 ,被发现的目标也叫做节点

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

[root@localhost ~]# cd /var/lib/iscsi/nodes/
[root@localhost nodes]# ls
 iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1
[root@localhost nodes]#

侦测信息都写入了/var/lib/iscsi/nodes/iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1/10.0.0.10,3260,1/default 文件中了。

5. 登录target

Login, must use a node record id found by the discovery:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --login

 #登录全部扫描到的服务器
[root@justin Packages]# iscsiadm -m node --login  
 #登录某一个,targetname为检测到的存储target name
[root@localhost 10.0.0.10,3260,1]# iscsiadm -m node --targetname  iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1 -p 10.0.0.10 -l
Logging in to [iface: default, target:  iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1, portal: 10.0.0.10,3260] (multiple)
Login to [iface: default, target:  iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1, portal: 10.0.0.10,3260] successful.
 #查看核对登录信息
[root@localhost 10.0.0.10,3260,1]# iscsiadm -m session -o show
tcp: [1] 10.0.0.10:3260,1  iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1 (non-flash)
[root@localhost 10.0.0.10,3260,1]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x0008019d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1070     8388608   82  Linux swap / Solaris
/dev/sda3            1070        6528    43834368   83  Linux

Disk /dev/sdb: 859.0 GB, 859003944960 bytes
255 heads, 63 sectors/track, 104434 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: 0xbc7a8d15

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      104434   838866073+   7  HPFS/NTFS
[root@localhost 10.0.0.10,3260,1]#

可以看到一个800多G的盘,因为这里挂载的是镜像,挂载lun步骤一样

也可简写

[root@justin Packages]# iscsiadm -m node -p 10.0.0.10 -l

默认重启后也会自动挂载的,如果要在系统启动时自动登入可以如下操作:

[root@justin Packages]# iscsiadm -m node -targetname iqn.1994-05.com.redhat:4ef28aa338b5 -p 192.168.100.252 --op update -n node.startup -v automatic
[root@justin Packages]# iscsiadm -m node -T iqn.1994-05.com.redhat:4ef28aa338b5 -p 192.168.100.252 --op update -n node.startup -v automatic

iqn.1994-05.com.redhat:4ef28aa338b5是目标名 iqn号可以在/etc/iscsi/initiatorname.iscsi中查看

Logout:

            iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --logout

[root@justin Packages]# umount /mnt/data
[root@localhost ~]# iscsiadm -m node --targetname iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1 -p 10.0.0.10 -u
Logging out of session [sid: 1, target: iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1, portal: 10.0.0.10,3260]
Logout of [sid: 1, target: iqn.2001-05.com.equallogic:0-8b0906-8c1c82a0a-88971a5r64956574-vol-167new-2015-11-27-02:00:01.79876.1, portal: 10.0.0.10,3260] successful.
[root@localhost ~]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 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: 0x0008019d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1070     8388608   82  Linux swap / Solaris
/dev/sda3            1070        6528    43834368   83  Linux
[root@localhost ~]#

6.显示已经映射结果磁盘阵列:iscsiadm �Cmode node

[root@justin Packages]# iscsiadm -m node -o show
[root@justin Packages]# iscsiadm -m node
10.0.0.10:3260,1 iqn.2001-05.com.equallogic:0-1cb196-d89a91b07-3e549b4f79c51ee0-vol-98.115
[root@SAMBA1 ~]#

7.登入节点后以看到目标方的存储设备信息

在服务器上运行# fdisk �Cl可以看到目标方的存储设备信息

[root@justin Packages]# fdisk -l
Disk /dev/sdb: 3489.8 GB, 3489862254592 bytes

255 heads, 63 sectors/track, 424284 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Disk /dev/sdb doesn't contain a valid partition table

/dev/sdb即为连接的iscsi存储设备,PS:如果SAN硬盘通过iscsiadm扫描后能看到三个,挂载其中的mapper映射即可

8.对iscsi设备分区、格式化、挂载

[root@justin Packages]# fdisk /dev/sdb
[root@justin Packages]# mkfs.ext4 /dev/sdb1

对iscsi存储设备分区,在开机自动挂载需要注意挂载选项不能使用defaults,应为_netdev,UUID要顶格写(Linux系统重启后,磁盘设备的名称可能会发生变化,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题,使用命令“tune2fs -l /dev/sdb”可以查到文件系统的UUID,也可以使用给文件系统设置卷标的方式来解决),例如:

[root@justin Packages]# vi /etc/fstab 
UUID=9b71318a-6609-4679-8a69-420c1fffea63 /mnt/data ext4 _netdev 0 0

将/etc/fstab中所有的档案系统都挂载上:

[root@justin Packages]# mount -a

用df查看文件系统是否已经挂载成功 

[root@justin Packages]# df -Th

存储容量大于2T,不能用不同分区 fdisk ,只能用GPT分区.

[root@justin Packages]# parted /dev/sdb  #对/dev/sdb进行分区
print     #打印信息,从中可以看出这个磁盘大小和分区格式
mklabel gpt   
mkpart primary 0% 100%
print    #从中可以看出这个磁盘分区格式已经变了成GPT了

备注:如果重新安装OS后,就需要重新获取IQN name。


你可能感兴趣的:(iSCSI,iscsiadm)