SAN(Storage Area Networks,存储局域网)

来源:本站原创 服务器技术 超过943 views围观 0条评论

一、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 = <empty>
iface.ipaddress = <empty>
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.transport_name = tcp
iface.initiatorname = <empty>
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 = <empty>
node.session.auth.password_in = <empty>
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

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=3350转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点

暂时还木有人评论,坐等沙发!
发表评论

您必须 [ 登录 ] 才能发表留言!