我想为我的 Nexenta 添加一个写入缓存。我考虑过使用 2 个 SSD 镜像,第三个磁盘备用。问题是:如何计算阵列的大小以最大化投资(当然,我不想在 SSD 空间上花费太多钱,因为那时没有得到正确利用)。有什么办法吗?我想象这个计算是数据存储使用的空间和峰值工作负载、写入队列长度等的函数。但我如何将其转换为要购买的 GB 数?
我目前有一个 SATA 4x3TB 存储,几年内可以将其扩大一倍,我还有一个专用于读取缓存的 256GB SSD,但它的大小几乎是随机选择的!
非常感谢
答案1
我可能应该先说“ZIL 是不是写入缓存”。它是同步写入请求的 ZFS 意向日志,这意味着它仅在某些情况下使用(主要用于同步写入),并且仅在写入实际存储阵列所需的时间比写入 ZIL 更长的情况下才能提高速度,并且它实际上并没有写入得更快,它只是从同步写入请求中更快地返回(因此应用程序认为内容更快地写入磁盘,但实际写入吞吐量并没有整体改善)。
ZIL 不需要很大。找到阵列中传输速度最快的磁盘,然后将其乘以 10,这就是 ZIL 应该有多大。如果您想要额外的容错空间,可以将其加倍,但再多就浪费了。如今,快速盘片驱动器的速度可以超过 200Mb/s,因此由该驱动器组成的阵列的 ZIL 应该约为 2-4GB。
答案2
您的写入缓存 (ZIL) 不需要很大。大小实际上取决于您对阵列的预期写入速率。
想想 ZIL 的用途……吸收对低延迟存储的随机写入,并将它们合并以按顺序刷新到磁盘池。在 Nexenta 中,您基本上需要一个足够大的 ZIL 来处理长达 30 秒的写入……我使用的设备相当小。一个是 4GB 设备。我推荐的另一个有 8GB 容量。
如果您觉得需要使用 ZIL,请尝试获取高质量的 SSD。您可以镜像 ZIL。您不需要备用 ZIL。
哦,还有更全面的 ZIL 阅读材料在这里:http://nex7.blogspot.com/2013/04/zfs-intent-log.html