**Безопасный переход на LVM без потери данных**

{{ :lvm:1.png?nolink&400 |}}

Эта статья рассматривает пошаговое решение одной конкретной задачи, с которой можно столкнуться (и наверняка кто-то сталкивался) при апгрейде своего компьютера. 

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

==== Задача: ====

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

Как следует из вышесказанного, единственные требования для реализации заключаются в том, что у вас должна быть система, которая может использовать LVM, и у вас есть устройство хранения данных такого же или большего размера, чем объем данных, хранящихся на основном устройстве хранения данных.
Ну, и разумеется подразумевается что вы используете Linux.

<WRAP center round important 60%>
Так как у вас могут быть другие настройки, и другая среда исполнения, то необдуманное копирование рекомендаций, описанных ниже может привести к повреждению вашей системы.
</WRAP>
 

==== Преимущества LVM ====

С полным диапазоном возможностей LVM можно ознакомиться на страничке man. Это гибкий инструмент, который предлагает уникальные возможности в сравнении с традиционными физическими разделами:

  * объединение множества устройств в одну группу томов
  * поддержка thin provisioning
  * возможность создания снапшотов, которые можно использовать в качестве временных резервных копий
  * простое изменение размеров разделов и добавление/удаление дисков из группы
Более детально преимущества описаны здесь. А мы тем временем перейдём к преобразованию в LVM.

==== Безопасное преобразование в LVM ====

В этой статье основное используемое устройство хранения будет называться sda, а новое устройство хранения будет называться sdb. 

План действий следующий:

  - Добавить sdb в группу томов, и развернуть в группе томов структуру логических разделов
  - Скопировать данные из разделов разделов в логические разделы на sdb
  - Расширить группу томов за счёт включения в него разделов sda.
  -  ... PROFIT

==== Подготовка ====


Если потребуется, установите инструменты для работы с LVM и rsync:
Для livecd основанных на Debian/Ubuntu

<code bash>sudo apt-get install lvm2 rsync</code>
На Arch Linux

<code bash>sudo pacman -Sy lvm2 rsync</code>

Добавляем sdb в группу томов LVM
Инициализируем sdb, как используемый в LVM (pvcreate), и добавляем его в новую группу томов myvg (vgcreate):

<code bash>$ sudo pvcreate /dev/sdb</code>
<code bash>$ sudo vgcreate myvg /dev/sdb</code>
2. Создаём логический том

Создаём логический том на myvg, для последующего перемещения туда имеющихся данны. Назовём его соответственно назначению - backup:

<code bash>$ sudo lvcreate -n backup -L 300G myvg</code>
Для проверки успешности выполненных действий можно использовать sudo vgs и sudo lvs, которые покажут недавно созданные группы томов и логические тома (разделы).

3. Монтируем новый логический том

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

<code bash>sudo mkfs.ext4 /dev/myvg/backup</code>
Затем создадим точку монтирования, и примонтируем туда логический раздел:

<code bash>sudo mkdir /mnt/backup</code>
<code bash>sudo mount /dev/myvg/backup /mnt/backup</code>
4. Скопируем данные на логический том 

Затем смонтируйте раздел, который вы хотите перенести, в новую точку монтирования. Здесь в примере мы будем перемещать данные с sda3 на backup. Следовательно используем следующую команду:

<code bash>sudo mount /dev/sda3 /mnt/root</code>
Для копирования данных с sda на sdb будет использоваться rsync. После копирования отмонтируем оба раздела:

<code bash>sudo rsync -av /mnt/root /mnt/backup</code>
<code bash>sudo umount /mnt/backup</code>
<code bash>sudo umount /dev/root</code>
Шаги с 2 по 4 должны быть повторены для каждого раздела, который должен быть скопирован (если их у вас больше одного).
5. Расширяем группу томов

Теперь мы добавим sda2 и sda3 в группу томов LVM. Для этого мы должны инициализировать их как PV( physical volumes) и добавить их в группу томов:

<code bash>sudo pvcreate /dev/sdY</code>
<code bash>sudo vgextend myvg /dev/sdY</code>
6. Добавляем новые разделы в fstab

Наконец с помощью lsblk -f нужно посмотреть UUID разделов и добавить их в fstab:

<code bash>UUID=<your-home-uuid>       /home           ext4            rw,relatime     0 2
UUID=<your-root-uuid>       /           ext4            rw,relatime     0 1</code>
При необходимости внесите изменения в указанные выше параметры конфигурации.

Заключение
Конечно LVM предоставляет намного больше возможностей, чем рассмотрено в этой статье. Поэтому изначально была оговорка про конкретную задачу. В любом случае надеюсь эта статья оказалась полезной для вас.