質問は非常に簡単です。しばらく答えを探していますが、正しい答えが得られたのかわかりません。間違いはドライブとデータを簡単に破壊する可能性があるため、私は本当に物事を明確にしたいと思っています。
私は、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
ファイルを編集します。
私はこれすべてについて正しいですか?ここで私の古いドライブを台無しにする潜在的なリスクはありますか?どうもありがとう!
dd
(別名d
isk d
estroyer)を使用するときはいつでも、データをめちゃくちゃにする可能性があります。 dd
には、新しいドライブを古いドライブに誤って上書きしてしまうことを防ぐ手段はありません。それを正しく機能させる唯一のことは、コマンドを正しく入力し、ソースと宛先を混同しないように非常に注意することです。 if=
とof=
は、互いに打ち間違えられた1つの小さなタイプミスのキーストロークです。
もう1つの問題は、dd
が遅く、ターゲットSSDに不必要な摩耗をもたらすことです。ほとんどのパーティションは通常、100%近くの使用率ではありません。 dd
を使用して空き領域の多いパーティションをコピーすると、割り当てられたデータが実際に含まれていないバイトであっても、そのパーティションのすべてのバイトがコピーされます。
これが私のシステムだとしたら、次のようになります。
gparted
を使用して、目的のパーティションテーブルで新しいSSDをセットアップし、ファイルシステムをフォーマットします。古いSSDのパーティションテーブルとすべて同じになるようにしてください(パーティションサイズとUUIDを除く)。 /
ルートファイルシステムをマークすることを忘れないでください active / bootable、古い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のみが接続されている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が起動可能になり、すべてが正常に動作するようになります。
partimage を使用して、パーティションを1つずつコピーします。最初のパーティションをコピーした後、そのサイズを増やします。隣接するパーティションを移動する必要がないため、サイズ変更は非常に高速になります。次に、2番目のパーティションをコピーし、残りのスペースに合わせてサイズを変更します。
これを行う最も簡単な方法は、 SystemRescueCD から起動し、その環境からすべてを実行することです。ブート可能なUSBドライブを作成できるため、実際のCDは必要ありません。