web-dev-qa-db-ja.com

BtrFSスナップショットはSSDを強制終了しますか?

私が知っているように、BtrFSスナップショットは実際にはデータをコピーしません。実際のコピーは、スナップショットデータが変更されるたびに実行されると思います。

では、スナップショットが有効になっているSSDのBtrFSパーティションがSSDメモリの消耗を2倍にするのは正しいですか?新しいデータ用の1回の書き込みと、スナップショットへの差分の記録用の2回目の書き込み。

私はすでにスナップショット付きのBtrFSを/パーティションのファイルシステムとしてかなりの時間使用しており、何度かそれが本当に役に立ちました。しかし、今度はSSDにシステムをインストールします。

1
Storm

TL; DR

いいえ、スナップショットなしでBTRFSを使用するよりも、SSDの寿命を縮めることはありません。

説明

ソフトウェアにスナップショットを実装するには、いくつかの異なる方法があります。

  1. スナップショットされるすべてのデータの正確なコピーを保存します。これは(スペースと時間の両方の点で)あまり効率的ではありませんが、データの真の履歴コピーを格納する唯一のオプションであり、実装するのは非常に簡単です。効率の問題のため、スナップショットには広く使用されていませんが、これは本質的に、ボリュームの完全バックアップが行うことです。

  2. データの現在の状態と過去の状態の違いのコピーを保存します。この方法では、システムが要求された時間に要求されたデータの状態を計算する必要があるため、データを読み取るときにパフォーマンスの問題が発生します。これは、次の2つの方法のいずれかで階層化できます。

    a。各スナップショットには、データの現在の状態とスナップショットが作成されたときのデータの状態との違いが格納されます。これはスペース効率が良いですが、時間効率は良くありません(変更を書き出す時間はスナップショットの数に比例するため)。スナップショットの読み取りパフォーマンスは低くなりますが、現在のデータには適切です。この方法は、実装がやや難しいため、広く使用されていません。また、書き込みパフォーマンスが非常に悪いため、完全なコピーを保存した方がよいでしょう。

    b。取得された最初のスナップショットはその時点でのデータの状態をアーカイブし、後続のスナップショットはそのコピー以降の違いのみを保存します。現在の状態は、ユーザーが更新すると変化する特殊なケースです。これは、既存のデータを変更するだけで、データを追加または削除しない場合にのみスペース効率が高くなりますが、2aよりも時間効率が高くなります。ほとんどのスナップショットと現在のデータでは読み取りパフォーマンスが低下しますが、最初のスナップショットでは問題ありません。これが増分バックアップの仕組みであり、各差分が前のバージョンと異なる特別な配置では、バージョン管理ソフトウェアが実行しますが、次のオプションがほとんどすべての点で優れているため、スナップショットにはあまり広く使用されていません。

  3. スナップショットは、コピーオンライト(COW)セマンティクスを介して実装されます。これは最もスペース効率の高いオプションであり、方法2の両方のバリエーションよりも平均して時間効率が高くなります。COWスナップショットでは、特定のデータが1回保存され、そのデータを含む各スナップショットがそれを参照します。これにより、オプション1と2の問題のほとんどが解決されます。COWスナップショットを処理する方法も2つあります。

    a。現在のバージョンで特定のデータが変更された場合は、古いデータをスナップショットにコピーしてから、新しいデータを更新します。これにより、スナップショットを作成した後の場所への最初の書き込みでパフォーマンスの問題が発生しますが、その後の書き込みは問題なく、パフォーマンスはそれ以外の場合は妥当です。これは、LVMがスナップショットを実装する方法です。これは、COWセマンティクスをまだ使用していない既存のデータセットに非常に簡単に追加できるためです。

    b。特定のデータが現在のバージョンで変更された場合、現在のバージョンでその場所の新しいコピーを作成し、変更されたデータをそこに保存します。これにより、オプション3aでの初回書き込みのパフォーマンスの問題は回避されますが、スナップショットを削除するときにパフォーマンスが低下します(データのすべてのビットの参照を検証して、削除できるかどうかを判断する必要があるため)。これは、ZFSとBTRFSがスナップショットを実装する方法です(ただし、BTRFSは特定の非常に特殊な状況でメソッド3aを使用します)。

BTRFSはメソッド3bを使用するため、メタデータの処理でスナップショットを使用することによるオーバーヘッドの増加は、BTRFSによって書き込まれる実際のデータのごくわずかな割合を占める必要があります(メタデータの更新はとにかく発生しますが、メタデータがないとわずかに小さくなります)スナップショット)。

0