Проект

Общее

Профиль

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>