Перенести систему на новый SSD с помощью команды dd
Вопрос довольно прост. Некоторое время я ищу ответ, но не уверен, что получил правильный ответ. Поскольку ошибки могут легко уничтожить мой диск и данные, я действительно хочу, чтобы все было ясно.
Я использую Ubuntu на 250 ГБ ssd (/dev/sda), который имеет два раздела, каждый размером около 125 ГБ. Sda1 установлен на /
и sda2 установлен на /home
, Теперь я хочу переместить все в новый ssd объемом 1 ТБ (скажем, это /dev/sdc) и расширить каждый диск до 500 ГБ. После некоторых исследований я предложил два подхода:
1) сделать dd if=/dev/sda of=/dev/sdc
клонировать весь диск. После этого я должен получить загрузочный диск с двумя разделами по 125 ГБ и немного нераспределенного пространства. Правильно? Затем мне нужно изменить размер sdc1 и sdc1 в 500 ГБ с чем-то вроде gparted. Изменение размера может занять много времени, верно?
2) Второй подход - сначала отформатировать новый диск, сделать два раздела по 500 ГБ. делать 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 ГБ +500 ГБ. Такой подход избавит меня от изменения размера диска.
И для обоих подходов мне нужно изменить UUID в файле /etc/fstab. Это можно сделать, сначала смонтировав новый диск после клонирования: sudo mount /dev/sdc1 /mnt/
затем отредактируйте /mnt/etc/fstab
файл.
Я прав насчет всего этого? Есть ли потенциальный риск испортить мой старый диск здесь? Большое спасибо!
4 ответа
В любое время вы используете dd
(ака d
ИСК d
estroyer) есть вероятность испортить ваши данные. dd
не имеет никаких гарантий для случайной записи вашего нового диска поверх старого. Единственное, что делает его работоспособным, это то, что вы ОЧЕНЬ осторожны с правильным вводом команд и не путаете источник и назначение. if=
а также of=
только одно маленькое опечатка на клавиатуре друг от друга!
Другая проблема заключается в том, что dd
работает медленно и излишне изнашивает целевой SSD. Большинство разделов, как правило, не где почти 100% использования. С помощью dd
копирование раздела с большим количеством свободного места приводит к копированию КАЖДОГО БАЙТА указанного раздела, даже байтов, которые на самом деле не содержат выделенных данных!
Вот что я бы сделал, если бы это была моя система:
- Сделайте снимок экрана с таблицей разделов вашего старого SSD для справки позже, когда мы настроим таблицу разделов вашего нового SSD.
- Подключите новый SSD к компьютеру и отсоедините старый SSD. Если старый SSD отключен, мы не сможем уничтожить наши ценные данные, пока мы выполняем потенциально разрушительную работу.
- Загрузитесь с установочного USB-накопителя Ubuntu в режиме реального времени Linux. Убедитесь, что ваш BIOS всегда загружает флэш-накопитель в устаревшем режиме / режиме MBR, а не в режиме UEFI, так как похоже, что ваша старая система использует MBR. Если мое предположение неверно, убедитесь, что ваш BIOS загружает флэш-накопитель в режиме UEFI. Смешение вещей усложнит правильную установку grub позже.
- использование
gparted
установить новый SSD с нужной таблицей разделов и отформатировать файловые системы. Попытайтесь сохранить все то же самое, что и таблица разделов вашего старого SSD (кроме размеров разделов и UUID). Не забудьте отметить/
корневая файловая система как активная / загрузочная, как ваш старый SSD. - Теперь, когда все опасное редактирование разделов завершено, вы можете безопасно завершить работу и добавить старый SSD, подключенный к компьютеру.
- На этот раз загрузите флэш-накопитель USB live Linux с подключенными обоими дисками. Не загружайтесь со старого 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
Убедитесь, что все, что вы видите, это пустая файловая система в качестве места назначения. Если все хорошо, выполните следующие команды, чтобы скопировать все ваши файлы, сохраняя все настройки контекста permissions/owner /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.
Загрузите компьютер с флэш-накопителя USB в режиме реального времени в Linux, подключив только новый SSD. Откройте терминал и начните работать с помощью этих команд:
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 и установить его в MBR вашего нового SSD. После установки grub перед выходом необходимо отключить все ранее смонтированные файлы из среды chroot. В противном случае Ubuntu будет трудно размонтировать раздел Linux при выключении.
umount /sys umount /proc umount /dev exit sudo umount newroot sync
И вот оно! Надеюсь, ваш новый SSD загрузочный, и теперь все хорошо.
Я просто использовал gparted для переноса моего ubuntu 18.04 с одного SATA на другой. Gparted предоставляет простой в использовании графический интерфейс с параметрами копирования и вставки, и даже UUID одинаковы, поэтому мне не пришлось обновлять
/etc/fstab
или установите grub на новый диск. Это было очень гладко, поэтому я еще не проверил, что произошло внизу, но во время процесса копирования-вставки фактически был вызван e2image(8). Опять же, все это было основано на моем собственном опыте, пожалуйста, поправьте меня и спасибо, ребята.
Я публикую это здесь, больше для того, чтобы поделиться своим опытом, а не для того, чтобы ответить на заданный вопрос. Однако моя цель была такой же, как и заявленная цель ФП.
Я начал с системы с двойной загрузкой на твердотельном накопителе емкостью 512 ГБ, который содержал пару разделов: EFI, что-то, зарезервированное Microsoft, системный раздел Windows, системный раздел Linux, домашний раздел Linux и что-то для восстановления.
Моей целью было перенести все на SSD емкостью 2 ТБ.
Я загрузил компьютер с Ubuntu Live-USB и клонировал весь SSD на новый SSD, используя . Я купил себе небольшой корпус для твердотельных накопителей NVMe, который можно подключать через USB.
Новый SSD использовался совершенно нетронутым: ни форматирования, ни разделов, ничего.
После клонирования с помощьюdd
Я поменял SSD, т. е. вынул маленький SSD из компьютера и установил новый.
Linux загрузился без сбоев, но Windows провела диагностику/восстановление, которое ни к чему не привело.
Затем я снова загрузил систему с Ubuntu Live-USB и запустил .
gparted
сообщил об ошибке в таблице GPT, которую предложил исправить. Я выбрал вариант восстановления и приступил к изменению размера и перемещению существующих разделов. После того, как все это было сделано, к моему удивлению, Windows также загрузилась без ошибок.
Я приятно удивлен, что вся эта история с клонированием прошла так гладко.
Я бы использовал partimage для копирования разделов по одному. После копирования первого раздела увеличьте его размер. Изменение размера будет очень быстрым, потому что вам не придется перемещать соседние разделы. Затем скопируйте второй раздел и измените его размер, чтобы он соответствовал остальному пространству.
Самый простой способ сделать это - загрузиться с SystemRescueCD и сделать все из этой среды. Вы можете создать загрузочный USB-накопитель, чтобы вам не понадобился настоящий CD.