Перенести систему на новый 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ИСК destroyer) есть вероятность испортить ваши данные. dd не имеет никаких гарантий для случайной записи вашего нового диска поверх старого. Единственное, что делает его работоспособным, это то, что вы ОЧЕНЬ осторожны с правильным вводом команд и не путаете источник и назначение. if= а также of= только одно маленькое опечатка на клавиатуре друг от друга!

Другая проблема заключается в том, что dd работает медленно и излишне изнашивает целевой SSD. Большинство разделов, как правило, не где почти 100% использования. С помощью dd копирование раздела с большим количеством свободного места приводит к копированию КАЖДОГО БАЙТА указанного раздела, даже байтов, которые на самом деле не содержат выделенных данных!

Вот что я бы сделал, если бы это была моя система:

  1. Сделайте снимок экрана с таблицей разделов вашего старого SSD для справки позже, когда мы настроим таблицу разделов вашего нового SSD.
  2. Подключите новый SSD к компьютеру и отсоедините старый SSD. Если старый SSD отключен, мы не сможем уничтожить наши ценные данные, пока мы выполняем потенциально разрушительную работу.
  3. Загрузитесь с установочного USB-накопителя Ubuntu в режиме реального времени Linux. Убедитесь, что ваш BIOS всегда загружает флэш-накопитель в устаревшем режиме / режиме MBR, а не в режиме UEFI, так как похоже, что ваша старая система использует MBR. Если мое предположение неверно, убедитесь, что ваш BIOS загружает флэш-накопитель в режиме UEFI. Смешение вещей усложнит правильную установку grub позже.
  4. использование gparted установить новый SSD с нужной таблицей разделов и отформатировать файловые системы. Попытайтесь сохранить все то же самое, что и таблица разделов вашего старого SSD (кроме размеров разделов и UUID). Не забудьте отметить / корневая файловая система как активная / загрузочная, как ваш старый SSD.
  5. Теперь, когда все опасное редактирование разделов завершено, вы можете безопасно завершить работу и добавить старый SSD, подключенный к компьютеру.
  6. На этот раз загрузите флэш-накопитель USB live Linux с подключенными обоими дисками. Не загружайтесь со старого 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
    

    Убедитесь, что все, что вы видите, это пустая файловая система в качестве места назначения. Если все хорошо, выполните следующие команды, чтобы скопировать все ваши файлы, сохраняя все настройки контекста 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
    
  8. Теперь вы можете безопасно отключить и отключить старый SSD, чтобы мы не могли ничего на нем уничтожить, пока работаем над созданием нового загрузочного SSD.

  9. Загрузите компьютер с флэш-накопителя 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.

Другие вопросы по тегам