我正在维护一个托管在 Ubuntu 上的无盘瘦客户端服务器。目前,我们正在使用 nbd/aufs 解决方案将瘦客户端启动到 Linux,但我有一个新的要求,即支持 Windows 7 客户端,从一些网络研究来看,这似乎需要 iscsi 启动。据我所知,这可行,但我需要为每个客户端提供不同的 Windows 7 映像。我知道 Wyse 和 Citrix 等产品可以使用共享映像,并且每个设备都有自己的“写入缓存”来支持客户端写入。是否有支持类似功能的 Linux iscsi 目标?我研究过 tgt、IET 和 LIO,但我对 iscsi 了解不够,不知道它们是否支持此功能(我确实找到了一个 Windows 解决方案(sanfly),将其称为共享持久模式,但这似乎不是 iscsi 的标准术语))
或者我是否应该寻找像 ocfs 或 gfs 这样的集群文件系统?
答案1
tgt 和 IET 都不会为您提供“共享映像”的功能,因为这根本不是他们的工作。他们为您所做的只是通过 iSCSI 协议提供对块设备的访问。这种事情根本不属于 iSCSI 的范围。
但是,您可以使用 LVM 快照来构建您正在寻找的内容: http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
您将使用一些预填充的磁盘作为起始映像,并创建几个快照,这些快照具有合理大小的 CoW 区域,供您的瘦客户端进行写入。通过 iSCSI 导出快照将为您提供所需的结果。
但是,请记住,这种操作会带来一些可管理性问题 - 创建快照后,对原始磁盘的更改不会传播到快照,因此没有简单的方法进行集中配置更改或图像更新。
另一个可能的选择是使用 ZFS(无论是 Solaris 还是 Linux 的 zfs-fuse 实现)以及快照或基于块的重复数据删除功能。重复数据删除在 RAM 方面相当昂贵,但在某些情况下可能会节省更多空间。
ZFS 设置将为您提供更多灵活性 - 使用 LVM 快照,您必须在创建时为快照 CoW 区域设计一定数量的存储空间,并且需要处理之后可能出现的溢出情况(快照溢出会导致快照无法使用,需要加以预防 - 例如通过扩展 CoW 大小),而使用 ZFS 的灵活分配,则无需这样做。
丹尼斯
答案2
我想要同样的东西。
目前看来,唯一的选择是付费解决方案 ccboot。它似乎能够获取 vmdk 机器映像并使用 COW 进行写入。
唯一的缺点是它只能在 Windows 上运行。