如何让Cassandra在SmartOS中的ZFS上使用两个磁盘?

时间:2013-10-29 12:09:10

标签: cassandra solaris opensolaris zfs smartos

我听说当Cassandra可以将其日志文件写入一个磁盘,并将SS Tables写入另一个磁盘时,会有很大的改进。我有两个磁盘,如果我运行的是Linux,我会将每个磁盘安装在不同的路径上,并将Cassandra配置为写入。

我想知道的是如何在ZFS和SmartOS中实现这一点。

我是SmartOS中的一个完全新手,根据我的理解,我将磁盘添加到存储池中,然后将它们作为一个进行管理吗?

2 个答案:

答案 0 :(得分:2)

psanford解释了如何使用两个磁盘,但这可能不是你想要的。通常建议解决操作系统I / O调度中的缺陷。 ZFS具有写入限制以避免磁盘饱和[0],并且可以将SmartOS配置为限制I / O以确保读取器在某些用户(可能是同一用户)执行大量写入时看到良好的性能[1]。如果开箱即用的配置不够,我会感到惊讶,但是如果你看到不好的表现,那么量化它会很好。

[0] http://dtrace.org/blogs/ahl/2014/02/10/the-openzfs-write-throttle/ [1] http://dtrace.org/blogs/wdp/2011/03/our-zfs-io-throttle/

答案 1 :(得分:1)

默认情况下,SmartOS将所有磁盘聚合到一个ZFS池中(SmartOS将此池命名为“区域”)。在此池中,您可以创建ZFS数据集,这些数据集可以看起来像块设备(用于KVM虚拟机)或文件系统(用于SmartOS区域)。

您可以在SmartOS中设置多个池,但您必须手动完成。 Solaris documentation仍然非常好,适用于现代Illumos发行版(包括SmartOS)。 Chapter 4具有创建新ZFS池的所有相关信息,但它可以简单如下:

zpool create some_new_pool_name c1t0d0 c1t1d0

这假设您可以访问全局区域。

如果我在裸机上运行Cassandra集群并且我想从ZFS和DTrace这样的东西中受益,我可能会使用OmniOS而不是SmartOS。我不希望与我的数据库机器争用任何资源,因此我不会在该硬件上运行任何其他区域或VM(这是SmartOS真正擅长的)。