有一台高配的R730xd服务器,带有满配大容量硬盘以及SSD和两张Qlogic的HBA卡。有天朋友讨论能不能把这台服务器配置成一台FC存储服务器推给vmware或者其他客户端使用。这个我之前没有做过,很感兴趣,所以我们花了一个多星期的进行研究最后成功实现,故我们把过程和遇到的问题及解决方法写出来分享,希望帮到其他有这个需求的运维。


  刚开始Google了良久,最后决定思路是:在Linux上部署zfs系统,把SSD定义为zfs的缓存磁盘,然后把HBA卡设置为target模式,使用targetcli在zfs下的一个文件块推送至vmware或者其他客户端。


  寻找良好兼容性的Linux发行版我们搞了很久,发现CentOS6使用的2.6内核不能把HBA卡设置为target模式;使用CentOS7.1能支持设置为target模式,但在targetcli下无法看到qla2xxx的路径;自己试过在CentOS6下编译3.x或者4.x的内核也是在targetcli下无法看到qla2xxx的路径,一直无法解决。后面安装Ubuntu15.10,就没有这个问题,但是在装zfs的时候发现有个包没有兼容内核,无法安装。最后是使用了Ubuntu14.04 LTS版本才顺利完成。详见本文最后的报错分享。


  最后的环境:DellR730xd+QLE2650(8G)+Intel SSD 750+Ubuntu14.04LTS


  先安装ZFS文件系统支持

sudo su -
apt-add-repository --yes ppa:zfs-native/stable
apt-get update
apt-get install debootstrap spl-dkms zfs-dkms ubuntu-zfs

#系统启动挂载zfs模块
vi /etc/rc.local
/sbin/modprobe zfs

#安装SSD驱动
apt-get install git-core build-essential libncurses5-dev
git clone 
cd nvme-cli
make && make install

#创建pool
zpool create zfspool /dev/sdb
#添加缓存盘
zpool add zfspool cache /dev/nvme0n1

  

  安装targetcli

apt-get install targetcli

    

  设置HBA卡为target mode

vi /etc/modprobe.d/qla2xxx.conf
options qla2xxx qlini_mode="disabled"


  重启,检查targetcli是否正确加载qla2xxx模块,下面有qla2xxx输出即为正常。

targetcli
/> ls
o- / ..................................................................... [...]
  o- backstores .......................................................... [...]
  | o- fileio ............................................... [0 Storage Object]
  | o- iblock ............................................... [0 Storage Object]
  | o- pscsi ................................................ [0 Storage Object]
  | o- rd_dr ................................................ [0 Storage Object]
  | o- rd_mcp ............................................... [0 Storage Object]
  o- ib_srpt ........................................................ [0 Target]
  o- iscsi .......................................................... [0 Target]
  o- loopback ....................................................... [0 Target]
  o- qla2xxx ..