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> |