
在我们的云服务时代,AWS Lambda和其他
共享托管绝对无形的计算资源,有时我需要一些自己的东西。 除了需求之外,有时还需要以最小的平台成本来深思熟虑地扭曲一个或另一个软件产品。 您几乎总是可以找到一些多余的设备,有时甚至可以把所有东西放在一起然后打开。 如果这些盈余代表具有至少4-6个内核和64GB以上内存的CPU(通常非常出色),则可以采用ESXi并进行任何处理。 一个问题:VMWare的家用硬件具有磁盘容量-绝对没有。 本地单个HDD的性能低下,在21世纪真空中丢失单个螺钉的内容就像打招呼一样。 让我们尝试通过网络连接某些东西。
TL; DR>关联,平衡,rr限制,仅此而已。
实际上,下面的文字不是关于通常可行或某种专门知识的事实。 互联网上充斥着有关如何提交iSCSI磁盘容量的虚拟文章(请单击此处,然后单击“下一步”,“下一步”,“完成”)。 我写这篇文章的目的只是为了消除“幸存者的错误”,并分享“一切都会出错”(并且一切都会好起来,墨菲是对的)的时刻,而当您尝试加载解决方案时,它只会崩溃。
因此,我们将尝试通过网络上连接的外部磁盘阵列来窒息我们的“家庭管理程序”。 由于所有事情都“廉价地”围绕着我们展开,因此,让它们成为FreeNAS和4个SATA磁盘,它们以中等的3 GHz 45-nm百分比提供服务。 我们来看一下Ebay,用与二手RAID控制器相当的价格,他们从那里拖了几张i350-T4网卡。 这些是Intel的四端口千兆位适配器。 根据他们的说法,我们会将存储与虚拟机管理程序关联。
数一下。 一般SATA磁盘的平均数据传输速度为160-180 MB / s,接口宽度为6 Gb / s。 实际上,来自HDD的实际数据传输速率不超过2 Gb / s。 考虑到我们计划在4个千兆位端口上进行通信(如何将4x1Gbps转换为4Gbps,我们将进一步讨论),所以这个数字并不是很大。 具有随机访问速度的所有内容都更加糟糕-这里的所有内容几乎都下降到了软盘的水平。
鉴于许多客户机OS的磁盘负载配置文件不是线性的,所以我希望看到更多有趣的数字。 要纠正虚拟机管理程序(VMFS v6)的文件系统中的情况,块大小为1 MB,这有助于压缩许多随机操作并加快对虚拟磁盘上数据的访问。 但是即使这样,一个物理磁盘仍不足以处理所有“来宾”的I / O操作。
我会立即进行预订-如果您有两个以上的“存储网络”适配器,一切都会变得有意义。 拥有免费的单处理器许可的ESXi除了本地磁盘外,还可以连接到两种类型的存储-NFS和iSCSI。 NFS涉及文件级访问,并且以其自身的方式也很不错。 在它上面,您可以部署不需要磁盘性能的客户机。 很高兴备份它们。 您可以在其他地方打开相同的NFS球并复制快照虚拟机。 通常,只有一个网络接口(当然不是10GE)-NFS是您的选择。
与NFS相比,ISCSI具有多个优点。 为了完全实现它们,我们已经准备好-已经为存储网络铺设了4个千兆位端口。 通常如何以已知的接口速度进行网络带宽扩展? 是的,聚合。 但是,为了完全利用聚合通道,需要满足许多条件,这更适用于交换机之间的通信或虚拟机管理程序的网络上行链路。 iSCSI协议的实现提供了诸如多路径(从字面上讲,许多路径)之类的功能-通过不同的网络接口连接同一卷的能力。 当然,那里的负载均衡也是可能的,尽管主要目的是存储网络的容错能力。 (公平地说,NFSv4.1支持基于RDMA和MPTCP等最高级魔术的会话中继,但这是一种尝试,将文件访问问题
从头疼的问题转变
为健康的问题
,直至更低的水平。)
因此,首先,我们将发布目标。 我们相信已经安装了FreeNAS,管理层的IP地址会定期将Web界面发送给我们,我们完全根据自己的内部信念削减了阵列和zvol。 在我们的案例中,这是一个4 x 500GB的驱动器,与raidz1组合在一起(有效容量仅为1.3 TiB),zvol的大小恰好为1 TB。 我们将配置i350网络接口,为简单起见,我们接受每个人都将属于不同的子网。
然后,我们使用“下一步,下一步,完成”方法配置iSCSI球。 配置门户时,请不要忘记在其中添加所有专用于iSCSI的网络接口。 它看起来应该像图片中的样子。
在设置范围时需要多加注意-在显示卷时,有必要强制512字节的块大小。 没有这个,ESXi启动器将根本无法识别提供的卷。 为了保真起见,最好禁用物理块的probros大小(在zvol上不是,也不能是),并启用Xen支持模式。
现在使用FreeNAS。
在ESXi方面,设置网络有点困难。 同样,我们认为虚拟机监控程序本身是在单独的端口上安装和管理的。 您将需要在4个不同的虚拟交换机中选择4个属于4个不同端口组的VM Kernel接口。 这些交换机中的每一个都有自己的上行链路物理端口。 当然,我们在对应的子网中使用vmk#地址,类似于配置存储端口。 设置地址的顺序通常很重要-我们无需切换即可连接端口到端口卡,或者为不同的网络提供不同的链接(当然,这是成人方式),因此物理端口匹配很重要。
在为iSCSI设置网络时,我们特别注意MTU参数。 当“大小”很重要时,情况就是如此-我们将最大限度地利用所有网络组件可以安装的数量。 如果卡直接连接,则可以在ESXi和FreeNAS上将mtu 9000指向两侧。 但是,普通开关将支持该值。 我们ping通后,我们看到网络正常,并且所需大小的数据包通过了。 太好了 我们向发起者放火。
打开iSCSI,将IP地址添加到动态配置部分(存储->适配器->配置iSCSI->动态目标)。 保存后,将在这些地址处轮询iSCSI门户,启动器将确定它们中的每个门户具有相同的卷,并在所有可用地址(相同的多路径)上连接到该门户。 接下来,我们需要在出现的设备上创建一个数据存储。
之后,您可以推出虚拟机并评估我们得到了什么。
没有那么令人印象深刻的结果。 打开存储控制台,显示当前网络状态并运行测试。
root@freenas:~ # systat -ifstat
我们看到了什么? /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10 Load Average Interface Traffic Peak Total lo0 in 0.319 KB/s 0.893 KB/s 3.041 MB out 0.319 KB/s 0.893 KB/s 3.041 MB alc0 in 0.478 KB/s 1.233 KB/s 3.934 MB out 0.412 KB/s 1.083 KB/s 2.207 MB igb3 in 0.046 KB/s 0.105 KB/s 181.434 KB out 0.073 KB/s 0.196 KB/s 578.396 KB igb2 in 0.046 KB/s 0.105 KB/s 120.963 KB out 0.096 KB/s 0.174 KB/s 517.221 KB igb1 in 4.964 MB/s 121.255 MB/s 10.837 GB out 6.426 MB/s 120.881 MB/s 3.003 GB igb0 in 0.046 KB/s 0.105 KB/s 139.123 KB out 0.073 KB/s 0.210 KB/s 869.938 KB
仅使用了四个网络端口(igb1)中的一个。 发生这种情况是因为默认情况下为多路径提供的平衡机制会为每个数据包选择相同的适配器。 我们需要用尽一切。
我们通过SSH和命令连接到虚拟机管理程序。
首先,让我们看看月球具有多路径的ID及其工作原理:
[root@localhost:~] esxcfg-mpath -b
naa.6589cfc000000b478db42ca922bb9308 : FreeNAS iSCSI Disk (naa.6589cfc000000b478db42ca922bb9308)
[root@localhost:~] esxcli storage nmp device list -d naa.6589cfc000000b478db42ca922bb9308 | grep PSP
Path Selection Policy: VMW_PSP_MRU
路径选择策略是MRU,即最近使用的策略。 所有数据都到达同一端口,仅当网络连接不可用时才重新选择路径。 我们改为循环,其中所有接口在经过一定数量的操作后依次改变:
[root@localhost:~] esxcli storage nmp device set -d naa.6589cfc000000b478db42ca922bb9308 -P VMW_PSP_RR
我们重新启动ESXi,打开监视,运行测试。 我们看到负载在网络适配器之间平均分配(至少是峰值,太多了),测试结果也更加有趣。

Interface Peak igb3 in 43.233 MB/s out 46.170 MB/s igb2 in 42.806 MB/s out 45.773 MB/s igb1 in 43.495 MB/s out 45.489 MB/s igb0 in 43.208 MB/s out 46.079 MB/s
端口上存在一些偏差,这是由于路径选择策略限制-操作或字节数引起的,之后切换到另一个端口。 默认情况下为1000 IOPS,也就是说,如果数据交换在999次操作之内,它将通过一个网络端口。 您可以更改,比较和选择适当的值。 您无法更改,默认值足以完成大多数任务。
我们进行测量,测试,工作。 结果显着优于单个驱动器的功能,因此现在我们的虚拟机可能不再需要进行I / O操作。 阵列的最终速度和容错能力将取决于硬件以及如何配置卷。