Проект

Общее

Профиль

Nbd » История » Версия 18

Андрей Волков, 2026-07-18 21:25

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 17 Андрей Волков
busybox nbd-client -b 512 172.31.53.254 51621 /dev/nbd0
55 15 Андрей Волков
</pre>
56 1 Андрей Волков
57
Процесс уходит в фон
58 15 Андрей Волков
59
h3. Разрешаем LVM на nbd устройствах
60
61
*/etc/lvm/lvm.conf*
62
63
Добавляем кусок *"a|/dev/nbd[0-9]+$|",* в начало опций:
64
65
<pre>
66
       filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ]
67
global_filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ]
68
</pre>
69
70
h3. Расширяем группу
71
72
<pre>
73 1 Андрей Волков
pvcreate /dev/nbd0
74
vgextend data /dev/nbd0
75 15 Андрей Волков
</pre>
76
77
h3. зеркалируем разделы
78
79
В нашем примере для гигабитного канала можно запустить 4 параллельных синхронизации для максимальной утилизации полосы пропускания (4x240Мбит/с=960Мбит/с)
80
81
<pre> 
82
lvconvert -m1 --type raid1 data/lv_name1 /dev/nbd0
83
lvconvert -m1 --type raid1 data/lv_name2 /dev/nbd0
84
lvconvert -m1 --type raid1 data/lv_name3 /dev/nbd0
85
lvconvert -m1 --type raid1 data/lv_name4 /dev/nbd0
86 6 Андрей Волков
lvs
87 15 Андрей Волков
...
88
lvconvert -m1 --type raid1 data/lv_nameN /dev/nbd0
89
lvs
90 1 Андрей Волков
</pre>
91
92 15 Андрей Волков
h3. Наблюдаем за процессом
93
94 1 Андрей Волков
<pre>
95 15 Андрей Волков
  LV       VG      Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
96
  lv_name1 data    rwi-aor--- 200.00g                             24.15     
97
  lv_name2 data    rwi-aor--- 200.00g                             20.00     
98
  lv_name3 data    rwi-aor--- 200.00g                             18.44     
99
  lv_name4 data    rwi-aor--- 200.00g                             15.31     
100
...
101
  lv_nameN data    rwi-ao---- 200.00g     
102 6 Андрей Волков
</pre>
103
104 16 Андрей Волков
h2. После завершения синхронизации отключаем локальный диск
105 1 Андрей Волков
106 16 Андрей Волков
lvconvert -m0 data/lv_nameN /dev/sda3
107
108
Указывается отключаемый диск
109 10 Андрей Волков
110
h2. Окончание
111 11 Андрей Волков
112 10 Андрей Волков
<pre>
113 18 Андрей Волков
busybox nbd-client -d /dev/nbd0
114
# или
115
# kill -9 $(</sys/block/nbd0/pid)
116 1 Андрей Волков
</pre>