「ディスクのクローン」の版間の差分
(同期) |
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://www.mail-archive.com/」を「https://www.mail-archive.com/」に置換) |
||
31行目: | 31行目: | ||
このコマンドは MBR (とブートローダー)、全てのパーティション、UUID、データを含めディスクの全てを複製します。 |
このコマンドは MBR (とブートローダー)、全てのパーティション、UUID、データを含めディスクの全てを複製します。 |
||
− | * {{ic|1=bs=}} はブロックサイズをセットします。デフォルトはハードドライブの「古典的な」ブロックサイズである 512 バイトですが、64K や 128K など大きな値を使ったほうが最近の事情には即しています。また、以下の警告も読んでください。これはブロックサイズを変えるだけでなく、読み取りエラーがどのように伝播するかにも関係しています。どの値が最適なのかは [ |
+ | * {{ic|1=bs=}} はブロックサイズをセットします。デフォルトはハードドライブの「古典的な」ブロックサイズである 512 バイトですが、64K や 128K など大きな値を使ったほうが最近の事情には即しています。また、以下の警告も読んでください。これはブロックサイズを変えるだけでなく、読み取りエラーがどのように伝播するかにも関係しています。どの値が最適なのかは [https://www.mail-archive.com/eug-lug@efn.org/msg12073.html] や [http://blog.tdg5.com/tuning-dd-block-size/] などを読んでください。 |
* {{ic|noerror}} は読み取りエラーを全て無視して操作を続行します。dd のデフォルトの挙動ではエラーがあると dd は動作を停止します。 |
* {{ic|noerror}} は読み取りエラーを全て無視して操作を続行します。dd のデフォルトの挙動ではエラーがあると dd は動作を停止します。 |
||
* {{ic|sync}} は読み取りエラーが存在した場合、入力ブロックをゼロで埋めるため、データのオフセットも同期します。 |
* {{ic|sync}} は読み取りエラーが存在した場合、入力ブロックをゼロで埋めるため、データのオフセットも同期します。 |
2018年2月6日 (火) 23:09時点における版
ディスクのクローンとはパーティションやハードドライブ全体のイメージを作成することを言います。バックアップやリカバリ用に他のコンピューターにドライブをコピーするのに役立ちます。
目次
dd を使う
dd コマンドはシンプルでありながら、多目的に使える強力なツールです。ファイルシステムのタイプやオペレーティングシステムとは関係なく、ブロックごとに、コピーを行うことができます。ライブ CD などの、ライブ環境から dd を使用すると便利です。
パーティションのクローン
物理ディスク /dev/sda
のパーティション 1 を、物理ディスク /dev/sdb
のパーティション 1 に複製。
# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
ハードディスク全体のクローン
物理ディスク /dev/sdX
を物理ディスク /dev/sdY
に複製:
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
このコマンドは MBR (とブートローダー)、全てのパーティション、UUID、データを含めディスクの全てを複製します。
bs=
はブロックサイズをセットします。デフォルトはハードドライブの「古典的な」ブロックサイズである 512 バイトですが、64K や 128K など大きな値を使ったほうが最近の事情には即しています。また、以下の警告も読んでください。これはブロックサイズを変えるだけでなく、読み取りエラーがどのように伝播するかにも関係しています。どの値が最適なのかは [1] や [2] などを読んでください。noerror
は読み取りエラーを全て無視して操作を続行します。dd のデフォルトの挙動ではエラーがあると dd は動作を停止します。sync
は読み取りエラーが存在した場合、入力ブロックをゼロで埋めるため、データのオフセットも同期します。status=progress
は定期的に転送の統計を表示して、操作が完了するまでの時間を見積もることができます。
dd では入力ブロックサイズ (IBS) と出力ブロックサイズ (OBS) の指定ができます。bs
をセットすると IBS と OBS の両方をセットしたことになります。例えばブロックサイズを 1MiB にすると、通常は 1024*1024 バイト単位で読み書きします。しかし読み取りエラーが起きるとおかしくなります。noerror,sync
オプションを使うと dd は読み取りエラーをゼロで埋めるようになると思いがちですが、そうではありません。ドキュメントによると dd は読み取りが完了した後で OBS を IBS と同じサイズになるようゼロ埋めします。つまりそのブロックの最後にゼロが追加されます。したがって、1MiB のブロックの最初でたった 512 バイトの読み取りエラーがあるだけで、1MiB 全体が駄目になってしまうことを意味します。例えば 12ERROR89 というデータの読み取り部分にエラーがあると、結果は 120000089 ではなく 128900000 になります。
自分のディスクにエラーがないと自信を持てるなら、ブロックサイズを大きくしてもよいでしょう。そうするとコピー速度が数倍向上します。例えば、単純な Celeron 2.7 GHz のシステムで bs を 512 から 64 KiB に変えたところ、コピー速度は 35 MB/s から 120 MB/s になりました。しかしくれぐれも、コピー元ディスクで読み取りエラーがあった場合はコピー先ディスクで破損ブロックになってしまうことに注意してください。つまり 512 バイトの読み取りエラーが1回あるだけで出力先ブロックの 64 KiB 全体が駄目になってしまいます。
パーティションテーブルのバックアップ
fdisk#バックアップとリストアを見てください。
ディスクイメージの作成
1. liveCD や liveUSB から起動。
2. コピー元ドライブの全てのパーティションがマウント解除されていることを確認する。
3. 外部 HD をマウント。
4. ドライブをバックアップ:
# dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c > /path/to/backup.img.gz
必要であれば (外部 HD が FAT32 でフォーマットされている場合など) ディスクイメージを分割します (split の man ページを参照):
# dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c | split -a3 -b2G - /path/to/backup.img.gz
ローカルに十分なディスク空き容量がない場合は、イメージを ssh で転送することができます:
# dd if=/dev/sdX conv=sync,noerror bs=64K | gzip -c | ssh user@local dd of=backup.img.gz
5. イメージ内に保存されたパーティションテーブルを解釈できるようにするために、ドライブのレイアウトに関する付加情報を保存します。その情報の中で最も重要なのはシリンダーサイズです。
# fdisk -l /dev/sdX > /path/to/list_fdisk.info
システムのリストア
システムをリストアするには:
# gunzip -c /path/to/backup.img.gz | dd of=/dev/sdX
もしくはイメージが複数のボリュームに分かれている場合:
# cat /path/to/backup.img.gz* | gunzip -c | dd of=/dev/sdX
ddrescue を使う
ddrescue はデータの複製・復元のために作られたツールです。ファイルやブロックデバイスからデータを別の場所 (ハードディスクや CD-R など) にコピーして、読み取りエラーが発生したドライブから無事な部分を救い出すことができます。
故障したドライブから複製する場合、ddrescue を2回実行してください。1回目では、読み取りエラーが存在しないブロックをコピーして rescue.log
にエラーを出力します:
# ddrescue -f -n /dev/sdX /dev/sdY rescue.log
2回目では、不良ブロックだけをコピーして何とかデータを取り出せないか3回コピーを試します:
# ddrescue -d -f -r3 /dev/sdX /dev/sdY rescue.log
コピーできたらファイルシステムをチェックして新しいドライブをマウントしてください:
# fsck -f /dev/sdY
e2image を使う
e2image は e2fsprogs にデバッグ用として含まれているツールです。使用ブロックのみをコピーして効率的に ext2, ext3, ext4 パーティションをコピーできます。e2image が使えるのは ext2, ext3, ext4 ファイルシステムだけです。未使用ブロックはコピーされないため、削除したファイルを復元するのには役に立ちません。
e2image を使って、物理ディスク /dev/sda
の1番目のパーティションを物理ディスク /dev/sdb
の1番目のパーティションに複製するには:
# e2image -ra -p /dev/sda1 /dev/sdb1
ディスククローンソフトウェア
以下のアプリケーションはファイルシステム全体をバックアップして、故障したときに簡単に復元することができます。ほとんどが Live CD や USB ドライブとして使えます。特定の時間の完全なシステムイメージを保存することができ、良い状態の設定を確認したいときにもよく使われます。
完全なシステムバックアップを作成できる他のアプリケーションについてはバックアッププログラムを参照してください。
- Acronis True Image — Windows 用の商用ディスク複製ツール。(Windows の中から) ライブ環境を作成できるため、使用するマシンに Windows がインストールされていなくても使えます。ウェブサイトで Acronis ソフトウェアを登録すれば、Linux ベースのライブ CD や Windows ベースのライブ環境 CD を作成するための BartPE のプラグインをダウンロードできます。Windows ベースの Windows PE のライブ CD を作成することも可能です。Acronis によって作成された ISO ライブ CD イメージは ハイブリッドブート 機能を持っていないため直接 USB ストレージに書き込むことはできません。
- Arch Backup — シンプルな設定を使用する平凡なバックアップスクリプト。
- 圧縮方法を設定可能。
- 複数の場所にバックアップ。
- Clonezilla — 障害復旧、ディスククローン、ディスクイメージング、デプロイメントソリューション。
- FSArchiver — 安全で柔軟性のあるファイルシステムバックアップ・デプロイメントツール。
- 基本的なファイル属性をサポート (パーミッション, 所有者, ...)。
- ひとつのアーカイブで複数のファイルシステムをサポート。
- (SELinux によって使われる) 拡張属性をサポート。
- 全ての Linux ファイルシステムで共通のファイルシステム属性をサポート (ラベル, uuid, ブロックサイズ)。
- ntfs ファイルシステム をサポート (Windows パーティションの複製を作成可能)。
- アーカイブに書き込まれたデータのチェックサムを作成 (ヘッダ, データブロック, ファイル全体)。
- 破損しているアーカイブの復旧ができます (作業ファイルをスキップ)。
- lzo, gzip, bzip2, lzma のマルチスレッド圧縮。
- 巨大なアーカイブを複数のファイルに分割することでファイルの最大容量を固定することができます。
- パスワードによるアーカイブの暗号化。OpenSSL の libcrypto による blowfish を使用。
- マウントされている root ファイルシステムのバックアップのサポート (-A オプション)。
- System Rescue CD に同梱されています。
- Mondo Rescue — バックアップメディアを作成する障害復旧ソリューション。損害を受けたシステムを再配置することができます。
- イメージベースのバックアップ。Linux/Windows をサポート。
- 圧縮率は調整可能。
- ライブ環境をバックアップできます (システムを止める必要がありません)。
- イメージを多数のファイルに分割可能。
- Live CD で起動することで完全なリストアが出来ます。
- NFS, CD, テープドライブなどのメディアからバックアップ・リストアできます。
- バックアップの検証ができます。
- Partclone — 使用しているブロックだけを考慮してパーティションをバックアップ・リストアできるツール。
- PartedMagic — PartImage などのリカバリツールが同梱されているライブ CD/USB。
- Partimage — Linux/UNIX 環境向けのディスク複製ユーティリティ。
- Q7Z — Linux 向けの P7Zip GUI。データの圧縮とバックアップを楽にします。次の圧縮ファイルを作成することが可能: 7z, BZip2, Zip, GZip, Tar。
- 既存のアーカイブを素早くアップデート。
- 複数のフォルダを一つのストレージにバックアップ。
- 保護されたアーカイブを作成・展開。
- アーカイブのプロファイル・リストを使うことで負担を軽減。
- Redo Backup and Recovery — Linux CD ブータブルイメージから実行できるバックアップ・障害復旧アプリケーション。
- http://www.redobackup.org/ || パッケージが存在しないか AUR で検索
- System Tar & Restore — フルシステムバックアップと復元を行うための bash スクリプトのセット。
- CLI とダイアログインターフェイス。
- 簡単なバックアップと復元ウィザード。
- .tar.gz, .tar.bz2, .tar.xz, .tar アーカイブを作成。
- openssl / gpg 暗号化をサポート。
- rsync を使って実行中のシステムを転送。
- GRUB2, Syslinux, EFISTUB/efibootmgr, Systemd/bootctl をサポート。