btrfsスナップショットの数の実用的な制限は?


23

snapper、またはsnapperのようなものを使用して時間ベースのスナップショットを取得できるように、データドライブでbtrfsを使用することを検討しています。これにより、古いバージョンのデータを参照できると思います。ドライブの障害によりデータとスナップショットが消去されるため、これは現在のオフサイトバックアップに追加されます。

私の理解では、btrfsスナップショットは多くのスペース(メタデータと変更されたブロックに加えていくらかのオーバーヘッド)を占有しないため、スペースは制約ではないようです。

データ、変更されたデータ、およびメタデータのための十分なディスク容量があると仮定して、100万のスナップショット(たとえば、2年間1分ごとのスナップショット)があると大混乱になりますか?

スナップショットの数に実用的な制限がある場合、ファイルの数やファイルのサイズに依存しますか?

回答:


16

ほぼ何年もの間btrfsファイルシステムを使用している人として、簡単に到達できるスナップショットの数に実際的な制限はないと思われます。ただし、いくつかの注意事項があります。ファイルシステムは断片化につながる可能性があります。したがって、に組み込まれているオンラインでの最適化機能を使用することをお勧めします。さらに、の圧縮機能をうまく利用できます。これらの手段は、かなりまともなコンピューターで多くのスナップショットを作成することで合理的に発生する可能性があるほとんどのパフォーマンスの問題に対処する必要があります。Arch Linux2btrfsbtrfsbtrfs

ご存知かもしれませんがbtrfs、サブボリュームはファイルシステムとして扱われるため、スナップショットの数は実際には制限されています。つまり、ファイルのサイズによってです。btrfsウィキによると、 到達可能な最大ファイルサイズは2^64 byte == 16 EiB[1]です。

これらの制限とは別に、btrfsファイルシステムの空き容量を確認するのは時々難しいため、つまり、btrfsファイルシステムの空き容量を測定するさまざまな方法を区別できないため、すぐに認識せずにスペースを使い果たすと常に問題が発生する可能性があります実際に残っているスペースの量を簡単に追跡できます。このシナリオを防ぐ1つの可能な方法は、クォータの使用です。これにより、ユーザー(またはユーザーが1人だけの場合)は特定の量のスペースしか使用できなくなります。この概念はここここで非常によく議論されます

最後にbtrfs大事なことを言い忘れていませんが、私はファイルシステムの専門家ではなく、少し前に同じ質問をしたときにだけこれらのことについて読みました。さらに、btrfs「速い動きのターゲット」である問題(常に、Arch LinuxWikiページからいい言葉が盗まれていると思います)が存在するため、状況は変わる可能性があります。


1
これらの初期の採用者の1人でもあり、これはバングオンです。
mikeserv 14

うんかなり大丈夫:)
マークKコーワン

1
1つのBTRFSボリュームで100個未満のスナップショットを維持するようにしてください。そうしないと、特にスナップショットの削除時にパフォーマンスの問題が発生する可能性があります。スナップショットの作成は低コストですが、それらの削除はそうではありません。また、スナップショットの使用とともに最適化を実行することを推奨すると、スナップショットのスペース効率が低下することに注意してください。デフラグすると、reflinksが破損し、使用されているスペースが増加します。
Monica CellioのMountainX

@MountainXは、回答でこれについて詳しく説明できます。ボリューム上の100個のスナップショットは、2年間で1週間に1回ではありません。
StrongBad

@StrongBad-問題への応答として、BTRFSメーリングリストからその情報を受け取りました。数百または数千のスナップショットを作成するのは悪い考えであることに全員が同意しました。より技術的な回答を得るには、BTRFSメーリングリストで質問する必要があります。
Monica CellioのMountainX

5

技術的にはスナップショットの数に制限はありませんが、BTRFSメーリングリストで質問しました。

(実用的な)答えは、btrfsの使用方法にある程度依存します。

Btrfsには、スナップショットが多すぎるためスケーリングの問題があります(または実際にreflinkスナップショットが使用し、reflinksを使用した重複除去が同じスケーリングの問題を引き起こす可能性があります)。

ただし、スケーリングの問題は、主にbtrfsメンテナンスコマンド自体、バランス、チェック、サブボリュームの削除に影響します。数百万のスナップショットは、たとえば効果的に実行不可能なバランスを取りますが(作業は多少なりますが、数か月かかる場合があります)、ファイルの読み取りや保存などの通常のファイルシステム操作は、断片化が問題になる範囲を除いて、影響を受ける傾向はありません(デフラグなどの手順を実行して削減しない限り、btrfsなどのtho cowファイルシステムはフラグメンテーションで注目されています)。

タイムマシン/スナッパーに似たアーカイブバックアップとしてスナップショットを使用することはお勧めできません。


Time Machineはアーカイブバックアップではなく、バックアップです。私はあなたの結論を共有しません。バックアップのようなTime Machineでは、btrfsスナップショットを使用することをお勧めします(Linuxカーネルがディレクトリをリンクできないため、スナップごとに完全なディレクトリ構造が再作成されるため、かなりのディスク領域が使用される可能性があります)。単一のバックアップデバイスでのバックアップの場合、追加のデバイスを追加することを望まずに、balanceコマンドを実行する目的すらありません。btrfsリストの回答もこれを説明しようとしています。
プロバックアップ

@ProBackupのbtrfsリストの回答では、スナップショットの数を、Snapperのデフォルトアーチが実際に実行していない1から低い疑わしい数字に保つと述べています。単純なセットアップにはbtrfs-balanceは必要ありませんが、多くのユーザーはbtrfs-checkのアイデアを好みます。
StrongBad

@ProBackupアーカイブバックアップは、おそらくTime Machineの正しい用語ではありません。タイムマシンは単なる増分バックアップではないようですが、snapperやrsnapshotのようなスナップショットベースのバックアップとは言えませんでしたが、おそらくそれが良いでしょう。フィールドについてよく知っているように聞こえるので、用語を編集していただければ幸いです。
StrongBad

スナッパーのホームページで読んだことから、スナッパーはバックアップツールではありません。スナッパーは時間を遡ることができますが、それがTime Machineのようなものであることを意味するものではありません。本質的な違いは、Time Machine がすべてのデータのコピーを別のメディアに保存することです。Snapperはコピーを作成することさえできません。
プロバックアップ

@ProBackup最後に、答えを書いて、メーリングリストの答えに関する私の結論が間違っている理由を説明してください。そうすれば、コミュニティがどのように感じているかを確認できます。
-StrongBad

3

合計2 64のスナップショットとサブボリュームを組み合わせることができます。

btrfsデザインのwikiページには、(empahsis鉱山)言います:

サブボリュームは基本的に、ファイルとディレクトリを保持する名前付きbtreeです。ツリールートのツリー内にiノードがあり、ルート以外の所有者とグループを持つことができます。サブボリュームにはブロックのクォータを割り当てることができ、このクォータに達すると、新しい書き込みは許可されません。サブボリューム内のすべてのブロックおよびファイルエクステントは、スナップショットを許可するために参照カウントされます。FSには最大2 64個のサブボリュームを作成できます。

スナップショットはサブボリュームと同じですが、ルートブロックは最初は別のサブボリュームと共有されます。スナップショットが取得されると、ルートブロックの参照カウントが増加し、コピーオンライトトランザクションシステムにより、スナップショットまたはソースサブボリュームのいずれかで行われた変更がそのルートに限定されます。スナップショットは書き込み可能であり、何度でも再度スナップショットを作成できます。読み取り専用スナップショットが必要な場合、作成時にブロッククォータが1に設定されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.