web-dev-qa-db-ja.com

ddとgzipを使用したバックアップと復元

ドライブのイメージを作成し、「使用済みデータ」のみを保存するためのddの使用について説明しているさまざまな投稿を見てきました。問題/質問を提起する前に、いくつかのことを想定しましょう。

仮定

  1. クローン/イメージへのドライブは/ dev/sdaです
  2. / dev/sdaは10TBです
  3. / dev/sdaの使用済みスペースは1TBです
  4. イメージの保存は、CIFSがマウントされたリモートの場所にあります

質問/問題

cpのようなものを--sparse=alwaysオプションをddと組み合わせて使用​​すると、ファイルが1GBとして表示されるように、スパースファイルが生成されます。

cp --sparse=always <(dd if=/dev/sda bs=8M) /mnt/remote/location/disk.img

または、以下のようなもので、すべてのゼロ化されたスペースを圧縮する必要があります。

dd if=/dev/sda1 | gzip -c > /mnt/remote/location/disk.img.gz

したがって、復元時のスパースイメージファイルの影響は何ですか?転送されるデータは1GBですか、それとも認識された空/ゼロスペースを含めて10GBですか?これは明らかに潜在的なネットワーク負荷と時間を評価するための考慮事項です-復元する。

P.S. Clonezillaなどの他のオプションがあり、ddrescueのようなもので再開機能が可能になることは理解していますが、問題は特に上記のコンテキストでddを使用することです。

ありがとう。

2

WindowsCIFS共有SMB1への書き込み

Microsoftからの単語 は次のとおりです。「WindowsNTFSファイルシステムでは、ファイルはデフォルトでスパースになりません。アプリケーションまたはユーザーは、FSCTL_SET_SPARSE制御コードを使用してファイルをスパースとして明示的にマークする必要があります。」残念ながら、LinuxはSMB1を介してこれらのファイルをマークしません。 報告によると 最初にファイルをWindows側でスパースにした場合(Cygwin dd if=/dev/zero of=BigFile bs=1M count=1 seek=150000)、Linuxからスパースとして記述し続けることができます。読書は最適化されないと思います。

実験

RHEL6coreutils-8.4ではcp --sparse=always local_file /mnt/cifs/file_on_cifsスパースファイルを書き込みません。 CIFSファイルを読み取るときは、ゼロの領域を読み取ります(no fiemap 最適化)。 RHEL6では、バックアップと復元の両方でファイル全体がネットワーク経由で転送されます。より良いgzipで圧縮します。

Ubuntu14xのcoreutils-8.25でも同じ状況です。

WindowsCIFS共有SMB2/SMB3への書き込み

2014パッチ「SMB2/SMB3マウントへのスパースファイルサポートの追加」 があるため、Windows8.1およびその他のプラットフォームのマウントされた共有でスパースファイルがサポートされることを期待しています。

LinuxCIFS共有への書き込み

Linuxクライアントに一部のLinuxサーバーからSamba共有をマウントすると、SMB1でもスパースファイルを書き込むことができます。読み取りの最適化はありません。

1
kubanczyk

ddrescue を_-S_オプションとともに使用できます。

-S --sparse Use sparse writes for outfile. (The blocks of zeros are not actually allocated on disc). May save a lot of disc space in some cases. Not all systems support this. Only regular files can be sparse.

_ddrescue /dev/sda1 /path/to/outfile_に似たものを発行できます

1
shodanshok