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

Linuxddコマンドを使用してディスクをクローン化する方法

このチュートリアルでは、システム管理者がWindowsオペレーティングシステムまたはLinuxOSをMBRまたはGPTレイアウトスタイルでパーティション化された大きなHDDから小さなSSDに移行またはクローン化するために使用できるLinuxddコマンドの実際の例を参照します。この抜粋では、例として、複数のパーティションを持つハードディスクにインストールされたWindowsシステムを使用します。 HDDがMBRスキームでパーティション分割され、複数の論理パーティションを持つ拡張パーティションが含まれている場合、またはパーティションが故障している場合、この方法は非常に複雑になる可能性があります。その場合は、この方法を使用しないことをお勧めします。このような場合、実際に空のスペースを転送することなく、ディスクレイアウト全体(パーティションテーブルと各パーティション内の使用済みブロック)のクローンを作成できるddrescureを使用する方が安全です。 DDrescureは、Ubuntuメインリポジトリからgddrescueパッケージをインストールすることで入手できます。

ステップ1-パーティションの縮小

LinuxまたはWindowsパーティションのサイズを最小サイズに変更(縮小)するには、GpartedなどのライブLinuxディストリビューションを使用するか、Ubuntu DesktopLiveISOイメージからgpartedGUIユーティリティを実行します。操作ディスクパーティションファイルシステムサイズ(ext2、ext4、NTFS、xfs)を使用できる他の有料Linuxディストリビューションは、PartitionWizardまたはPartedMagicです。 NTFSパーティションを縮小するために、MicrosoftWindowsdiskmgmt.mscユーティリティを使用することもできます。パーティションの空き領域を縮小することにより、大きなパーティションの場合にddが未使用のディスクブロックをコピーするのにかかる時間が大幅に短縮されます。使用済みスペースのわずかな割合しか含まない大きなパーティションの場合、ddユーティリティはプロセスで未使用のスペースもコピーするため、ファイルシステムを縮小することをお勧めします(ddは、100GBまたは1TBのパーティションのすべての空きブロックもコピーします。使用済みスペースの10%未満)。

ステップ2-ディスクのクローン化

パーティションのサイズが最小に変更されたら、2番目のディスクまたはSSDをマシンのSATA / SCSIなどのコントローラーに物理的に接続し、LiveLinuxディストリビューションでマシンを起動します。ライブLinuxディストリビューションがRAMにロードされたら、Linuxコンソールを開き、fdisk -l / dev / sda(/ dev / sdaがWindowsインストールディスクまたはWindows環境のC:ドライブであることを前提とします)を実行し、最後の「 End "セクター(以下の例に示すように44898303):

-例1-MBRディスクのクローン(2番目のパーティションにWindows OSがインストールされている)

>

この抜粋では、ディスクが逆になっているため、/ dev / sdbはWindowsのインストールを表し、/ dev/sdaは空のSSDを表します。

次に、root権限で次のコマンドを実行して、WindowsインストールディスクをHDD(/ dev / sdb)からSSD(/ dev / sda)に複製します。 pvユーティリティはデフォルトではUbuntuにインストールされていません。次のコマンドを実行してインストールできます:

sudo apt install pv

次に、次のコマンドを発行してクローン作成プロセスを開始します。

sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sda

注意:ターゲットディスクは、少なくとも、Windowsパーティションを含むソースディスクからWindowsパーティションまでのすべてのパーティションが占める合計スペースのサイズである必要があります。

上記の例で使用されているコマンドの説明:

dd-ddは「コピーと変換」の略です。 'Data Destroyer'(コマンドを誤解させた場合に重大な損傷が発生する可能性があります)またはDataDuplicateまたはDataDescriptionの略であると言う人もいるかもしれません。ニーズに合った説明を使用してください!

if-ソースディスク(入力/入力ファイル)

bs-fdisk出力からのセクターサイズ値(ブロックサイズまたは1回の読み取り/書き込みのバイト数)

count-1つの整数(+1)でインクリメントされたfdisk出力の最後の「終了」セクター-停止する前にコピーする必要がある512サイズのブロックの数。ここでは、サイズが512バイトの44099584セクターを転送する必要があります。

conv =sync、noerror-I / Oを同期し、ソースディスクでブロックエラーが発生した場合でも停止しない

| -Linuxパイプ(LinuxまたはFIFOのプロセス間通信チャネル)

pv-s21GB-クローン作成の進行状況を監視します-約21GBをパイプ経由で転送する必要があります

of-パイプされたデータが実際に書き込まれるターゲットディスク(出力/出力ファイル)

標準のディスクブロックサイズ(512)よりも大きいブロックサイズで操作する場合、たとえば標準のブロックサイズ(2048)の最大4倍のサイズで操作する場合は、速度を上げるために、簡単な計算を行って乗算することができます。ディスクの標準ブロックサイズ(512x4)を4で割ってから、最後のパーティションのブロック+1の総数を4で割ります。

例:

この例では、sda2の「終了」:44898303 + 1を4で割った値です。ddは、2048バイトのブロックサイズで動作します。

sudo dd if=/dev/sda bs=2048 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sdb

プロセスが終了したら(ディスクのサイズと速度によっては、10分または数時間かかる場合があります)、同じsfdiskコマンドを使用してターゲットディスクを確認し、両方のディスクからの出力を比較します。結果は似ているはずです。

-例2-GPTディスクのクローン(4番目のパーティションにWindows OSがインストールされている)

>

この抜粋では、ddは、より多くのブロックを一度に転送するために、標準ブロックサイズ(4096)の最大8倍のブロックサイズで動作します。 Windows OSは、ハードディスクの4番目のパーティションにあります。先行するすべてのWindowsパーティションも複製する必要があります。ディスクは、Windowsパーティション境界の終わりを表す最後の19855359セクターまで完全にコピーされます。 19855359 + 1セクターに続くデータは、WindowsのD:パーティションを表します。したがって、オペレーティングシステムパーティションのクローンを作成するだけなので、このパーティションは重要ではありません。

次の図に示すように、ディスクの標準ブロックサイズ(512x8)に8を掛けてから、最後のパーティションのブロック+1の総数を8で割ります。 Windowsパーティションを表すsda4の「終了」は、19855359 + 1を8で割った値です。ddは、4096バイトのブロックサイズで動作します。

sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G |sudo dd of=/dev/sdb

この例では、Windows OSのみをコピーしており、4番目のパーティションに続くディスクデータ全体をコピーしていないため、最後のパーティションを削除する必要があります。次のスクリーンショットに示すように、コンソールから直接cgdiskコマンドラインユーティリティを実行することで削除できます

fdiskコマンドを発行して、両方のディスクのパーティションテーブルの違いを確認します。パーティションテーブルは、クローンディスク(/ dev / sdb)から削除する必要がある/ dev / sdaの5番目のパーティションを除いて、同様である必要があります。

ステップ3-クローンディスクをテストする

最後に、マシンをシャットダウンし、古いハードディスクのプラグを抜き、新しいクローンディスクのみを使用してコンピューターの電源を入れます。すぐにオペレーティングシステムで起動するはずです。マシンが起動を拒否した場合は、マザーボード上のSATAコネクタを物理的に確認して逆にするか、BIOS / UEFI設定に移動して、起動シーケンスで適切なディスクが有効になっていることを確認してください。

両方のディスクが接続された状態でマシンを起動しないようにしてください。ブートローダーが混乱し、マシンがオペレーティングシステムを起動できなくなる可能性があります。オペレーティングシステムが正常に起動することを確認したら、ファイルシステムを縮小する場合と同じツールを使用して、未割り当て領域を追加してクローンパーティションを拡張します。

このddメソッドを使用すると、すべてのカスタム設定、インストールされたプログラムおよびファイルを含むWindowsまたはLinux OSの任意のバリアントを、OSを最初からインストールし、カスタマイズに何時間も費やすことなく、より大きなHDDからより小さなSSDに転送できます。 。


Linux
  1. Linuxでディスクをパーティション分割する方法

  2. 「cat」コマンドを使用してLinuxパーティションをバックアップまたはクローンする方法

  3. DiskPartでディスクを管理する

  1. 例を使用してLinuxでIPコマンドを使用する方法

  2. zpool コマンドの例を使用して Linux で ZFS ファイルシステムをセットアップする方法

  3. dd を使用してネットワーク経由で Linux ディスク パーティションのクローンを作成する方法

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

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

  3. Linuxエイリアスコマンド:例で使用する方法