web-dev-qa-db-ja.com

スワップファイルのマウントに「破棄」オプションを使用する必要がありますか?

Arch Wikiによると そのdefaults,discardは、スワップパーティションのfstabファイルで使用できます。ただし、スワップファイルについても、 man page についても明確ではありません。

スワップファイルがdiscardオプションでマウントされているファイルシステムにある場合(そして明らかにSSDにある場合)、discard自体を使用する必要がありますか?そして、親ファイルシステムがない場合discard 'ing?

直感は「いいえ」と言いますが、それについて何も見つけることができず、議論する価値があると思いました。

5
Marc.2377

私はノーと言うでしょう。

1:スワップスペースは、ファイルシステムと同じ概念free spaceを使用しません

2:重要なのは、ウェアレベリングの適切な作業を可能にするために、常にSSDに少なくとも25%の空き容量を確保することです(この値はSandiskの担当者から電話で与えられたものです)。

=>ディスクに作業用の予備のクラスターがあり、WLを実行する限り、ディスクの5%がトリミングされないか、継続的に再書き込みされても、同じ論理セクターまたは物理セクターを再書き込みしても問題はありません、十分な大きさのブロックを書き込む場合、WLはとにかく異なるクラスターを使用します。

スワッピングにディスク全体を使用している場合、問題は未解決のままです。スワップに使用されるディスク全体は、トリミングされていない場合、早期のエージングに悩まされる可能性があります。

もう1つの質問は、スワップドライバーが破棄をサポートしているかどうかです。 ext3/ext4 do。

おそらく、スワップがディスクのかなりの割合を占めている場合、可能であれば、シャットダウン中にスワップスペースを破棄またはトリミングできます。可能であれば、すべてのサービスを終了した後、swapoffを実行し、スワップスペースを破棄する方法を見つけます(私はエキスパートではないので、質問に答えずにはいられないので、もう一度mkfs.ext3、fstrim、mkswapを提案します-おそらく他のより良い解決策があります。シャットダウンがUPSによるものかどうかを確認してください。).

他の回答が残した質問/提案のいくつかは、以下のドキュメントを読むことで回答できます。

discardがファイルシステムで推奨されているとは思いません。代わりにfstrimを定期的に実行することをお勧めします。このためのcronジョブを見つけることができます。

カーネル開発者は、最近でも破棄操作のパフォーマンスに特に満足していません。デバイス間で大きく異なります。また、デバイスはビジー状態の場合に破棄操作をドロップできるため、定期的な破棄anywayを実行する必要があります。

他の答えが言うように、あなたのファイルシステムはあなたのスワップスペースよりも非常に大きいので、そうでなければ証明できない限り、オプションdiscardを追加しないことが最善です。そしてdiscard=onceは賢いですが、それでもブートが遅くなる可能性があります(スワップ領域が使用されていた場合)。だから私はそれを有効にする価値があるとは思わない。

man swapon

-d、-discard [= policy]

スワップバッキングデバイスが破棄またはトリム操作をサポートしている場合は、スワップ破棄を有効にします。これにより、一部のソリッドステートデバイスのパフォーマンスが向上する可能性がありますが、 しばしばそれはしません。このオプションを使用すると、2つの利用可能なスワップ破棄ポリシーから選択できます。--discard = onceは、swapon時にスワップ領域全体に対して1回限りの破棄操作を実行します。または--discard = pagesを使用して、解放されたスワップページを再利用する前に非同期に破棄します。ポリシーが選択されていない場合、デフォルトの動作では両方の廃棄タイプが有効になります。/etc/fstabマウントオプションのdiscard、discard = once、またはdiscard = pagesを使用して、破棄フラグを有効にすることもできます。

1
sourcejedi