Nbd » История » Версия 15
Андрей Волков, 2017-12-07 09:41
| 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 | 7 | Андрей Волков | h2. После завершения синхронизации |
| 106 | 10 | Андрей Волков | |
| 107 | 1 | Андрей Волков | https://redmine.ekb-info.ru/projects/gnu-linux/wiki/Lvm-mirroring |
| 108 | 10 | Андрей Волков | |
| 109 | h2. Окончание |
||
| 110 | 11 | Андрей Волков | |
| 111 | 10 | Андрей Волков | <pre> |
| 112 | 1 | Андрей Волков | kill -9 $(</sys/block/nbd0/pid) |
| 113 | </pre> |