起動している現在のディスクをddすることは可能ですか?


23

ライブUSBディスクから実行しているFreeNASのコピーがあります。そして、私はそれのバックアップを作りたいです。

完全に機能するシステムを壊さないようにddしながら、OSの実行中にディスクにアクセスできますか?

または、マシンをシャットダウンddして別のマシンを実行する必要がありますか?

回答:


16

dd実行中のディスクで実行できます。ディスク構造に大きな変更がある場合はそうしないでください。またfschk、完了したら宛先を指定する必要があります。バックアップ中のシステムの静音性は向上します。

`dd 'を使用する場合は、コールドバックアップ(ファイルシステムのマウント解除)を実行するのが最適なオプションです。

実行中のシステムをバックアップするためのより良いオプションがあります。

  • tarまたはcpio、ファイルを読み取り、開いているファイルを適切に処理します。バックアップ中に発生する変更の一部を見逃す可能性があります。
  • rsynctar開いているファイル、およびバックアップ中に欠落している変更に関して同様に動作します。初期バックアップを行うために使用でき、増分バックアップを非常にうまく行います。増分バックアップを実行すると、ファイルの未変更部分のコピーをスキップできます。

データベースデータファイルを使用してファイルシステムをバックアップする場合は、ホットバックアップのサポートを調査してください。


高レベルのツールを使用する際の良い点- tarcpioおよびファイルシステム内rsyncすべてが機能するため、これが適切な場合があります。、OTOHは、FSをバイパスしてディスクブロックで直接動作します。dd
-Piskvor

16

技術的には可能です(「足での撮影」のように)が、特にディスクのパーティションのいずれかが書き込み可能な場合は、あまりお勧めできません。

このシナリオを想像してください:

  • dd 開始時にディスクの読み取りを開始し、最後まで楽しそうに進みます。
  • それが半分になると、OSはファイルをディスクに書き込みます。ただし、ファイルは多少断片化されています。ファイルの一部は物理的にディスクの先頭に向けられ、別の部分はディスクの末尾に向けられています。
  • OSには問題ありません。ファイルを正常に書き込み、書き込みキャッシュからファイルをプッシュします。現在はディスクに正しく書き込まれています。
  • 問題はバックアップにあります。ddすでにファイルの最初の部分を過ぎてコピーしているため、2番目の部分に到達すると一貫性のない状態をキャプチャします。各部分は異なるバージョンのものです。

USBディスク上のすべてのパーティションを読み取り専用として再マウントできる場合、この問題は発生しません(「するべきではない」を強調)。これには、/パーティションのかなりの事前インストール/オフライン準備とブート時セットアップが必要です-通常/、オンザフライでr / oを再マウントできるとは思いません。アクセス。

そのため、コピーを実行しても実行中のシステムは破損しませんが、実行可能なバックアップが提供されず、タスクが無駄になります。コピーをオフラインにすることを強くお勧めします-マシンをシャットダウンする必要があります。


1
素晴らしい答えをありがとう、私は簡単な方法を望んでいましたが、あなたは正しいです、私はあなたが指摘したことから生じる良いシナリオを想像することはできません。
-stuartc

1
@stuartc:FSドライバーからの大きな協力が必要です-コピーが開始されてから行われたすべての変更をコピープロセスに通知し、一貫した状態になるかどうか。これが大きな問題である場合は、などのスナップショットをサポートするファイルシステムを調べてくださいbtrfs
-Piskvor

4

マウントされたパーティションのイメージを作成しないでください。起動したかどうかに関係なく。

しかし、ブートしたパーティションをアンマウントしようとすると苦労します。


4

このために、私はdump(8)FreeBSDで使用します。例えばdump -auLf /mnt/some-other-disk/root.dmp /

この-Lオプションを使用すると、スナップショットを取得することにより、ライブファイルシステムをコピーできます。

ダンプは、を使用して復元できますrestore(8)

UFSでのみ機能する可能性があります。私はそれについて確信がありません。


0

バックアップのヒントで次のことに言及されていないのは驚くべきことです。

Linuxシステム(およびほとんどのマルチスレッドOS)は、通常、バックアップおよび復元中に静止している必要があります。

これは、イメージを作成しようとしているときにOSを実行しないことで最も簡単に実現できます。

バックアップと復元の場合は、マウントすることができ、実際にはマウントする必要がありますが、実行中のOSのルート(/)としてではありません。


理由: Linuxを含むすべてのマルチタスクオペレーティングシステムには、ファイルに影響を与える同時実行コードスレッドが存在するため、システム全体のファイルセットの正確なバックアップまたは復元を行うことができません。

特に、ファイルを取得している間、バックアップが特定の瞬間にファイルシステムの正確で正確なイメージを表さないように、ファイルを作成または削除する他のタスクがあるかもしれません。このバックアップを復元しようとすると、データの破損が発生し、クラッシュやその他の異常が発生します。


オプション:バックアップは、特別なソフトウェアやディスクシステム(実行中のOSをバックアップできるWindows上のAcronisなど)、または実行しようとしている非実行中のOSのファイルにアクセスする外部セカンダリOSのいずれかで行う必要がありますバックアップまたは復元。

!!! したがって、たとえばバックアップを行うためにDeja-dupを使用するように指示するWebページが表示された場合、これはdeja-dupの実行中に/home影響/homeを与えるプログラムを実行していない場合にのみ機能します。(それでも、デーモンを介してファイルに触れる可能性のあるものが本当にわかっていない限り、指を交差させたいかもしれません。)


0

私はすでにテスト環境で成功してこれを行っており、最終的にfsckとrsyncを使用して、適切なデバイスコピーの可能性を向上させています。


1
使用rsyncして作成されたディスク全体(ファイルシステム全体)のダンプを改善  する方法を説明できますddか?(そして、もしあなたがにアクセスできるのならrsync、なぜ二次的なコンパニオンツールではなく一次バックアップツールとしてそれを使用しないのでしょうか?)……………………………コメントで返信しないでください。 回答を編集して、より明確で完全なものにします。
スコット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.