web-dev-qa-db-ja.com

「allow-discards」および「root_trim」Linuxパラメーターは正確に何をしますか?

現在、オンラインでのSSD関連の多くの指示では、allow-discardsおよびroot_trim = yesGRUB_CMDLINE_LINUXに。私はなぜあなたがそれをするべきである、つまりそれらのパラメータが正確に(もしあれば!) これに関するドキュメントはどこにあり、これらの2つのパラメータの目的について何を言っていますか?

Cryptsetup 1.4.0 Release Notes によると、

カーネル3.1以降、dm-cryptデバイスはオプションで(デフォルトではなく)ブロック破棄(TRIM)コマンドをサポートしています。この操作を有効にする場合は、-allow-discardsを使用してアクティブ化するたびに手動で有効にする必要があります

cryptsetup luksOpen --allow-discards /dev/sdb test_disk 

(GRUB_CMDLINE_LINUX経由で)カーネルに渡されたときは同じですか?

編集:Kernel.orgのカーネルパラメーターのリスト は(現在、少なくとも2013年1月)これらのいずれも持っていませんオプション。

10
Jani Uusitalo

私の理解では、ブートパラメータroot_trim=yesはGentoo固有です。 genkernel内には、パラメーターを探してcryptsetupでオプション--allow-discardsを設定するスクリプトがあります( git repository を参照)。さらに、root_trimパラメーターなしで機能すると述べたUbuntuまたはDebianユーザーの多くのレポートを見つけました。また、Ubuntus update-initramfsスクリプトに行が見つかりませんでした。

全体としてnoブートパラメーターですが、cryptsetupへのパラメーターです。 --allow-discardsのドキュメントは cryptsetup(8) のマンページにあります:

-allow-discards
デバイスの廃棄(TRIM)要求の使用を許可します。このオプションは、createluksOpen、またはloopaesOpenにのみ関連します。

WARNING:このオプションを有効にする前に、特定のセキュリティリスクを慎重に評価します。たとえば、暗号化されたデバイスで破棄を許可すると、破棄されたブロックを後で簡単にデバイスに配置できる場合、暗号文デバイスに関する情報(ファイルシステムの種類、使用済みスペースなど)がリークする可能性があります。

カーネルバージョン3.1以降が必要です。古いバージョンの場合、オプションは無視されます。

これに基づいて TRIM&dm-cryptのブログ 、TRIMは上位層(ファイルシステムなど)がデバイスに、もはや使用されていないセクター(有効なデータが含まれない)とデバイスが行うことを通知する操作ですそのデータコンテンツを保持する必要はありません。

Linuxの用語では、この操作は廃棄と呼ばれます。 SCSIの世界では、UNMAPコマンドと呼ばれています。

破棄操作は、シンプロビジョニング(データ領域を割り当てプールに戻すことができることを通知する)とSSD操作の最適化の2つの目的に使用できます。

内部アーキテクチャはセクターよりも大きなブロックを使用し、書き込み操作を実行する前にブロックを消去する必要があるため、破棄はSSDの最適化に最も役立ちます。ファイルシステムは、データの断片化を最小限に抑え、ディスクの寿命を延ばすような方法でブロックをより効果的に整理できるため、データを保持する必要のないセクターに関する情報は非常に役立ちます。

6
qbi