
質問は非常に簡単です。しばらく答えを探しましたが、正しい答えが見つかったかどうかわかりません。間違いがあるとドライブとデータが簡単に破壊される可能性があるため、物事を明確にしておきたいのです。
私は 250GB SSD ( /dev/sda
) で Ubuntu を実行しています。この SSD には 2 つのパーティションがあり、それぞれ約 125GB の大きさです。sda1 は にマウントされ/
、sda2 は にマウントされます/home
。ここで、すべてを新しい 1TB SSD ( とします/dev/sdc
) に移動し、各ドライブを 500GB に拡張したいと考えています。調査の結果、次の 2 つの方法を提案しました。
ディスク全体のクローンを作成します
dd if=/dev/sda of=/dev/sdc
。これで、2 つの 125 GB パーティションと未割り当て領域を含む起動可能なディスクが取得されます。そうですよね? 次に、gparted などを使用して、sdc1 と sdc1 のサイズを 500 GB に変更する必要があります。サイズ変更には時間がかかるかもしれませんね?2 番目の方法は、まず新しいドライブをフォーマットし、500 GB のパーティションを 2 つ作成することです。
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
これにより、起動可能になり、500 GB + 500 GB のパーティション テーブルも保持されました。この方法を使用すると、ディスクのサイズを変更する必要がなくなります。
どちらの方法でも、ファイル内の UUID を変更する必要があります。これは、まずクローン作成後に新しいドライブをマウントし、次にファイルを編集すること/etc/fstab
で実行できます。sudo mount /dev/sdc1 /mnt/
/mnt/etc/fstab
このすべてについて、私は正しいでしょうか?
ここで古いドライブを台無しにする潜在的なリスクはありますか?
答え1
dd
(別名d
isk estroyer)を使用するときはいつでも、d
データが台無しになる可能性があります。dd
誤って新しいドライブを古いドライブに上書きしてしまうことに対する安全策はありません。正しく動作させる唯一の方法は、ソースと宛先を混同しないように、コマンドを正しく入力することに細心の注意を払うことです。if=
そして、of=
キーを 1 回間違えるだけで、問題が発生します。
もう 1 つの問題は、dd
速度が遅く、ターゲット SSD に不必要な負担をかけることです。ほとんどのパーティションは、通常、100% の使用率にはほど遠い状態です。dd
空き領域がたくさんあるパーティションをコピーするために を使用すると、割り当てられたデータが実際に含まれていないバイトも含めて、パーティションのすべてのバイトがコピーされてしまいます。
これが私のシステムであれば、次のようにします。
- 後で新しい SSD のパーティション テーブルを設定するときに参照できるように、古い SSD のパーティション テーブルのスクリーンショットを撮っておいてください。
- 新しい SSD をコンピューターに接続し、古い SSD を取り外します。古い SSD を取り外したままにしておくと、破壊的な作業を行っている間に貴重なデータが破壊されることがなくなります。
- Linux ライブ モードで Ubuntu インストール USB サムドライブから起動します。古いシステムでは MBR が使用されているようなので、BIOS が常にサムドライブを UEFI モードではなくレガシー/MBR モードで起動するようにしてください。私の推測が間違っている場合は、BIOS がサムドライブを UEFI モードで起動するようにしてください。混同すると、後で grub を適切にインストールするのが非常に難しくなります。
gparted
希望するパーティション テーブルで新しい SSD を設定し、ファイル システムをフォーマットするために使用します。古い SSD のパーティション テーブルとすべて同じにしてください (パーティション サイズと UUID を除く)。古い SSD と同様に、/
ルート ファイル システムをactive/としてマークすることを忘れないでくださいbootable。- 危険なパーティション編集作業はすべて完了したので、安全にシャットダウンし、コンピューターに接続されている古い SSD を追加できます。
- 今回は両方のドライブを接続した状態で、Linux ライブ USB サムドライブを再度起動します。古い SSD からは起動しないでください (そのシステムを非アクティブにして、クリーンなコピーを作成する必要があります)。
起動したら、ターミナルを開き、これらのコマンドを実行して、古い 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
これで、古い SSD を安全にシャットダウンして切断できるので、新しい SSD を起動可能にする作業中に、古い SSD 上のものが破壊されることはありません。
新しい SSD のみを接続した状態で、USB サムドライブを使用してコンピューターを Linux ライブ モードで起動します。ターミナルを開き、次のコマンドを実行します。
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 が起動可能になり、すべてが正常になっていることを願っています。
答え2
答え3
私はこれをここに投稿しますが、投稿された質問に答えるというよりは、自分の経験を共有することが主な目的です。ただし、私の目標は OP が述べた目標と同じでした。
私は 512 GB の SSD 上のデュアル ブート システムから始めました。このシステムには、EFI、Microsoft が予約したもの、Windows システム パーティション、Linux システム パーティション、Linux ホーム パーティション、および回復用の何かといういくつかのパーティションが含まれていました。
私の目標は、すべてを 2 TB の SSD に移行することでした。
Ubuntu Live-USB からコンピューターを起動し、 を使用して SSD 全体を新しい SSD にクローンしましたdd
。USB 経由で接続できる NVMe SSD 用の小さなエンクロージャーを入手しました。
新しい SSD は、フォーマットもパーティションも何もせず、まったくそのまま使用されました。
クローン作成後、dd
SSD を交換しました。つまり、コンピューターから小さな SSD を取り外し、新しい SSD をインストールしました。
Linux は問題なく起動しましたが、Windows はいくつかの診断/修復を実行しましたが、何も起こりませんでした。
次に、Ubuntu Live-USB からシステムを再度起動し、を起動しましたgparted
。
gparted
GPT テーブルにエラーが報告され、修復するように提案されました。修復オプションを選択し、既存のパーティションのサイズ変更と移動を続行しました。この作業がすべて完了すると、驚いたことに、Windows もエラーなしで起動しました。
このクローン作成作業全体がスムーズに進んだことに、私はうれしい驚きを覚えます。
今週もデュアルブートマシンで再度実行しました。
- ライブUSBを使用して、小さなSSDがまだ内蔵されたままのコンピュータを起動します。
- 新しいSSDをエンクロージャに取り付け、差し込みます
- ディスクをコピーするには
dd
dd
完了したら、gparted
GPTテーブルの修復を開始し、パーティションのサイズを変更して移動します。- コンピュータをシャットダウンしてSSDを交換する
- どちらのOSも問題なく起動しました
いくつかの注意点:
- 古いSSDにWindowsパーティションが含まれている場合は、BitLockerが完全に無効になっていることを確認してください。
dd
進行状況を表示するオプションを忘れた場合は、この答えdd
信号を送信することで、動作を妨げることなく進行状況情報を表示することができます。
答え4
私は使うだろう部分画像パーティションを 1 つずつコピーします。最初のパーティションをコピーした後、そのサイズを増やします。隣接するパーティションを移動する必要がないため、サイズ変更は非常に高速になります。次に、2 番目のパーティションをコピーし、残りのスペースに合わせてサイズを変更します。
最も簡単な方法は、システムレスキューCDその環境からすべてを実行できます。起動可能な USB ドライブを作成できるため、実際の CD は必要ありません。