web-dev-qa-db-ja.com

HDDのスピンアップ時間を最小限に抑えるSSDキャッシュ?

最初の短いバージョン:SSDを使用してHDD書き込みを透過的にキャッシュできるLinux互換ソフトウェアを探しています。ただし、HDDを1日に1〜2回スピンアップしたいだけです(キャッシュされたデータをHDDに書き込むため)。それ以外の時間は、ノイズの問題でHDDが回転していないはずです。

長いバージョン:Xubuntuを実行する完全にサイレントなコンピューターを構築しました。 A10-6700T APU、巨大なファンレスクーラー、ファンレスPSU、SSDを搭載しています。問題は、ノイズの多いHDDも持っている(そして必要としている)ので、夜間に回転させることを禁止したいということです。すべての書き込みはSSDにキャッシュする必要があり、夜間の読み取りは必要ありません。

このコンピューターは、毎日、約5 GBのデータを自動的にダウンロードします。このデータは約1年間保持されるため、必要なディスク容量の合計は2TB弱になります。このデータは現在、昼夜を問わず回転している3 TBノイズの多いハードディスクドライブに保存されています。数か月前のデータにアクセスする必要がある場合もあります。ただし、ほとんどの場合、 SSDに収まる過去14日間のデータのみが必要です。理想的には、SSDへのすべての書き込みをキャッシュし、HDDへの書き込みを1日1回だけ行う透過的なソリューション(1つのファイルシステム上のすべてのデータ)が必要です。読み取りがまだ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から最も古いファイルを削除しながら、いくつかのスクリプトを使用してファイルを大きなドライブに自動的にコピーします。

EditCacheは本当に私が欲しかったものに対して間違った用語です。現時点では、当初の意図した解決策は不可能のようです。貢献してくれた皆さん、ありがとう!

8
sirprize

それは実際にはキャッシュがどのように、またはなぜ機能するのかではありません-キャッシュは、hddへの書き込みを最小限に抑えるのではなく、SSDまたは他のメモリのより高速でより良いランダムアクセスを利用することを目的としています。キャッシングは、大きくて遅いストレージデバイスをバックアップする、より小さく、より高速なバッファを使用することにより、書き込みを減らすのではなく、速度を最大化するように設計されています。

実際、メインラインのLinuxカーネルの一部であるbcacheは、パフォーマンス上の利点がないため、SSDを介して渡すのではなく、hddに順次書き込みを渡すだけです。

ZIL/L2Arcは、SSDを使用してログ(ZILの場合)および一般的に使用されるファイルクラスター(L2Arcを使用)を保存します。 ZILは、すべての書き込み準備が整うまで同期書き込みを保存することにより、同期書き込みを高速化します。 L2Arcは、一般的にアクセスされるファイルをより高速なストレージに保存します。これらのどちらも、必要なことを実行できません。

フュージョンドライブalsoは、SSDとHDDを使用して、一般的に使用されるファイルをSSDに透過的に配置して読み取りを高速化し、HDDをバルクに配置しますあまり使用されないファイルのストレージ。 SSDをスクラッチスペースとして使用したり、ファイルをメインドライブに頻繁にバックアップしたりすることもできません。

あなたが見ているのは、キャッシュではなく、システムのHDDへの定期的なバックアップです。 Aufs -より大きなファイルを含むHDDの最初のブランチ(かなりの時間がかかる)とSSDのブランチを組み合わせて、何かをファッジできる可能性があると思います。次に、次のスクリプトを実行します。同じ場所からアクセスできるようにしながら、ファイルをSSDからHDDに定期的に移動します。私はまだこれをテストしていませんが、キャッシュとは異なり、定期的にファイルを移動し、aufsを使用することがまさにあなたが望むものになるでしょう。

ファイルを年齢で並べ替える最も簡単な方法は、ls -tr --tで時間(新しいものから古いものへ)で並べ替え、rは順序を逆にします。 (特定の範囲を念頭に置いている場合、find . -mtime nは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を実行します。

3
Journeyman Geek

他の回答はソフトウェアの観点から問題を扱っているので、ハードウェアソリューションに関するいくつかの情報を含めることを考えました。

記事 ハードドライブの防音 には、次のオプションが記載されています。

  • ハードドライブを最適化する
  • ハードドライブを輪ゴムで包み、振動を減衰させます
  • 新しいハードドライブを探す:現在のほとんどのハードドライブには流体力学ベアリングが装備されているため、非常に高速で回転している場合でも、プラッターはほとんど静かなままです。

私自身の経験から、非常に大きなファイルをコピーしても、新しい4 TBハードディスクは聞こえない」と証言できます。

いくつかの研究では、 SilentDrive HD Enclosure&Acoustic Materials または NoiseMagic NoVibes III Silent Hard Drive Mounting System などのハードディスク用の音響減衰材料も見つけることができます。これらがどこで販売されているかはわかりませんが、上の輪ゴムはほぼ同じくらい効率的だと思います。

コンピュータ全体を防音することもできます。防音材を販売しているウェブサイトの例としては、 Quiet PC USAAcousticPC または Dynamat がありますが、そのようなものはたくさんあります。

一部のコンピュータケースは、すでにサイレント操作用に設計されています。たとえば、
6つの低ノイズ、パフォーマンス指向のケース、テスト済み

最後の注意として、ガタガタ、カチッという音、またはきしむ音がするノイズの多いハードドライブは、ハードドライブが故障し始めていることを示している可能性があるので、注意してください。

3
harrymc

Puppy Linux のいくつかのバリエーションはUbuntuに基づいていますが、 Aufs を使用しています。

パピーは完全にRAMから実行され、通常の操作ではHDDアクセスはありません。

HDDがフラッシュドライブであることをパピーに伝えると、RAMファイルシステムを継続的ではなく定期的にディスクにダンプします。これは、フラッシュドライブへの頻繁な書き込みの摩耗を減らすように設計されていますが、 HDDも。

パピーのほぼすべての場合と同様に、GUIを使用して、RAMファイルシステムを保存する頻度を設定できます。通常、これは10分ごとになりますが、次のように設定することを妨げるものはありません。たとえば、720分(12時間)ごとにダンプします。

Puppy Linux Event Manager

私のGrub4DOSブートローダーからのこの抜粋menu.lstファイルは、HDDの代わりにフラッシュドライブを使用していることを示すpmediaカーネルオプションの設定を示しています。

# 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

パピーリナックスの「バリエーション」についてのメモ...
Ubuntu 10.04 Lucid Lynxをベースにした(ペアリングして構築された)パピーリナックス5.2.8「Lupu」を使用しています。このバージョンは、その起源から「Lupu」ではなく「Lucid」と呼ばれることもあります。 Slackwareやその他のディストリビューションに基づくバージョンもあります。すでにXubuntuを使用しているので、パピーリナックスループが最もよく知られています。また、はるかに高速になります。パピーを見つける前に、Xubuntuを約1年間使用しました。

「PuppyLinuxPrecise」と呼ばれる「UbuntuPrecisePangolin」をベースにしたはるかに新しいバージョンもあります。新しいバージョンで使用されているカーネルには大きな変更があり、古いハードウェアではうまく機能しない可能性があります。お使いのマシンが5年間未満の場合は、Preciseの方が満足できるかもしれません。正確なオプションなどは異なる場合がありますが、テストすることはできませんが、上記の手法はPreciseでも機能すると思います。

2
DocSalvager

短い解決策ですぐに実装できます(ただし、必要なものに正確に答えることはできません)。ストレージディスクを別の場所に転送します。これは、netowrkファイルサーバーシャ​​ーシ(WDワールドエディションなど)またはUSB3ディスクである可能性があり、静音PCと同じ部屋に置くことも、完全に聞かないように別の部屋に置くこともできます。

確かにドライブのみを使用するので、これは私の意見ではより良いですネットワーク経由でデータを転送したい場合-OSはあなたができる他の整理またはファイルシステムツリーのリバランスを行っている可能性があります避けないでください、そしてあなたを邪魔するでしょう。だから別の部屋は大きなプラスです。

キャッシュは十分に簡単である必要があります。その日のデータを外部ディスクにバックアップするだけです。これは、rsyncunisonなどのソリューションを使用して実行できます。

長いソリューションは理想的ではありません(つまり、単一のアプリケーションはありません)が、ドライブをssdと同じボックスに入れて、より高速を実現します(ただし、ネットワークよりも1日あたりわずか5GBの高速が本当に必要ですか?):

smartctlを使用して、ドライブのスピンダウン時間を設定し、このドライブをマウントされていない状態に保つことができます。これにより、OSがドライブ上で処理を実行することを回避できます。次に、スクリプトをmountに記述し、必要なデータを(上記のように)バックアップします。

0
nass

あなたは私の答えが気に入らないでしょうが、あなたは実際にキャッシュという用語を乱用しています。あなたは実際にバックアップソリューションを説明しています。より完全なものが必要な場合は、rsyncを参照するか、他のバックアップソリューションをさらに検索してください。

0
Dim