web-dev-qa-db-ja.com

ddコマンドでシステムを新しいSSDに移動する

質問は非常に簡単です。しばらく答えを探していますが、正しい答えが得られたのかわかりません。間違いはドライブとデータを簡単に破壊する可能性があるため、私は本当に物事を明確にしたいと思っています。

私は、2つのパーティションを持つ250GB ssd(/ dev/sda)でUbuntuを実行しています。 sda1は/にマウントされ、sda2は/homeにマウントされます。次に、すべてを新しい1TBのSSD(/ dev/sdcとしましょう)に移動し、各ドライブを500GBに拡張します。いくつかの調査の後、私は2つのアプローチを提案しました。

1)dd if=/dev/sda of=/dev/sdcを実行して、ディスク全体を複製します。この後、125 GBのパーティションが2つと未割り当てスペースがいくつかある起動可能なディスクを取得します。正しい?次に、spart1とsdc1をgpartedのようなもので500GBにサイズ変更する必要があります。サイズ変更には時間がかかるかもしれませんよね?

2)2番目のアプローチは、最初に新しいドライブをフォーマットし、2つの500GBパーティションを作成します。 dd if=/dev/sda1 of=/dev/sdc1およびdd if=/dev/sda2 of=/dev/sdc2を実行して、両方のパーティションを複製します。この時点で、このディスクは起動できないはずですよね?ブート可能にするには、ブートローダーを新しいものにコピーする必要があります。必要なのは最初の446バイトだけです。だから私はdd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1、次にdd if=/tmp/mbrsda.bak of=/dev/sdc bs=446 count=1することができます。これを実行することで、起動可能にし、パーティションテーブルを500GB + 500GBも保持しました。このアプローチにより、ディスクのサイズを変更する必要がなくなります。

また、どちらの方法でも、/ etc/fstabファイルのUUIDを変更する必要があります。これを行うには、クローン作成後に新しいドライブをマウントします:Sudo mount /dev/sdc1 /mnt/、次に/mnt/etc/fstabファイルを編集します。

私はこれすべてについて正しいですか?ここで私の古いドライブを台無しにする潜在的なリスクはありますか?どうもありがとう!

4
ptr2love

dd(別名disk destroyer)を使用するときはいつでも、データをめちゃくちゃにする可能性があります。 ddには、新しいドライブを古いドライブに誤って上書きしてしまうことを防ぐ手段はありません。それを正しく機能させる唯一のことは、コマンドを正しく入力し、ソースと宛先を混同しないように非常に注意することです。 if=of=は、互いに打ち間違えられた1つの小さなタイプミスのキーストロークです。

もう1つの問題は、ddが遅く、ターゲットSSDに不必要な摩耗をもたらすことです。ほとんどのパーティションは通常、100%近くの使用率ではありません。 ddを使用して空き領域の多いパーティションをコピーすると、割り当てられたデータが実際に含まれていないバイトであっても、そのパーティションのすべてのバイトがコピーされます。

これが私のシステムだとしたら、次のようになります。

  1. 後で新しいSSDのパーティションテーブルを設定するときに参照できるように、古いSSDのパーティションテーブルのスクリーンショットを撮ります。
  2. 新しいSSDをコンピューターに接続し、古いSSDを取り外します。古いSSDを取り外したままにしておくと、破壊的な作業を行っている間に貴重なデータを破壊することができなくなります。
  3. LinuxライブモードでUbuntuインストールUSBサムドライブから起動します。古いシステムがMBRを使用しているように聞こえるので、BIOSがサムドライブをUEFIモードではなくレガシー/ MBRモードで起動することを確認してください。私の仮定が無効な場合は、BIOSがサムドライブをUEFIモードで起動することを確認してください。物事を混同すると、後で適切にgrubをインストールするのが非常に難しくなります。
  4. gpartedを使用して、目的のパーティションテーブルで新しいSSDをセットアップし、ファイルシステムをフォーマットします。古いSSDのパーティションテーブルとすべて同じになるようにしてください(パーティションサイズとUUIDを除く)。 /ルートファイルシステムをマークすることを忘れないでください active / bootable、古いSSDと同じように。
  5. すべての危険なパーティション編集作業が完了したので、安全にシャットダウンして、コンピューターに接続されている古いSSDを追加できます。
  6. 今回は両方のドライブを接続した状態で、LinuxライブUSBサムドライブを再起動します。古いSSDから起動しないでください(そのシステムの正常なコピーを作成するには、システムを非アクティブにしておく必要があります)。
  7. 起動したら、ターミナルを開いてこれらのコマンドを実行し、古いSSDから新しいSSDにデータをコピーします。 ddを使用する場合とは異なり、cpコマンドは、古いファイルシステムの上に空のファイルシステムをコピーしても何も破壊できないため、はるかにエラーを防止できます-その中には何もコピーされません場合!さらに、古いSSDを「読み取り専用」モードでマウントして、古いSSDを変更する可能性を回避できます。

    mkdir oldroot newroot oldhome newhome
    Sudo mount -o ro /dev/sda1 oldroot
    Sudo mount -o ro /dev/sda2 oldhome
    ls oldroot
    ls oldhome
    

    古いデータを表示できることを確認します。表示されているのが空のファイルシステムだけの場合は、「/ dev/sdXX」デバイスが間違っている可能性があります...

    Sudo mount -o noatime /dev/sdc1 newroot
    Sudo mount -o noatime /dev/sdc2 newhome
    ls newroot
    ls newhome
    

    宛先が空のファイルシステムであることを確認します。すべてが適切な場合は、以下のコマンドを発行して、すべての権限/所有権/ SELinuxコンテキスト設定を保持しながら、すべてのファイルをコピーします。

    Sudo cp -Rfax oldroot/* newroot/
    Sudo cp -Rfax oldhome/* newhome/
    

    それが完了したら、すべてのマウントを解除し、キャッシュされた書き込みを永続ストレージに同期します。

    Sudo umount oldroot
    Sudo umount oldhome
    Sudo umount newroot
    Sudo umount newhome
    sync
    
  8. これで、古いSSDを安全にシャットダウンおよび切断できるため、新しいSSDを起動可能にする作業をしている間、古いSSDを破壊することはできません。

  9. 新しいSSDのみが接続されているLinuxライブモードでUSBサムドライブを使用してコンピューターを起動します。ターミナルを開いて、次のコマンドを実行します。

    mkdir newroot
    Sudo mount -o noatime /dev/sda1 newroot
    Sudo chroot newroot /bin/bash
    mount -t devtmpfs udev /dev
    mount -t proc proc /proc
    mount -t sysfs sysfs /sys
    nano -w /etc/fstab
    

    次に、fstabファイルを変更して、UUID番号を新しいSSDにあるものと一致させる必要があります。 gpartedを開いてパーティションテーブルを確認し、新しいUUIDが何であるかを確認できます。完了したら、CTRL-Xを押して、fstabの変更をディスクに保存します。

    update-grub
    grub-install /dev/sda
    

    すべてが正常に機能している場合、grubが構成され、新しいSSDのMBRにインストールされます。 grubをインストールしたら、終了する前に、chroot環境内から以前にマウントしたものをすべてマウント解除する必要があります。そうしないと、Ubuntuはシャットダウン時にLinuxパーティションをきれいにアンマウントするのに苦労します。

    umount /sys
    umount /proc
    umount /dev
    exit
    Sudo umount newroot
    sync
    

そして、あなたはそれを持っています!うまくいけば、新しいSSDが起動可能になり、すべてが正常に動作するようになります。

3
K9spud

partimage を使用して、パーティションを1つずつコピーします。最初のパーティションをコピーした後、そのサイズを増やします。隣接するパーティションを移動する必要がないため、サイズ変更は非常に高速になります。次に、2番目のパーティションをコピーし、残りのスペースに合わせてサイズを変更します。

これを行う最も簡単な方法は、 SystemRescueCD から起動し、その環境からすべてを実行することです。ブート可能なUSBドライブを作成できるため、実際のCDは必要ありません。

0
David Cullen