Intelによると、ソリッドステートドライブにLinuxファイルシステムを作成するときにブロックを破棄しないことが重要です。ドキュメントには、デフォルトの動作がブロックをmke2fs
破棄しないことが示されています(2015年3月)。ただし、現在のmke2fs
マニュアルページには次のように記載されています。
捨てる:mkfsでブロックを削除してみてください(初期ブロックの削除は、ソリッドステートデバイスやスパース/シンプロビジョニングされたストレージに役立ちます)。デバイスがデータをゼロにする廃棄を通知する場合(廃棄後および書き込み前のすべての後続の読み取りは0を返します)、まだゼロになっていないすべてのinodeテーブルは0として表示されます。これにより、ファイルシステムの初期化速度が大幅に向上します。これがデフォルト設定です。
SSDを手動でフォーマットするときにコマンドライン-E nodiscard
に追加すると、フォーマット中のブロックの破棄を防ぐことができますが、mke2fs
ディストリビューションインストーラは自動的なので、そうすることはできません。これが気になる価値はありますか?
ベストアンサー1
リンクされたドキュメントは特定の目的(LinuxカーネルNVMEドライバの開発とベンチマーク)を持っているように見え、エンドユーザーのための一般的な推奨事項を示していません。
mkfsが実行されてもext4が削除されないと主張します。
コアファイルシステム:
- ext4 - デフォルトの拡張オプションは、ファイルシステムの作成時にブロックを削除せずに維持し、一部の情報が示すように、「削除」拡張オプションを追加しないことです。
- xfs – mkfs.xfsの場合、ブロックが削除されないように-Kオプションを追加します。
…でもそうです。これが最初にすることです。
# mkfs.ext4 /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Discarding device blocks: done
Creating filesystem [...]
したがって、すべてのデータを捨てたくない場合は、積極的にブロックする必要があります。 xfsの使用をmkfs.xfs -K
推奨し、ext4の使用を推奨しますmkfs.ext4 -E nodiscard
。
# mkfs.ext4 -E nodiscard /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem [...]
デフォルトの動作が変更されたかどうかわかりません。私が知っている限り、それは常にデフォルトでした。 -E廃棄以前はnodiscardオプションが登場し、データを保存するための-Kがあり(デフォルトでは無効)、廃棄を有効にするオプションはありませんでした(デフォルトでは無効)。
マニュアルページでは、nodiscardがデフォルトであると主張したことがありますが、コミット履歴のどこでもその内容がコードに反映されていないため、ドキュメントエラーで追跡された可能性があります。
mke2fs: -K オプションを使用せずに廃棄/nodiscard を導入します。
(実際にこのコミットでは、廃棄とnodiscardの両方をデフォルトとして宣言します。)
nodiscardがデフォルトであり、1週間後までfstrimが可能でない場合は良いでしょう。 Linuxはデータを少し早く削除します。間違ったデバイスをフォーマットしてすぐにエラーを検出したとしても、どんな種類のデータ復旧も実行するには遅すぎます。