ZFS:スナップショットからファイルを削除しますか?


10

たとえば、100のスナップショットを含むデータセットがありrm -rf、すべてのスナップショットで「キャッシュ」という名前のすべてのフォルダーを使用するとします。

スナップショットのレイヤーで単に非表示にするだけでなく、実際にスペースを解放したいので、クローンを作成してそこから削除してから新しいスナップショットを撮っても、私が望んでいるようには見えません。

半自動的な方法はそれを行いますか?zfsリスト-tスナップショット、zfsクローン、zfsプロモート、zfsスナップショットのいくつかのラップ?

/superuser/313197からのクロスポスティングこれにはZFSの要素が多いことがわかります


3
クロスポストしないでください。質問が移行されるまでお待ちください。
スヴェン

また、これがまったく可能かどうかはわかりません:スナップショットは読み取り専用であり、クローン/プロモートのペアを使用すると、クローンされたスナップショットと「HEAD」データセットの間の依存関係が逆になります。欲しいです。ここではドキュメントを参照してください。download.oracle.com/docs/cd/E19253-01/819-5461/gbcxz/index.html
スヴェン

移行を待ちますが、SUでもかなりの量のZFSの質問であるように思われたので、自動的に移動されるのではないかと思ったので、両方の場所に当てはまるため、クロスについて理解するためのメタガイドに従いました-投稿。
Tino Didriksen、2011

@TinoDidriksenは、そのメタ投稿への参照を提供していただけませんか?見たいです。ありがとう。
nhinkle

2
あなたが参照した投稿は公式のポリシーではありません。MSOに複数のサイトでトピックについてユーザーが考えている質問を処理する方法を説明するFAQがあります。要約すると、クロスポストは許可されません。投稿後に他の場所の方が良いと判断し、適切な回答が得られなかった場合は、移行するようにフラグを立てるか、削除して再質問することができますが、自分のサイトに合わせて投稿を調整する必要があります求める。まったく同じ質問を待機せずに一語一句再投稿しましたが、クロス投稿に関する両方のメタ投稿のガイドラインに失敗しました。
nhinkle

回答:


9

スナップショットは読み取り専用です。これらのフォルダを削除する必要がある場合は、スナップショット全体を削除する必要があります。

問題のあるフォルダーを除外して(tarなどの)バックアップを作成し、スナップショットを削除できます。明らかに、バックアップはtarまたはその他の形式になっています。しかし、少なくともあなたはまだバックアップコピーを持っています。


2
このソリューションの実際の厄介な点は、スナップショットでは変更されたブロックのみが保存されるのに対し、データのすべてのビットをn回実際に保存する必要があることです。この方法では、tarファイルからキャッシュを削除することで節約したよりもはるかに多くのスペースが必要になる可能性があります。
スヴェン

重複排除はそれを助けるでしょうが、あなたは正しいです。彼が望む方法でこれらのスナップショットを変更する方法はないと確信しています。
クリスS

私はgzip-1圧縮と重複除去の両方を使用しているため、同一のデータをコピーすると、簿記スペースのみが使用されます。ただし、コピーをまったく行わないようにしたいのですが。
Tino Didriksen、2011

ほぼ同じデータ重複の複数のtarファイルの場合、ファイルの先頭で1バイトだけを追加または削除すると、ブロックが別のものと同一でなくなり、重複を無効化することになるため、これはそれほど役に立ちません。
スヴェン

@SvenW質問をもう一度読んだ後、彼はスペースを節約するためにこれを実行しているのがわかります。彼がtarファイルをコンピューターから移動しない限り、私の答えは本当に役に立ちません。スナップショットをとにかくエクスポートすることができます。彼はあちこちに行き詰まっているようですね。
クリスS

14

以下を試すことができます:

  1. 最も古いスナップショットを新しいファイルシステムに複製します(これをと呼びますfsnew)。
  2. クローン(fsnew)を昇格して、ファイルシステムのベースとなっているスナップショットを破棄できるようにします。
  3. 問題のあるファイルを削除します。
  4. のスナップショットを作成しますfsnew

今foreachのスナップショットを、後rsync--inplaceスナップショットからフラグたくないファイルをスキップfsnewします。--inplaceフラグは、書き込みの数を減らし、より小さなスナップショットを可能にします。

  1. のスナップショットを作成しますfsnew
  2. 元のスナップショットを破棄します。

これが完了fsnewすると、問題のファイルが削除された元のファイルシステムからのスナップショットに対応するスナップショットが必要です。

ドライブに空き容量がある場合は、スクリプトが正しく機能するようになるまで「破棄」コマンドをスキップすることをお勧めします。


また、--deleteオプションをに渡す必要がありますrsync。そうしないと、スナップショット間で発生した削除が失われます。そうでなければ、これは素晴らしいアイデアです。
トビア

1
  1. 元のスナップショットを破棄します。

プロモートアクションの後で、元のスナップショットを破棄することはできません。親データセットを破棄する場合のみ。

例(クローンのプロモート後)。

zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

「media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y」を破棄できません:スナップショットに依存クローンがあります

'-R'を使用して、次のデータセットを破棄します。

media1/media/backup@auto-20190531.1622-2y

media1 / media / backup

zfsはmedia1/media/backup@auto-20190531.1622-2yを破棄します

zfs destroy media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

「media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y」を破棄できません:スナップショットに依存クローンがあります

'-R'を使用して、次のデータセットを破棄します。

media1 / media / backup

その「おかしい」操作の後、私は次のものを作らなければなりません

zfsスナップショットmedia1 / media / backup @ 1

zfs send media1 / media / backup @ 1 | pv | zfsはmedia1 / media / backupnewを受け取ります

zfsはmedia1 / media / backup @ 1を破棄します

zfs destroy -R media1 / media / backup

zfsはmedia1 / media / backupの名前を変更しますnew media1 / media / backup

または逆に1つを昇格させます。zfsはmedia1 / media / backupをプロモートし、クローンの削除後、srcの場所に大きなスナップショットがあるため)))

ここで役立つのはrsync / backupだけです。


-3

特定のZFSファイルシステムのZFSスナップショット.zfs/snapshotsは、ファイルシステムのルートのディレクトリの下にあります。このフォルダーとrm必要なファイルを走査するスクリプトを作成できる必要があります。これにより、スナップショット自体からフォルダーが削除されます。


3
ZFSスナップショットは読み取り専用です。それらから削除することはできません。
スヴェン

私の悪い、私がどこであなたができる印象を得たのかわからない:(
11:22に成長
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.