Add JSON output for ls-osd
This commit is contained in:
@@ -24,6 +24,8 @@ It supports the following commands:
|
|||||||
- [fix](#fix)
|
- [fix](#fix)
|
||||||
- [alloc-osd](#alloc-osd)
|
- [alloc-osd](#alloc-osd)
|
||||||
- [rm-osd](#rm-osd)
|
- [rm-osd](#rm-osd)
|
||||||
|
- [osd-tree](#osd-tree)
|
||||||
|
- [ls-osd](#ls-osd)
|
||||||
- [create-pool](#create-pool)
|
- [create-pool](#create-pool)
|
||||||
- [modify-pool](#modify-pool)
|
- [modify-pool](#modify-pool)
|
||||||
- [ls-pools](#ls-pools)
|
- [ls-pools](#ls-pools)
|
||||||
@@ -246,6 +248,58 @@ Refuses to remove OSDs with data without `--force` and `--allow-data-loss`.
|
|||||||
With `--dry-run` only checks if deletion is possible without data loss and
|
With `--dry-run` only checks if deletion is possible without data loss and
|
||||||
redundancy degradation.
|
redundancy degradation.
|
||||||
|
|
||||||
|
## osd-tree
|
||||||
|
|
||||||
|
`vitastor-cli osd-tree`
|
||||||
|
|
||||||
|
Show current OSD tree.
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```
|
||||||
|
TYPE NAME UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||||
|
host kaveri
|
||||||
|
disk nvme0n1p1
|
||||||
|
osd 3 down 100G 0 % abc,kaveri 1 128k 4k none
|
||||||
|
osd 4 down 100G 0 % 1 128k 4k none
|
||||||
|
disk nvme1n1p1
|
||||||
|
osd 5 down 100G 0 % abc,kaveri 1 128k 4k none
|
||||||
|
osd 6 down 100G 0 % 1 128k 4k none
|
||||||
|
host stump
|
||||||
|
osd 1 up 100G 37.29 % osdone 1 128k 4k all
|
||||||
|
osd 2 up 100G 26.8 % abc 1 128k 4k all
|
||||||
|
osd 7 up 100G 21.84 % 1 128k 4k all
|
||||||
|
osd 8 up 100G 21.63 % 1 128k 4k all
|
||||||
|
osd 9 up 100G 20.69 % 1 128k 4k all
|
||||||
|
osd 10 up 100G 21.61 % 1 128k 4k all
|
||||||
|
osd 11 up 100G 21.53 % 1 128k 4k all
|
||||||
|
osd 12 up 100G 22.4 % 1 128k 4k all
|
||||||
|
```
|
||||||
|
|
||||||
|
## ls-osd
|
||||||
|
|
||||||
|
`vitastor-cli osds|ls-osd|osd-ls`
|
||||||
|
|
||||||
|
Show current OSDs as list.
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```
|
||||||
|
OSD PARENT UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||||
|
3 kaveri/nvme0n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
4 kaveri/nvme0n1p1 down 100G 0 % 1 128k 4k none
|
||||||
|
5 kaveri/nvme1n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
6 kaveri/nvme1n1p1 down 100G 0 % 1 128k 4k none
|
||||||
|
1 stump up 100G 37.29 % osdone 1 128k 4k all
|
||||||
|
2 stump up 100G 26.8 % globl 1 128k 4k all
|
||||||
|
7 stump up 100G 21.84 % 1 128k 4k all
|
||||||
|
8 stump up 100G 21.63 % 1 128k 4k all
|
||||||
|
9 stump up 100G 20.69 % 1 128k 4k all
|
||||||
|
10 stump up 100G 21.61 % 1 128k 4k all
|
||||||
|
11 stump up 100G 21.53 % 1 128k 4k all
|
||||||
|
12 stump up 100G 22.4 % 1 128k 4k all
|
||||||
|
```
|
||||||
|
|
||||||
## create-pool
|
## create-pool
|
||||||
|
|
||||||
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ vitastor-cli - интерфейс командной строки для адм
|
|||||||
- [merge-data](#merge-data)
|
- [merge-data](#merge-data)
|
||||||
- [alloc-osd](#alloc-osd)
|
- [alloc-osd](#alloc-osd)
|
||||||
- [rm-osd](#rm-osd)
|
- [rm-osd](#rm-osd)
|
||||||
|
- [osd-tree](#osd-tree)
|
||||||
|
- [ls-osd](#ls-osd)
|
||||||
- [create-pool](#create-pool)
|
- [create-pool](#create-pool)
|
||||||
- [modify-pool](#modify-pool)
|
- [modify-pool](#modify-pool)
|
||||||
- [ls-pools](#ls-pools)
|
- [ls-pools](#ls-pools)
|
||||||
@@ -263,6 +265,58 @@ vitastor-cli snap-create [-p|--pool <id|name>] <image>@<snapshot>
|
|||||||
С опцией `--dry-run` только проверяет, возможно ли удаление без потери данных и деградации
|
С опцией `--dry-run` только проверяет, возможно ли удаление без потери данных и деградации
|
||||||
избыточности.
|
избыточности.
|
||||||
|
|
||||||
|
## osd-tree
|
||||||
|
|
||||||
|
`vitastor-cli osd-tree`
|
||||||
|
|
||||||
|
Показать дерево OSD.
|
||||||
|
|
||||||
|
Пример вывода:
|
||||||
|
|
||||||
|
```
|
||||||
|
TYPE NAME UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||||
|
host kaveri
|
||||||
|
disk nvme0n1p1
|
||||||
|
osd 3 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
osd 4 down 100G 0 % 1 128k 4k none
|
||||||
|
disk nvme1n1p1
|
||||||
|
osd 5 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
osd 6 down 100G 0 % 1 128k 4k none
|
||||||
|
host stump
|
||||||
|
osd 1 up 100G 37.29 % osdone 1 128k 4k all
|
||||||
|
osd 2 up 100G 26.8 % globl 1 128k 4k all
|
||||||
|
osd 7 up 100G 21.84 % 1 128k 4k all
|
||||||
|
osd 8 up 100G 21.63 % 1 128k 4k all
|
||||||
|
osd 9 up 100G 20.69 % 1 128k 4k all
|
||||||
|
osd 10 up 100G 21.61 % 1 128k 4k all
|
||||||
|
osd 11 up 100G 21.53 % 1 128k 4k all
|
||||||
|
osd 12 up 100G 22.4 % 1 128k 4k all
|
||||||
|
```
|
||||||
|
|
||||||
|
## ls-osd
|
||||||
|
|
||||||
|
`vitastor-cli osds|ls-osd|osd-ls`
|
||||||
|
|
||||||
|
Показать список OSD.
|
||||||
|
|
||||||
|
Пример вывода:
|
||||||
|
|
||||||
|
```
|
||||||
|
OSD PARENT UP SIZE USED% TAGS WEIGHT BLOCK BITMAP IMM
|
||||||
|
3 kaveri/nvme0n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
4 kaveri/nvme0n1p1 down 100G 0 % 1 128k 4k none
|
||||||
|
5 kaveri/nvme1n1p1 down 100G 0 % globl,kaveri 1 128k 4k none
|
||||||
|
6 kaveri/nvme1n1p1 down 100G 0 % 1 128k 4k none
|
||||||
|
1 stump up 100G 37.29 % osdone 1 128k 4k all
|
||||||
|
2 stump up 100G 26.8 % globl 1 128k 4k all
|
||||||
|
7 stump up 100G 21.84 % 1 128k 4k all
|
||||||
|
8 stump up 100G 21.63 % 1 128k 4k all
|
||||||
|
9 stump up 100G 20.69 % 1 128k 4k all
|
||||||
|
10 stump up 100G 21.61 % 1 128k 4k all
|
||||||
|
11 stump up 100G 21.53 % 1 128k 4k all
|
||||||
|
12 stump up 100G 22.4 % 1 128k 4k all
|
||||||
|
```
|
||||||
|
|
||||||
## create-pool
|
## create-pool
|
||||||
|
|
||||||
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
`vitastor-cli create-pool|pool-create <name> (-s <pg_size>|--ec <N>+<K>) -n <pg_count> [OPTIONS]`
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ resume_1:
|
|||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string format_tree()
|
void format_tree()
|
||||||
{
|
{
|
||||||
std::vector<std::string> node_seq = { "" };
|
std::vector<std::string> node_seq = { "" };
|
||||||
std::vector<int> indents = { -1 };
|
std::vector<int> indents = { -1 };
|
||||||
@@ -198,6 +198,38 @@ resume_1:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
json11::Json::array fmt_items;
|
json11::Json::array fmt_items;
|
||||||
|
if (parent->json_output)
|
||||||
|
{
|
||||||
|
for (int i = 1; i < node_seq.size(); i++)
|
||||||
|
{
|
||||||
|
auto & node = placement_tree->nodes.at(node_seq[i]);
|
||||||
|
fmt_items.push_back(json11::Json::object{
|
||||||
|
{ "type", node.level },
|
||||||
|
{ "name", node.name },
|
||||||
|
{ "parent", node.parent },
|
||||||
|
});
|
||||||
|
for (uint64_t osd_num: node.child_osds)
|
||||||
|
{
|
||||||
|
auto & osd = placement_tree->osds.at(osd_num);
|
||||||
|
fmt_items.push_back(json11::Json::object{
|
||||||
|
{ "type", "osd" },
|
||||||
|
{ "name", osd.num },
|
||||||
|
{ "parent", node.name },
|
||||||
|
{ "up", osd.up ? "up" : "down" },
|
||||||
|
{ "size", osd.size },
|
||||||
|
{ "free", osd.free },
|
||||||
|
{ "reweight", osd.reweight },
|
||||||
|
{ "tags", osd.tags },
|
||||||
|
{ "block", (uint64_t)osd.block_size },
|
||||||
|
{ "bitmap", (uint64_t)osd.bitmap_granularity },
|
||||||
|
{ "commit", osd.immediate_commit == IMMEDIATE_NONE ? "none" : (osd.immediate_commit == IMMEDIATE_ALL ? "all" : "small") },
|
||||||
|
{ "op_stats", osd_stats[osd_num]["op_stats"] },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.data = fmt_items;
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (int i = 1; i < node_seq.size(); i++)
|
for (int i = 1; i < node_seq.size(); i++)
|
||||||
{
|
{
|
||||||
auto & node = placement_tree->nodes.at(node_seq[i]);
|
auto & node = placement_tree->nodes.at(node_seq[i]);
|
||||||
@@ -340,7 +372,7 @@ resume_1:
|
|||||||
{ "title", "LAT" },
|
{ "title", "LAT" },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return print_table(fmt_items, cols, parent->color);
|
result.text = print_table(fmt_items, cols, parent->color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
@@ -351,7 +383,7 @@ resume_1:
|
|||||||
load_osd_tree();
|
load_osd_tree();
|
||||||
if (parent->waiting > 0)
|
if (parent->waiting > 0)
|
||||||
return;
|
return;
|
||||||
result.text = format_tree();
|
format_tree();
|
||||||
state = 100;
|
state = 100;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user