GNU/Linux >> Linux の 問題 >  >> Linux

Linux ライブ システムから VHD ディスク イメージを作成する方法を教えてください。

今後の参考のために、私が最終的にどのように進めたかを以下に示します。さまざまな問題や遭遇した落とし穴についていくつかコメントします。

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

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

<ブロック引用>

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

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

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

<ブロック引用>

$ dd if=/dev/hdX bs=4k conv=noerror,sync | ssh -c フグ [email protected] 'dd of=myfile.dd'

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

注:dd は操作の進行状況を出力しませんが、USR1 を送信することで強制的に出力することができます dd への合図 別の端末から PID を処理する:

<ブロック引用>

$ kill -USR1 PIDofdd

注:dd の新しいバージョン status=LEVEL をサポート オプション (man dd )

   status=LEVEL
          The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
          the final transfer statistics, 'progress' shows periodic transfer statistics

3.未使用のスペースを取り戻す

この時点で、ソース マシンは不要になり、ターゲット サーバー (Linux も実行) のみで作業します。 VirtualBox は未加工のディスク イメージを 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

OPとまったく同じことを(Windowsインストールをレスキューしながら)試みていたので、そのための新しいツール ntfsclone2vhd を作成しました。 .

次に、次のようにします:

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

1 つのアプローチとして、VirtualBox と ntfsprogs という 2 つの便利なテクノロジを使用する方法があります。 パッケージ。

VirtualBox の最近のバージョンでは、VHD ハードディスク ファイルを作成できますが、ntfsprogs ntfsclone を提供します 効用。その名の通り、ntfsclone

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

次に、ntfsprogs を含む Linux ライブ CD を見つけます。 パッケージ、および openssh-server .これには System Rescue CD が気に入っていますが、ほぼすべての Debian または Ubuntu ベースのライブ CD も同様に機能するはずです。

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

Linux ライブ CD の別のコピーを使用して、クローンを作成する物理ディスクを含むマシンを起動します。 VirtualBox VM とこのマシンは、ネットワーク経由で相互にアクセスできると想定しています。このマシンで、次のコマンドを実行します (すべて 1 行で):

ntfsclone --save-image -o - /dev/sdXX |
    ssh [email protected] 'ntfsclone --restore-image --overwrite /dev/sdYY -'

ここで:

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

説明:最初の ntfsclone パイプラインのコマンドは、ソース NTFS ファイルシステムのイメージを抽出し、ssh トンネル経由で送信します。2 番目の ntfsclone コマンドはイメージを受け取り、それを VHD ドライブに復元します。

操作が完了すると、VHD ファイルには、元の物理ディスクのファイルごとの正確なクローンが含まれている必要があります (プロセスが途中で中止される原因となる不良セクタなどのハードウェア エラーを除きます)。

最後に行うことは、Windows chkdsk を実行することです。 VHDドライブで、クローン作成によって問題が発生しないようにするためだけです(問題は発生しないはずですが、私はこれらのことについて少し妄想的です).


Linux
  1. Linuxでディスクiノード数を増やす方法

  2. LinuxコマンドラインからLinuxブータブルUSBを作成する方法

  3. Linux –フォーマットされたパーティションイメージファイルを最初から作成する方法は?

  1. LinuxでPDFファイルからビデオを作成する方法

  2. Dockerコンテナからカスタムイメージを作成する方法

  3. Linux でマルチパーティション ディスク イメージをマウントする方法は?

  1. Linuxでパーティションを作成する方法

  2. Linuxでディスクパーティションをフォーマットする方法

  3. Linuxで新しいExt4ファイルシステム(パーティション)を作成する方法