web-dev-qa-db-ja.com

外付けUSB3ハードドライブにLinuxスワップを作成する

Debianに外付けUSB3ハードドライブUSB3ポートがあり、そのドライブにスワップパーティションを作成したいと思います。このドライブは、データベースやその他の大容量のもののパーティションも保持します。

私のシステムは、Intel BIOS RAID1経由のTS140ボックス16GB RAM、2x120 SSD、2x750HDD上のDebian7.7.0です。USBハードドライブが適切でない場合は、どこにスワップを配置する必要がありますか?私はしばらくの間、単一のHDDを備えたDebian 7.6で同じボックスを使用してきましたが、使用方法を交換する必要がなかったため、交換パーティションが必要かどうかさえわかりません。また、RAMを32GBにすぐにアップグレードしたいと思っています。

ストレージのアップグレードにより、サーバーの負荷が増える(VirtualBoxクライアントの数が増える)ため、インストール中のスワップ用に永続的な場所を準備したいと思います。 Windows vboxクライアントにも同じ場所を使用してスワップをC:からそこに移動できれば素晴らしいソリューションになります。

今のところ、インストールするVirtualBoxクライアントの数と、同時に実行する必要のあるVirtualBoxクライアントの数はわかりません。最低限必要なのは、Windowsサーバー、Windows 7ワークステーション、およびLinuxワークステーションだけです。

編集:2014年11月15日16:20

JPvRiel

あなたが書いたのは情報の金鉱です、時間を割いてくれて本当にありがとう!私はあなたが書いたものに疑問を投げかけるつもりはありません。これまでのところ、少なくとも99%は私にとって理にかなっています。そして、私はこれまでに2回しか読んでおらず、その一部を2回以上読んでいます。

私が機能させようとしている構成(これまでのところ、それを機能させるためだけに最適化の懸念などはありません)は、あなたの提案をほぼ完全に反映していると思います。これまでのところ..

  • はい、40〜60米ドルのapice SDDドライブは、SWAPとして使用したときに、どのように、いつ、なぜ摩耗するかについて悩むことはありません。私はこれが非常に非常に非常によく理解されていて、私を悩ませることはなかったのですが、ありがとう!私は自分の小さな箱の32GBをブーストすることを考えたことはありませんでしたRAMこれらのRAID0120GBコモディティドライブがそれを受け入れることができる場所への制限-再び-必要が生じたとき。 、またはあちこちで数秒間、SDDが摩耗することはありませんが、SDDに240 GBの追加のSWAPを追加すると、これらのまれな場合にHUUUUGEの違いが生じます!あなたはその点で100%正しいです!私のこれを読んだ後、システム設計が再び同じように見えることは決してありません。SSD上のRAID0 RAM-あなたは貴重です!あなたのマダムまたはサーは私に解決策だけでなく展望も与えてくれました!

私はまだあなたの投稿を読んで理解しようとしています、そしてもう一度-ありがとう!

私は主に私の雇用主のために取り組んでいます。今日の日付までに、当時最新の多くの技術を購入して稼働させ、私たちの使用によって地球上で最高の技術であることが証明されましたが、私を含む工場には誰もいませんこれらのマシンが動作中に(分割)秒ごとに生成するデータの性質と量を処理する方法について、わずかな手がかりがあります。これまでのところ、技術者のシステムとハードウェアは非常にうまく機能し、うねりを生み出しています。私たちはそれらを報告させることができず、そうするために何を構築すべきかわかりません-そしてそれを維持してください!私は(まだ)このプロジェクトについて非常に混乱しています。

ここのほとんどのポスターは、1つのデータベース内の数百万のレコードについて心配していますが、自動光学検査機によって1日1時間ごとに作成および入力される数百、数百のデータベースについて心配しています。重要なものを読み取って保持する方法を見つける必要があります。データベースが消去され、検査サイクルが新たに始まる前に、私の雇用主に。

ええ、私のちょっとしたエンジニアは本当に欲求不満のギャングです。繰り返しますが、本当に、あなたの助けに感謝します!サンダー

追加:2014年12月3日

私の欲求不満のレベルは、私が最終的に追跡に切り込み、必需品に集中することを決定するまで上昇し続けていました。そして、ここにあります。皆さんが恩恵を受けることを願っています。「無制限」のボックスを買う余裕がない場合RAM目的のために-Linux/UNIXスワップとWindowsページを保存するための安価なSSDを選択してくださいファイル。SSDが故障したときに摩耗する予算があるので、同じ量で購入し、SSDのレビューに注意を払わないでください。ただし、計画が確実に狂っている場合を除きます。実際に購入するものが何であれ、常に何かがあります。 SSD製品には本質的に問題があり、この時点で正気を保つことが優先されるべきです、はいいいえ?
[。 -あなたはあなた自身です、私を引用しないでください。 SSDまたはRAIDにブートMBRまたは/ bootを配置することを検討しないでください。/homeをスワップと同じSSDに配置しないでください。それらを使用し、それらのSSDを着用して、お金の価値を手に入れましょう! C:SSD上のドライブ、/ boot、/ home-より高速な起動はい。ただし、トワイライトゾーンから直接出ている実験的なサーバーの場合は!私はUSB3HDDレプリケーター、Linuxブートドクター、a-zからカバーするソフトウェアを持っており、すべてが「spinningRust」で動作することを信頼しています。私は彼らが「錆びた信頼」であることを認めますが…あなたのCと/ homeを保護してください。それらを回転する錆の上に置きます。新しい技術にだまされてはいけません。少なくとも、回転を信頼することを検討してくださいRustもう一度!他に言うことはあまりありませんが、皆さんに幸運を祈ります!このスレッドは閉じていると思います。-Sandor

7
arch-abit

考慮すべき点がいくつかあり、セットアップとユースケースを念頭に置いてテストすることもできます。

推奨されるSWAPパーティションの場所

USB HDDが適切でない場合、どこにスワップを置くべきですか?

簡単に言えば、はい、USB3 HDDにスワップパーティションを作成できますが、2x750GBHDDがスワップを配置するのにおそらく最も安全な場所です。

ただし、スワップパーティションをすべてのディスクに分散して優先順位を付け、さまざまな優先順位を設定して、最大のパフォーマンスとスワップ容量を試すこともできます。私のように過度に最適化するのが好きな場合は、次のようなものを試すことをお勧めします(fstabなどをいじる必要があります)。

  • 2xSSDアレイに少しのスワップパーティションスペースを割り当てます。 4GB、優先度が高い(SSDスペースの制限とSSDの寿命全体にわたるパラノイアは、他の人がこれを行わない理由です)。
  • 2xHDDアレイにより多くのスワップパーティションスペースを割り当てます。 8GB、中程度の優先度。
  • USB3HDDのスワップファイルにさらに多くのスワップスペースを割り当てます。優先度の低い16GB。

そうすれば、システムRAMが、RAMを要求し、スワップアウトされている多くのプロセスで押しつぶされた場合、負荷はすべてのディスクデバイスに分散されます。スワップの優先順位は、基盤となるディスクシステムのパフォーマンスに基づいていました。

次に、いくつかの詳細な推論を検討してみます。

ストレージ速度はおそらくはるかに重要です

スワップをビジーでないドライブまたは専用ドライブに配置するという推奨事項を読んだことがあるかもしれませんが、これはリンゴとリンゴのタイプの比較にのみ適用され、SSDなどの異なるストレージメディアを混合するより複雑なシステムの正確なルールではありません。対HDDおよびインターフェースSATA対USB3。あなたの場合、指針となる原則は、I/O負荷タイプのバランスを取り、最高のスペア/フリーランダムI/Oスループットを持つストレージインターフェイスタイプとドライブが期待される場所にSWAPを割り当てることです。それはSSDである可能性がありますが、注意が必要です...

SWAP用のUSB3HDD

コメントで、USB3オプションのパフォーマンスがあまり良くなかったとおっしゃいましたが、実際、その理由は次のとおりです。

  • USB3ドライブはおそらくシングルディスクシステムですが、RAIDを備えた2xSSDおよび2xHDDのパフォーマンスは、次のようになります。
    • RAID 0は、読み取りと書き込みの両方のパフォーマンスをほぼ2倍にします。
    • RAID 1は、読み取りパフォーマンスをほぼ2倍にし、書き込みパフォーマンスをわずかに低下させる可能性があります。
    • したがって、同様の個々のドライブのパフォーマンスを想定すると、USB3 HDDは、平均して2x HDD SATAアレイが50%の時間ビジーであり、USB3 1x HDDが0%ビジーである場合にのみ優れています。
  • さらに、1台のHDDでのスワッピングを2台のSSDと比較した場合、それが同様に機能するコンテスト/チャンスはありません。単一の休止状態のUSBHDDが比較を開始する前に、SATA SSDは95%以上ビジーである必要があります...
  • USB3はSATAよりも待ち時間が長くなります。また、低遅延は、メモリアクセスのパフォーマンスと応答性の重要な要素です。

スワップ用の内蔵HDDアレイ

上記のように、スワップ用の2台のHDDは、USB3にぶら下がっている1台のHDDよりも優れている必要があり、後で説明するように、スワップとして安全に使用できる必要があります。

  • 2x HDDは、シーケンシャルアクセスパターンを持つ傾向がある大規模なデータセットに最適です。メディアファイル(音楽/ビデオ/画像)。
  • Intel RAIDのセットアップについてはよくわかりませんが、Linux RAID(mdadm)では、次のようなオプションがあることはわかっています:
    • 同じディスクを共有することもできますが、スワップ用にRAID 0を作成し、VMイメージ/データ用)にRAID1を作成します
    • rAIDオーバーヘッドを回避し、各ドライブの2番目のパーティションからアレイを作成するようにmdadmを構成しながら、個々のドライブの開始時に1番目のスワップパーティションを直接構成できます。
  • HDD磁気メディアは、SSDと比較して書き込み寿命が長いと考えられています(他のタイプの早期障害が発生しない場合...)
  • システムが大量にスワップする場合、それは大量の書き込みを意味します。

スワップ用SSD

2x SSD 120GBはスワップのパフォーマンスには最適ですが、SSDの寿命は注意が必要な要素です。

  • SSDは、回転ディスクと比較してRAMに似ており、ランダムI/Oのサポートがはるかに優れています。
  • 多くのVMとプロセスが実行されていて、RAMが頻繁に使用されている場合、スワップパーティション/ファイルへのページフォールト(読み取り)アクセスパターンはランダムになります。
    • メモリページアロケーションユニットは小さい、つまり4KB
    • Linuxカーネルは「スワップアウト」(ページを取り出してディスクに置くことでRAMを解放する)について賢く、ディスクへのより順次的な書き込みを最適化するためにバッチで実行すると思います。
    • 'swapin'の場合(プロセスがRAMからのデータを必要とする場合、それは存在しませんが、実際にはスワップ/ページフォールトにあります)、これは非常にランダムである可能性があり、SSDがExcelを実行できる場所です。
    • Windows 7 Engineering MDSNブログでは、SSDへの書き込みが多すぎるという懸念を軽減するために、読み取りが書き込みよりも約40対1多いSSDを推奨しています(Linuxが原則的に類似していることを願っています)。
  • SSDを使用してメインOSと一部のVMイメージを保存している場合でも、SWAPファイル操作にも十分な余裕があります。RAID0に2x 128GB Crucial M4があり、それらは素晴らしいシーケンシャルになります= IO(ほぼ1000MB /秒)に加えて、かなり優れたランダム読み取り/書き込みパフォーマンスもあります(主に4Kと混合サイズのランダム読み取りの厄介な組み合わせで5000IOPと50MB /秒近くを測定しました16Kブロック、ただし最大256K)。
  • エンタープライズクラスのSSD、つまりより堅牢なSLCテクノロジーに基づくものは、より多くの消去/書き込みサイクルを処理できるため、スワップに問題はありません。
  • 消費者ベースのSSD、つまり安価で高密度のMLCに基づくものは、スワップの使用が非常に頻繁に発生する場合、予想よりも寿命が短くなる可能性があります(予算のコメントを踏まえると、消費者ベースのSSDがあると想定しています)。ただし、少なくとも通常のデスクトップワークロードのシナリオでは、SSDでのスワップは問題ではないようです。
  • SSDが十分に活用されると、書き込みパフォーマンスが低下し、書き込み摩耗の問題と寿命の問題がさらに悪化します。
  • SSDガベージコレクションのヘッドルームを増やして連続する書き込みブロックを解放し、書き込みパフォーマンスと寿命を向上させることで、SSDアレイの消去/書き込み制限と書き込みパフォーマンスの問題を軽減できる可能性があります。[.____]
    • 以前にSSDをフルキャパシティーで使用したとすると、ATAセキュア消去操作はSSDを更新するのに役立つ可能性があるため、ウェアレベリングアルゴリズムはSSD全体を未割り当てとして認識します。
    • 容量の80〜90%のみをパーティション分割し、SSDスペースの端を空けておきます。
  • RAIDタイプ? SSDの信頼性をより信頼していて、バックアップから復元する時間を確保できる場合は、RAID0をお勧めします。注2つのSSD上のRAID1は、技術的にはRAID0と比較して書き込み寿命に2倍の影響を及ぼします(すべての書き込みが2倍になるため)。したがって、RAID1を避けてください...

その他の調整

複数のVMのサポートなどの懸念を考慮して、考慮すべき他のいくつかの調整とオプションもあります。

LinuxはI/OのキャッシュにRAMを愛し、仮想化はディスクI/Oを嫌う

潜在的な落とし穴:

  • すべてのRAMをゲストオペレーティングシステムに割り当てすぎないでください。これにより、I/Oをキャッシュするために一部を節約できます。
  • 「swappiness」のスイートスポットを見つけてください。スワッピングはディスクI/OをキャッシュするためにRAMにいくらかのスペースを残す必要がありますが、スワッピングが多すぎるとプロセスのスワップアウトが早すぎて一般的なマルチタスクに悪影響を及ぼします。

最新のCPUは、CPUおよびメモリリソースを仮想化するための優れたハードウェアサポートを備えていますが、ディスクストレージの共有に関しては、仮想化ワークロードがボトルネックになることがよくあります。 Linux(およびWindows)は、RAMを使用してSSDまたはHDDディスクデバイスがまだビジー状態のときにI/O操作をキャッシュすることにより、I/Oパフォーマンスを向上させることができます。 extra RAMは、複数のOSを実行するだけでなく、仮想マシンのI/Oをキャッシュする場合にも役立ちます。

仮想ゲストページファイルの場所

Windows vboxクライアントにも同じ場所を使用してスワップをC:からそこに移動できれば素晴らしいソリューションになります。

これについてはよくわかりませんが、私の勘は次のとおりです。

  • むしろ十分に割り当てる/ more RAM per VM and 必要に応じて、Linuxをスワップアウトし、ページ内でホスト上の仮想ボックスプロセスを形成します。 VirtualBoxの使用を見てください メモリバルーニングコントロール
    • 再確認した後、VirtualBoxがロックしてRAM)を占有し、ホストOSがページインおよびページアウトできないように聞こえます
    • そのため、仮想ゲストのスワップが必要になります
  • 各ゲストに十分なRAMがあり、メモリバルーニングを使用することは、各個人に比べて高速/優れているはずですVMゲストは、仮想I/Oを介して独自のスワッピングを実行します。パフォーマンスの低下
  • windows用のvirtioドライバーをインストールするオプションも検討してください(VirtualBoxは現在これをサポートしており、RedHatにはこれらのドライバーがあります)

スワップされたストレージを圧縮する

仮想ホストにかなりの数のスペアCPUコアがある場合、zswapのようなものがうまく機能する可能性があります。

  • スワップスペースに2台のHDDを使用すると、パフォーマンスが向上する可能性があります。
  • 2x SSDにスワップしてもパフォーマンスはそれほど向上しない可能性がありますが、圧縮は書き込みサイクルが少なくなることを意味します。
  • そして、より少ないストレージからより多くの仮想メモリ容量を意味します

とにかく、これは新しいカーネルを必要とするので努力する価値がないかもしれません、そしてDebianは古い試行錯誤されたカーネルに固執することで悪名高いので、カーネルをバックポートするか別のディストリビューションを見ない限り簡単なオプションではありません: Ubuntu14.04またはCentOS7は、より新しいカーネルを提供する必要があります。

ベンチマークの経験

自分のワークステーション(Windows 7)で、fio( http://www.bluestop.org/fio/ )を使用して、MSDNブログに記載されているランダム読み取りおよびランダム書き込みI/Oの傾向を模倣しました。 。スワップ/ページファイルのワークロードでさまざまなストレージオプションが提供できるものをテストしたい人は、同様のことを試すことができます。

何千ものトレースからのテレメトリデータを見て、ページファイルの読み取りと書き込みに焦点を当てると、

  • Pagefile.sysは、pagefile.sysの書き込みよりも約40対1で読み取ります。
  • Pagefile.sysの読み取りサイズは通常非常に小さく、67%が4 KB以下、88%が16KB未満です。 Pagefile.sysの書き込みは比較的大きく、62%が128 KB以上、45%が正確に1MBのサイズです。

ベンチマークの設定

これは私が使用したfioジョブファイルです:

[global]
description="test random read and write to estimate suitability for page file use"
filename=fakeswap
numjobs=1
iodepth=1
direct=1
sync=1
filesize=2048m

[pageout]
rw=randwrite
bssplit=64k/38:256K/15:1024K/45:4096k/2

[pagein]
rw=randread
bssplit=4K/67:16K/21:64K/10:256K/2

MSDNのブログ投稿テキストでは、いくつかの統計について簡単に言及しているだけなので、ブロックサイズとそれらのサイズのIOの比率について知識に基づいて推測しました。 bssplitオプションを使用して、さまざまなブロックサイズに重みを付けました。ランダムな読み取りと書き込みのIOの最終的な比率が38.5:1であり、ブログ投稿で言及されている40:1に非常に近いことを考えると、私の推測はそれほど悪くないことを願っています。

AMD SB850ベースのストレージチップセットでベンチマークを実行し、それらをRAMドライブのパフォーマンスと比較しました。

  • DDR3デュアルチャネル@ 1600MHz、2G RAMDisk(DataRAM RAMDisk製品を使用)
  • SSDx2 RAID 0(Crucial M4 128GB)、NTFS
  • HDDx4 RAID 10(Seagate 7200.14 3TB)、NTFS
  • ADATA UV150 USB3フラッシュドライブ32GB、FAT32

ランダム読み取りとランダム書き込みのベンチマークを個別に実行したことに注意してください(混合ではありませんが、実際のシステムでは混合パターンが表示される場合があります。読み取り/ページインと書き込み/ページアウトを比較することに興味があったため、分離しました)。例えば。私が使用したコマンドは次のとおりです。

fio --section=pageout --output raid10_hdd4_pageout_2G.txt page2g.fio
fio --section=pagein --output raid10_hdd4_pagein_2G.txt page2g.fio

ベンチマーク結果

ベンチマークを実行した後、彼らはUSB3フラッシュドライブ(USB3のハードディスクではないことに注意)が小さなランダムI/Oでかなりうまく機能する可能性があるという私自身の疑いを確認しました。ただし、待ち時間が非常に不安定な、より大きなランダム書き込みブロックではそれほど良くないことがわかりました。

次のグラフは、ページングの代表的な/推定ランダムI/Oパターンを使用して、2Gのスワップスペースでページアウトおよびページバックするのにかかる時間を示しています。

benchmark result - time taken to page out and page back in 2G of swap space with a representative random I/O pattern

また、平均スループットを調べて、それをRAMのスループットと比較しました。これにより、システムでスワップを使用する必要がある場合に、どのように問題が発生するかがわかります;-)

Table comparing storage options for swap space and page files

さらなる観察

  • ブロックサイズが小さく、IOの数が多いため、ランダム読み取りI/Oはランダム書き込みよりも重要です。比例して、pageinはpageoutよりも苦痛です...
  • SSDx2 RAID0はRAMより約10倍遅かった
  • HDDx4 RAID10は、ページインでひどいように見えます-RAMの約300倍、SSDの30倍遅い)。
  • ただし、HDDx4 RAID10は、ページアウトで比較的良好に動作するように見えます-RAMよりも約40倍遅く、SSDよりも約4倍遅いだけです
  • USB3フラッシュドライブは、HDD RAIDと比較して小さなランダム読み取りではるかに優れていた(約9倍速い)ので、ランダム書き込みでの貧弱さ(約7倍遅い)を補いました。 USB 2ポートに接続した場合でも、全体としてHDDRAIDよりも優れています。

[〜#〜]警告[〜#〜]-USBフラッシュドライブにスワップ/ページファイルを置くことはお勧めしません

  • USBフラッシュドライブのNANDとコントローラーは、堅牢なウェアレベリングとガベージコレクションの実装が不足している可能性があり(たとえば、SSD ATA TRIMコマンドの恩恵を受けることができない)、スワップスペース/ページファイルに使用すると、寿命が短くなる可能性が高くなります時間の経過とともにパフォーマンスが低下します。私のテストは、新しい/新しいフラッシュドライブで行われました。たぶん、6か月間交換した後、パフォーマンスが維持されず、早死になります。

最後のいくつかのメモ

  • 私のSSDとHDDにはかなり大きなキャッシュがあります。各デバイスでそれぞれ256MBと64GBなので、これはおそらくそれらを後押ししますが、USBフラッシュドライブはおそらくこれを欠いています。
  • Windowsページファイルの使用に関してM $が行った観察が、Linuxスワップパーティションまたはファイルにどの程度当てはまるかはわかりませんが、それほど遠くないことは間違いありません...

参考文献

もっと読む (申し訳ありませんが、もっと多くのリンクを投稿していましたが、サインアップしたばかりで、スーパーユーザーはまだ私を信頼していません)

5
JPvRiel