SSD缓存可最大程度地减少硬盘启动时间?


8

首先简短版本:我正在寻找Linux兼容软件,该软件能够透明地使用SSD缓存HDD写操作。但是,我只想每天旋转硬盘一次或两次(将缓存的数据写入硬盘)。其余时间,由于噪声问题,HDD不应旋转。

现在是更长的版本:我已经构建了运行Xubuntu的完全静音的计算机。它具有A10-6700T APU,巨大的无风扇散热器,无风扇PSU和SSD。问题是:它也有(和需要)一个嘈杂的HDD,我想在晚上禁止旋转它。所有写操作均应缓存在SSD上,夜间无需读取。

在每天的整个过程中,这台计算机将自动下载大约5 GB的数据,这些数据将保留大约一年,从而使所需的磁盘总容量略少于2 TB。该数据当前存储在一个昼夜不停旋转的3 TB嘈杂的硬盘驱动器上。有时,我需要访问几个月前的一些数据。但是,大多数情况下,我只需要最近14天的数据即可,这些数据将适合SSD。理想情况下,我想要一个透明的解决方案(所有数据在一个文件系统上),该解决方案将对SSD的所有写入缓存,而每天仅对HDD写入一次。如果读取仍在SSD上,则将由缓存提供服务,否则HDD将不得不旋转。

我尝试了bcache并没有获得很大的成功(使用cache_mode = writeback,writeback_running = 0,writeback_delay = 86400,sequential_cutoff = 0,congested_write_threshold_us = 0-缺少任何内容吗?),我读到有关ZFS ZIL / L2ARC的信息,但不确定是否可以实现我对ZFS的目标。有指针吗?

如果所有其他方法均失败,我将仅使用一些脚本将文件自动复制到大驱动器,同时从SSD删除最旧的文件。

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


1
您为什么不只在SSD上保留14天(或非常适合)的数据,并编写一个脚本,该脚本每天运行一次,然后将比旧硬盘更旧的文件移动到HDD?这样,如果您使用的时间少于14天,则将使用SSD,而HDD每天只会写入一次。如果您需要更旧的东西,则必须访问HDD。
理查德·鲍威尔

正如我在问题的最后一句中所建议的那样,这就是我要做的事情:)我提出该问题的原因之一是避免了(手动的)麻烦,它避免了手动启动和安装驱动器的麻烦(虽然很小)具有透明的文件系统。
sirprize 2013年

Answers:


3

那并不是真正的缓存方式或原因-缓存旨在利用SSD或其他内存的更快速度和更好的随机访问优势,而不是最大程度地减少对HDD的写入。高速缓存旨在通过拥有更小,更快的缓冲区来支持大型,慢速的存储设备来最大化速度,而不是减少写入。

实际上,作为主线linux内核的一部分的bcache只会将顺序写入硬盘传递给硬盘,而不是通过SSD传递硬盘,因为这没有性能优势。

ZIL / L2Arc使用SSD来存储日志(对于ZIL)和常用的文件集群(对于L2Arc)。ZIL通过存储它们直到准备好进行写入来加速同步写入。L2Arc将常用的文件存储在更快的存储空间中。这些都不会让您做所需的事情。

Fusion驱动器 使用SSD和HDD透明地将常用文件放在SSD上以加快读取速度,并使用HDD批量存储不常用的文件。它也不允许您将SSD用作暂存空间,并且经常将文件备份到主驱动器

您所需要的根本不是缓存,而是将系统定期备份到HDD。我猜想您也许可以与Aufs一起做一些事情-HDD 上具有较大文件的第一个分支(因此会很精确),以及SSD上的一个分支,然后运行一个脚本,将文件从SSD移到定期从同一位置访问HDD。我尚未对此进行测试,但是与缓存不同,定期移动文件和使用aufs可能正是您想要的。

按年龄排序文件的最简单方法是ls -tr-t按时间排序(从最新到最旧),r反转顺序。(如果您有一个特定的范围,则find . -mtime n可以使用n,因为特定的数字可以使您在n天前修改文件,-n可以使您在最近n天修改文件,而+ n可以为您在n天之前修改文件)。您可以在此处找到有关如何使用它的一些想法

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


感谢您的输入,这是我最喜欢的答案。我不了解aufs,将对此进行调查。
sirprize 2013年

对于像您这样的分批处理过程,透明性实际上是不可能的-我可以想到许多触发备份类型作业的方法,但是您实际上是在查看脚本,一些sed / awk选择所需的文件并移动文件,也许用cron。我有一半人怀疑单独使用hdparm可能会大大解决硬盘驱动器的“响度”问题,这将使您在不使用时关闭驱动器电源,这可能也很有用。
Journeyman Geek

再次感谢,我将按照问题的最后一句中的建议使用一些bash-fu,cron,hdparm,mount和rsync。hdparm -M确实有助于使驱动器更安静一些,但我希望该磁盘在晚上不旋转。
sirprize 2013年

3

由于其他答案已从软件角度解决了该问题,因此我认为其中应包含一些有关硬件解决方案的信息。

文章隔音您的硬盘驱动器列出了以下选项:

  • 整理硬盘碎片
  • 将硬盘驱动器包裹在橡皮筋中以减轻振动
  • 换一个新的硬盘驱动器:当今大多数硬盘驱动器都配备了流体动力轴承,即使高速旋转时,它们也可以使盘片几乎保持静音。

我可以根据自己的经验作证,即使复制非常大的文件,也听不到新的4 TB硬盘。

通过一些研究,您还可以找到硬盘的消音材料,例如 SilentDrive HD外壳和隔音材料NoiseMagic NoVibes III静音硬盘安装系统。我不知道这些产品在哪里出售,在我看来,上面的橡皮筋几乎一样有效。

一个人也可以使整个计算机隔音。出售隔音材料的一些示例网站是Quiet PC USAAcousticPCDynamat,但是有很多这样的网站。

一些计算机机箱已经设计用于静音操作。例如,请参见“
六种经过测试的低噪声,性能导向的案例”

最后要说的是,杂乱的硬盘驱动器发出喀嗒声,咔嗒声或吱吱作响的声音可能表明您的硬盘驱动器开始出现故障,因此请当心。


谢谢您的反馈,请多多支持。我已经在使用专用硬件-在这种情况下,除了驱动器之外,其他硬件都是完全静音的。我所说的“噪音”是指正常的健康硬盘驱动器声音。我只需要使用cron即可旋转驱动器,安装驱动器,进行备份,卸载并重新旋转驱动器。
sirprize 2013年

2

Puppy Linux的几种变体都基于Ubuntu,但使用的是Aufs

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上使用,尽管确切的选项等可能有所不同,但无法对其进行测试。


0

简短的解决方案和快速可实现的(但不能完全回答您想要的)是:将存储磁盘转移到其他地方。它可能是netowrk文件服务器chassi(例如WD世界版)或USB3磁盘,您可以将其与安静的PC放在同一房间,或放在不同的房间,以免完全收听。

我认为这更好,因为您肯定只在要通过网络传输数据时才使用驱动器-操作系统可能正在做一些其他的整理或文件系统树重新平衡,您无法避免并且会干扰您。因此,不同的房间是一大优势。

缓存应该足够容易-只需将当天的数据备份到外部磁盘即可,您可以使用rsync或解决方案来完成unison

较长的解决方案也不是理想的选择(例如,没有单个应用程序),但是您将把驱动器与ssd放在同一盒中并获得更高的速度(但是,每天5GB的带宽确实需要比网络更高的速度吗?):

您可以smartctl用来设置驱动器的降速时间并将该驱动器保持为未安装状态-避免让OS在驱动器上做任何事情。然后,只需编写脚本mount并备份(如上所述)所需的数据即可。


不幸的是,这些都是我想避免的事情。谢谢您的宝贵时间!
sirprize 2013年

0

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


这是绝对正确的,这就是我在回答中深入探讨的内容:)
Journeyman Geek
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.