Nbd » История » Версия 16
Андрей Волков, 2024-05-03 08:05
1 | 5 | Андрей Волков | h1. 1. nbd (debian) |
---|---|---|---|
2 | 1 | Андрей Волков | |
3 | h2. На сервере |
||
4 | |||
5 | 3 | Андрей Волков | *apt-get install qemu-utils* не ниже 2.1 |
6 | 1 | Андрей Волков | |
7 | 3 | Андрей Волков | *qemu-nbd -p 2000 -b 192.168.122.101 -f raw /dev/ssd6/hermes-storage &* |
8 | 1 | Андрей Волков | |
9 | h2. На клиенте |
||
10 | |||
11 | 12 | Андрей Волков | Ядро должно быть не ниже 4.3-rc2 |
12 | Иначе велика вероятность огрести ошибку с таймаутом |
||
13 | https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770479 |
||
14 | |||
15 | 1 | Андрей Волков | *nbd-client 192.168.122.101 2000 /dev/nbd0* |
16 | |||
17 | <pre> |
||
18 | Negotiation: ..size = 716800MB |
||
19 | bs=1024, sz=751619276800 bytes |
||
20 | </pre> |
||
21 | 2 | Андрей Волков | |
22 | *vi /etc/lvm/lvm.conf* |
||
23 | |||
24 | <pre> |
||
25 | filter = [ "a|^/dev/[hs]d[a-f][0-9]$|", "a|^/dev/nbd[0-9]+$|", "r/.*/" ] |
||
26 | </pre> |
||
27 | |||
28 | 1 | Андрей Волков | *pvcreate /dev/nbd0* |
29 | 5 | Андрей Волков | |
30 | 13 | Андрей Волков | h1. 2. nbd (gentoo) |
31 | 5 | Андрей Волков | |
32 | h2. На сервере |
||
33 | |||
34 | 6 | Андрей Волков | <pre> |
35 | lvcreate -L 210g -n temp-space vg-name |
||
36 | qemu-nbd -p 51621 -b 172.31.53.254 -f raw /dev/vg-name/temp-space & |
||
37 | </pre> |
||
38 | |||
39 | h2. На клиенте |
||
40 | |||
41 | 15 | Андрей Волков | h3. Задаем лимиты |
42 | |||
43 | 6 | Андрей Волков | <pre> |
44 | modprobe nbd |
||
45 | modprobe raid1 |
||
46 | echo 1 > /sys/module/raid1/parameters/max_queued_requests |
||
47 | 14 | Андрей Волков | # 30000 == 30Мбайт/сек ~ 240Мбит/сек |
48 | 6 | Андрей Волков | echo 30000 > /proc/sys/dev/raid/speed_limit_max |
49 | 15 | Андрей Волков | </pre> |
50 | |||
51 | h3. Монтируем клиента |
||
52 | |||
53 | <pre> |
||
54 | 1 | Андрей Волков | busybox nbd-client 172.31.53.254 51621 /dev/nbd0 |
55 | 15 | Андрей Волков | </pre> |
56 | 1 | Андрей Волков | |
57 | 15 | Андрей Волков | Процесс уходит в фон |
58 | 1 | Андрей Волков | |
59 | 15 | Андрей Волков | |
60 | h3. Разрешаем LVM на nbd устройствах |
||
61 | |||
62 | */etc/lvm/lvm.conf* |
||
63 | |||
64 | Добавляем кусок *"a|/dev/nbd[0-9]+$|",* в начало опций: |
||
65 | |||
66 | <pre> |
||
67 | filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ] |
||
68 | global_filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ] |
||
69 | </pre> |
||
70 | |||
71 | h3. Расширяем группу |
||
72 | |||
73 | <pre> |
||
74 | 1 | Андрей Волков | pvcreate /dev/nbd0 |
75 | vgextend data /dev/nbd0 |
||
76 | 15 | Андрей Волков | </pre> |
77 | |||
78 | h3. зеркалируем разделы |
||
79 | |||
80 | В нашем примере для гигабитного канала можно запустить 4 параллельных синхронизации для максимальной утилизации полосы пропускания (4x240Мбит/с=960Мбит/с) |
||
81 | |||
82 | <pre> |
||
83 | lvconvert -m1 --type raid1 data/lv_name1 /dev/nbd0 |
||
84 | lvconvert -m1 --type raid1 data/lv_name2 /dev/nbd0 |
||
85 | lvconvert -m1 --type raid1 data/lv_name3 /dev/nbd0 |
||
86 | lvconvert -m1 --type raid1 data/lv_name4 /dev/nbd0 |
||
87 | 6 | Андрей Волков | lvs |
88 | 15 | Андрей Волков | ... |
89 | lvconvert -m1 --type raid1 data/lv_nameN /dev/nbd0 |
||
90 | lvs |
||
91 | 1 | Андрей Волков | </pre> |
92 | |||
93 | 15 | Андрей Волков | h3. Наблюдаем за процессом |
94 | |||
95 | 1 | Андрей Волков | <pre> |
96 | 15 | Андрей Волков | LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert |
97 | lv_name1 data rwi-aor--- 200.00g 24.15 |
||
98 | lv_name2 data rwi-aor--- 200.00g 20.00 |
||
99 | lv_name3 data rwi-aor--- 200.00g 18.44 |
||
100 | lv_name4 data rwi-aor--- 200.00g 15.31 |
||
101 | ... |
||
102 | lv_nameN data rwi-ao---- 200.00g |
||
103 | 6 | Андрей Волков | </pre> |
104 | |||
105 | 16 | Андрей Волков | h2. После завершения синхронизации отключаем локальный диск |
106 | 1 | Андрей Волков | |
107 | 16 | Андрей Волков | lvconvert -m0 data/lv_nameN /dev/sda3 |
108 | |||
109 | Указывается отключаемый диск |
||
110 | 10 | Андрей Волков | |
111 | h2. Окончание |
||
112 | 11 | Андрей Волков | |
113 | 10 | Андрей Волков | <pre> |
114 | 1 | Андрей Волков | kill -9 $(</sys/block/nbd0/pid) |
115 | </pre> |