Вопрос довольно прост. Некоторое время я ищу ответ, но не уверен, что получил правильный ответ. Поскольку ошибки могут легко уничтожить мой диск и данные, я действительно хочу, чтобы все было ясно.
Я использую Ubuntu на SSD 250 ГБ (/ 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
.
Прав ли я во всем этом? Есть ли потенциальный риск испортить мой старый диск здесь? Большое спасибо!
Каждый раз, когда вы используете dd
(a.k.a. d
isk d
estroyer), есть вероятность испортить ваши данные. У dd
нет мер предосторожности для случайной записи вашего нового диска поверх старого. Единственное, что делает его работоспособным, это то, что вы ОЧЕНЬ осторожны с правильным вводом команд и не путаете источник и назначение. if=
и of=
находятся всего в одном небольшом ошибочном нажатии клавиши друг от друга!
Другая проблема заключается в том, что dd
работает медленно и приводит к ненужному износу целевого твердотельного накопителя. Большинство разделов, как правило, не где почти 100% использования. Использование dd
для копирования раздела с большим количеством свободного места приводит к копированию КАЖДОГО БАЙТА указанного раздела, даже байтов, которые на самом деле не содержат выделенных данных!
Вот что я бы сделал, если бы это был мой system:
gparted
, чтобы настроить новый SSD с нужной таблицей разделов и отформатировать файловые системы. Попытайтесь сохранить все то же самое, что и таблица разделов вашего старого SSD (кроме размеров разделов и UUID). Не забудьте пометить корневую файловую систему /
как active kbd> / boottable kbd>, как ваш старый 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 загрузочный, и теперь все хорошо.
Я бы использовал partimage для копирования разделов по одному. После копирования первого раздела увеличьте его размер. Изменение размера будет очень быстрым, потому что вам не придется перемещать соседние разделы. Затем скопируйте второй раздел и измените его размер, чтобы он соответствовал остальному пространству.
Самый простой способ сделать это - загрузиться с SystemRescueCD и сделать все из этой среды. Вы можете создать загрузочный USB-накопитель, чтобы вам не требовался настоящий компакт-диск.
Я только что использовал gparted для переноса Ubuntu 18.04 с одного SATA на другой. Gparted предоставляет простой в использовании графический интерфейс с опциями копирования и вставки, и даже UUID одинаковы, поэтому мне не пришлось обновлять /etc/fstab
или устанавливать grub на новый диск. Это было очень гладко, поэтому я еще не проверял, что произошло внизу, но во время процесса копирования-вставки фактически был вызван e2image(8). Опять же, все это было основано на моем собственном опыте, пожалуйста, поправьте меня и спасибо, ребята.