定期的に削除する小さなファイルがたくさんあるファイルシステムがあります。これらのファイルは簡単に再生成できるキャッシュです。単に新しいファイルシステムを作成する方が、すべてのファイルを実行rm -rf
または削除するよりもはるかに高速です(例:rsync
何千ものファイルを含む大規模ディレクトリを効率的に削除します。)。
新しいファイルシステムを作成してファイルシステムを消去する唯一の問題は、UUIDが変更され、次/etc/fstab
の問題が発生することです。
ext4ファイルシステムでディレクトリを単に「リンク解除」するか、そのinodeリストを完全に消去する方法はありますか?
答え1
を使用しているので、ext4
ファイルシステムをフォーマットしてUUIDを既知の値に設定できます。
man tune2fs
書いた、
-U UUID
ファイルシステムのUUID(Universally Unique Identifier)をUUIDに設定します。 UUIDの形式は、以下のようにハイフンで区切られた一連の16進数ですc1b9d5a2-f162-11cf-9ece-0020afc76f16
。
同様に、次のようにman mkfs.ext4
書く。
-U UUID
ファイルシステムのUUID(Universally Unique Identifier)をUUIDに設定します。[…上記のように… ]
個人的には、ラベルを通してファイルシステムを参照することを好みます。たとえば、/etc/fstab
私のシステムの1つに次の項目があります。
# <file system> <mount point> <type> <options> <dump> <pass>
LABEL=root / ext4 errors=remount-ro 0 1
LABEL=backup /backup ext4 defaults 0 2
これらのタグは、-L
フラグを使用して追加できます。彼らは問題を避けるtune2efs
mkfs.ext4
アイノードチェックサム再フォーマットされたファイルシステムは再発見または破損し、視覚的に識別しやすくなります。 (ただし、複数のシステムに固有の可能性はありません。ディスクを交換するときは注意してください。)
答え2
-U
withを使用して一意のUUIDを指定できるmkfs.ext4
ため、ファイルシステムを再作成するときに古いUUIDを簡単に再利用できます。
答え3
ext3 / ext4の新しいファイルシステムでUUIDを再利用することはお勧めできません。
UUIDは、fsckが現在のファイルシステムに属するinodeと古いファイルシステムのinodeを区別できるように、inodeチェックサムの計算に使用されます。
同じUUIDを使用して既存の拡張ファイルシステムを再フォーマットすると、ファイルシステムチェックで古いデータを見つけて回復しようとする可能性が高くなります。通常、これは対話型プロセスなので、起動時に非対話型の自動ファイルシステムチェックが失敗し、回復シェルに入ります。
パーティションテーブルがGPTの場合はfstabでパーティションUUIDを使用でき、LVMを使用している場合は永続名を取得することもできます。
答え4
ちょうどファイルシステムを置いた。LVMシンプール、作成後にコンパクトスナップショットを作成します。次に、ファイルシステムを再作成するのではなく、そのスナップショットにロールバックします。これはストレージに関してオーバーヘッドがほとんどありません。
作成直後にファイルシステムのイメージを撮影し、後で復元するためdd
に保存することもできます。これは、プライマリストレージがSSDの場合に特に魅力的です。削除を使用してブロックをゼロ/未使用としてマークするので、画像は生成速度が速く、画像ファイルがほとんどまれているため、効果的な保存要件の点では重要ではなく、復元も驚くほど高速です。
ファイルサイズによっては実際に大きな影響があります。ファイルシステム間の速度差(ページ下部のベンチマークを参照してください)。中規模ファイルの場合、XFS可能より速く!
mkfs
しかし、オンデマンドの使用に精通している場合は、より簡単な解決策があります。mkfs.ext4 -U ${your_uuid_here}
ファイルシステムのUUIDを設定してみてください。 :)