Linux migration to ssd

Сетевые утилиты онлайн

You are using an outdated browser.
Please upgrade your browser to improve your experience.

Как перенести Ubuntu c обычного диска на SSD диск

Итак Вам необходимо перенести Ubuntu с обычного диска на SSD диск. Сразу оговорюсь, в данной заметке рассматривается пофайловый перенос системы (например, SSD-диск другого объема) а не клонирование образа диска с помощью dd. Также, мы используем только одну точку монтирования (без отдельного монтирования раздела в /home) А теперь нужно перенести Ubuntu на новый диск. Подключаем SSD диск к компьютеру удобным Вам способом. Для нормального переноса файлов нам понадобится загрузочная флешка с Ubuntu. Инструкцию как ее сделать можно легко найти в сети. Загружаемся с флешки и становимся суперюзером выполнив команду sudo -s.

Смотрим как определен SSD диск в системе командой fdisk -l. Мой диск определен вот так:

Диск /dev/sdb: 447,1 GiB, 480103981056 байтов, 937703088 секторов.

Нам необходимо подготовить и отформатировать новый диск. Выполняем команду fdisk /dev/sdx (в моем случае /dev/sdb). Команды, которые поддерживает fdisk, можно просмотреть нажав клавишу m, а затем Enter. Нажимаем n для создания нового раздела. Нас спросят, какой раздел (выберем первичный — буква p), с какого цилиндра будет начинаться раздел (я советую оставить по умолчанию) и необходимый размер раздела (для монтирования только корня 447 — 7 = 440 гигабайт) набрав +440G. Создадим раздел swap размером 7 гигабайт. Он создается таким-же образом только нужно изменить тип раздела. Тип изменяется используя букву t (смотрите подсказки все типы разделов можно посмотреть используя букву L). Выберите тип linux swap. Набрав из главного мено букву p Вы можете посмотреть созданную таблицу разделов. Если все устраивает, запишем ее с помощью буквы w.

Таблица разделов создана. Теперь создадим файловые системы командами, например, mkfs -t ext4 /dev/sdb1 и mkswap /dev/sdb2. Диск подготовлен. Открываем 2 терминала и становимся в них суперюзерами (sudo -s). В первом набираем команду blkid, которая выведет таблицу uuid файловых систем. В втором снова набираем fdisk -l чтобы определиться с буквами дисков. Например у нас /dev/sda1 — раздел с Ubuntu а /dev/sdb1 — раздел на который копируем. Создадим две папки mkdir /mnt/diskDonor и mkdir /mnt/diskAcceptor. Монтируем оба раздела: mount /dev/sda1 /mnt/diskDonor и mount /dev/sdb1 /mnt/diskAcceptor. Переносим данные выполнив команду rsync -avx /mnt/diskDonor/ /mnt/diskAcceptor. Ключ -x у rsync значит не переходить границы файловой системы, так что он не полезет в дебри /dev /proc и т. д. После окончания копирования файлов нужно заменить uuid файловой системы диска и swap (uuid — результат выполнения команды blkid в первом терминале) в файле etc/fstab и boot/grub/grub.cfg (в последнем файле нужно заменить все старые uuid). Теперь нужно пробросить разделы /proc, /sys и /dev в /mnt/diskAcceptor. Выполним команды:

Теперь перейдем в окружающую среду chroot: chroot /mnt/diskAcceptor. Там выполним команды grub-install /dev/sdb (в моем случае диск-акцептор sdb) и update-initramfs -u -k all.

Выйдем из среды chroot выполнив команду exit. Отмонтируем проброшенные файловые системы:

Проверьте внимательно все ли Вы сделали правильно и выключайте систему. Снимаем старый диск и загружаемся. Если Вы все сделали внимательно и ничего не пропустили загрузится новая копия системы.

Читайте также:  Windows embedded posready 2009 evaluation

Источник

Перенос работающей Linux системы на XFS с HDD на SSD меньшего размера

Привет, Хабр! Представляю вашему вниманию русскоязычную версию статьи «Migrating CentOS system from HDD to smaller SSD on XFS filesystem» автора Denis Savenko.

Данная статья является русскоязычной версией ранее мной же опубликованной статьи на английском языке с небольшими корректировками на аудиторию. Сразу оговорюсь — я не являюсь маньяком линукса или даже профессиональным системным администратором, поэтому вполне вероятно, что порой я мог использовать необычные, или даже глупые решения. Я буду очень благодарен вам, если вы укажете мне на них в комментариях, чтобы я мог улучшить данное руководство вместо того, чтобы просто заминусовать статью. Заранее вас за это благодарю.

Я думаю я не один, кто в какой-то момент решил преобрести себе SSD-диск для работающей системы. В моём случае это была работающая система на CentOS 7 на моём крошечном домашнем сервере. Далее я хотел перенести её «как есть» на новый диск. Но, как оказалось, это не так то просто сделать, учитывая следующее:

  • Новый SSD диск был гораздо меньшего объёма, чем уже установленный HDD (серьёзно, SSD всё ещё весьма дорог по сравнению с дисковыми накопителями).
  • Разделы на прежнем диске были отформатированы в файловой системе xfs . Это и не удивительно, учитывая тот факт, что CentOS, начиная с 7-ой версии предлагает эту файловую систему «по умолчанию» (наряду и с другими системами на основе RHEL, такими как, собственно, Red Hat Enterprise Linux 7, Oracle Linux 7 или Scientific Linux 7).
  • Работающая система должна остаться без изменений, включая конфигурацию, установленное ПО, права доступа и прочие атрибуты файловой системы.

Позвольте мне пояснить, почему описанные мной выше вещи являются серьёзными усложнениями поставленной перед нами задачи.

Во-первых, если бы размер нового диска был таким же или больше, чем у прежнего, можно было бы применить полное клонирование разделов с данными. Для этого существует масса утилит, таких как dd, ddrescue, partclone или даже clonezilla. Единственное, что нужно было бы сделать после, это подправить пару конфигурационных файлов в загрузочном разделе. Если же вы используете LVM для ваших разделов (что также является опцией по умолчанию в CentOS 7), задача могла бы быть ещё проще — в логический том добавляется новый диск, после чего с использованием команды pvmove данные переносятся на другой физический носитель внутри логического тома, и старый диск изымается из раздела, однако это невозможно при меньшем размере нового физического носителя.

Затем, если бы использовалась файловая система, отличная от xfs , например, достаточно популярная ext4 , можно было бы «сжать» старый раздел диска до размеров нового диска. Затем выполняются какие либо действия из описанных выше и вы в дамках. Однако, изменение размера разделов в сторону уменьшения на xfs невозможно в силу её реализации — вы можете только увеличить разделы при её использовании.

И последнее, но ничуть не менее важное, если бы перед нами не стояло задачи перенести работающую сконфигурированную систему с сохранением всех метаданных, было бы проще просто установить систему с нуля на новый диск, заранее сохранив пару важных файлов. Это не подходило мне по двум причинам — во-первых волосы становились дыбом при мысли, что мне придётся повторить все те же действия, которые я выполнял на протяжении нескольких дней кряду, а во-вторых — это просто не спортивно. Я был уверен, что при должном понимании технических особенностей, перенос работающей системы на другой диск не должен был быть невыполнимой задачей.

Читайте также:  Ethminer cuda 11 windows

Тем не менее, я выработал и оттестировал как минимум на двух различных окружениях подробный пошаговый план переноса работающей системы, берущий во внимание все вышеописанные ограничения.

Этап 1. Подготовка

Вот список того, что нам потребуется для переноса:

  1. Собственно, подлежащая миграции работающая система. В моём случае это была CentOS 7.4, но я уверен, что ситуация не будет отличаться от любой другой линукс-системы, работающей на xfs .
  2. Live CD или флешка с каким-либо дистрибутивом линукс. Для простоты, я буду отталкиваться от того же CentOS 7.4 Live CD. Я предпочитаю версию с Gnome, но это уже дело вкуса. Выбор этого дистрибутива обусловлен тем, что во-первых, он у меня уже был, а во-вторых с ним сразу поставляется нужный нам для переноса набор утилит, а в частности xfsdump . Я не буду останавливаться здесь на том, как создать загрузочный диск или флешку с Live CD дистрибутивом, так как предполагаю, что хабрачитатель должен справиться с этим и без меня.
  3. Объём данных на прежнем накопителе не должен превышать размер нового диска (будь то SSD или любой другой диск меньшего размера). В моём случае занято было всего порядка 10 ГБ, поэтому я даже не задумывался от чего нужно избавляться.
  4. Чашка горячего кофе.

Этап 2. Миграция

Глотнём кофе и приступим к процессу переноса с запуска системы с подготовленного Live CD дистрибутива. Затем откройте терминал и перейдите в режим суперпользователя при помощи команды su —

Далее в данном руководстве предполагается, что все команды выполняются от имени суперпользователя ( root )

Шаг 1. Разрешение удалённого доступа (опционально)

Для меня удобнее иметь удалённый доступ к машине, на которой я буду производить перенос, т.к. я имею возможность просто копипастить заранее подготовленные команды в свой PuTTY терминал. Если вы загрузили это руководство в браузере на целевой машине, смело переходите к следующему шагу — всё, здесь описанное, вам не понадобится.

Для того, чтобы разрешить удалённый доступ, необходимо задать пароль для пользователя root и запустить SSH демон:

Теперь можно подключиться к целевой машине вашим SSH клиентом (например, PuTTY).

Шаг 2. Разбивка диска на разделы

Вы можете использовать вашу любимую утилиту для этого. Например, в Gnome есть предустановленная утилита для управления дисками. Также в интернетах хвалят gparted , однако я намеренно использовал fdisk , т.к, например, gparted просто не распознавал мой NVMe SSD-диск.

Диск следует разбить по образу и подобию прежнего диска. Я не маньяк партиционирования, поэтому моя схема партиционирования была стандартной:

  • /boot — стандартный раздел размером 1GB;
  • swap раздел размером 4G;
  • / — корневой раздел, LVM volume group с наименованием «main», занимающий оставшееся пространство на диске.

Итак, приступим к разбивке нового диска:

Раздел /boot должен быть стандартным линукс-разделом, поэтому сразу создаём файловую систему на нём:

И теперь нам необходимо создать LVM-структуру для второго раздела на диске. Назовём новую LVM-группу newmain (впоследствии переименуем):

Теперь мы готовы к созданию файловой системы на новых логических разделах:

Шаг 3. Активная фаза

Прежде чем мы начнём, сделаем обе LVM-группы активными (т.к. мы работаем из под Live CD):

Создадим директории для точек монтирования, и примонтируем к системе старые и новые разделы наших дисков:

Убедимся, что всё в порядке при помощи команды lsblk :

Если вы видите что-то наподобие этого, вы всё сделали верно. И здесь начинается настоящая магия — мы собираемся использовать xfsdump для миграции наших данных. Эта утилита достаточно умная и знает о внутреннем устройстве файловой системы xfs , что позволяет ей копировать только занятые данными блоки, что, в свою очередь, во-первых позволяет нам копировать данные на диск меньшего размера, а во-вторых сильно ускоряет процесс переноса. Итак, давайте сделаем дамп данных при помощи этой утилиты, и на лету развернём эти данные на новом месте:

Читайте также:  Что означает windows servers

Пару слов об использованных флагах:

  • -J уменьшает размер фидбека;
  • — сообщает xfsdump и xfsrestore использовать стандартные потоки stdout и stdin соответственно вместо файлов.

Эта процедура может занять некоторое время (зависит от объёма ваших данных). Поэтому здесь вам пригодится приготовленная заранее чашка кофе, которую самое время выпить, а то остынет.

Если всё прошло хорошо, ваши данные были полностью скопированы с сохранением всех метаданных. Теперь необходимо подправить пару конфигурационных файлов и переустановить Grub2 на новый диск, чтобы сделать его загрузочным.

Шаг 4. Делаем новый диск загрузочным

Первое, что нужно сделать, это узнать UUID для старого и нового загрузочных разделов ( /boot ) при помощи команды blkid :

Предполагая, что sda1 — прежний раздел \boot , и nvme0n1p1 — новый, производим замену UUID в конфигурационных файлах на новой точке монтирования:

Эти две команды подготовят ваши системные файлы конфигурации к новому диску.

Теперь самое время переименовать LVM-группы и отмонтировать диски:

Единственное, что осталось сделать, это переустановить загрузчик. Это необходимо делать с использованием chroot :

Шаг 5. Последний штрих

На данном этапе все данные уже должны быть перенесены и новый диск должен стать загрузочным. Нужно только перезапуститься, вынуть Live CD из привода, и выбрать новый диск в BIOS для загрузки:

Если что-то пошло не так и система не загружается, вы всегда можете «откатиться» на старый диск, просто запустившись с Live CD повторно и переименовав LVM-группы обратно, выполнив vgrename -v <,new>main и vgrename -v main , и затем снова перезапуститься.

На этом обязательная часть программы окончена и мы успешно перенесли работающую систему на новый диск. Старый диск можно извлекать из компьютера.

Использование старого HDD в качестве медиа-хранилища

Если вы, как и я, после переноса системы, хотите использовать ваш прежний диск как медиа-хранилище, это делается также легко.

Во-первых, переразбейте прежний диск

Мы не станем создавать файловую систему на диске напрямую. Вместо этого мы создадим новую LVM-группу, в которую добавим этот диск. Это позволит нам в будущем легко добавлять новые диски в эту группу без лишней мороки (логический диск при этом останется прежний):

Для того, чтобы сохранить изменения после перезагрузки системы, следует также добавить запись о точке монтирования в /etc/fstab :

Готово!

Теперь можно утверждать, что мы успешно перенесли работающую на xfs систему на новый диск меньшего размера. Как бонус, мы начали использовать прежний диск в качестве медиа-хранилища.

UPDATE 02.04.2018

Так как мы производили перенос системы на SSD, то, как советуют в комментариях, хорошо бы уже после переноса в работающей системе включить периодическое исполнение команды trim (сборщик мусора для SSD-дисков, который позволяет не терять в производительности через время). Для этого необходимо выполнить команду:

Это включит на новой системе исполнение trim раз в неделю на любой systemd системе. В случае, если вы или ваша система не используете systemd , есть исчерпывающее руководство от DigitalOcean на почти любой случай.

Пожалуйста, оставляйте ваши комментарии, если нашли ошибку или знаете способ лучше как выполнить те или иные действия. Надеюсь, данная инструкция окажется вам полезной!

Источник

Оцените статью