随着目前服务器数量的日益增加,出于管理方面的目的,我们越来越多的谈到了私有云,在部署私有云的过程中,我们遇到了一些困难,今天我将用一系列文章来描述我们解决问题的过程。
一方面由于服务器磁盘容量的稀缺,另一方面本着为半年以后iscsi存储测试的需求,我们决定使用iscsi进行启动。
iscsi网卡一般分为三种,纯网卡充当iscsi卡,带有TOE(tcp/ip offset engine)的变种减负卡(也称软卡),带有TOE和scsi引擎(其实就是asic芯片)的ISCSI HBA(也称硬卡)。
其中iscsi软卡在操作系统看来是块网卡,而iscsi hba在系统看来是块HBA(存储适配器)。
众所周知,VMware ESXI操作系统无法使用toe卡,而只能把它当做普通网卡使用,而iscsi硬卡如果不打特殊驱动是无法作为网卡使用的(无法绕过asic的处理)。
而目前世界上对于iscsi卡的生产共分如下阵营。以intel为主的不带TOE或带TOE的网卡(思路是通过强大的处理器去运算)以qlogic为主的TOE HBA(因为耗用处理器资源最大的层面是TCP/IP头的处理)而SCSI逻辑较为复杂,且失去了网卡的简便性。第三是以EMULEX和Broadcom为主的纯iscsi HBA。
在千兆环境下ISCSI即使以满负荷运行,大约CPU占用仍小于5%。(未启用巨帧)双路X5650 16G内存下获得。
而万兆环境下满负荷据冬瓜哥所说应该会耗费30%左右,笔者没有万兆的网卡无法测试。
即使在万兆条件下,一般客户端也无法持续满负荷读取磁盘;因而在target端使用硬卡的性价比要远大于软卡。
本次测试的搭建环境 dell c6100服务器 板载82576网卡(支持intel remote boot technology)使用iscsi连接运行在单机esxi(intel sr1560sf)的freenas服务器。
首先明确几个重要概念
不只有iscsi硬卡有optional bios intel的大部分服务器网卡也具有该功能,并且使用ibft(iscsi boot firmare table)来支持iscsi引导。
他的实现原理是首先通过13H中断的方式访问iscsi target 读取系统必要的内核和initranfs 并把iscsi target 参数写入内存的特定位置。之后正常开始加载,在initramfs加载之后读取内存里的表通过软件initiator的方式实现读取数据。
因而他只能算是普通网卡(功能高级点)而绝非iscsi硬卡。
如果你用开启ibft的网卡安装红帽系的系统,系统将会自动为你建立引导所需要的文件,但是如果遇到debian系他的安装程序可能没有做相关的检测,无法直接读取ibft表,而是会先询问你找不到磁盘驱动。你需要手动选择继续。然后配置软件iscsi initiator。
在安装完系统后debian默认是无法启动的,因为initramfs并没有被配置ip,你需要手工配置initramfs和grub的ip地址(一个是提供给系统引导使用的,一个是给linux系统的正常运行使用的)。
下面开始试验环境的配置
首先在bios里启动iscsi(oem厂商已经封装好了,原理是刷新网卡的rom写入一个专用optional bios)。
在重启进入引导之后按快捷键进入网卡bios,选择iscsi主接口和副接口(在这里ip无法进行端口绑定,一般把一个配置成iscsi口,另一个作为业务口,不然容易造成拥塞)。
随后回车进入端口配置,填入iscsi initiator 和 target initiator可以随意按格式输入,需要注意的是2.x版本的bios 只支持512字节的扇区格式,不支持高级格式化,而且vmware 对高级格式化的支持目前也不太好。最好在存储端使用512字节的传统扇区大小。lun id 在存储端也可配置。一般不用lun 0,从1开始。(据说老版本内核会有问题)然而我配成lun0可以顺利引导。
重启后引导进入系统安装过程,如果是红帽系,一步步安装即可,系统会自动创建引导关系。
如果是Debian系,在安装完成后重启,会无法启动(不会读取ibft表而且不自动为网卡配置静态IP)。
需要进行如下操作,打开/etc/initramfs-tools/initramfs.conf 查找DEVICE=
在下面加入一行 ip=IPADDR:GATEWAY:NETMASK:HOSTNAME:DEVICENAME
随后update-initramfs -u
之后进入grub.cfg 更改linux /vmlinuz-4.4.16-1-pve root=/dev/mapper/debian--vg-root ifname=eth1:00:26:6c:fa:4c:e1 rd_NO_LUKS iscsi_firmware LANG=en_US.UTF-8 nomodeset KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD rd_LVM_LV=study-vg/swap_1 SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=study-vg/root ip=192.168.240.162::0.0.0.0:255.255.255.0::eth1 rd_NO_DM rhgb quiet
重启即可。