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