Клонирование разделов жестких дисков в Linux
Оригинал: How to Clone Linux Partition
Автор: Marin Todorov
Дата публикации: 18 декабря 2018 года
Перевод: А. Кривошей
Дата перевода: октябрь 2019 г.
Существует множество причин, по которым вы можете захотеть клонировать раздел Linux или даже весь жесткий диск, большинство из которых связаны с созданием резервных копий ваших данных. Есть несколько способов сделать это в Linux, используя внешние утилиты, такие как partimage или Clonezilla.
Однако в этом руководстве мы рассмотрим клонирование дисков Linux с помощью утилиты dd, которая чаще всего используется для преобразования или копирования файлов и предустановлена в большинстве дистрибутивов Linux.
Как клонировать раздел Linux
С помощью команды dd вы можете скопировать весь жесткий диск или отдельный раздел Linux. Начнем с клонирования одного из наших разделов. В моем случае у меня есть следующие диски: /dev/sdb, /dev/sdc. Я буду клонировать /dev/sdb1 / в /dev/sdc1.
Сначала выведите список разделов диска, используя команду fdisk, как показано ниже.
Теперь клонируем раздел /dev/sdb1/ в /dev/sdc1 с помощью команды dd:
Приведенная выше команда указывает dd использовать /dev/sdb1 в качестве входного файла и записать его в выходной файл /dev/sdc1.
После клонирования раздела Linux вы можете проверить оба раздела с помощью команды:
Клонирование всего жесткого диска
Клонирование жесткого диска Linux похоже на клонирование раздела. Однако вместо указания раздела вы просто используете весь диск. Обратите внимание, что в этом случае рекомендуется, чтобы целевой жесткий диск был такого же размера (или больше), что и исходный диск.
Эта команда должна была скопировать диск /dev/sdb с его разделами на целевой жесткий диск /dev/sdc. Вы можете проверить изменения на обеих дисках с помощью команды fdisk.
Создание резервной копии MBR в Linux
Команда dd также может быть использована для резервного копирования MBR, которая находится в первом секторе диска перед первым разделом. Поэтому, если вы хотите создать резервную копию вашей MBR, просто выполните команду:
Клонирование системы в Linux
В данной инструкции рассмотрим перенос системы Linux с одного жёсткого диска на другой. Этот способ поможет сэкономить время на настройку системы, учётных записей, установленного ПО и серверных служб и т.д.
Данный способ будет полезен в тех случаях, когда размера старого жёсткого диска не хватает, либо он по каким-нибудь причинам становится непригодным для дальнейшего использования.
Будьте предельно осторожны. Данный метод может привести к безвозвратной потере данных.
В первую очередь необходимо проверить, существует ли новый жёсткий диск в системе. В качестве системы Linux возьмём Gentoo, но подойдёт для любого дистрибутива. Например, у нас подключён один старый жёсткий диск sda размером 16 ГБ с разделами sda1 (boot), sda2 (swap-раздел) и sda3 (корневой), а новый жёсткий диск размером 40 ГБ в системе появится как sdb — без разделов. Это можно посмотреть командой
Запустим клонирование утилитой dd
После завершения у диска sdb появятся точно такие же разделы и таких же размеров, как и у sda.
Затем выключаем машину
и отключаем старый жёсткий диск.
Новый жёсткий диск желательно вставить в тот же разъём, где находился старый. После отключения старого диска новый станет на его место и будет распознаваться как устройство sda.
Включаем машину, и проверяем разделы.
Теперь расширим корневой раздел sda3. Для этого запустим команду
и попадаем в консоль fdisk
затем скомандуем p
консоль покажет нам разделы жёсткого диска, а также с начальными и конечными секторами в виде таблицы
далее скомандуем n для создания раздела sda3, выберем тип раздела p (primary) и номер раздела — 3.
По окончанию процесса будет создан корневой раздел sda3 уже с новым размером. Убедимся в этом, выполнив команду p.
И наконец, скомандуем w (write) для применения изменений и выхода из консоли fdisk.
После этого корневой раздел будет увеличен.
Перенос работающей Linux системы на XFS с HDD на SSD меньшего размера
Привет, Хабр! Представляю вашему вниманию русскоязычную версию статьи «Migrating CentOS system from HDD to smaller SSD on XFS filesystem» автора Denis Savenko.
Данная статья является русскоязычной версией ранее мной же опубликованной статьи на английском языке с небольшими корректировками на аудиторию. Сразу оговорюсь — я не являюсь маньяком линукса или даже профессиональным системным администратором, поэтому вполне вероятно, что порой я мог использовать необычные, или даже глупые решения. Я буду очень благодарен вам, если вы укажете мне на них в комментариях, чтобы я мог улучшить данное руководство вместо того, чтобы просто заминусовать статью. Заранее вас за это благодарю.
Я думаю я не один, кто в какой-то момент решил преобрести себе SSD-диск для работающей системы. В моём случае это была работающая система на CentOS 7 на моём крошечном домашнем сервере. Далее я хотел перенести её «как есть» на новый диск. Но, как оказалось, это не так то просто сделать, учитывая следующее:
Позвольте мне пояснить, почему описанные мной выше вещи являются серьёзными усложнениями поставленной перед нами задачи.
Во-первых, если бы размер нового диска был таким же или больше, чем у прежнего, можно было бы применить полное клонирование разделов с данными. Для этого существует масса утилит, таких как dd, ddrescue, partclone или даже clonezilla. Единственное, что нужно было бы сделать после, это подправить пару конфигурационных файлов в загрузочном разделе. Если же вы используете LVM для ваших разделов (что также является опцией по умолчанию в CentOS 7), задача могла бы быть ещё проще — в логический том добавляется новый диск, после чего с использованием команды pvmove данные переносятся на другой физический носитель внутри логического тома, и старый диск изымается из раздела, однако это невозможно при меньшем размере нового физического носителя.
И последнее, но ничуть не менее важное, если бы перед нами не стояло задачи перенести работающую сконфигурированную систему с сохранением всех метаданных, было бы проще просто установить систему с нуля на новый диск, заранее сохранив пару важных файлов. Это не подходило мне по двум причинам — во-первых волосы становились дыбом при мысли, что мне придётся повторить все те же действия, которые я выполнял на протяжении нескольких дней кряду, а во-вторых — это просто не спортивно. Я был уверен, что при должном понимании технических особенностей, перенос работающей системы на другой диск не должен был быть невыполнимой задачей.
Тем не менее, я выработал и оттестировал как минимум на двух различных окружениях подробный пошаговый план переноса работающей системы, берущий во внимание все вышеописанные ограничения.
Этап 1. Подготовка
Вот список того, что нам потребуется для переноса:
Этап 2. Миграция
Далее в данном руководстве предполагается, что все команды выполняются от имени суперпользователя ( root )
Шаг 1. Разрешение удалённого доступа (опционально)
Для меня удобнее иметь удалённый доступ к машине, на которой я буду производить перенос, т.к. я имею возможность просто копипастить заранее подготовленные команды в свой PuTTY терминал. Если вы загрузили это руководство в браузере на целевой машине, смело переходите к следующему шагу — всё, здесь описанное, вам не понадобится.
Для того, чтобы разрешить удалённый доступ, необходимо задать пароль для пользователя root и запустить SSH демон:
Теперь можно подключиться к целевой машине вашим SSH клиентом (например, PuTTY).
Шаг 2. Разбивка диска на разделы
Диск следует разбить по образу и подобию прежнего диска. Я не маньяк партиционирования, поэтому моя схема партиционирования была стандартной:
Итак, приступим к разбивке нового диска:
Раздел /boot должен быть стандартным линукс-разделом, поэтому сразу создаём файловую систему на нём:
И теперь нам необходимо создать LVM-структуру для второго раздела на диске. Назовём новую LVM-группу newmain (впоследствии переименуем):
Теперь мы готовы к созданию файловой системы на новых логических разделах:
Шаг 3. Активная фаза
Прежде чем мы начнём, сделаем обе LVM-группы активными (т.к. мы работаем из под Live CD):
Создадим директории для точек монтирования, и примонтируем к системе старые и новые разделы наших дисков:
Убедимся, что всё в порядке при помощи команды lsblk :
Пару слов об использованных флагах:
Эта процедура может занять некоторое время (зависит от объёма ваших данных). Поэтому здесь вам пригодится приготовленная заранее чашка кофе, которую самое время выпить, а то остынет.
Если всё прошло хорошо, ваши данные были полностью скопированы с сохранением всех метаданных. Теперь необходимо подправить пару конфигурационных файлов и переустановить Grub2 на новый диск, чтобы сделать его загрузочным.
Шаг 4. Делаем новый диск загрузочным
Первое, что нужно сделать, это узнать UUID для старого и нового загрузочных разделов ( /boot ) при помощи команды blkid :
Эти две команды подготовят ваши системные файлы конфигурации к новому диску.
Теперь самое время переименовать LVM-группы и отмонтировать диски:
Единственное, что осталось сделать, это переустановить загрузчик. Это необходимо делать с использованием chroot :
Шаг 5. Последний штрих
На данном этапе все данные уже должны быть перенесены и новый диск должен стать загрузочным. Нужно только перезапуститься, вынуть Live CD из привода, и выбрать новый диск в BIOS для загрузки:
На этом обязательная часть программы окончена и мы успешно перенесли работающую систему на новый диск. Старый диск можно извлекать из компьютера.
Использование старого HDD в качестве медиа-хранилища
Если вы, как и я, после переноса системы, хотите использовать ваш прежний диск как медиа-хранилище, это делается также легко.
Во-первых, переразбейте прежний диск
Мы не станем создавать файловую систему на диске напрямую. Вместо этого мы создадим новую LVM-группу, в которую добавим этот диск. Это позволит нам в будущем легко добавлять новые диски в эту группу без лишней мороки (логический диск при этом останется прежний):
Для того, чтобы сохранить изменения после перезагрузки системы, следует также добавить запись о точке монтирования в /etc/fstab :
Готово!
Теперь можно утверждать, что мы успешно перенесли работающую на xfs систему на новый диск меньшего размера. Как бонус, мы начали использовать прежний диск в качестве медиа-хранилища.
UPDATE 02.04.2018
Так как мы производили перенос системы на SSD, то, как советуют в комментариях, хорошо бы уже после переноса в работающей системе включить периодическое исполнение команды trim (сборщик мусора для SSD-дисков, который позволяет не терять в производительности через время). Для этого необходимо выполнить команду:
Пожалуйста, оставляйте ваши комментарии, если нашли ошибку или знаете способ лучше как выполнить те или иные действия. Надеюсь, данная инструкция окажется вам полезной!
Перенос Linux на другой диск
Такая задача возникает достаточно редко. Обычно, проще переустановить систему заново, чем переносить уже установленную версию на другой жёсткий диск или другой раздел. Но если у вас там есть важные программы, которые нежелательно удалять, или вы меняли настолько много настроек в системе, что её установка заново займёт намного больше времени, чем её перенос, то перенос будет предпочтительнее.
В этой статье мы рассмотрим, как перенести Linux на другой диск с помощью утилиты cp или архива tar. Второй способ интересен ещё тем, что вы можете создать резервную копию всей системы, а затем просто восстановить её при возникновении проблем.
Как перенести Linux на другой диск
1. Подготовка к переносу
Сначала рассмотрим, как использовать утилиту cp для переноса файлов операционной системы. В папку /mnt примонтируйте раздел, на котором будет располагаться новый Linux. Например, это /dev/sdb1:
sudo mount /dev/sdb1 /mnt
Теперь нужно рекурсивно скопировать все файлы из текущего корня в нашу папку /mnt. Лучше всего это делать, загрузившись с LiveCD диска, тогда точно все нужные данные будут сохранены. Но это не обязательно, вы можете делать перенос и работающей системы, только перед этим остановите все запущенные базы данных и сервисы по максимуму, чтобы они сохранили свои настройки и вы ничего не потеряли в новой версии системы. Например, если у вас запущена база данных MariaDB или MySQL, то её нужно остановить:
sudo systemctl stop mariadb
Аналогично сделайте со всеми другими не важными для операционной системы сервисами. Также очистите корзину, кэш пакетного менеджера и другие ненужные файлы, чтобы они не занимали место в архиве или новой системе.
2. Перенос Linux утилитой cp
Поскольку будут копироваться только файлы из текущей файловой системы, то если ваши каталоги /boot и /home находятся на других разделах, то их нужно скопировать отдельно:
Если вам не нужна домашняя папка, то вы можете её не копировать.
3. Перенос Linux утилитой tar
Также вы можете создать архив, а потом его куда-нибудь скопировать, чтобы иметь резервную копию системы:
4. Перенос с помощью rsync
Утилитой rsync многие не хотят пользоваться, но она очень удобная, работает достаточно быстро и отображает прогресс копирования. Для переноса с помощью rsync выполните:
5. Правка /etc/fstab
Далее будем работать только с новой системой. Первым делом нужно исправить файл /etc/fstab, чтобы там был указан правильный UUID корневого раздела. Узнать UUID нужного раздела можно командой blkid:
Теперь замените полученным UUID, значение этого параметра корневого раздела в /mnt/etc/fstab:
sudo vi /mnt/etc/fstab
6. Установка загрузчика
Далее нужно установить загрузчик Grub в новом Linux. Сначала примонтируйте в него папки /sys, /proc и /dev:
Затем войдите в chroot окружение:
Затем установите загрузчик на тот диск, на который вы переносили Linux, в моём случае это /dev/sdb:
sudo grub-install /dev/sdb
И осталось только создать конфигурационный файл для загрузчика:
В дистрибутивах, не основанных на Ubuntu, вместо update-grub2 можно использовать команду:
7. Перезагрузка
Выйдите из chroot-окружения командой:
Затем размотрируйте системные каталоги и ваш раздел:
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
И перезагрузите компьютер. В BIOS вашего компьютера нужно выбрать диск, на который вы переносили Linux, в качестве первого источника для загрузки. После загрузки вы будете уже в новой операционной системе и всегда сможете вернуться в старую.
Выводы
В этой статье мы разобрали, как перенести Linux на другой жёсткий диск с помощью утилит tar, cp или rsync. Как видите, это достаточно просто и быстро. Ещё мы могли бы использовать утилиту dd, однако она копирует весь диск побайтово, поэтому будет работать дольше и её архивы будут занимать больше места на диске. Ещё можно воспользоваться инструментом Clonezilla.
Как клонировать жесткий диск Linux с помощью Gparted
от sasza
Дублирование разделов жесткого диска может быть утомительным, если вы используете такой инструмент, как Clonezilla или другую утилиту резервного копирования Linux. Если вы спешите, гораздо лучше использовать функцию дублирования, встроенную прямо в любимый всеми редактор разделов Linux: Gparted!
В этом руководстве мы рассмотрим, как легко клонировать жесткий диск Linux с помощью живого диска Gparted. Этот процесс также можно выполнить с версией Gparted, включенной во многие источники программного обеспечения ОС Linux, но это не рекомендуется, так как это затрудняет изменение некоторых файловых систем.
Создать GParted Live Disk
GParted Live Disk необходим для пользователей Linux, которые хотят модифицировать жесткие диски, особенно те, на которых установлена операционная система Linux. Чтобы получить работающую копию живого диска Gparted, следуйте пошаговым инструкциям ниже.
Шаг 2. Откройте окно терминала, нажав Ctrl + Alt + T или Ctrl + Shift + T на клавиатуре. Затем вставьте компакт-диск в каталог «Загрузки» на вашем ПК с Linux.
Шаг 3. Используйте приложение командной строки unzip, чтобы полностью распаковать файл Etcher AppImage на вашем ПК с Linux.
Шаг 4. Обновите разрешения файла Etcher AppImage, чтобы он был исполняемым и запускался системой с помощью команды chmod.
Шаг 5: Используйте команду wget, чтобы загрузить последнюю версию файла ISO Gparted Live ISO на ваш компьютер с Linux.
Или для 32-битной версии:
Шаг 6: Запустите приложение Etcher из командной строки.
Шаг 7: Подключите USB-накопитель и позвольте Etcher выбрать его автоматически.
Шаг 8: Нажмите кнопку «Выбрать изображение», чтобы открыть окно «Диалог открытия файла» и найдите файл ISO Gparted.
Шаг 9. Нажмите «Вспышка!» в Etcher, чтобы начать процесс перепрошивки. Когда процесс будет завершен, перезагрузите компьютер с Linux с подключенным USB-накопителем.
Загрузочный Gparted
Чтобы загрузить Gparted с USB, настройте BIOS для загрузки с USB в порядке загрузки. После загрузки вы увидите меню загрузки с несколькими элементами в списке. Найдите параметр «Gparted Live (настройки по умолчанию)» и нажмите клавишу Enter, чтобы запустить живой диск.
После того, как вы прошли запрос Grub для диска Gparted Live на вашем компьютере, на экране появится окно с надписью «Данные консоли конфигурации». В подсказке будет несколько вариантов на выбор. Если вам нужно установить предпочитаемую раскладку клавиатуры, нажмите опцию «Выбрать раскладку из списка арок». В противном случае выберите «Не трогать раскладку клавиатуры», чтобы загрузить ядро по умолчанию.
Следуя раскладке клавиатуры, Gparted спросит вас о вашем языке. Просмотрите список и выберите того, на кого вы говорите, введя номер в подсказку. В противном случае оставьте значение по умолчанию, нажав клавишу Enter на клавиатуре.
Ваш язык и раскладка установлены на Gparted Live Disk. Теперь загрузите графический интерфейс, введя команду startx в строке «Какой режим вы предпочитаете».
Копирование разделов с помощью Gparted
Чтобы скопировать раздел в Gparted, начните с поиска диска, с которым вы хотите работать (он же исходный жесткий диск). Используя меню в верхнем правом углу инструмента Gparted, найдите диск, с которого вы хотите скопировать, и выберите его в меню, чтобы перейти к нему в приложении.
На исходном жестком диске найдите раздел на исходном диске, который вы хотите скопировать на дополнительный жесткий диск (также известный как целевой жесткий диск). Как только вы найдете раздел, который хотите скопировать, щелкните его правой кнопкой мыши, чтобы открыть контекстное меню.
Посмотрите в меню на «копировать» и выберите его, чтобы подтвердить Gparted, что вы хотите скопировать раздел. Затем вернитесь в меню в верхней правой части приложения и выберите целевой жесткий диск.
Примечание: раздел на исходном жестком диске не должен превышать размер целевого диска. Обязательно щелкните раздел правой кнопкой мыши и выберите «Изменить размер», чтобы сначала уменьшить его, чтобы раздел, который вы собираетесь скопировать, уместился на целевом диске.
После загрузки жесткого диска назначения в Gparted щелкните правой кнопкой мыши любое место, чтобы открыть контекстное меню. В контекстном меню выберите «вставить», чтобы скопировать раздел.
Щелкните значок зеленой галочки, чтобы применить перенос на новый диск. Не забудьте повторить этот процесс столько раз, сколько необходимо, если необходимо скопировать несколько разделов.
Когда все разделы жесткого диска будут скопированы в Gparted, перезагрузите компьютер с Linux.




















