Перенос linux на другой диск на примере debian/ubuntu
Навеяно статьей про перенос freebsd на другой диск. Будем делать тоже самое но на linux. В linux все несколько сложнее.
Для начала нужно подсоединить новый диск и загрузится. В системе должны присутствовать 2 диска, первый с нашей системой, а второй пустой. Второй мы можем разметить по своему усмотрению или же скопировать разметку с первого диска(если второй диск идентичен первому). Как скопировать разметку можно прочесть здесь. Как разметить вручную думаю разберётесь сами, благо мануалов в интернете полно. После создания разметки разделы надо отформатировать примерно так.
# mkfs.ext4 /dev/sdb1
Затем примонтируем его в /mnt
# mount /dev/sdb1 /mnt
Теперь нам нужно создать дампы разделов, в данном случае нужно создать только дамп sda1. Установим утилиты dump/restore.
# apt-get install dump
И создаем дамп раздела в файл /mnt/root.img
# dump -0f /mnt/root.img /
Создание дампа в /mnt/root.img возможно когда на разделе используется менее 50% от /dev/sdb1. Иначе на разматывание дампа места не хватит. В остальных случаях нужно создавать дамп в другом месте, но не в разделе корня, чтобы дамп не мотал сам себя. Можно использовать раздел другой тачки примонтированный по sshfs, я проверял это прекрасно работает.
Переходим в /mnt и разматываем дамп.
# cd /mnt
# restore -rf /mnt/root.img
Как видим раздел перенесся на /dev/sdb1. Если у нас /boot на отдельном разделе, то переносим его аналогично.
Теперь нам нужно установить загрузчик.
# grub-install --root-directory=/mnt /dev/sdb
Затем если требуется правим /mnt/etc/fstab и меню grub в /mnt/boot/grub/grub.cfg.
# nano /mnt/etc/fstab
# nano /mnt/boot/grub/grub.cfg
Тут немного поясню зачем проверять и править эти файлы. У меня например в этих файлах были прописаны uuid разделов, и если мы уберем старый диск то ОС соответственно не загрузится, т.к у новых разделов у нас другие uuid. Я вместо uuid прописал реальные устройства корня и свопа /dev/sda1 и /dev/sda3. Все устройства sdb, станут у нас sda после извлечение первого диска.
Теперь выключаем тачку, отсоединяем первый диск и загружаемся с нового диска.
P.S. Утилиты dump и restore не ограничиваются переносом ОС с одного диска на другой. Таким образом можно переносить linux вообще на другую тачку с другим железом и дисками. Процедура почти такая же за небольшими изменениями.
- На первой тачке создаем дамп ОС;
- Загружаем вторую тачку с livecd;
- Размечаем и форматируем диски;
- Копируем туда дамп c первой тачки(по scp, например);
- Разворачиваем дамп с помощью restore;
- Устанавливаем загрузчик;
- Загружаемся.
Есть же clonezilla.
Ну ни кто же не спорит, что clonezilla есть. Так же есть и пофайловое копирование с накатыванием загрузчика, так же возможно перетащить систему с помощью dd. Это один из способов, не более.
В Debian 7.9 пишу команду:
dump 0auL -f /backup/BackOS /dev/sda1
выдает ошибку:
| DUMP: You can’t update the dumpdates file when dumping a subdirectory
| DUMP: The ENTIRE dump is aborted.
Что не так? Дамп на живой системе делается, где /backup/BackOS -второй примонтированный при установке HDD, а /dev/sda1 — корневой раздел root.
Делайте вот так:
Можно добавить -z9, тогда дамп будет сжимать.
Не знаю, был ли такой ключ на момент написания поста.
Спасибо за информацию.