Add downgrade docs
This commit is contained in:
+45
-15
@@ -150,7 +150,7 @@ POOL_ID=1
|
|||||||
ALL_OSDS=$(etcdctl --endpoints=your_etcd_address:2379 get --keys-only --prefix /vitastor/osd/stats/ | \
|
ALL_OSDS=$(etcdctl --endpoints=your_etcd_address:2379 get --keys-only --prefix /vitastor/osd/stats/ | \
|
||||||
perl -e '$/ = undef; $a = <>; $a =~ s/\s*$//; $a =~ s!/vitastor/osd/stats/!!g; $a =~ s/\s+/,/g; print $a')
|
perl -e '$/ = undef; $a = <>; $a =~ s/\s*$//; $a =~ s!/vitastor/osd/stats/!!g; $a =~ s/\s+/,/g; print $a')
|
||||||
for i in $(seq 1 $PG_COUNT); do
|
for i in $(seq 1 $PG_COUNT); do
|
||||||
etcdctl --endpoints=your_etcd_address:2379 put /vitastor/pg/history/$POOL_ID/$i '{"all_peers":['$ALL_OSDS']}'; done
|
etcdctl --endpoints=your_etcd_address:2379 put /vitastor/pg/history/$POOL_ID/$i '{"all_peers":['$ALL_OSDS']}'
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -169,21 +169,51 @@ Upgrading is performed without stopping clients (VMs/containers), you just need
|
|||||||
upgrade and restart servers one by one. However, ideally you should restart VMs too
|
upgrade and restart servers one by one. However, ideally you should restart VMs too
|
||||||
to make them use the new version of the client library.
|
to make them use the new version of the client library.
|
||||||
|
|
||||||
Exceptions (specific upgrade instructions):
|
### 1.1.x to 1.2.0
|
||||||
- Upgrading <= 1.1.x to 1.2.0 or later, if you use EC n+k with k>=2, is recommended
|
|
||||||
to be performed with full downtime: first you should stop all clients, then all OSDs,
|
|
||||||
then upgrade and start everything back — because versions before 1.2.0 have several
|
|
||||||
bugs leading to invalid data being read in EC n+k, k>=2 configurations in degraded pools.
|
|
||||||
- Versions <= 0.8.7 are incompatible with versions >= 0.9.0, so you should first
|
|
||||||
upgrade from <= 0.8.7 to 0.8.8 or 0.8.9, and only then to >= 0.9.x. If you upgrade
|
|
||||||
without this intermediate step, client I/O will hang until the end of upgrade process.
|
|
||||||
- Upgrading from <= 0.5.x to >= 0.6.x is not supported.
|
|
||||||
|
|
||||||
Rollback:
|
Upgrading version <= 1.1.x to version >= 1.2.0, if you use EC n+k with k>=2, is recommended
|
||||||
- Version 1.0.0 has a new disk format, so OSDs initiaziled on 1.0.0 can't be rolled
|
to be performed with full downtime: first you should stop all clients, then all OSDs,
|
||||||
back to 0.9.x or previous versions.
|
then upgrade and start everything back — because versions before 1.2.0 have several
|
||||||
- Versions before 0.8.0 don't have vitastor-disk, so OSDs, initialized by it, won't
|
bugs leading to invalid data being read in EC n+k, k>=2 configurations in degraded pools.
|
||||||
start with 0.7.x or 0.6.x. :-)
|
|
||||||
|
### 0.8.7 to 0.9.0
|
||||||
|
|
||||||
|
Versions <= 0.8.7 are incompatible with versions >= 0.9.0, so you should first
|
||||||
|
upgrade from <= 0.8.7 to 0.8.8 or 0.8.9, and only then to >= 0.9.x. If you upgrade
|
||||||
|
without this intermediate step, client I/O will hang until the end of upgrade process.
|
||||||
|
|
||||||
|
### 0.5.x to 0.6.x
|
||||||
|
|
||||||
|
Upgrading from <= 0.5.x to >= 0.6.x is not supported.
|
||||||
|
|
||||||
|
## Downgrade
|
||||||
|
|
||||||
|
Downgrade are also allowed freely, except the following specific instructions:
|
||||||
|
|
||||||
|
### 1.8.0 to 1.7.1
|
||||||
|
|
||||||
|
Before downgrading from version >= 1.8.0 to version <= 1.7.1
|
||||||
|
you have to copy /vitastor/pg/config etcd key to /vitastor/config/pgs:
|
||||||
|
|
||||||
|
```
|
||||||
|
etcdctl --endpoints=http://... get --print-value-only /vitastor/pg/config | \
|
||||||
|
etcdctl --endpoints=http://... put /vitastor/config/pgs
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can just install older packages and restart all services.
|
||||||
|
|
||||||
|
If you performed downgrade without first copying that key, run "add all OSDs into the
|
||||||
|
history records of all PGs" from [Restoring from lost pool configuration](#restoring-from-lost-pool-configuration).
|
||||||
|
|
||||||
|
### 1.0.0 to 0.9.x
|
||||||
|
|
||||||
|
Version 1.0.0 has a new disk format, so OSDs initialized on 1.0.0 or later can't
|
||||||
|
be rolled back to 0.9.x or previous versions.
|
||||||
|
|
||||||
|
### 0.8.0 to 0.7.x
|
||||||
|
|
||||||
|
Versions before 0.8.0 don't have vitastor-disk, so OSDs, initialized by it, won't
|
||||||
|
start with older versions (0.4.x - 0.7.x). :-)
|
||||||
|
|
||||||
## OSD memory usage
|
## OSD memory usage
|
||||||
|
|
||||||
|
|||||||
+45
-15
@@ -147,7 +147,7 @@ POOL_ID=1
|
|||||||
ALL_OSDS=$(etcdctl --endpoints=your_etcd_address:2379 get --keys-only --prefix /vitastor/osd/stats/ | \
|
ALL_OSDS=$(etcdctl --endpoints=your_etcd_address:2379 get --keys-only --prefix /vitastor/osd/stats/ | \
|
||||||
perl -e '$/ = undef; $a = <>; $a =~ s/\s*$//; $a =~ s!/vitastor/osd/stats/!!g; $a =~ s/\s+/,/g; print $a')
|
perl -e '$/ = undef; $a = <>; $a =~ s/\s*$//; $a =~ s!/vitastor/osd/stats/!!g; $a =~ s/\s+/,/g; print $a')
|
||||||
for i in $(seq 1 $PG_COUNT); do
|
for i in $(seq 1 $PG_COUNT); do
|
||||||
etcdctl --endpoints=your_etcd_address:2379 put /vitastor/pg/history/$POOL_ID/$i '{"all_peers":['$ALL_OSDS']}'; done
|
etcdctl --endpoints=your_etcd_address:2379 put /vitastor/pg/history/$POOL_ID/$i '{"all_peers":['$ALL_OSDS']}'
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -166,21 +166,51 @@ done
|
|||||||
достаточно обновлять серверы по одному. Однако, конечно, чтобы запущенные виртуальные машины
|
достаточно обновлять серверы по одному. Однако, конечно, чтобы запущенные виртуальные машины
|
||||||
начали использовать новую версию клиентской библиотеки, их тоже нужно перезапустить.
|
начали использовать новую версию клиентской библиотеки, их тоже нужно перезапустить.
|
||||||
|
|
||||||
Исключения (особые указания при обновлении):
|
### 1.1.x -> 1.2.0
|
||||||
- Обновляться с версий <= 1.1.x до версий >= 1.2.0, если вы используете EC n+k и k>=2,
|
|
||||||
рекомендуется с временной остановкой кластера — сначала нужно остановить всех клиентов,
|
|
||||||
потом все OSD, потом обновить и запустить всё обратно — из-за нескольких багов, которые
|
|
||||||
могли приводить к некорректному чтению данных в деградированных EC-пулах.
|
|
||||||
- Версии <= 0.8.7 несовместимы с версиями >= 0.9.0, поэтому при обновлении с <= 0.8.7
|
|
||||||
нужно сначала обновиться до 0.8.8 или 0.8.9, а уже потом до любых версий >= 0.9.x.
|
|
||||||
Иначе клиентский ввод-вывод зависнет до завершения обновления.
|
|
||||||
- Обновление с версий 0.5.x и более ранних до 0.6.x и более поздних не поддерживается.
|
|
||||||
|
|
||||||
Откат:
|
Обновляться с версий <= 1.1.x до версий >= 1.2.0, если вы используете EC n+k и k>=2,
|
||||||
- В версии 1.0.0 поменялся дисковый формат, поэтому OSD, созданные на версии >= 1.0.0,
|
рекомендуется с временной остановкой кластера — сначала нужно остановить всех клиентов,
|
||||||
нельзя откатить до версии 0.9.x и более ранних.
|
потом все OSD, потом обновить и запустить всё обратно — из-за нескольких багов, которые
|
||||||
- В версиях ранее 0.8.0 нет vitastor-disk, значит, созданные им OSD нельзя откатить
|
могли приводить к некорректному чтению данных в деградированных EC-пулах.
|
||||||
до 0.7.x или 0.6.x. :-)
|
|
||||||
|
### 0.8.7 -> 0.9.0
|
||||||
|
|
||||||
|
Версии <= 0.8.7 несовместимы с версиями >= 0.9.0, поэтому при обновлении с <= 0.8.7
|
||||||
|
нужно сначала обновиться до 0.8.8 или 0.8.9, а уже потом до любых версий >= 0.9.x.
|
||||||
|
Иначе клиентский ввод-вывод зависнет до завершения обновления.
|
||||||
|
|
||||||
|
### 0.5.x -> 0.6.x
|
||||||
|
|
||||||
|
Обновление с версий 0.5.x и более ранних до 0.6.x и более поздних не поддерживается.
|
||||||
|
|
||||||
|
## Откат версии
|
||||||
|
|
||||||
|
Откат (понижение версии) тоже свободно разрешён, кроме указанных ниже случаев:
|
||||||
|
|
||||||
|
### 1.8.0 -> 1.7.1
|
||||||
|
|
||||||
|
Перед понижением версии с >= 1.8.0 до <= 1.7.1 вы должны скопировать ключ
|
||||||
|
etcd `/vitastor/pg/config` в `/vitastor/config/pgs`:
|
||||||
|
|
||||||
|
```
|
||||||
|
etcdctl --endpoints=http://... get --print-value-only /vitastor/pg/config | \
|
||||||
|
etcdctl --endpoints=http://... put /vitastor/config/pgs
|
||||||
|
```
|
||||||
|
|
||||||
|
После этого можно просто установить более старые пакеты и перезапустить все сервисы.
|
||||||
|
|
||||||
|
Если вы откатили версию, не скопировав предварительно этот ключ - выполните "добавление всех
|
||||||
|
OSD в исторические записи всех PG" из раздела [Восстановление потерянной конфигурации пулов](#восстановление-потерянной-конфигурации-пулов).
|
||||||
|
|
||||||
|
### 1.0.0 -> 0.9.x
|
||||||
|
|
||||||
|
В версии 1.0.0 поменялся дисковый формат, поэтому OSD, созданные на версии >= 1.0.0,
|
||||||
|
нельзя откатить до версии 0.9.x и более ранних.
|
||||||
|
|
||||||
|
### 0.8.0 -> 0.7.x
|
||||||
|
|
||||||
|
В версиях ранее 0.8.0 нет vitastor-disk, значит, созданные им OSD не запустятся на
|
||||||
|
более ранних версиях (0.4.x - 0.7.x). :-)
|
||||||
|
|
||||||
## Потребление памяти OSD
|
## Потребление памяти OSD
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user