首页 > 代码库 > 私有云的部署(1)_ISCSI 无盘引导的一些心得

私有云的部署(1)_ISCSI 无盘引导的一些心得

    随着目前服务器数量的日益增加,出于管理方面的目的,我们越来越多的谈到了私有云,在部署私有云的过程中,我们遇到了一些困难,今天我将用一系列文章来描述我们解决问题的过程。

    一方面由于服务器磁盘容量的稀缺,另一方面本着为半年以后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

重启即可。

    

私有云的部署(1)_ISCSI 无盘引导的一些心得