Перенос системы с одиночного жёсткого диска на программный RAID1 "зеркало"

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

Данная инструкция (с небольшими изменениями) применима для любой Linux-системы.

1. подготовительная часть

hda - диск, на который уже установлена система:

$ fdisk -lu /dev/hda
Disk /dev/hda: 5768 MB, 5768216576 bytes
16 heads, 63 sectors/track, 11176 cylinders, total 11266048 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1       80639       40319+  83  Linux
/dev/hda2           80640    11265407     5592384   8e  Linux LVM

sda - новый диск, который имеет примерно такой же объём, что и старый. С помощью команды cfdisk /dev/sda создаём два первичных раздела: первый (для загрузки системы) размером около 40 Мб, второй занимает всё оставшееся место. Тип файловых систем: для первого раздела - 83 (Linux), для второго - 8e (Linux LVM):

$ fdisk -lu /dev/sda
Disk /dev/sda: 5690 MB, 5690621952 bytes
255 heads, 63 sectors/track, 691 cylinders, total 11114496 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63       80324       40131   83  Linux
/dev/sda2           80325    11100914     5510295   8e  Linux LVM

2. собственно сам перенос системы

Создаём массив RAID1, состоящий только из одного нового диска:

$ mdadm --create /dev/md/bsl --name=bsl --metadata=1.1 \
 --bitmap=internal --chunk=256 --auto=md --symlink=no \
 --run --level=raid1 --raid-devices=2 /dev/sda2 missing
mdadm: array /dev/md/bsl started.

Создаём физический раздел LVM поверх "зеркала":

$ pvcreate -y -ff /dev/md/bsl
  Physical volume "/dev/md/bsl" successfully created

... и добавляем его в существующую группу массивов LVM:

$ vgextend vg_bsl /dev/md/bsl
  Volume group "vg_bsl" successfully extended

Переносим систему с раздела hda2 на "зеркало":

$ pvmove -i 20 /dev/hda2
  /dev/hda2: Moved: 1.3%
  /dev/hda2: Moved: 3.1%
  ...
  ...
  /dev/hda2: Moved: 100.0%

Выводим раздел диска hda из состава LVM:

$ vgreduce vg_bsl /dev/hda2
  Removed "/dev/hda2" from volume group "vg_bsl"

Уничтожаем информацию об LVM со старого диска:

$ pvremove /dev/hda2
  Labels on physical volume "/dev/hda2" successfully wiped

Добавляем раздел старого диска к "зеркалу":

$ mdadm /dev/md/bsl --add /dev/hda2
mdadm: added /dev/hda2

Контролируем процесс синхронизации "зеркала":

$ watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat             Sat Aug 29 00:33:53 2009

Personalities : [raid1]
md127 : active raid1 hda2[2] sda2[0]
      5510287 blocks super 1.1 [2/1] [U_]
      [====>................]  recovery = 20.3% (1119552/5510287)
finish=2.7min speed=27087K/sec
      bitmap: 10/11 pages [40KB], 256KB chunk

unused devices: <none>

3. финал

Для осуществления запуска системы с нового диска sda проделываем ряд операций:

Пробуем загрузить систему как со старого так и с нового дисков.

--
2010-06-14