一、SAN (Storage Area Networks, 储存局域网络)
我们知道单部主机能够提供的插槽再怎么说也是有限的! 所以并不能无限制的安插磁盘在同一部实体主机上面。但是如果偏偏你就是有大量磁盘使用的需求,那时该如何是好? 这时就得要使用到 SAN 这玩意儿啦!
最简单的看法,就是将 SAN 视为一个外接式的储存设备。只是单纯的外接式储存设备仅能透过某些接口 (如 SCSI 或 eSATA) 提供单一部主机使用,而 SAN 却可以透过某些特殊的接口或信道来提供局域网络内的所有机器进行磁盘存取。要注意喔,SAN 是提供『磁盘 (block device)』给主机用,而不是像 NAS 提供的是『网络协议的文件系统 (NFS, SMB...)』。因此,挂载使用 SAN 的主机会多出一个大磁盘,并可针对 SAN 提供的磁盘进行分割与格式化等动作。想想看,你能对 NAS 提供的文件系统格式化吗?不行吧!这样了解差异否?
另外,既然 SAN 可以提供磁盘,而 NAS 则是提供相关的网络文件系统,那么 NAS 能不能通过网络去使用 SAN 所提供的磁盘呢?答案当然是可以。因为 SAN 最大的目的就是在提供磁盘给服务器主机使用,NAS 也是一部完整的服务器, 所以 NAS 当然可以使用 SAN !同时其他的网络服务器也能够使用这个 SAN 来进行数据存取。
此外,既然 SAN 开发的目的是要提供大量的磁盘给用户,那么传输的速度当然是非常重要的。因此,早期的 SAN 大多配合光纤信道 (Fibre Channel) 来提供高速的数据传输。目前标准的光纤信道是速度是 2GB ,未来还可能到达 10GB 以上呢~不过,使用光纤等技术较高的设备,当然就比较贵一些。
拜以太网络盛行,加上技术成熟之赐,现今的以太网络媒体 (网络卡、交换器、路由器等等设备) 已经可以达到 GB 的速度了,离 SAN 的光纤信道速度其实差异已经缩小很多了,那么是否我们可以透过这个 GB 的以太网络接口来连接到 SAN 的设备呢?这就是我们接下来要提到的 iSCSI 架构。
二、iSCSI界面
早期的企业使用的服务器若有大容量磁盘的需求时,通常是透过 SCSI 来串接 SCSI 磁盘,因此服务器上面必须要加装 SCSI 适配卡,而且这个 SCSI 是专属于该服
务器的。后来这个外接式的 SCSI 设备被上述提到的 SAN 的架构所取代, 在 SAN 的标准架构下,虽然有很多的服务器可以对同一个 SAN 进行存取的动作,不过为了速度需求,通常使用的是光纤信道。 但是光纤信道就是贵嘛!不但设备贵,服务器上面也要有光纤接口,很麻烦~所以光纤的 SAN 在中小企业很难普及啊~
后来网络实在太普及,尤其是以 IP 封包为基础的 LAN 技术已经很成熟,再加上以太网络的速度越来越快, 所以就有厂商将 SAN 的连接方式改为利用 IP 技术来处理。然后再透过一些标准的订定,最后就得到 Internet SCSI (iSCSI) 这玩意的产生啦!iSCSI 主要是透过 TCP/IP 的技术,将储存设备端透过 iSCSI target (iSCSI 目标) 功能,做成可以提供磁盘的服务器端,再透过 iSCSI initiator (iSCSI 初始化用户) 功能,做成能够挂载使用 iSCSI target 的客户端,如此便能透过 iSCSI 协议来进行磁盘的应用了 (注3)。
也就是说,iSCSI 这个架构主要将储存装置与使用的主机分为两个部分,分别是:
(1)iSCSI target:就是储存设备端,存放磁盘或 RAID 的设备,目前也能够将 Linux 主机仿真成 iSCSI target 了!目的在提供其他主机使用的『磁盘』;
(2)iSCSI initiator:就是能够使用 target 的客户端,通常是服务器。 也就是说,想要连接到 iSCSI target 的服务器,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁盘就是了。
三、使用iSCSI在ubuntu12.04环境下配置SAN。
(1)配置iSCSI Target
创建一个物理卷:
root@storage:~# pvcreate /dev/sda
Can't open /dev/sda exclusively. Mounted filesystem?
本次实验中多次出现该问题,最后的解决方案如下:
root@storage:~# multipath -l
1ATA QEMU HARDDISK QM00001 dm-0 ATA,QEMU HARDDISK
size=8.0G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=-1 status=active
`- 0:0:0:0 sda 8:0 active undef running
root@storage:~# multipath -F
root@storage:~# multipath -l
root@storage:~# pvcreate /dev/sda
Physical volume "/dev/sda" successfully created
#查看物理卷
root@storage:~# pvdisplay
--- Physical volume ---
PV Name /dev/HARDDISK
VG Name vg_target00
PV Size 8.00 GiB / not usable 32.00 MiB
Allocatable yes
PE Size 32.00 MiB
Total PE 255
Free PE 63
Allocated PE 192
PV UUID Vtghmp-pfX3-SDkF-TQoU-OGrL-LYmJ-6uzpZR
#创建一个名为“vg_target00”的卷组:
root@storage:~# vgcreate -s 32M vg_target00 /dev/sda
Volume group "vg_target00"successfully created
#查看逻辑组
root@storage:~# vgdisplay
--- Volume group ---
VG Name vg_target00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 7.97 GiB
PE Size 32.00 MiB
Total PE 255
Alloc PE / Size 192 / 6.00 GiB
Free PE / Size 63 / 1.97 GiB
VG UUID fYfkLL-0OoA-MwL4-WPFJ-Kfco-iRR5-QTJmLt
#创建一个名为“lv_target00”的逻辑卷
root@storage:~# lvcreate -L 6G -n lv_target00 vg_target00
Logical volume "lv_tgarget00"created
#查看逻辑卷
root@storage:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg_target00/lv_target00
VG Name vg_target00
LV UUID MEXGqi-CezU-mMIT-igR9-YYTp-gqhd-6eURnn
LV Write Access read/write
LV Status available
# open 1
LV Size 6.00 GiB
Current LE 192
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
root@storage:~# apt-get install iscsitarget iscsitarget-dkms
root@storage:~#vim /etc/default/iscsitarget
#change
ISCSITARGET_ENABLE=true
root@storage:~#vim /etc/iet/ietd.conf
#添加在最后
#命名规则:[ian.year-month.domain:any name]
Target iqn.2013-07.storage:target0
#提供作为iSCSI target的设备
Lun 0 Path=/dev/vg_target00/lv_target00,Type=blockio
#你允许连接的iSCSI initiatro的IP地址
initiator-address 192.168.3.123 192.168.3.22
#Target用来认证initiator消息
incominguser username password
root@storage:~#service iscsitarget restart
* Removing iSCSI enterprise target devices: [ok]
* Stopping iSCSI enterprise target service: [ok]
* Removing iSCSI enterprise target devices: [ok]
* Starting iSCSI enterprise target service [ok]
#验证状态
root@storage:~# ietadm --op show --tid=1
Wthreads=8
Type=0
QueuedCommands=32
NOPInterval=0
NOPTimeout=0
(2)配置iSCSI Initiator
root@kvm2:~# apt-get install open-iscsi
root@kvm2:~# vi /etc/iscsi/iscsid.conf
line number 39,43,44
37 # To enable CHAP authentication set node.session.auth.authmethod
38 # to CHAP. The default is None.
39 node.session.auth.authmethod = CHAP
40
41 # To set a CHAP username and password for initiator
42 # authentication by the target(s), uncomment the following lines:
43 node.session.auth.username = mq
44 node.session.auth.password = 8912027@lzu
#发现target
root@kvm2:~# iscsiadm -m discovery -t sendtargets -p 192.168.3.51
192.168.3.51:3260,1 iqn.2013-07.storage:target0
#发现后确认状态
root@kvm2:~# iscsiadm -m node -o show
# BEGIN RECORD 2.0-871
node.name = iqn.2013-07.storage:target0
node.tpgt = 1
node.startup = manual
iface.hwaddress =
iface.ipaddress =
iface.iscsi_ifacename = default
iface.net_ifacename =
iface.transport_name = tcp
iface.initiatorname =
node.discovery_address = 192.168.3.51
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.auth.authmethod = CHAP
node.session.auth.username = mq
node.session.auth.password = ********
node.session.auth.username_in =
node.session.auth.password_in =
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 192.168.3.51
node.conn[0].port = 3260
node.conn[0].startup = manual
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
#登陆target
root@kvm2:~# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2013-07.storage:target0, portal: 192.168.3.51,3260]
Login to [iface: default, target: iqn.2013-07.storage:target0, portal: 192.168.3.51,3260]: successful
#确认会话
root@kvm2:~# iscsiadm -m session -o show
tcp: [1] 192.168.3.51:3260,1 iqn.2013-07.storage:target0
#确认磁盘
root@kvm2:~# cat /proc/partitions
major minor #blocks name
253 0 8388608 vda
253 1 7339008 vda1
253 2 1 vda2
253 5 1046528 vda5
8 0 6291456 sda
root@kvm2:~# fdisk -l
Disk /dev/vda: 8589 MB, 8589934592 bytes
16 heads, 63 sectors/track, 16644 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00068e53
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 14680063 7339008 83 Linux
/dev/vda2 14682110 16775167 1046529 5 Extended
/dev/vda5 14682112 16775167 1046528 82 Linux swap / Solaris
Disk /dev/sda: 6442 MB, 6442450944 bytes
199 heads, 62 sectors/track, 1019 cylinders, total 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sda doesn't contain a valid partition table
#可以看到target提供的磁盘已经分享过来:/dev/sda
四、注销iSCSI initiator登录
不需要时可以注销iSCSI initiator登录,先umount文件系统,再把第四步命令的login参数改成logout执行即可:
$ sudo umount /mnt/iscsi
$ sudo iscsiadm --mode node --targetname iqn.2013-07.storage:target0 --portal 192.168.3.51:3260 --logout
五、删除指定Target
用logout只是暂时登出,发现的target信息会保存在数据库中,下次重启iscsi服务时(service iscsi restart),仍会找回该Target卷。如果想从数据库中删除该Target,需用以下命令:
查询数据库中Target内容:
$ sudo iscsiadm -m node
删除指定的Target:
$ sudo iscsiadm --mode node -o delete --targetname iqn.2013-07.storage:target0 --portal 192.168.3.51:3260
阅读(3253) | 评论(0) | 转发(0) |