谈到iSCSI,我能想到的就是存储分为NAS和SAN,NAS与SAN都是在DAS的基础上发展起来的,是新型数据存储模式中的两个主要发展方向。
直接存取 (direct-attached storage):例如本机上面的磁碟,就是直接存取設備;
存储网络 (SAN):来自区网內的其他存储设备提供的磁碟;
网络连接式存储 (NAS):來自 NAS 提供的档案系統,只能立即使用,不可进行格式化。
从上图中,我们可以发现在一般的主机环境下,磁碟装置 (SATA, SAS, FC) 可以透过主机的界面 (DAS) 來直接进行档案系統的建立 (mkfs 进行格式化),如果想要使用外部的磁碟,那可以透过 SAN (內含多个磁碟的设备),然后透过 iSCSI 等介面来连线, 当然,还是得要进行格式化等动作 (假设这个 SAN 尚未被使用時)。最后,如果是 NAS 的条件下,那么 NAS 必须要先透过自己的作业系统將将磁碟装置进行档案系統的建立后,再以 NFS/CIFS 等方式來提供其他主机挂载使用。
接下来,网络服务器、用戶端系統、NAS 与 SAN 的角色在区域网里面又是如何呢?(DAS 是每部主机內部的磁碟,即底下图示中的圆柱体):
NAS 可以使用自己的磁碟,也能够透过光纤或以太网取得 SAN 所提供的磁碟来制作成为存储网络,提供其他人的使用。 Server 可以透过NFS/CIFS 等方式取得 NAS 的档案系統,当然也能夠直接存取 SAN 的磁碟。用戶端主要则是透过存储网络, 并且直接使用 Server 提供的网络资源 (如 FTP, WWW, mail 等等)。
iscsi这个架构主要将存储装置使用的主机分为两个部分,分別是:
iSCSI target:就是存储设备端,存放磁碟或RAID的设备,目前也能够将Linux主机模拟成ISCSI target 了!目的在提供其他主机使用的『磁碟』
iSCSI initiator:就是能够使用 target 的用戶端,通常是客服器。 也就是说,想要连接到 iSCSI target的客户端,也必须要安装 iSCSI initiator 的相关功能后才能够使用 iSCSI target 提供的磁碟就是了。
iscsi-server 172.25.254.138 target
iscsi-client 172.25.254.238 initiator
基本服务配置
server:
1.创建磁盘vdb1
fdisk /dev/vdb
2.安装iSCSI目标软件包:
yum install targetcli -y
3.进入iSCSI目标交互式配置模式:
[root@iscsi-server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb34
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type ‘help’.
/> ls
o- / ……………………………………………………………………. […]
o- backstores ………………………………………………………….. […]
| o- block ……………………………………………….. [Storage Objects: 0]
| o- fileio ………………………………………………. [Storage Objects: 0]
| o- pscsi ……………………………………………….. [Storage Objects: 0]
| o- ramdisk ……………………………………………… [Storage Objects: 0]
o- iscsi ………………………………………………………… [Targets: 0]
o- loopback ……………………………………………………… [Targets: 0]
/> /backstores/block create ppp:storage1 /dev/vdb1
Created block storage object ppp:storage1 using /dev/vdb1.
/> ls
o- / ……………………………………………………………………. […]
o- backstores ………………………………………………………….. […]
| o- block ……………………………………………….. [Storage Objects: 1]
| | o- ppp:storage1 …………………… [/dev/vdb1 (3.0GiB) write-thru deactivated]
| o- fileio ………………………………………………. [Storage Objects: 0]
| o- pscsi ……………………………………………….. [Storage Objects: 0]