From d5c8fde5def25cd42ef8ea0d3b93f81dc8c61f67 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 28 Nov 2021 18:19:23 +0300 Subject: [PATCH] Remove kludgy $IP and $ETCD_MON parsing from make-osd.sh, suggest to use vitastor.conf --- README-ru.md | 17 +++++++++++++---- README.md | 16 ++++++++++++---- mon/make-osd.sh | 18 +++++++----------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/README-ru.md b/README-ru.md index 6d7a3135..faa19f39 100644 --- a/README-ru.md +++ b/README-ru.md @@ -403,12 +403,21 @@ Vitastor с однопоточной NBD прокси на том же стен в этом случае пострадает. - Быстрая сеть, минимум 10 гбит/с - Для наилучшей производительности нужно отключить энергосбережение CPU: `cpupower idle-set -D 0 && cpupower frequency-set -g performance`. -- Пропишите нужные вам значения вверху файлов `/usr/lib/vitastor/mon/make-units.sh` и `/usr/lib/vitastor/mon/make-osd.sh`. -- Создайте юниты systemd для etcd и мониторов: `/usr/lib/vitastor/mon/make-units.sh` -- Создайте юниты для OSD: `/usr/lib/vitastor/mon/make-osd.sh /dev/disk/by-partuuid/XXX [/dev/disk/by-partuuid/YYY ...]` -- Вы можете поменять параметры OSD в юнитах systemd. Смысл некоторых параметров: +- На хостах мониторов: + - Пропишите нужные вам значения в файле `/usr/lib/vitastor/mon/make-units.sh` + - Создайте юниты systemd для etcd и мониторов: `/usr/lib/vitastor/mon/make-units.sh` +- Пропишите etcd_address и osd_network в `/etc/vitastor/vitastor.conf`. Например: + ``` + { + "etcd_address": ["10.200.1.10:2379","10.200.1.11:2379","10.200.1.12:2379"], + "osd_network": "10.200.1.0/24" + } + ``` +- Создайте юниты systemd для OSD: `/usr/lib/vitastor/make-osd.sh /dev/disk/by-partuuid/XXX [/dev/disk/by-partuuid/YYY ...]` +- Вы можете менять параметры OSD в юнитах systemd или в `vitastor.conf`. Смысл некоторых параметров: - `disable_data_fsync 1` - отключает fsync, используется с SSD с конденсаторами. - `immediate_commit all` - используется с SSD с конденсаторами. + Внимание: если установлено, также нужно установить его в то же значение в etcd в /vitastor/config/global - `disable_device_lock 1` - отключает блокировку файла устройства, нужно, только если вы запускаете несколько OSD на одном блочном устройстве. - `flusher_count 256` - "flusher" - микропоток, удаляющий старые данные из журнала. diff --git a/README.md b/README.md index 28de13cd..aa7f6d53 100644 --- a/README.md +++ b/README.md @@ -356,13 +356,21 @@ and calculate disk offsets almost by hand. This will be fixed in near future. with lazy fsync, but prepare for inferior single-thread latency. - Get a fast network (at least 10 Gbit/s). - Disable CPU powersaving: `cpupower idle-set -D 0 && cpupower frequency-set -g performance`. -- Check `/usr/lib/vitastor/mon/make-units.sh` and `/usr/lib/vitastor/mon/make-osd.sh` and - put desired values into the variables at the top of these files. -- Create systemd units for the monitor and etcd: `/usr/lib/vitastor/mon/make-units.sh` +- On the monitor hosts: + - Edit variables at the top of `/usr/lib/vitastor/mon/make-units.sh` to desired values. + - Create systemd units for the monitor and etcd: `/usr/lib/vitastor/mon/make-units.sh` +- Put etcd_address and osd_network into `/etc/vitastor/vitastor.conf`. Example: + ``` + { + "etcd_address": ["10.200.1.10:2379","10.200.1.11:2379","10.200.1.12:2379"], + "osd_network": "10.200.1.0/24" + } + ``` - Create systemd units for your OSDs: `/usr/lib/vitastor/mon/make-osd.sh /dev/disk/by-partuuid/XXX [/dev/disk/by-partuuid/YYY ...]` -- You can edit the units and change OSD configuration. Notable configuration variables: +- You can change OSD configuration in units or in `vitastor.conf`. Notable configuration variables: - `disable_data_fsync 1` - only safe with server-grade drives with capacitors. - `immediate_commit all` - use this if all your drives are server-grade. + If all OSDs have it set to all then you should also put the same value in etcd into /vitastor/config/global - `disable_device_lock 1` - only required if you run multiple OSDs on one block device. - `flusher_count 256` - flusher is a micro-thread that removes old data from the journal. You don't have to worry about this parameter anymore, 256 is enough. diff --git a/mon/make-osd.sh b/mon/make-osd.sh index d51e0930..b7cd67e5 100755 --- a/mon/make-osd.sh +++ b/mon/make-osd.sh @@ -4,18 +4,16 @@ # Copyright (c) Vitaliy Filippov, 2019+ # License: MIT -# USAGE: ./make-osd.sh /dev/disk/by-partuuid/xxx [ /dev/disk/by-partuuid/yyy]... - -IP_SUBSTR="10.200.1." -ETCD_HOSTS="etcd0=http://10.200.1.10:2380,etcd1=http://10.200.1.11:2380,etcd2=http://10.200.1.12:2380" +# USAGE: +# 1) Put etcd_address and osd_network into /etc/vitastor/vitastor.conf. Example: +# { +# "etcd_address":["http://10.200.1.10:2379/v3","http://10.200.1.11:2379/v3","http://10.200.1.12:2379/v3"], +# "osd_network":"10.200.1.0/24" +# } +# 2) Run ./make-osd.sh /dev/disk/by-partuuid/xxx [ /dev/disk/by-partuuid/yyy]... set -e -x -IP=`ip -json a s | jq -r '.[].addr_info[] | select(.local | startswith("'$IP_SUBSTR'")) | .local'` -[ "$IP" != "" ] || exit 1 -ETCD_MON=$(echo $ETCD_HOSTS | perl -pe 's/:2380/:2379/g; s/etcd\d*=//g;') -D=`dirname $0` - # Create OSDs on all passed devices for DEV in $*; do @@ -39,8 +37,6 @@ LimitNOFILE=1048576 LimitNPROC=1048576 LimitMEMLOCK=infinity ExecStart=/usr/bin/vitastor-osd \\ - --etcd_address $IP:2379/v3 \\ - --bind_address $IP \\ --osd_num $OSD_NUM \\ --disable_data_fsync 1 \\ --immediate_commit all \\