SSD 缓存可以最大限度地减少 HDD 旋转时间吗?

SSD 缓存可以最大限度地减少 HDD 旋转时间吗?

简短版本优先:我正在寻找能够使用 SSD 透明地缓存 HDD 写入的 Linux 兼容软件。但是,我只想每天旋转 HDD 一两次(将缓存的数据写入 HDD)。其余时间,出于噪音方面的考虑,HDD 不应旋转。

现在是更长的版本:我组装了一台运行 Xubuntu 的完全静音的电脑。它有 A10-6700T APU、巨大的无风扇散热器、无风扇 PSU、SSD。问题是:它还有(并且需要)一个嘈杂的 HDD,我想禁止它在夜间旋转。所有写入都应缓存在 SSD 上,夜间不需要读取。

每天,这台计算机都会自动下载大约 5 GB 的数据,这些数据将保留大约一年,因此所需的总磁盘容量略低于 2 TB。这些数据目前存储在一个 3 TB 的嘈杂硬盘驱动器上,该驱动器日夜旋转。有时,我需要访问几个月前的一些数据。但是,大多数时候我只需要过去 14 天的数据,这些数据可以放在 SSD 上。理想情况下,我想要一个透明的解决方案(所有数据都放在一个文件系统上),它将所有写入 SSD 的操作缓存起来,每天只写入 HDD 一次。如果读取仍在 SSD 上,则缓存将提供读取服务,否则 HDD 必须旋转起来。

我努力了缓存没有取得太大成功(使用 cache_mode=writeback、writeback_running=0、writeback_delay=86400、sequential_cutoff=0、congested_write_threshold_us=0 - 缺少什么?)并且我阅读了ZFS ZIL/L2ARC但我不确定能否通过 ZFS 实现我的目标。有什么建议吗?

如果其他方法都失败了,我将简单地使用一些脚本自动将文件复制到大驱动器,同时从 SSD 中删除最旧的文件。

编辑缓存确实是我想要的错误术语。看来最初打算的解决方案目前对我来说是不可能的。感谢所有贡献者!

答案1

这并不是缓存的真正工作原理 - 缓存旨在利用 SSD 或其他内存的更快速度和更好的随机访问,而不是最大限度地减少对硬盘的写入。缓存旨在通过为大型、缓慢的存储设备提供较小、较快的缓冲区来最大限度地提高速度,而不是减少写入。

事实上,作为主线 Linux 内核的一部分,bcache 只会将顺序写入传递到 HDD,而不是通过 SSD,因为这样没有性能优势。

ZIL/L2Arc 使用 SSD 来存储日志(就 ZIL 而言)和常用文件群集(使用 L2Arc)。ZIL 通过存储同步写入直到它们全部准备好写入来加快同步写入速度。L2Arc 将常用文件存储在更快的存储设备上。这两种方式都无法满足您的需要。

聚变驱动 使用 SSD 和 HDD,透明地将常用文件放在 SSD 上,以便更快地读取,并将 HDD 用于批量存储不常用的文件。它也不允许您将 SSD 用作暂存空间,而是不时将文件备份到主驱动器

你看到的根本不是缓存,而是定期将系统备份到硬盘上。我猜你可能能够用以下方法捏造一些东西:奥夫斯 -HDD 上的第一个分支包含较大的文件(因此优先),以及 SSD 上的分支,然后运行一个脚本,定期将文件从 SSD 移动到 HDD,同时使其可从同一位置访问。我还没有测试过这一点,但与缓存不同,定期移动文件并使用 aufs 可能正是您想要的。

按年龄对文件进行排序的最简单方法是 ls -tr - t 按时间排序(从最新到最旧),r 反转顺序。(如果您心中有一个特定的范围,find . -mtime nn 会非常有用,因为特定数字会为您提供 n 天前修改的文件,-n 会为您提供过去 n 天内修改的文件,+ n 会为您提供 n 天前修改的文件)。您可以找到一些关于如何使用它的想法这里

由于安静才是您真正想要的目标,您可以使用以下命令检查您的驱动器是否支持静音模式hdparm -M /dev/sda- 输出的内容应类似acoustic = 254 (128=quiet ... 254=fast),在这种情况下,您可以使用命令使硬盘驱动器更安静。 当您需要更快的速度时,hdparm -M 128 /dev/sda请运行相反的命令。hdparm -M 1254 /dev/sda

答案2

由于其他答案已经从软件的角度处理了这个问题,所以我想包含一些有关硬件解决方案的信息。

文章硬盘隔音列出了以下选项:

  • 对硬盘进行碎片整理
  • 用橡皮筋缠绕硬盘以减轻振动
  • 购买新硬盘:当今大多数硬盘都配备了流体动力轴承,这使得盘片即使在非常高的转速下也能保持几乎无声。

我可以根据自己的经验证明,即使在复制非常大的文件时,我也永远听不到我的新 4 TB 硬盘的声音。

通过一些研究,人们还可以找到硬盘的隔音材料,例如 SilentDrive HD 外壳和声学材料或者 NoiseMagic NoVibes III 静音硬盘安装系统。我不知道这些在哪里卖,上面的橡皮筋在我看来几乎同样有效。

你也可以将整台电脑隔音。一些销售隔音材料的网站包括安静的 PC 美国声学PC或者迪纳玛特,但这样的还有很多。

有些计算机机箱已经设计为静音运行。例如
六款低噪音、性能卓越的机箱经过测试

最后要说的是,如果硬盘发出咔嗒声、咔哒声或尖叫声,这可能是硬盘开始出现故障的征兆,所以要小心。

答案3

几种变体小狗Linux基于 Ubuntu,但使用奥夫斯

Puppy 完全由 RAM 运行,正常运行时无需访问 HDD。

如果你告诉 Puppy 你的 HDD 是闪存驱动器,它会定期(而不是连续)将 RAM 文件系统转储到磁盘。这是为了减少频繁写入闪存驱动器造成的磨损,但在 HDD 上也能正常工作。

和 Puppy 中的几乎所有东西一样,您可以使用 GUI 来设置 RAM 文件系统的保存频率。通常,保存频率为每 10 分钟左右,但也可以将其设置为每 720 分钟(12 小时)转储一次。

Puppy Linux 事件管理器

我的 Grub4DOS 引导加载程序文件中的这段摘录menu.lst显示了内核选项的设置pmedia,表明它使用的是闪存驱动器而不是 HDD……

# menu.lst produced by grub4dosconfig-v1.7.1
#
# 'kernel ... pmedia=ideflash'
#     Treat the HDD as a flashdrive: infrequent writes of filesystem to savefile

title Puppy Lupu 5.2.8 (sda3/puppy528lu) Cached\nUse SWAP; changes to RAM; flush to disk every 10min (fastest)
  find --set-root --ignore-floppies --ignore-cd /puppy528lu/initrd.gz
  kernel /puppy528lu/vmlinuz   psubdir=puppy528lu pmedia=ideflash pfix=copy,fsck
  initrd /puppy528lu/initrd.gz

关于 Puppy Linux“变体”的说明...
我使用的是 Puppy Linux 5.2.8“Lupu”,它基于(精简版)Ubuntu 10.04 Lucid Lynx。由于它的起源,这个版本也经常被称为“Lucid”而不是“Lupu”。还有基于 Slackware 和其他一些发行版的版本。既然你已经在使用 Xubuntu,那么 Puppy Linux Lupu 应该是最熟悉的。它也更快。在找到 Puppy 之前,我使用了 Xubuntu 大约一年。

还有一个基于“Ubuntu Precise Pangolin”的更新版本,称为“Puppy Linux Precise”。新版本中使用的内核有重大更改,可能无法与旧硬件配合使用。如果您的机器不到 5 年,您可能更喜欢 Precise。我相信上面描述的技术仍然适用于 Precise,尽管确切的选项等可能有所不同,但我无法对其进行测试。

答案4

您不会喜欢我的答案,但您实际上是在滥用术语“缓存”,您实际上是在描述备份解决方案。请查看 rsync,或者如果您想要更完整的解决方案,请进一步搜索其他备份解决方案。

相关内容