Проект

Общее

Профиль

Действия

1. nbd (debian)

На сервере

apt-get install qemu-utils не ниже 2.1

qemu-nbd -p 2000 -b 192.168.122.101 -f raw /dev/ssd6/hermes-storage &

На клиенте

Ядро должно быть не ниже 4.3-rc2
Иначе велика вероятность огрести ошибку с таймаутом
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770479

nbd-client 192.168.122.101 2000 /dev/nbd0

Negotiation: ..size = 716800MB
bs=1024, sz=751619276800 bytes

vi /etc/lvm/lvm.conf

filter = [ "a|^/dev/[hs]d[a-f][0-9]$|", "a|^/dev/nbd[0-9]+$|", "r/.*/" ]

pvcreate /dev/nbd0

2. nbd (gentoo)

На сервере

lvcreate -L 210g -n temp-space vg-name
qemu-nbd -p 51621 -b 172.31.53.254 -f raw /dev/vg-name/temp-space &

На клиенте

Задаем лимиты

modprobe nbd
modprobe raid1
echo 1 > /sys/module/raid1/parameters/max_queued_requests
# 30000 == 30Мбайт/сек ~ 240Мбит/сек
echo 30000 > /proc/sys/dev/raid/speed_limit_max

Монтируем клиента

busybox nbd-client 172.31.53.254 51621 /dev/nbd0

Процесс уходит в фон

Разрешаем LVM на nbd устройствах

/etc/lvm/lvm.conf

Добавляем кусок "a|/dev/nbd[0-9]+$|", в начало опций:

       filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ]
global_filter = [ "a|/dev/nbd[0-9]+$|", "a|/dev/md[0-9]+$|", "a|/dev/[hsv]d[a-z][0-9]*$|", "r/.*/" ]

Расширяем группу

pvcreate /dev/nbd0
vgextend data /dev/nbd0

зеркалируем разделы

В нашем примере для гигабитного канала можно запустить 4 параллельных синхронизации для максимальной утилизации полосы пропускания (4x240Мбит/с=960Мбит/с)

 
lvconvert -m1 --type raid1 data/lv_name1 /dev/nbd0
lvconvert -m1 --type raid1 data/lv_name2 /dev/nbd0
lvconvert -m1 --type raid1 data/lv_name3 /dev/nbd0
lvconvert -m1 --type raid1 data/lv_name4 /dev/nbd0
lvs
...
lvconvert -m1 --type raid1 data/lv_nameN /dev/nbd0
lvs

Наблюдаем за процессом

  LV       VG      Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_name1 data    rwi-aor--- 200.00g                             24.15     
  lv_name2 data    rwi-aor--- 200.00g                             20.00     
  lv_name3 data    rwi-aor--- 200.00g                             18.44     
  lv_name4 data    rwi-aor--- 200.00g                             15.31     
...
  lv_nameN data    rwi-ao---- 200.00g     

После завершения синхронизации отключаем локальный диск

lvconvert -m0 data/lv_nameN /dev/sda3

Указывается отключаемый диск

Окончание

kill -9 $(</sys/block/nbd0/pid)

Обновлено Андрей Волков 7 месяца назад · 16 изменени(я, ий)