我对使用以下技术在 Linux 上手动推出 SAN 解决方案感兴趣:
- 集成式系统接口
- mdadm 突袭
- lvm
- 多路径
- xfs/gfs/???
- 组合网卡
硬件方面,我考虑在目标和启动器上使用 2 个千兆以太网(或更好)交换机和多个千兆以太网网卡。
在完全 n+1(最小)冗余的假设下,人们对如何配置这一点有什么建议?
另外,我是否需要在 iSCSI“结构”中间设置一组聚合器主机?像这样:
目标 (使用 mdadm) <-gigE-> 聚合器主机 (lvm) <-gigE-> 发起程序
或者最好这样做:
目标(无镜像)<-gigE-> 聚合器主机(mdadm)<-gigE-> 启动器(lvm)
有很多种方法可以设计这个,我感兴趣的是其他人在做类似的事情时有什么经验?
SAN 将用于 VMware 映像和通用文件服务(如果可行,加上一些数据库)。
答案1
这是一个非常主观的问题,并且很大程度上取决于您想要实现的目标。
此外,您问了一些相当低级的问题,这让我相信您以前没有在这个领域工作过,没关系,我们都从零开始,然后从那里开始提升。
鉴于这两点观察,我建议您从小事做起,然后逐步进步。
[1] 首先从 iSCSI 启动器(客户端)和 iSCSI 目标(服务器)开始,两者都在不同的主机上。它们可以是直通电缆,也可以通过交换机,此时这并不重要。尝试一下。添加更多目标,在客户端上为 iSCSI 目标创建一个 mdadm raid(现在不用担心所有 iSCSI 目标都来自一个主轴)。然后开始在客户端上使用 LVM。创建多个 PV,将它们添加到 VG,然后创建 LV。扩展您的 LV。创建 LV 的快照镜像。
真正深入研究 LVM,它将成为您所做的一切的关键。
接下来添加第二个 iSCSI 目标服务器。我还建议此时购买一个支持 LACP 和一些管理的像样的交换机。Procurve 1800 系列交换机是不错的底端,Cisco SG-300 也是如此。交换机管理和功能以后会变得更加重要,但现在投资它们是个好主意。此时,有了两个 iSCSI 目标服务器,您将需要重复您在拥有一个服务器时所做的事情。如果您真的想获得更多乐趣,请添加第二个启动器,并让它安装相同的 iSCSI 目标。当您尝试让两个系统写入同一个 EXT3 卷时会发生什么?将您的卷转换为类似 GFS 的东西(涉及更多内容,但这是此时的目标)。现在,当两个主机写入同一个卷时会发生什么?
现在让我们为所有客户端添加两个网卡。现在你需要了解网络绑定[2]。有哪些不同的模式,它们有何不同。在连接的两端运行一些带宽测量工具,用各种绑定模式填充链路。当你混合使用模式导致两端不匹配时会发生什么?当你使用与 LACP 兼容的模式并且你的交换机配置为执行 LACP[3] 时会发生什么?重复你上面关于存储所做的事情。
从绑定接口中移除接口。为目标服务器上的每个接口分配一个唯一的 IP。确保目标服务器将通过每个接口共享其 iSCSI 目标。现在使用两个不同的 IP 地址安装 iSCSI 目标。当您向每个目标写入时会发生什么?现在配置多路径 [4],并尝试一段时间。关闭目标服务器的其中一个 NIC(如果关闭设备,则移除电缆等),您在日志中看到了什么?性能如何提高/降低?
现在添加第二个网络交换机。您可以增加网络接口数量,也可以将它们拆分到交换机上。您应该使用哪种绑定模式?两个交换机之间是否应该有链接?是否需要启用 STP?
现在,您的学习已接近尾声,您已接近大师学徒的水平。您并非无所不知,但您的理解基础比大多数人要好得多。从这里开始,您将对如何构建存储基础架构有更好的了解。如果您使用光纤通道或 ATAoE,技术将发生变化,但主要概念将保持不变。
有用的网络资源:
[1]http://www.cyberciti.biz/tips/rhel-centos-fedora-linux-iscsi-howto.html
[2]http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding
[3]http://en.wikipedia.org/wiki/Link_aggregation
[4]http://sources.redhat.com/lvm2/wiki/MultipathUsageGuide
我将把它公开,以便每个人都能编辑。