# Перенос рабочей системы с одного диска на RAID1

Источник: https://blog.xsk.in/it/perenos-rabochej-sistemy-s-odnogo-diska-na-raid1/746/
Опубликовано: 2015-03-04 · Рубрики: IT, Linux, Железо


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

*Дисклеймер: автор текста не несет никакой ответственности за выши данные на серверах. В конце статьи приведены ссылки на гайды, откуда кусочно был скомпонован алгоритм, опробованный в деле.*

Процесс настройки будет производится с учетом используемого в текущий момент диска /dev/sda и свежего незадействованного диска /dev/sdb. Помимо всего прочего в системе используется [LVM](http://ru.wikipedia.org/wiki/LVM). Диск разбит на 2 части: первый раздел /boot небольшого размера, остальное отдано под LVM.

```
fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ab6ac

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         125      999424   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             125       19458   155288577    5  Extended
/dev/sda5             125       19458   155288576   8e  Linux LVM
```

Для начала установим [mdadm](http://ru.wikipedia.org/wiki/Mdadm).

```
apt-get install mdadm
```

После установки необходимо проиницализировать все необходимые модули. Это избавит нас от необходимости лишний раз перезагружать сервер:

```
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
```

Теперь скопируем структуру разделов с действующего диска на новый

```
sfdisk -d /dev/sda | sfdisk -f /dev/sdb
```

Делаем RAID1 для первого раздела на новом диске

```
mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
```

Повторяем для остальных

```
mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb5
```

Форматируем партиции в нужные файловые системы

```
mkfs.ext3 /dev/md0
```

Теперь перенесем содержимое первого раздела в зеркало, так как там только папка /boot, скопируем её

```
mount /dev/md0 /mnt/
rsync --progress -av /boot/ /mnt/
umount /boot
mount /dev/md0 /boot
```

После успешного монтирования нового раздела с загрузочными файлами добавляем старый к зеркалу и ждем завершения синхронизации.

```
mdadm -a /dev/md0 /dev/sda1
```

Так как существующий раздел /dev/sda5 расположен на LVM, создаем LVM физический том в рейде

```
pvcreate /dev/md1
```

Расширяем существующую группу томов с учетом md1

```
vgextend vg0 /dev/md1
```

Переносим туда наш текущий раздел с данными

```
pvmove /dev/sda5 /dev/md1
```

Выбрасываем из группы томов одиночный раздел

```
vgreduce vg0 /dev/sda5
```

Добавляем освободившийся раздел к зеркалу, дожидаемся сборки массива

```
mdadm -a /dev/md1 /dev/sda5
cat /proc/mdstat
```

После всех этих процедур, если система не предложила сделать это ранее, вносим изменения в файлы конфигурации mdadm, добавляя туда данные о созданных нами массивах

```
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
```

Теперь необходимо поправить /etc/fstab на загрузку с разделов, расположенных в зеркале. Если в файле содержатся UUID вместо дерева устройств, cвежие данные берем из вывода blkid.
Обновляем загрузчик и ставим его на все используемые у нас диски.

```
update-grub
grub-install /dev/sdb
grub-install /dev/sda
```

На этом этапе пробуем перезагрузиться и скрестив пальцы ждём пингов от сервера, находящегося от нас в нескольких тысячах километров.

*Ссылки:*

- [Перенос работающей Linux системы с одиночного жесткого диска на RAID 1](http://ilyubimov.blogspot.ru/2013/05/raid-1.html)
- [LVM Single Drive to LVM RAID 1 Mirror Migration](http://community.spiceworks.com/how_to/340-lvm-single-drive-to-lvm-raid-1-mirror-migration)
- [How To Set Up Software RAID1 On A Running System (Incl. GRUB2 Configuration) (Debian Squeeze)](https://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-debian-squeeze)

