Проект

Общее

Профиль

Lvm-mirroring » История » Версия 15

Константин Пильник, 2016-04-14 16:51

1 1 Константин Пильник
h1. Lvm-mirroring, перенос lvm-раздела online с минимальным downtime
2
3 4 Константин Пильник
Добавление (nbd, aoe, loop(nfs)) в группу, далее loop0 некоторое транзитное блочное устройство, в представленном (худшем) сценарии - это файл, лежащий на nfs шаре, подключенный через losetup, в лучшем сценарии - aoe/nbd-устройство (перенос с транзитного устройства на основное не требуется.
4 1 Константин Пильник
<pre>
5 5 Константин Пильник
losetup -f nfs-share/path-to_big-sparse-file
6 1 Константин Пильник
pvcreate /dev/loop0
7 2 Константин Пильник
vgextend vgnane /dev/loop0
8 1 Константин Пильник
</pre>
9
10
Конвертируем исходный раздел в raid1, дожидаемся синхронизации.
11
<pre>
12
lvconvert -m1 --type raid1 vgname/lvname /dev/loop0
13
</pre>
14 7 Константин Пильник
снимаем нагрузку с исходной хост-системы (shutdown vds) и расклеиваем исходный раздел, готовим половинку зеркала к отсоединению
15 1 Константин Пильник
<pre>
16
lvconvert --splitmirrors 1 --name transit_lvname vgname/lvname /dev/loop0
17
lvchange -an vgname/transit_lvname
18
vgsplit vgname transit_vgname /dev/loop0
19
losetup -d /dev/loop0
20
</pre>
21
на целевой машине принимаем транзитный раздел в целевую группу
22
<pre>
23
lvrename transit_vgname transit_lvname lvname
24
vgmerge vgname transig_vgname
25 6 Константин Пильник
vgchange -ay vgname/lvname
26 1 Константин Пильник
</pre>
27 7 Константин Пильник
том виден, включаем нагрузку на целевой хост-системе (start vds), запускаем перенос с транзитного устройства на целевое
28 1 Константин Пильник
<pre>
29
lvconvert -m1 --type raid1 vgname/lvname
30
</pre>
31
дожидаемся синхронизации, и отклеиваем транзитное устройство
32
<pre>
33 8 Константин Пильник
lvs vgname/lvname -o+raid_sync_action
34 1 Константин Пильник
lvconvert -m0 vgname/lvname /dev/loop0
35
vgreduce vgname /dev/loop0
36
losetup -d /dev/loop0
37
</pre>
38 9 Константин Пильник
39 15 Константин Пильник
h1. Полезные настройки raid1
40
41 9 Константин Пильник
<pre>
42
/sys/module/raid1/parameters/max_queued_requests [default:1024] - размер очереди
43 14 Константин Пильник
подробнее /usr/src/linux/drivers/md/raid10.c
44
45 13 Константин Пильник
/proc/sys/dev/raid/speed_limit_max - абсолютный максимум скорости [default:200000] (Kb)
46 1 Константин Пильник
/proc/sys/dev/raid/speed_limit_min - гарантированный лимит скорости [default:1000] (Kb)
47 13 Константин Пильник
подробнее /usr/src/linux/drivers/md/md.c
48 9 Константин Пильник
</pre>