Add noout flag for OSDs
parent
266d038b11
commit
ae5af04fde
|
@ -86,7 +86,11 @@ Parent node reference is required for intermediate tree nodes.
|
||||||
Separate OSD settings are set in etc keys `/vitastor/config/osd/<number>`
|
Separate OSD settings are set in etc keys `/vitastor/config/osd/<number>`
|
||||||
in JSON format `{"<key>":<value>}`.
|
in JSON format `{"<key>":<value>}`.
|
||||||
|
|
||||||
As of now, two settings are supported:
|
As of now, the following settings are supported:
|
||||||
|
|
||||||
|
- [reweight](#reweight)
|
||||||
|
- [tags](#tags)
|
||||||
|
- [noout](#noout)
|
||||||
|
|
||||||
## reweight
|
## reweight
|
||||||
|
|
||||||
|
@ -109,6 +113,14 @@ subsets and then use a specific subset for pool instead of all OSDs.
|
||||||
For example you can mark SSD OSDs with tag "ssd" and HDD OSDs with "hdd" and
|
For example you can mark SSD OSDs with tag "ssd" and HDD OSDs with "hdd" and
|
||||||
such tags will work as device classes.
|
such tags will work as device classes.
|
||||||
|
|
||||||
|
## noout
|
||||||
|
|
||||||
|
- Type: boolean
|
||||||
|
- Default: false
|
||||||
|
|
||||||
|
If set to true, [osd_out_time](monitor.en.md#osd_out_time) is ignored for this
|
||||||
|
OSD and it's never removed from data distribution by the monitor.
|
||||||
|
|
||||||
# Pool parameters
|
# Pool parameters
|
||||||
|
|
||||||
## name
|
## name
|
||||||
|
|
|
@ -85,10 +85,11 @@
|
||||||
Настройки отдельных OSD задаются в ключах etcd `/vitastor/config/osd/<number>`
|
Настройки отдельных OSD задаются в ключах etcd `/vitastor/config/osd/<number>`
|
||||||
в JSON-формате `{"<key>":<value>}`.
|
в JSON-формате `{"<key>":<value>}`.
|
||||||
|
|
||||||
На данный момент поддерживаются две настройки:
|
На данный момент поддерживаются следующие настройки:
|
||||||
|
|
||||||
- [reweight](#reweight)
|
- [reweight](#reweight)
|
||||||
- [tags](#tags)
|
- [tags](#tags)
|
||||||
|
- [noout](#noout)
|
||||||
|
|
||||||
## reweight
|
## reweight
|
||||||
|
|
||||||
|
@ -112,6 +113,14 @@
|
||||||
всех. Можно, например, пометить SSD OSD тегом "ssd", а HDD тегом "hdd", в
|
всех. Можно, например, пометить SSD OSD тегом "ssd", а HDD тегом "hdd", в
|
||||||
этом смысле теги работают аналогично классам устройств.
|
этом смысле теги работают аналогично классам устройств.
|
||||||
|
|
||||||
|
## noout
|
||||||
|
|
||||||
|
- Тип: булево (да/нет)
|
||||||
|
- Значение по умолчанию: false
|
||||||
|
|
||||||
|
Если установлено в true, то [osd_out_time](monitor.ru.md#osd_out_time) для этого
|
||||||
|
OSD игнорируется и OSD не удаляется из распределения данных монитором.
|
||||||
|
|
||||||
# Параметры
|
# Параметры
|
||||||
|
|
||||||
## name
|
## name
|
||||||
|
|
|
@ -215,7 +215,7 @@ const etcd_tree = {
|
||||||
}, */
|
}, */
|
||||||
pools: {},
|
pools: {},
|
||||||
osd: {
|
osd: {
|
||||||
/* <id>: { reweight?: 1, tags?: [ 'nvme', ... ] }, ... */
|
/* <id>: { reweight?: 1, tags?: [ 'nvme', ... ], noout?: true }, ... */
|
||||||
},
|
},
|
||||||
/* pgs: {
|
/* pgs: {
|
||||||
hash: string,
|
hash: string,
|
||||||
|
@ -892,10 +892,11 @@ class Mon
|
||||||
for (const osd_num of this.all_osds().sort((a, b) => a - b))
|
for (const osd_num of this.all_osds().sort((a, b) => a - b))
|
||||||
{
|
{
|
||||||
const stat = this.state.osd.stats[osd_num];
|
const stat = this.state.osd.stats[osd_num];
|
||||||
if (stat && stat.size && (this.state.osd.state[osd_num] || Number(stat.time) >= down_time))
|
const osd_cfg = this.state.config.osd[osd_num];
|
||||||
|
if (stat && stat.size && (this.state.osd.state[osd_num] || Number(stat.time) >= down_time ||
|
||||||
|
osd_cfg && osd_cfg.noout))
|
||||||
{
|
{
|
||||||
// Numeric IDs are reserved for OSDs
|
// Numeric IDs are reserved for OSDs
|
||||||
const osd_cfg = this.state.config.osd[osd_num];
|
|
||||||
let reweight = osd_cfg == null ? 1 : Number(osd_cfg.reweight);
|
let reweight = osd_cfg == null ? 1 : Number(osd_cfg.reweight);
|
||||||
if (reweight < 0 || isNaN(reweight))
|
if (reweight < 0 || isNaN(reweight))
|
||||||
reweight = 1;
|
reweight = 1;
|
||||||
|
|
Loading…
Reference in New Issue