web-dev-qa-db-ja.com

LinuxライブシステムからVHDディスクイメージを作成する方法

もう一度言うが、私の他の情報源(主にGoogle ;-))があまり役に立ちませんでしたので、私はここSuperUserの専門家に頼らなければなりません...

そのため、基本的には、物理​​ディスクのVHDイメージを作成して、アーカイブ/アクセス/仮想マシンにマウントすることさえできます。今、Web上でそれを行う方法についての記事やチュートリアルがたくさんありますが、私が達成したい条件を正確に満たすものはありません。

  • Windowsのように、出力先ファイルVHDイメージにしたい7ネットワーク経由でもネイティブにマウントでき、他の多くのプログラムでも使用できます(VirtualBoxなど)。
  • イメージしようとしているディスクにはWindows XPインストールが含まれているので、理論的にはdisk2vhdユーティリティを使用できますが、解決しない解決策を見つけたいと思います。 Windows XPをインストールするために起動する必要はありません(つまり、ディスクを読み取り専用にします)。
  • したがって、私はある種のライブシステムを含む解決策を探していました(USBスティックまたはネットワークから実行)

しかし、私が遭遇したすべての解決策は、disk2vhdを使用するか、linuxの下でddコマンドを使用することです。これはディスクの完全なコピーを作成し(空のブロックでさえ)、VHDファイルを出力しません。直接VHDファイルを作成することができますLinuxの下のツール/プログラムはありますか?それとも、空のブロックにスペースを割り当てずに、ddを使用して作成されたrawディスクイメージをVHDファイルに変換することは可能ですか?どうしますか?

いつものように、アドバイスやコメントは大歓迎です!

28
Federico

今後の参考のために、さまざまな問題や落とし穴に関するいくつかのコメントを付けて、私が最後に進めた方法を次に示します。

1. Linuxライブシステムでマシンを起動します

最初のステップは、Linuxライブシステムを使用して、イメージを作成するためにディスクを含むマシンを起動することでした。

注:私の最初のアイデアはUbuntu Live USBディスクを使用することでしたが、マシンはUSBからの起動をサポートしていなかったので、古いKnoppixライブCDを使用する方が簡単です

2. ddを使用してディスクをイメージし、sshを介してデータをパイプします。

次に、ddを使用し、sshを介してデータをパイプ処理して、すべてのディスクの内容をローカルサーバー上のファイルイメージにコピーしました。

$ dd if =/dev/hdX bs = 4k conv = noerror、sync | ssh -c blowfish myuser @ myserver 'dd of = myfile.dd'

ここでいくつかコメントします。この方法ではすべてのディスクの内容が読み取られるため、非常に時間がかかる可能性があります(80 GBのディスクでは5時間かかりました)。ボトルネックはネットワークではなく、実際にはディスクの読み取り速度です。コピーを開始する前に、BIOS /ディスク/システムパラメータをチェックして、ディスクとマザーボードが最高速度で動作していることを確認することをお勧めします(これはコマンドhdparm -iを使用し、hdparm -Tt /dev/hdXでテストを実行して確認できます)。

注:ddは操作の進行状況を出力しませんが、他の端末からUSR1シグナルをddプロセスPIDに送信することで強制的に出力することができます。

$ kill -USR1PIDofdd

3.未使用スペースを再利用する

この時点で、ソースマシンはもはや必要ではなく、我々はターゲットサーバ(Linuxも同様に実行している)上で排他的に作業します。 VirtualBoxはrawディスクイメージをVHD形式に変換するために使用されますが、変換する前にVirtualBoxが最終ファイルでそれらの領域を割り当てないように未使用ブロックを消去できます。

そうするために、私はループバックデバイスとしてイメージをマウントしました:

$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file

注:ディスクイメージ内のパーティションの先頭を示すオフセットは、イメージファイルでpartedを使用して取得できます。

$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit?  [compact]? B
(parted) print
Model:  (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type      File system  Flags
 1      32256B        21936821759B  21936789504B  primary   ntfs         boot
 2      21936821760B  80023749119B  58086927360B  extended               lba
 5      26608813056B  80023749119B  53414936064B  logical   ntfs

注2:デフォルトのLinuxカーネルNTFSドライバは読み取り専用アクセスを提供します。そのため、ユーザ空間のntfs-3gドライバをインストールして使用する必要があります。そうしないと、ディスクに書き込むとエラーが発生します。

4. VBoxManageを使用してVHDイメージを作成します。

この時点で、VirtualBoxユーティリティを使用して生の画像をVHDファイルに変換できます。

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD
30
Federico

私はOPと全く同じことをしようとしていました(Windowsインストールを救助しながら)そしてそれのために新しいツールを作成することになった ntfsclone2vhd .

あなたはそれから単にこのような何かをするでしょう:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
10
Yirkha

1つの方法は、VirtualBoxとntfsprogsパッケージという便利なテクノロジをいくつか使用することです。

VirtualBoxの最近のバージョンではVHDハードディスクファイルを作成することができますが、ntfsprogsntfscloneユーティリティを提供します。その名前が示すように、ntfscloneはNTFSファイルシステムを複製します、そして私はそれがファイルシステムレベルでそれをすると思います、未使用のディスクブロックをスキップします。

そのため、まず始めにVirtualBoxで新しいVMを作成し、それに新しい空のVHDファイルドライブをプロビジョニングします。 VHDドライブは、クローンを作成する物理ドライブで使用されているデータのサイズと同じ大きさである必要があります(実際には、少し余裕を持たせるために、もう少し大きくしてください)。

次に、ntfsprogsパッケージとopenssh-serverを含むLinuxライブCDを見つけます。私は System Rescue CD が好きですが、ほとんどのDebianやUbuntuベースのライブCDも同様に動作するはずです。

LinuxのライブCDでVirtualBox VMを起動し、VM内でsshdを起動して、リモートでコマンドを実行できるようにします。空のVHDドライブを好きなようにパーティション分割ツールを使って適切にパーティション分割します(私は普通のfdiskが好きですが、私はやや古い学校です)。

LinuxのライブCDをもう1枚コピーして、クローンを作成する物理ディスクを含むマシンを起動します。 VirtualBox VMとこのマシンはネットワーク経由でアクセス可能であるとします。このマシン上で、以下のコマンドを実行します(すべて1行で)。

ntfsclone --save-image -o - /dev/sdXX |
    ssh root@VirtualBox-VM 'ntfsclone --restore-image --overwrite /dev/sdYY -'

ここで、

  • /dev/sdXXはクローンを作成したい物理ドライブの(ローカルマシン上の)デバイス名です。
  • /dev/sdYYは、VHDコピー先ドライブの(VM内の)デバイス名です。

説明:パイプライン内の最初のntfscloneコマンドがソースNTFSファイルシステムのイメージを抽出してsshトンネルを介して送信し、2番目のntfscloneコマンドがそのイメージを受信して​​VHDドライブに復元します。

操作が完了すると、VHDファイルに元の物理ディスクのファイルごとの正確なクローンが作成されます(不良セクタなど、プロセスが途中で中断される可能性があるハードウェアエラーを排除します)。

クローン作成で問題が発生しなかったことを確認するために、VHDドライブでWindowsのchkdskを実行することが最後に必要な作業が1つあります。 。

3
Steven Monday

(私はこれが古い記事であることを知っていますが、多分これは少なくとも他の人を助けるでしょう。)

あなたは本当にLinuxの下でイメージを作成することができる必要がありますか?私はあなたがWindowsのハードドライブをVHDにバックアップしようとしていると思います。 LinuxファイルシステムをVHDコンテナにカプセル化できるとは思わない。

Disk2vhd と呼ばれる無料 SysInternals ユーティリティは、現在実行中のWindows XPまたはそれ以降のシステムのVHDを作成します。これはUSBマウントドライブのイメージングにも有効です。

1
Bernard

窓付きのライブCDを使用することもできます。これはMicrosoftの公式ではありませんが動作します。あなたはCDやUSBドライブにそれを置くことができます。

0
Smeterlink

私は最近ライブLinuxシステムのクローンを作成しようとしています。

まだ完璧な解決策はありません。 2つの方法を提案します。

(1)VMware vConverter(無料)

インストール先としてvsphere hypervisor(無料)をインストールする必要があります。

私はこの日前にやった、成功する運がない。 VirtualBoxにvSphereをインストールすると思います。

ここに参照してください。 http://xrubenx.blogspot.com.au/2010/01/vmware-converter-standalone.html

(2)これを使う http://www.r1soft.com/tools/linux-hot-copy/

今週末にR1Softのホットコピーを試します。

0
NelsonT