ZFSは相互依存性とクローンを含むスナップショットを削除します


9

以下は、ZFSボリュームとスナップショットのリストと、それぞれのオリジンとクローンです。

すべてのスナップショットを削除したいが、すべてのファイルシステムは保持したい。これどうやってするの?

私はzfs promote、ファイルシステムの多くの異なる組み合わせについて、各ファイルシステムを削除することを試みることを試みました。これにより、スナップショットが「ライブ」になる場所が変わります。たとえば、zfs promote tank/containers/sixスナップショットをFからtank/containers/three@Fに移動しますtank/containers/six@F。ファイルシステムのライブデータは変更されていませんが(これは私が望んでいることです!)、スナップショットを削除することはできません(これは私が望んでいるものではありません)。

典型的なzfs destroy試みでは、依存クローンがあり、そのうちのいくつか(スナップショット)は破棄たいが、他のもの(ファイルシステム)は破棄したくないことがわかりました。

例えば。

# zfs destroy tank/containers/six@A
cannot destroy 'tank/containers/six@A': snapshot has dependent clones
use '-R' to destroy the following datasets:
tank/containers/five
tank/containers/two@B
tank/containers/two

上記の例では、tank/containers/fiveまたはを破棄したくありませんtank/containers/twoが、zfs promote5と2の場合、スナップショットを破棄することはできません。解決策はありますか?

# zfs list -t all -o name,origin,clones
NAME                         ORIGIN                       CLONES
tank                         -                            -
tank/containers              -                            -
tank/containers/five         tank/containers/two@B        -
tank/containers/four         tank/containers/six@C        -
tank/containers/one          -                            -
tank/containers/one@E        -                            tank/containers/three
tank/containers/two          tank/containers/six@A        -
tank/containers/two@B        -                            tank/containers/five
tank/containers/six          tank/containers/three@F      -
tank/containers/six@A        -                            tank/containers/two
tank/containers/six@C        -                            tank/containers/four
tank/containers/three        tank/containers/one@E        -
tank/containers/three@F      -                            tank/containers/six

回答:


9

AFAIKでは、これらのデータセットを新しい独立したデータセットにコピーする必要があります。プロモーションでは、データセットが「親」と「子」のどちらであるかが切り替わるだけです。両方を保持したい場合、実際には依存関係は壊れません。

例えば:

root@box~# zfs snapshot tank/containers/six@1 
root@box~# zfs send tank/containers/six@1 | pv | zfs receive tank/containers/newsix  
root@box~# zfs destroy -R tank/containers/six  
root@box~# zfs destroy tank/containers/three@F 
root@box~# zfs rename tank/containers/newsix tank/containers/six

時間をかけて、何をしているかを確認してください。特に実際の削除では。

このレプリケーションはブロック単位であるため、そこに重要なデータがある場合、しばらく時間がかかります。このpv部分は厳密にオプションですが、待機中にプログレスバーが表示されます。

また、syncoidを検討して、現在および将来のレプリケーションタスクを自動化することもできます。(義務:私はこのツールの最初の作者であり、GPLv3のライセンスがあり、無料で使用できます。)


ジム、シンコイドとの関係を開示してください。サイトのルールから:「適切で適切な回答を投稿し、一部またはすべてではないがあなたの製品またはWebサイトについてのことである場合、それは問題ありません。ただし、回答への所属を開示する必要があります。」
Costin Gușă 2019年

喜んで、コスティン-プロジェクトGitHubリポジトリに直接リンクしていて、コンサルティングサービスについて一言も言わなかったので、それが大したことだとは気づかなかった。
ジム・ソルター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.