除了nfs,iSCSI也是一个重要的VM共享存储,原因是iSCSI协议非常适合于小文件的读写,而且其对硬件设备几乎没有什么要求,只要IP可达即可。

在本文中,将以omnios作为外置存储,不得不说,solaris/illumos实在是太强悍了,内置的zfs、nfs、comstar组件稳定、高效,足以令linux垂诞三尺。至少在今后一段很长的时间内,linux都将处于追随者的角色。

iSCSI server

iSCSI client

iSCSI client将安装在hypervisor上,本文以CentOS为例。

安装iSCSI client

$ sudo yum install iscsi-initiator-utils

配置iSCSI client

$ sudo vim /etc/iscsi/iscsid.conf
...
node.session.auth.username = linuxabc
node.session.auth.password = 123456
discovery.sendtargets.auth.username = linuxabc
discovery.sendtargets.auth.password = 123456
...

启动iSCSI服务

$ sudo /etc/init.d/iscsi start

连接到iSCSI server

$ sudo iscsiadm -m discovery -t sendtargets -p 192.168.55.120
$ sudo iscsiadm -m node -T iqn.2010-06.xen-sanhead:xen-alfie --login
$ sudo /etc/init.d/iscsi restart

在xen dom0中执行fdisk -l就会看到系统中多出了一个块设备/dev/sdc,那正是ZFS storage上的iSCSI target。

$ sudo fdisk -l
...
Disk /dev/sdc: 8589 MB, 8589934592 bytes
64 heads, 32 sectors/track, 8192 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

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

最后在xen dom0机器上把domU配置文件的disk一行改成:

disk = [ "phy:/dev/sdc,xvda,w" ]