Можно перенести систему ubuntu с одного компьютера на другой
Есть две машины, одна обычный компьютер на i3, на нём стоит ubuntu 16.04 server , я веду на нём разработку. И вторая, 4-процессорный сервер, точную комплектацию не знаю, но в общем это серверная материнка. Можно ли перенести систему с компьютера на сервер? Если бы это была одна и таже конфигурация, можно было бы просто сделать побитовое копирование. а потом осталось бы только настроить сеть. А вот если это 2 разных компьютера? Возможно ли это в принципе ? Если да то какие возникнут проблемы. Сразу понятно что будут траблы с драйверами. А с чем еще? И вообще есть ли смысл этим заниматься или проще руками установить систему, и весь софт установить с нуля?
- ubuntu
- резервное-копирование
Отслеживать
задан 30 мая 2018 в 9:20
884 12 12 серебряных знаков 29 29 бронзовых знаков
Начнём с того, что конфигурирование сервера должно осуществляться специальными автоматизированными инструментами вроде Ansible, а не вручную. А вообще систему можно запаковать в tar-архив, распаковать где надо и установить загрузчик для загрузки с распакованной системы (хотя возможно понадобится fstab обновить)
30 мая 2018 в 9:51
гы-гы интересная постановка вопроса а слабо на другую аппаратную платформу перенести без перетрансляции ядра?
30 мая 2018 в 9:54
набор процессорных инструкций аналогичный? копируйте (проще всё блочное устройство) и запускайте. p.s. того, что пользователи ms/windows подразумевают под словом «драйвер», в операционной системе gnu/linux нет по определению. соотвтественно, и «проблем с драйверами» нет.
30 мая 2018 в 10:25
@alexanderbarakin , ну это RISC процессоры оба, поидее набор инструкций одинаковый. .. . про драйвера да=) , я новичёк в linux, а как это устроено ? расскажите в крации
30 мая 2018 в 10:56
для вашей задачи — изначально есть замечательные средства (docker напрмер). И не надо будет переносить и настраивать ничего
30 мая 2018 в 11:32
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
да, конечно можно, если набор команд «старого» процессора идентичен (или является подмножеством) набору команд «нового» процессора.
простейший способ: переставляете блочное устройство в новый компьютер и загружаетесь с него.
если переставить блочное устройство возможности нет, надо скопировать его содержимое (понятно, что «новое» блочное устройство должно быть не меньше «старого»). для этого оба блочных устройства не должны использоваться (можно загрузиться с любого live-cd/dvd/usb с операционной системой gnu/linux).
если блочные устройства подключены к одному компьютеру:
$ sudo cp /dev/старое /dev/новое
если к разным, и есть доступ по протоколу ssh под учётной записью root:
$ sudo cat /dev/старое | ssh root@новый-компьютер 'cat > /dev/новое'
сразу после копирования, при необходимости, можно увеличить размер нужных разделов (или создать новый/-е).
для ускорения передачи по сети поток можно сжать, пропустив его, например, через пару gzip+gunizp:
$ sudo cat /dev/старое | gzip | ssh root@новый-компьютер 'cat | gunzip > /dev/новое'
альтернатива вышеизложенному — какие-нибудь специализированные live-cd типа acronis и т.д. и т.п. но ввиду того, что они делают, в сущности, ровно то, что изложено выше, а из-за «юзер-френдлести» все подробности «скрыты под капотом», я настоятельно рекомендую пользоваться такими «помогателями» только весьма опытным пользователям, которые будут в состоянии «разрулить» возможные проблемы, основываясь на довольно скудной выдаваемой подобными «помогателями» информации.
- Как в Linux клонировать диск в диск другого размера
- Как создать резервную копию всего сервера ubuntu 9 с помощью Live CD?
- Клонирование установленной системы (X)Ubuntu
- Как перенести всю систему Linux на другой диск?
Описание процесса переноса Ubuntu/Debian на другой винчестер
Я думаю что у многих была такая ситуация когда, появляется необходимость перенести систему с одного винта на другой. Вот и у меня назрела такая необходимость.
И так имеем:
Установленную систему на диск объемом 80 Гб (второй канал SATA — sdb). На диске одна пратиция /deb/sdb1, swap у системы отсутствует.
Необходимо сделать:
перенести систему на другой винчестер объемом 320 Гб, подключенный на первый канал SATA (sda), создать и подключить на новом винчестере раздел подкачки swap, каталоги пользователей разместить так же на отдельном разделе.
Поехали:
Выключаем компьютер (система установлена на винчестере в партицию sdb1)
Подключаем второй винт на первый канал SATA (винт приемник — sda)
Грузимся с LiveCD
Запускаем Gparted и создаем партиции, которые в дальнейшем будем использовать для SWAP, / и home
- SWAP — 4 Gb, FS — SWAP (sda1)
- / — 40 Gb (sda2), FS — ext4 //* Важно. Сделать партицию bootable
- home — 251 Gb (sda3), FS — ext4
Далее: открываем терминал и создаем в директории /mnt поддиректории:
sudo mkdir /mnt/oldsys
sudo mkdir /mnt/newsys
sudo mkdir /mnt/newhome
Монтируем партиции на созданные директории
sudo mount /dev/sdb1 /mnt/oldsys # для монтирования корневого раздела старого винта
sudo mount /dev/sda2 /mnt/newsys # для монтирования корневого раздела нового винта
sudo mount /dev/sda3 /mnt/newhome # для монтирования раздела на новом винте, который будет использоваться под /home
Копируем данные из директории /mnt/oldsys/home в /mnt/newhome, те же действия необходимо выполнить и для /mnt/oldsys, только теперь из процесса копирования нужно будет исключить директорию /mnt/oldsys/home, так-как копия этой директории была сделана до этого. Для этого я использовал утилиту rsync:
sudo rsync -qaHEAXh —progress /mnt/oldsys/home/* /mnt/newhome
sudo rsync -qaHEAXh —progress —exclude ‘home’ /mnt/oldsys/* /mnt/newsys
Следующим номером нашей программы будет правка файла /etc/fstab: по умолчанию в fstab вместо имен файловых систем (на пример: /dev/sdb1) используются их UUID, если не планируется подключать диск к разным SATA каналам или переносить его на другой компьютер, то можно явно прописать имя файловой системы, в нашем случае выглядеть это будет так:
proc /proc proc defaults 0 0
/dev/sda1 swap swap defaults 0 0
/dev/sda2 / ext4 errors=remount-ro 0 1
/dev/sda3 /home ext4 defaults,owner,nodev 0 2
В противном случае, если требуется использовать UUID, то его можно получить с помощью утилиты blkid:
sudo blkid /dev/sda2
/dev/sda2: UUID=»e681c419-5ba5-4b78-ac00-def757e65585″ TYPE=»ext4″
Теперь необходимо перенести grub, так-как в ubuntu 9.10 используется grub 2 перенос происходит несколько иным путем нежели старый груб:
Перед установкой груба я сделал следующие шаги (не обязательно)
Размонтировал /mnt/oldsys:
sudo umount /mnt/oldsys
Размонтировал /mnt/newhome:
sudo umount /mnt/newhome
Далее с помощью команды mount следует сделать перемонтирование каталогов /dev и /proc в каталоги /mnt/newsys/dev и /mnt/newsys/proc соответственно, используя при этом опцию –bind — это нужно для того чтобы в окружении chroot в директории /dev имелись файлы устройств /dev/sda*:
sudo mount —bind /dev /mnt/newsys/dev
sudo mount —bind /proc /mnt/newsys/proc
Чрутимся в /mnt/newsys/
sudo chroot /mnt/newsys /bin/bash
Создаем device.map для grub
sudo grub-mkdevicemap
В результате выполнения этой команды в /boot/grub/ будет создан файл device.map следующего содержания (на разных системах будет выглядеть по разному) у меня так:
(hd0) /dev/sda
(hd1) /dev/sdb
Создаем кофигурационный файл для grub
grub-mkconfig > /boot/grub/grub.cfg
Если ошибок не вылезло и груб сказал примерно следуюущее
Generating grub.cfg…
Found linux image: /boot/vmlinuz-2.6.31-17-generic
Found initrd image: /boot/initrd.img-2.6.31-17-generic
Found linux image: /boot/vmlinuz-2.6.31-16-generic
Found initrd image: /boot/initrd.img-2.6.31-16-generic
Found linux image: /boot/vmlinuz-2.6.31-15-generic
Found initrd image: /boot/initrd.img-2.6.31-15-generic
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Устанавливаем grub. Так-как у меня в системе загрузочным диском будет выступать /dev/sda, то и устанавливаю я загрузчик в mbr этого винта:
sudo grub-install /dev/sda
(здесь вместо /dev/sda можно поставить hd0 см. файл /boot/grub/device.map).
Вывод этой команды для моей системы такой:
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install’.
(hd0) /dev/sda
Уходим из чрута
exit
Делаем umount для /dev, /proc и /mnt/newsys
sudo umount /mnt/newsys/dev
sudo umount /mnt/newsys/proc
sudo umount /mnt/newsys/
Перезагружаемся, если все сделано правильно, то система должна загрузится без проблем.
Linux. Перенос системы на другой компьютер с помощью tar
Если нужно перенести систему на другой компьютер. При этом использовать dd нет возможности, например если исходный диск больше диска на который осуществляется перенос. Но при этом занятое место меньше свободного. То перенос системы можно сделать с помощью команды tar.
1.Делаем копию всех файлов
sudo tar cvpzf /backup.tgz --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/etc/fstab --exclude=/boot /
В результате в корне файловой системы создастся архив backup.tgz со всеми файлами.
2. Устанавливаем «чистую» систему на компьютер на который нужно осуществить перенос.
3. Копируемый архив backup.tgz созданный в первом пункте на компьютер. Например с помощью команды scp или rsync.
4. Распаковываем архив
sudo tar xvpfz /backup.tgz -C /
reboot
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
- Создание образа системы в Linux
- Установка и настройка rsync
- VestaCP установка и настройка
- Настройка сети в Linux – команда ifconfig
перенос линукса на другой компьютер
Я работаю в организации с маленьким штатом, деятельность тесно связана с IT и у нас возникают задачи по системному администрированию. Мне это интересно и частенько я беру на себя решение некоторых.
На прошлой неделе мы настраивали FreePBX под debian 7.8, нанимали фрилансера. В процессе настройки оказалось, что сервер (да, я так называю обычный PC) не хочет грузится с HDD при подключенных USB 3G модемах, которые мы используем для звонков на мобильные, колупание BIOSа не помогло. Непорядок. Решил, что нужно перенести его на другую железяку. Так появилось сразу две связанные задачи:
- сделать бэкап сервера;
- восстановить бэкап на другом железе.
Гугление не дало внятных ответов, как это сделать, пришлось собирать информацию кусками и пробовать. Всякие acronis’ы отбросил сразу, ибо не интересно.
Опыт общения с linux-системами у меня небольшой: настройка VPN сервера на open-vpn, ftp-сервера и еще пара мелочей. Сам себя я характеризую как человека умеющего читать маны и править конфиги 🙂
Ниже я описываю свой частный случай и почему я поступил именно так. Надеюсь, новичкам будет полезно, а бородатые админы улыбнутся вспомнив молодость.
Начинаем копать теорию:
По созданию бэкапов уйма статей, я для себя отметил два способа: tar — упаковывает и сжимает все файлы, при этом не сохраняется MBR, мой бэкап будет весить около 1.5 Gb; dd — делает полную копию раздела, включая MBR и всю область, где нет файлов, архив будет равен размеру раздела, в моем случае ~490 Gb.
Второй способ требует наличия внешнего жесткого диска объемом не меньше раздела, который архивируем. Да и что с ним потом делать, непонятно, хранить на полочке? Остановился на tar, чуть сложнее в реализации, нужно будет создать MBR, но время создания/восстановления архива существенно меньше, хранить бэкап проще, полтора гига можно закинуть в облако и скачать, когда будет нужно. Записывать его можно на ту же live-флэшку, с которой буду грузиться.
Итак, план действия:
- создание бэкапа;
- форматирование, разметка диска, создание файловой системы;
- восстановление бэкапа;
- создание MBR;
- тестирование и устранение неполадок.
1. Создание бэкапа
Грузимся с live-флэшки, у меня это debian-live-7.8.0-amd64-standard.
Переключаемся на root:
sudo su
Монтируем раздел, который будем архивировать, у меня это sda1, чтобы случайно не наломать дров, монтируем только для чтения. Посмотреть все свои разделы можно при помощи команд ls /dev | grep sd или df -l
mount -o ro /dev/sda1 /mnt
Наша флэшка уже примонтирована, но в режиме только чтения, нужно перемонтировать для чтения-записи, чтобы писать туда бэкап.
mount -o remount,rw /dev/sdb1 /lib/live/mount/medium
Все готово для создания архива
tar -cvzpf /lib/live/mount/medium/backupYYYYMMDD.tgz --exclude=/mnt/var/spool/asterisk/monitor --exclude=/mnt/var/spool/asterisk/backup /mnt/
Здесь у нас параметры: c — создать архив, v — выводить информацию о процессе, z — использовать сжатие gzip, p — сохраняем данные о владельцах и правах доступа, f — пишем архив в файл, путь к файлу, — exclude — исключаем из архива каталог (я исключил каталоги с записями разговоров и каталог с бэкапами FreePBX), /mnt/ — каталог, который архивируем.
Ждем… у меня вся подготовка и создание архива заняли 10 минут. Будь флэшка быстрее, уложился бы в 7–8 минут.
umount /mnt
reboot
Складываем архив в надежное место за пределами офиса.
Восстановление бэкапа на другом железе
2. Размечаем диск, создаем файловую систему
Грузимся с live-флэшки, у меня все та же debian-live-7.8.0.
Переключаемся на root:
sudo su
Размечаем диск. Мне понравилась утилита с псевдографическим интерфейсом cfdisk. Там все просто и понятно.
cfdisk
Удаляем все имеющиеся разделы. Я создал два новых раздела, один на 490 Gb под / (sda1) и 10 Gb под swap (sda2) в конце диска, т.к. он практически не будет задействован. Проверим типы разделов. Который под систему должен иметь тип 83 Linux, второй — 82 Linux swap / Solaris. Помечаем системный раздел загрузочным (bootable), сохраняем изменения и выходим.
Cоздаем файловую систему на первом разделе.
mkfs.ext4 /dev/sda1
3. Распаковываем архив.
Монтируем отформатированный раздел
mount /dev/sda1 /mnt
Распаковываем архив прямо с флэшки
tar --same-owner -xvpf /lib/live/mount/medium/backupYYYYMMDD.tgz -C /mnt/
Параметр — same-owner — сохраняет владельцев у распаковываемых файлов, x — извлекаем из архива, v — выводить информацию о процессе, p — сохраняем права доступа, f — указываем файл, который распаковываем, C — распаковываем в категорию.
4. Создаем MBR на новом диске.
Чтобы корректно создать загрузочную запись, монтируем рабочие каталоги к нашему будущему root-каталогу, у меня это /mnt. Каталоги /dev и /proc сейчас используются live-системой, используем параметр bind, чтобы они были доступны сразу в двух местах:
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
Переключаемся на новую систему используя chroot:
chroot /mnt
Делаем swap-раздел для новой системы:
mkswap /dev/sda2
Подключаем его же:
swapon /dev/sda2
Чтобы grub работал, нужно указать ему правильные UUID разделов в fstab, сейчас там прописаны разделы предыдущей системы:
nano /etc/fstab
Открываем второй терминал (Alt+F2) под root:
sudo su
blkid
И видим текущие UUID разделов.
Вручную переписываем их в fstab переключаясь между Alt+F1 и Alt+F2. Да, муторно, но попытки копировать занимали у меня больше времени, чем переписывание. Сохраняем fstab.
Устанавливаем grub2. У меня один физический диск, поэтому ставим его на sda:
grub-install /dev/sda
На чистый диск должно встать без ошибок. Обновляем информацию из fstab:
update-grub
Возвращаемся в Live-систему:
exit
Размонтируем все каталоги:
umount /mnt/dev
umount /mnt/proc
umount /mnt
Если вылазят процессы, которые используют эти каталоги, убиваем их используя fuser.
Все, поехали. Грузимся с жесткого диска:
reboot
Здесь статья должна была закончиться, но у меня возникли проблемы с подключением к интернету. Сервер видит сеть, видит компьютеры в ней, но в интернет не ходит… а это как бы важно для телефонии.
5. Тестирование и устранение неполадок.
ifconfig -a
Показывет интерфейсы eth1 и lo, гугление сказало, что gateway можно прописать только подключению eth0, остальные рассчитаны только на работу внутри сети.
Похоже, отсутствие eth0 вызвано способом переноса системы. Находим файл, который отвечает за нумерацию интерфейсов, смотрим туда:
nano /etc/udev/rules.d/70-persistent-net.rules
Действительно, там два активных интерфейса, определенных MAC’ами. Комментируем первый, второму прописываем eth0.
Перезапуск /etс/init.d/networking не помог, поэтому перезагружаемся:
reboot
Подключаем донглы, проверяем, все работает.