Zfs: 機胜リク゚スト-オンラむンスプリットクロヌン

䜜成日 2014幎02月04日  Â·  18コメント  Â·  ゜ヌス: openzfs/zfs

みなさん、こんにちは、

これは問題ではないため、リク゚ストを投皿する正しい堎所がどこにあるかわかりたせんでした。これが正しくない堎合は、遠慮なく閉じおください。

他の人に圹立぀かもしれない機胜リク゚ストがありたす。 オンラむン時にクロヌンを分割する機胜を探しおいたす。これは、netapp vol clonesplitずほが同じです。

クロヌンが芪から完党に分岐しおいお、2぀のファむルシステムをリンクしおも意味がない堎合がありたす。 今日これを行うために私が考えるこずができる唯䞀の方法は、zfs send / recvを実行するこずですが、これには䞀貫性を確保するためにある皋床のダりンタむムが必芁になる可胜性がありたす。

私が提案しおいるのは、zfsは芪ファむルシステムに関連付けられおいるブロックを知っおいるので、それらのブロックを新しい領域にコピヌし、代わりにそれらのブロックを䜿甚するようにクロヌンを再指定する可胜性があるずいうこずですうたくいけば、それを正しく説明したした。 ファむルシステムがオンラむンでアクティブな間、終了状態はスプリットクロヌンになりたす...

Documentation Feature Question

最も参考になるコメント

これに぀いおコメントするには、オリゞンずクロヌンの関係を重耇排陀された皮類に倉換する機胜があるず䟿利です。デヌタセットが個別に砎壊されないようにする論理リンクを削陀し、共有されたたたのコピヌを1぀だけ維持したす。デヌタ。

党おのコメント18件

zfs promoteはすでに必芁なこずをしおいるようです。

       zfs promote clone-filesystem

           Promotes a clone file system to no longer be dependent on its "ori
           gin"  snapshot.  This  makes it possible to destroy the file system
           that the clone was created from. The clone parent-child  dependency
           relationship  is reversed, so that the origin file system becomes a
           clone of the specified file system.

           The snapshot that was cloned, and any snapshots  previous  to  this
           snapshot,  are  now owned by the promoted clone. The space they use
           moves from the origin file system to the promoted clone, so  enough
           space  must  be  available  to  accommodate these snapshots. No new
           space is consumed by this operation, but the  space  accounting  is
           adjusted. The promoted clone must not have any conflicting snapshot
           names of its own. The rename subcommand can be used to  rename  any
           conflicting snapshots.

私はzfsプロモヌトを芋おいたしたが、これは芪子関係を反転させるだけのようです...

私が考えおいたのは、䞡方のファむルシステムが互いに完党に独立しおいる最終状態でした...

これのいく぀かのナヌスケヌスは
VMテンプレヌトの耇補-他のVMを䜜成するために耇補されるベヌスむメヌゞがあり、テンプレヌトから分割されるため、テンプレヌトを曎新/砎棄/再䜜成できたす。
デヌタベヌスクロヌン-倚くの倉曎が加えられ、テストクロヌン自䜓のベヌスずなる可胜性のある開発甚のprod dbのクロヌンを䜜成したす。これは、ベヌススナップショットが倧きくなる可胜性があるため、devをprodから分割するず䟿利な堎合です。開発甚の独立したファむルシステムを持぀よりも

original @ snapshotのクロヌンを䜜成した埌、デヌタセットずクロヌンの䞡方を自由に倉曎できたす。ディスク䞊の䞡方に共通のデヌタを共有するこずを陀いお、盞互に圱響はありたせん。

テンプレヌトオリゞナルを砎棄/再䜜成する堎合は、テンプレヌト䞊のすべおのスナップショットクロヌンのオリゞンずしお䜿甚されるスナップショットを陀くを砎棄するだけで、zfsはoriginalの名前を倉曎し、zfsは同じ名前originプロパティで新しいスナップショットを䜜成したすクロヌンの数は元のデヌタセットの名前にバむンドされおいないため、䞡方の名前を自由に倉曎できたす。

唯䞀の欠点は、 original @ snapshot =クロヌンのベヌスに保持されおいるすべおの_unique_デヌタを、クロヌンたたはクロヌンのプロモヌト埌オリゞナルを砎棄する意思がない限り解攟できないこずです。

@ greg-hydrogenは、最終的にzfs promoteがニヌズを満たしおいるかどうかを刀断したしたか たたは、ここで機胜リク゚ストの可胜性がただありたすか

これに぀いおコメントするには、オリゞンずクロヌンの関係を重耇排陀された皮類に倉換する機胜があるず䟿利です。デヌタセットが個別に砎壊されないようにする論理リンクを削陀し、共有されたたたのコピヌを1぀だけ維持したす。デヌタ。

@behlendorf それはほが確実にニヌズを満たしおいたせん。
http://jrs-s.net/2017/03/15/zfs-clones-probably-not-what-you-really-want/
問題をうたく説明したす。

これが私が抂念的にやろうずしおいるこずです

user @ backup 

  1. 日付ベヌスのスナップショットを生成する
  2. バックアップから送信しおミラヌずしおテストする
zfs snapshot backup/prod<strong i="11">@20170901</strong>
zfs send -R backup/prod<strong i="12">@20170901</strong> | ssh test zfs recv ... test/mirror

user @ test 

  1. 鏡を消毒する堎所を䜜る
  2. それを消毒する
  3. スナップショット
  4. 䜿甚するためにサニタむズされたバヌゞョンのクロヌンを䜜成する
  5. これを䜿っお
zfs clone test/mirror<strong i="23">@20170901</strong> test/sanitizing
sanitize sanitizing
zfs snapshot test/sanitizing<strong i="24">@sanitized</strong>
zfs clone test/sanitizing<strong i="25">@sanitized</strong> test/test
dirty test/test

user @ backup 

  1. さらに生産を䜿甚した...
  2. 曎新されたスナップショットを䜜成する
  3. 補品からテストぞの増分倉曎を送信したす
  4. 以前のむンクリメンタルマヌカヌを削陀したす私の堎合は70GBを解攟したす
dirty prod/prod
zfs snapshot backup/prod<strong i="35">@20170908</strong>
zfs send -I backup/prod<strong i="36">@20170901</strong> backup/prod<strong i="37">@20170908</strong> | ssh test zfs recv test/mirror
zfs destroy backup/prod<strong i="38">@20170901</strong>

user @ test 

  • ここに問題が発生したす。
  • ある皋床のキャゞョリングで、消毒ボリュヌムを砎壊するこずができたす。
  • しかし、残りの2぀のもの test/mirror@20170908ずtest/test の原点であるtest/mirror@20170901が残っおいたす。
  • 必芁に応じお、曎新されたミラヌ test/mirror@20170908 を砎棄するこずもできたすが、それでは䜕の圹にも立ちたせん私の目暙はそのデヌタを䜿甚するこずであるため。

私が進歩するためには、実際にサニタむズを実行し、テストを䜿甚しおいるものを停止し、テストを完党に砎棄し、ミラヌをテストずしお耇補し、テストを䜿甚しお再開する必芁がありたす。その埌、最終的に元のオブゞェクトを砎棄するこずができたすスナップショット。 たたは、パスを取埗し、埌でバックアップ時に新しいスナップショットをトリガヌし、その増分を送信しお、テスト甚にミラヌリングされなかったスナップショットを削陀しお、再詊行するこずを決定できたす。

Fwiw、これを味わうために...

zfs list -t all -o used,refer,name,origin -r test/mirror test/test
 USED   REFER  NAME                              ORIGIN
 161G   1.57M  test/mirror                       -
  65G   82.8G  test/mirror<strong i="54">@2017081710</strong>            -
    0   82.4G  test/mirror<strong i="55">@201709141737</strong>          -
3.25G   82.8G  test/test                         test/mirror<strong i="56">@2017081710</strong>

数倀は本圓に間違っおいたす。実際には、1぀のボリュヌムず4぀のボリュヌムが含たれおいるため、再垰フラグが...

これで、 zfs send | zfs recvを䜿甚しお䟝存関係を解消できるこず、そしお小さなこずでも問題ないこずを理解したした。 しかし、私のプヌルのこの郚分は、プヌル内の䜿甚可胜なスペヌスの玄2倍であり、半分はおそらくそれよりも倧きいため、その操䜜の実行には問題がありたす。 たた、再凊理するのは膚倧な量のバむトです。 スナップショットを䜿甚するこずでの私の垌望はCOWの恩恵を受けるこずでしたが、代わりに、分岐ツリヌのどちらの偎でも䜿甚されるデヌタを最終的に持぀分岐点に察しお料金を支払う必芁があるため、COWの料金が請求されたす。

@behlendorfこんにちは、これに぀いお䜕か進展はありたすか 元のファむルシステムからクロヌンを分割するこずは、VMテンプレヌトや倧きなファむルレベルの埩元に非垞に圹立ちたす。 実甚的な䟋に぀いおは、䞊蚘に貌り付けたリンク@jsorefを参照しおください。

@kpande 目暙は、デヌタセット党䜓この操䜜が発生するたびではなく、倉曎されたものCOWに察しおスペヌスおよびデヌタ転送で支払うこずです。

10TBの移動デヌタセットず、確立したいデヌタセットのバリ゚ヌションがある堎合は、確かに、10TBをコピヌしおバリ゚ヌションを適甚し、20TBを支払うこずができたす20TBが利甚可胜な堎合。 しかし、私のバリ゚ヌションが実際には元の10TBずわずか10MB異なる堎合、なぜ10TB + 10MBを支払うこずができないのですか -スナップショット+クロヌンは私にそれを䞎えたす。 10TBが十分に移動しお10TBラむブ+ 10TBスナップショット+ 10TB分岐を支払うたで、10MBバリ゚ヌションが移動しお独自の10TBラむブずスナップショットの䞡方から分岐になりたす。 暫定的に、30TBの問題を「修正」するには、さらに10TB= 40TB-zfs send + zfs recv経由を費やす必芁がありたす。 それは理想的ではありたせん。 確かに、それは「機胜」したすが、「高速」でも、リモヌトでスペヌス効率も良くありたせん。

線集されたsend / recvは面癜そうに聞こえたす私のナヌスケヌスずほが䞀臎しおいるため-しかし、それが倚くの堎所で蚀及されおいるのを芋぀けるこずができたすが、実際に線集されおいるものの有甚な説明を芋぀けるこずができたせん。

Fwiw、私たちのシステムでは、サニタむズが送信偎で行われるように切り替えたしたこれはプラむバシヌの芳点からも優れおいたす。これにより、ほずんどの堎合、森から抜け出したした。

デヌタバリ゚ヌションが「線集」されおおらず、システムにzfsスナップショット+ zfs送信甚のリ゜ヌスがあるが、「倉曎」を行うために2番目のデヌタベヌスをホストするためにリ゜ヌスを割り圓おたくない堎合がありたす。プラむマリずセカンダリの間でボリュヌム党䜓を送信するために料金を支払う必芁はありたせん぀たり、以前のスナップショットがすでにあるシステムに増分スナップショットを送信する方がよいでしょう。

はい、重耇排陀を䜿甚できるこずは承知しおいたす。 私たちはCPU / RAMにお金を払っおいるので、たれなタスク倉異したクロヌンの曎新をすばやく䜜成するために䞀定のCPU + RAMを割り圓おるこずは、トレヌドオフずしおは䞍十分だず感じたしたディスク容量を少し増やしたいず思いたす。

@kpandeこのリンクは、珟圚のクロヌンの問題を非垞に明確に瀺しおいたす。 結局のずころ、クロヌンがベヌススナップショットから倧きく逞脱しおいる堎合、2぀の間の氞続的な芪子関係が混乱の原因になりたす。 クロヌンを分割するこずは、それらがあたりにも分岐しおいお、もはや結び付けられおいるずは芋なされないこずを明確に瀺しおいたす。

しかし、もっず実甚的な䟋を挙げたしょう。

kvm/vmimagesを耇数の仮想ディスクむメヌゞのデヌタストアコンテナずし、スナップショットを毎日取埗したす。 デフォルトの答えは「ディスクごずにデヌタセットを䜿甚する」であるこずは知っおいたすが、libvirtプヌルはそれでうたく機胜したせん。 したがっお、次のようなものがありたす。

kvm/vmimages
kvm/vmimages<strong i="11">@snap1</strong>
kvm/vmimages<strong i="12">@snap2</strong>
kvm/vmimages<strong i="13">@snap3</strong>

ある時点で、vmディスクに䜕か悪いこずが起こりたす぀たり、深刻なゲストファむルシステムの砎損が、その間に他のナヌザヌが他のディスクに新しい重芁なデヌタを積極的に保存しおいたす。 基本的に、いく぀かの察照的な芁件がありたす。a昚日の砎損しおいない叀いデヌタに戻す、bスナップショットにないアップロヌドされた新しいデヌタを保持する、cサヌビスの䞭断を最小限に抑える。

考えられる解決策ずしおクロヌンが思い浮かびたす。 kvm/vmimages@snap3をkvm/restoredずしおクロヌンしお、圱響を受けるVMのサヌビスをすぐに埩元できたす。 だからあなたは今持っおいたす

kvm/vmimages
kvm/vmimages<strong i="20">@snap1</strong>
kvm/vmimages<strong i="21">@snap2</strong>
kvm/vmimages<strong i="22">@snap3</strong>
kvm/restored   # it is a clone of snap3
kvm/restored<strong i="23">@snap1</strong>
...

圱響を受けるVMはkvm/restoredから実行されたすが、他のすべおのVMはkvm/vmimagesです。 この時点で、 kvm/restoredからすべおの䜙分なディスクを削陀し、 kvm/vmimagesから元の砎損したディスクを削陀したす。 叀い砎損したディスクむメヌゞがただ実際のディスクスペヌスを䜿甚しおいお、 kvm/restoredを䞊曞きするず、叀い削陀できないkvm/vmimages@snap3ために远加のスペヌスが消費されるこずに気付くたで、すべおが順調に芋えたす。 たた、あなたのクロヌンを削陀せずに、この叀いスナップショットを削陀するこずはできたせん、あなたは単に宣䌝するこずはできたせんkvm/restored 、削陀kvm/vmimages実際のデヌタは、次のずおりです。それが唯䞀の真の「暩嚁」デヌタ゜ヌス぀たりはないので、䞡方のデヌタセット内に保存されたす。

゜ヌスからクロヌンを分割するず、䞊蚘の問題は完党に解決されたす。 この堎合、線集されたsend / recvがどのように圹立぀かは私にはわかりたせん。

@kpandeたず、あなたの芋解ず解決策を共有しおくれおありがずうこれは興味深いです。 泚意深く、非垞に具䜓的なゲスト構成およびホストデヌタセットツリヌによっお、䞊蚘の問題を回避できるこずに完党に同意したす。

ずは蚀うものの、libvirtおよびそのストレヌゞプヌルの実装は、特にWindows仮想マシンずの混合環境を管理する堎合、このアプロヌチではうたく機胜したせん。 さらに、これは1぀の䟋にすぎたせん。 分割可胜なクロヌンは、たずえば、「ゎヌルドマスタヌ/ベヌスむメヌゞ」を䜜成するために䜿甚する堎合に非垞に圹立ちたす。これは、「実際の」仮想マシンを䜜成するために自由にむンスタンス化できたす。

珟圚の状況では、元の、朜圚的に廃止されたスナップショットを削陀するこずはできないため、

匕甚笊で囲たれた䞖界を「単玔に」䜿甚したこずに泚意しおください。これは確かに単玔な論理挔算ですが、基になるzfsファむルシステムにどの皋床適切にマップされるかはわかりたせん。

@kpandeわかりたした、十分に公平です-実際の技術的な問題が存圚する堎合、私はそれを受け入れる必芁がありたす。 ただし、これは、特定のナヌスケヌスが無効であるず述べるこずずは異なりたす。

このビュヌ぀たり、「神話䞊の」BPRを䜿甚せずに元の芪スナップショットからクロヌンを分割できないがzfs開発者によっお共有されおいる堎合、このFRを閉じるこずができるず思いたす。

ありがずう。

この機胜が必芁な堎合は+1。 はい、send / recvを䜿甚できたすが、叀いクロヌンデヌタセットから新しいデヌタセットに切り替えるために、そのデヌタセットを䜿甚しおいるものすべおのダりンタむムが必芁になりたす。

LXDでコンテナヌがコピヌ耇補される状況に遭遇したしたが、それにより、個別に管理されおいるスナップショットで問題が発生したす。

@kpande 繰り返しになりたすが、私のナヌスケヌスでは、デヌタセット党䜓がデヌタベヌスであり、デヌタベヌスのバリ゚ヌションがいく぀かありたす。

私が芋たずころ、overlayfsがファむルシステムずしおzfsを䜿甚しおうたく再生されおいるようには芋えたせんメモによるず、zvolsずext4 / xfsを䜿甚しお満足しおいるようです。 このアプロヌチはほずんどの堎合をカバヌするように_聞こえたす_。その堎合、ext4 / xfsを䜿甚しおoverlayfsを蚭定する方法を説明するドキュメントを歓迎したす。

そうは蚀っおも、私たちの䞭には、ボリュヌム管理だけでなく、acl / allow / snapshotの動䜜/ブラりゞングにもzfsを䜿甚しおいお、ext4 / xfsの代わりにzfsを䜿甚したoverlayfsを䜿甚できるようにしたいず考えおいる人もいたす。䞍可胜ですが、そのためのバグはありたすか ある堎合は、それがここから匷調衚瀺されおいるずよいでしょう。そうでない堎合は、overlayfsアプロヌチを承認しおいる堎合は、ファむルするこずができたす䞻匵する堎合は、おそらく曞くこずができたすが、私はしたせんオヌバヌレむに぀いおは䜕も知りたせんが、それは蚘事の重芁なテクノロゞヌのようです。

私が芋たずころ、overlayfsがファむルシステムずしおzfsを䜿甚しおうたく再生されおいるようには芋えたせんメモによるず、zvolsずext4 / xfsを䜿甚しお満足しおいるようです。 このアプロヌチはほずんどの堎合をカバヌするように_聞こえたす_。その堎合、ext4 / xfsを䜿甚しおoverlayfsを蚭定する方法を説明するドキュメントを歓迎したす。

overlayfsアプロヌチは、非垞に重芁で䞀般的なナヌスケヌスでは機胜し

@ ptx0これは、ゲストOSがoverlayfsサポヌトしおいる堎合぀たり、Windows VMはサポヌトされおいない堎合 、および゚ンドナヌザヌ぀たり、お客様がVMむメヌゞのプロビゞョニング/むンストヌルを倧幅に倉曎する意思がある堎合にのみ機胜したす。 ちなみに、私はこのPRが技術的にクロヌズされおいるこずを完党に理解しおおり、受け入れおいたすがたずえば、BPRが含たれおいる堎合、正圓なナヌザヌケヌスに「無効」のスタンプを付けるのは非垞に苛立たしいこずです。 ナヌスケヌスでない堎合は、問題ありたせん。 ただし、この機胜の有効な䜿甚䟋を誰も持っおいないず思い蟌たないでください。

Windowsはoverlayfsを必芁ずせず、フォルダリダむレクトず移動プロファむルが組み蟌たれおいたす。

フォルダリダむレクトはNT以降存圚したすが、あいたいな理由でリダむレクトされたフォルダを正しく凊理せず、リダむレクトされたデスクトップたたはドキュメントに盎面するず単に倱敗する゜フトりェアが存圚するため、垞に信頌できるずは限りたせん。 それずは別に、Windows Updateのおかげで、Windowsむンストヌルのクロヌンは、それ自䜓で、元の堎所から倧芏暡か぀非垞に迅速に分岐したす。異なるナヌザヌがログオンおよびログオフするこずで、これが高速化されるだけです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡