- 配置 Ubuntu 作为 ISCSI Target
# apt-get update
# apt-get upgrade
(1) 安装 target
# apt-get install iscsitarget iscsitarget-source iscsitarget-dkms
资料上说,如果不安装后两个软件,在重启target的时候会报错。为了减少麻烦,还是老老实实都装上吧。
(2) 修改 ISCSI Target 服务配置文件
# vi /etc/default/iscsitarget
ISCSITARGET_ENABLE=true
(3) 为 Target 准备存储
如果想用分区或者磁盘作为 Target,可以略过这一步;如果想用文件作为 Target,则可按照下面的示例来进行:
# dd if=/dev/zero of=/var/lun1.bin count=0 obs=1 seek=50G
上述命令在 /var 目录下创建了一个名为 lun1.bin,大小为 50G 的文件。
(4) 修改 ISCSI Target 设备配置文件
# vi /etc/iet/ietd.conf
在文件的末尾添加如下信息:
Target iqn.2012-12.local.mynet:storage.lun1
Lun 1 Path=/var/lun1.bin,Type=fileio,ScsiId=lun1,ScsiSN=lun1
第一行 Target 之后的内容可以任意修改,不过最好保持例子中的格式;第二行在该 Target 上创建了一个 LUN,序号为 1。
当然,如果不想使用文件,也可以使用磁盘分区,只需修改 Path 属性即可:Path=/dev/sdd1
(5) 重启 ISCSI Target
# service iscsitarget restart
如何使用 ISCSI Target 呢?这正是下一节要说的。
- 配置 Ubuntu 作为 ISCSI Initiator
(1) 安装 open-iscsi
# apt-get install open-iscsi open-iscsi-utils
(2) 配置 open-iscsi
本文示例的 ISCSI Target 配置信息如下:
ISCSI Server IP | 192.168.1.100 |
ISCSI username | vivek |
ISCSI password | yHni3Oq9wYzamS |
如果 ISCSI Target Server 需要用户名密码,则需要在 /etc/iscsi/iscsid.conf 中进行配置,配置选项如下:
node.session.auth.username = vivek
node.session.auth.password = yHni3Oq9wYzamS
discovery.sendtargets.auth.username = vivek
discovery.sendtargets.auth.password = yHni3Oq9wYzamS
其中,两组用户名和密码均为 Target Server 设定的用户名和密码。
修改完成后,需要重启 open-iscsi 服务:
# service open-iscsi restart
(3) 发现 Target
# iscsiadm -m discovery -t sendtargets -p 192.168.1.100
示例输出如下:
192.168.1.100:3260,1 iqn.2012-12.com.example:iscsi.vm0.c43030
这里,3260 是 Target Server 的默认端口,所以在上面的命令中没有指定。如果使用其他端口,则需要用 # -p ip:port 的形式显示指定。
(3) 使用 Target
# iscsiadm -m node --targetname iqn.2012-12.com.example:iscsi.vm0.c43030 -p 192.168.1.100 --login
示例输出如下:
Logging in to [iface: default, target: iqn.2012-12.com.example:iscsi.vm0.c43030, portal: 192.168.1.1,3260]
Login to [iface: default, target: iqn.2012-12.com.example:iscsi.vm0.c43030, portal: 192.168.1.1,3260]: successful
登陆成功后,可以在 /var/log/messages 中看到如下消息:
# tail -f /var/log/messages
示例输出如下:
Jul 2 12:54:04 vivek-laptop kernel: [ 4418.610787] scsi6 : iSCSI Initiator over TCP/IP
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.649208] scsi 6:0:0:0: Direct-Access QNAP iSCSI Storage 3.1 PQ: 0 ANSI: 5
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.649670] sd 6:0:0:0: Attached scsi generic sg3 type 0
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.650531] sd 6:0:0:0: [sdc] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.651889] sd 6:0:0:0: [sdc] Write Protect is off
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.652643] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.654620] sdc: unknown partition table
Jul 2 12:54:05 vivek-laptop kernel: [ 4419.692364] sd 6:0:0:0: [sdc] Attached SCSI disk /dev/sdc is new block level device.
说明 /dev/sdc 已经作为一个新的块设备被添加到系统中了,该设备使用的就是服务器上的 ISCSI Target。