私が知っている限り、BtrFSスナップショットは実際にデータをコピーしません。スナップショットデータが変更されるたびに実際のコピーが行われると思います。
それでは、スナップショットのサポートSSDのBtrFSパーティションは、SSDメモリの磨耗を2倍にしますか?最初の書き込みは新しいデータに関するもので、2番目の書き込みは違いをスナップショットに書き込むことです。
私はかなり長い間スナップショットでBtrFSをパーティションファイルシステムとして使用してきましたが、/
何度も本当に役に立ちました。しかし、今SSDにシステムをインストールしたいと思います。
答え1
長い話を短く
いいえ、スナップショットなしでBTRFSを使用するよりもSSDの寿命は短くなりません。
説明する
ソフトウェアでスナップショットを実装する方法はいくつかあります。
スナップショットを作成するすべてのデータの正確なコピーを保存します。これはスペースや時間の点では非常に効率的ではありませんが、実際のデータの履歴コピーを保存する唯一のオプションであり、実装は非常に簡単です。効率性の問題により、スナップショットには広く使用されていませんが、デフォルトではボリュームのフルバックアップが実行する作業です。
データの現在の状態と履歴の状態の違いのコピーを保存します。この方法では、要求時にシステムが要求されたデータの状態を計算する必要があるため、データを読み取るときにパフォーマンスの問題があります。これは、次の2つの方法のいずれかに階層化できます。
ㅏ。各スナップショットは、データの現在の状態とスナップショットを作成したときのデータ状態の差を格納します。これは空間効率的ですが、時間は非効率的です(変更内容を記録する時間はスナップショットの数に応じて直線的に増加するため)。スナップショットの読み取りパフォーマンスは悪いですが、現在のデータの読み取りパフォーマンスは悪くありません。この方法は、実装がやや難しく、書き込みパフォーマンスが悪く、広く使用されていないため、単に完全なコピーを保存することをお勧めします。
b。最初に作成されたスナップショットは、その時点のデータ状態を保持します。後続のスナップショットは、そのコピー以降の相違点のみを保存し、現在の状態はユーザーが更新すると変わります。これは、データを追加または削除せずに既存のデータのみを変更する場合にのみスペース効率的ですが、2aよりも時間効率的です。ほとんどのスナップショットと現在のデータの読み取りパフォーマンスは悪いですが、最初のスナップショットの読み取りパフォーマンスは優れています。これが増分バックアップがどのように機能するかです。バージョン管理ソフトウェアが行うことは、それぞれの違いが以前のバージョンに対応することです。ただし、次のオプションがすべての点でほとんど優れているため、スナップショットには広く使用されていません。
スナップショットは、COW(記録中のコピー)セマンティクスを使用して実装されます。これは最も空間効率の高いオプションであり、平均的には方法2の2つの変形よりも時間効率が高い。 COWスナップショットを使用すると、特定のデータが一度保存され、そのデータを含むすべてのスナップショットがそれを参照します。これにより、オプション1と2のほとんどの問題が解決されます。 COWスナップショットを処理する2つの方法があります。
ㅏ。現在のバージョンのデータの一部が変更されると、古いデータがスナップショットにコピーされ、新しいデータが更新されます。これにより、スナップショットを作成した後に最初に場所に書き込むとパフォーマンスの問題が発生しますが、後続の書き込みは正常に機能し、それ以外の場合はパフォーマンスが合理的です。まだCOWセマンティクスを使用していない既存のデータセットに簡単に追加できるため、LVMがスナップショットを実装する方法です。
b。現在のバージョンで指定されたデータが変更されると、現在のバージョンでその場所の新しいコピーが作成され、そこに変更されたデータが保存されます。これにより、オプション3aの最初の書き込みパフォーマンスの問題を回避できますが、スナップショットを削除するとパフォーマンスが低下します(削除可能性を判断するには、すべてのデータビットの参照を確認する必要があるため)。これがZFSとBTRFSがスナップショットを実装する方法です(BTRFSはいくつかの非常に特定の場合には方法3aを使用します)。
BTRFSはメソッド3bを使用しているため、スナップショットを使用して発生する唯一の追加のオーバーヘッドは、メタデータを処理するときです。これはBTRFSによって作成された実際のデータのごくわずかな部分です(メタデータの更新はとにかく発生します。スナップショットが必要です)。