如何使用内部SSD缓冲写入外部驱动器


3

这个问题有点奇怪,我会尽量详细说明。

我正在重新利用旧计算机作为家庭备份解决方案。数据的最终安放位置是通过USB 2.0连接的外部G-Drive(我告诉你它是一台旧计算机。)我想弄清楚如何在计算机的新闪亮SSD驱动器上使用一些空间来缓冲写入到外部驱动器。我正在使用OpenSUSE Leap 15,安装了服务器。

到目前为止,我已经找到了bcache,我可以将其设置为回写模式并获得类似于我正在寻找的东西。问题是我将缓冲的分区使用btrfs(透明压缩),并且已经报告了使用这两者一起报告的问题。该牌坊维基说,这是固定在3.9,但我不觉得在链接的来源,任何地方。

还有lvmcache。我看到的唯一的回写参考是手册页中的简短昙花一现,没有进一步解释。我也已经在使用lvm将SSD分成带有精简池的各个分区,所以我担心使用lvmcache会要求我在两个驱动器上创建一个新的专用lvm-vg,以防止精简池传播到外部。此外,在BTRFS维基中有一些注释,在任何块级别上使用BTRFS都可能导致问题。

DM-Cache是另一个高度可配置的选项,我仍在学习中。由于它在块级别上工作,它仍然可能与btrfs冲突。

最后一个选项是使用zfs设置基于SLOG的ZIL。该消息来源表示,对于1Gbps连接,最大的SLOG必须是.625 GB,因为它会每5秒刷新一次。但是,基于广泛的测试,我可以获得的最高持续写入速度是30MB / s。这意味着将一个.625GB的slog转储到ZFS驱动器需要20秒。(更新:基于此源此源,SLOG设备不是为了提高吞吐量,只是为了减少延迟。)(更新到更新:在评论中Dan澄清了这是什么意思。它仍然可能是ZIL可以在这种情况下使用。)

知道大写会不可避免地受到外部连接的瓶颈。我认为大约几十GB的任何东西最终都会达到30MB / s。我的目标不是解决这个问题。我可能会使用rsync将数据发送到外部,所以我想加快大多数小于10GB的传输速度。

我基本上好奇是否有其他人做过与此类似的事情,并提出建议,或者可以指出某个特定选项比其他人更好。现在我正在考虑ZFS / SLOG选项是最好的选择,使用10GB的slog驱动器,但我不知道那么大的驱动器将如何使用5秒刷新。

tl; dr:在内部驱动器上缓冲大约10GB的数据然后将其传输到外部驱动器的最佳方法是什么(虽然我知道并非所有这一切都是完全推荐的)?


1
你有最奇怪的问题,最好的解决方案和精心研究的想法。我喜欢它!
里卡多S.

1
我之前没遇到过这个问题,但是你看过dm-cache吗?(en.m.wikipedia.org/wiki/Dm-cache
davidgo

@davidgo LVMCache 基于 dm-cache,它可能会打开由块级解决方案+ btrfs引起的相同问题。话虽这么说,dm-cache中似乎有很多可配置性,包括限制缓存和源之间的数据传输。这意味着如果我能解决透明压缩问题,dm-cache可能是比其他两个更好的块层设备。感谢您的投入!:)
Zyra

Answers:


2

我相信你提到的任何解决方案都可以正常工作(减去bcache/ LVM和BtrFS 之间的交互- 我不知道你在那里做的更多)。选择可能取决于您最容易理解,设置和维护的内容。

就个人而言,我会选择ZFS,因为:

  1. 我有很多经验。
  2. 它为此用例提供了一体化解决方案(压缩加上使用SSD来缓存读取和/或写入)。
  3. 它提供了许多其他奇特的功能(快照和克隆,重复数据删除,RAID-Z,复制zfs send,加密,压缩RAM缓存......),即使您现在不使用它们,您将来可能会发现它们很有用。还有一个健康的开源社区,不断添加新功能。

你认为扩大SLOG大小有助于防止出现瓶颈吗?我对ZFS唯一担心的是ZIL每隔5秒就会刷新一次。我不确定这是否意味着在刷新期间停止写入,或者发生了什么。我将不得不阅读更多内容。ZFS也是我所倾向的。
Zyra

1
@Zyra:对 - 使用slog(或任何写缓存)将加速写入,直到你填满它,然后一切都会慢慢降低到主池的速度,而事情被推出缓存。当所需的吞吐量高于主池可提供的吞吐量时,这确实可以提高吞吐量,但如果您的工作负载始终需要比主池更高的吞吐量,那么使用更快的主池的唯一方法就是如此。关于您的其他问题,写入不会在缓冲区刷新时被阻止,它们仅在早期写入ZIL / slog时被阻止。

1
也许这是从错误的一端接近的。据我所知,您正在讨论如何通过选择哪个fs最适合预期目的来加速和稳定缓存,同时您仍然具有USB 2.0连接的明显限制。提到30MB / s。可能值得添加第二个USB驱动器并将两个extDrives设置为RAID 0 ..或Stripe。维基百科声称这会提高性能。我认为让缓存卸载的两个驱动器可以提高性能并不是一个太大的飞跃。
里卡多S.

2
@RicardoS。当然 - 添加额外的驱动器并将它们放入条带式zpool,或使用内部硬盘而不是USB连接的驱动器,将有助于主池的性能。写入带宽与ZFS中的驱动器数量大致成线性关系(用于条带化或更复杂的配置,如RAID-Z,具有更多冗余以防止磁盘故障),也可能用于大多数其他条带化解决方案。

1
@Zyra右,通过您提供的配置配置条带化zpool create。您也可以通过zpool add今天(示例)向池中添加更多磁盘,但在您提及的项目发布之前,您将无法将磁盘添加到RAID-Z。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.