diff --git a/cpp-btree b/cpp-btree index 8de8b467..45e6d1f1 160000 --- a/cpp-btree +++ b/cpp-btree @@ -1 +1 @@ -Subproject commit 8de8b467acbca50cfd8835c20e0e379110f3b32b +Subproject commit 45e6d1f13196a0824e2089a586c53b9de0283f17 diff --git a/docs/gen-docs.js b/docs/gen-docs.js new file mode 100755 index 00000000..7b71cbf1 --- /dev/null +++ b/docs/gen-docs.js @@ -0,0 +1,55 @@ +#!/usr/bin/nodejs + +const fs = require('fs'); +const yaml = require('yaml'); + +const L = { + en: {}, + ru: { + Type: 'Тип', + Default: 'Значение по умолчанию', + Minimum: 'Минимальное значение', + }, +}; +const types = { + en: { + string: 'string', + bool: 'boolean', + int: 'integer', + sec: 'seconds', + ms: 'milliseconds', + us: 'microseconds', + }, + ru: { + string: 'строка', + bool: 'булево (да/нет)', + int: 'целое число', + sec: 'секунды', + ms: 'миллисекунды', + us: 'микросекунды', + }, +}; +const params_files = fs.readdirSync(__dirname+'/params') + .filter(f => f.substr(-4) == '.yml') + .map(f => f.substr(0, f.length-4)); + +for (const file of params_files) +{ + const cfg = yaml.parse(fs.readFileSync(__dirname+'/params/'+file+'.yml', { encoding: 'utf-8' })); + for (const lang in types) + { + let out = '\n\n{{< toc >}}'; + for (const c of cfg) + { + out += `\n\n## ${c.name}\n\n`; + out += `- ${L[lang]['Type'] || 'Type'}: ${c["type_"+lang] || types[lang][c.type] || c.type}\n`; + if (c.default !== undefined) + out += `- ${L[lang]['Default'] || 'Default'}: ${c.default}\n`; + if (c.min !== undefined) + out += `- ${L[lang]['Minimum'] || 'Minimum'}: ${c.min}\n`; + out += `\n`+(c["info_"+lang] || c["info"]).replace(/\s+$/, ''); + } + const head = fs.readFileSync(__dirname+'/params/head/'+file+'.'+lang+'.md', { encoding: 'utf-8' }); + fs.writeFileSync(__dirname+'/hugo/content/config/'+file+'.'+lang+'.md', head.replace(/\s+$/, '')+out+"\n"); + } +} diff --git a/docs/params/head/common.en.md b/docs/params/head/common.en.md new file mode 100644 index 00000000..00e3c728 --- /dev/null +++ b/docs/params/head/common.en.md @@ -0,0 +1,6 @@ +--- +title: Common Parameters +weight: 1 +--- + +These are the most common parameters which apply to all components of Vitastor. diff --git a/docs/params/head/common.ru.md b/docs/params/head/common.ru.md new file mode 100644 index 00000000..c1e7bdaa --- /dev/null +++ b/docs/params/head/common.ru.md @@ -0,0 +1,6 @@ +--- +title: Общие параметры +weight: 1 +--- + +Это наиболее общие параметры, используемые всеми компонентами Vitastor. diff --git a/docs/params/head/layout-cluster.en.md b/docs/params/head/layout-cluster.en.md new file mode 100644 index 00000000..88c475b9 --- /dev/null +++ b/docs/params/head/layout-cluster.en.md @@ -0,0 +1,7 @@ +--- +title: Cluster-Wide Disk Layout Parameters +weight: 2 +--- + +These parameters apply to clients and OSDs, are fixed at the moment of OSD drive +initialization and can't be changed after it without losing data. diff --git a/docs/params/head/layout-cluster.ru.md b/docs/params/head/layout-cluster.ru.md new file mode 100644 index 00000000..869b9a37 --- /dev/null +++ b/docs/params/head/layout-cluster.ru.md @@ -0,0 +1,7 @@ +--- +title: Дисковые параметры уровня кластера +weight: 2 +--- + +Данные параметры используются клиентами и OSD, задаются в момент инициализации +диска OSD и не могут быть изменены после этого без потери данных. diff --git a/docs/params/head/layout-osd.en.md b/docs/params/head/layout-osd.en.md new file mode 100644 index 00000000..9fe1a5e2 --- /dev/null +++ b/docs/params/head/layout-osd.en.md @@ -0,0 +1,7 @@ +--- +title: OSD Disk Layout Parameters +weight: 3 +--- + +These parameters apply to OSDs, are fixed at the moment of OSD drive +initialization and can't be changed after it without losing data. diff --git a/docs/params/head/layout-osd.ru.md b/docs/params/head/layout-osd.ru.md new file mode 100644 index 00000000..4e3377d3 --- /dev/null +++ b/docs/params/head/layout-osd.ru.md @@ -0,0 +1,8 @@ +--- +title: Дисковые параметры OSD +weight: 3 +--- + +Данные параметры используются только OSD и, также как и общекластерные +дисковые параметры, задаются в момент инициализации дисков OSD и не могут быть +изменены после этого без потери данных. diff --git a/docs/params/head/monitor.en.md b/docs/params/head/monitor.en.md new file mode 100644 index 00000000..2dea1d70 --- /dev/null +++ b/docs/params/head/monitor.en.md @@ -0,0 +1,6 @@ +--- +title: Monitor Parameters +weight: 6 +--- + +These parameters only apply to Monitors. diff --git a/docs/params/head/monitor.ru.md b/docs/params/head/monitor.ru.md new file mode 100644 index 00000000..33a3b838 --- /dev/null +++ b/docs/params/head/monitor.ru.md @@ -0,0 +1,6 @@ +--- +title: Параметры мониторов +weight: 6 +--- + +Данные параметры используются только мониторами Vitastor. diff --git a/docs/params/head/network.en.md b/docs/params/head/network.en.md new file mode 100644 index 00000000..ba3bfd21 --- /dev/null +++ b/docs/params/head/network.en.md @@ -0,0 +1,7 @@ +--- +title: Network Protocol Parameters +weight: 4 +--- + +These parameters apply to clients and OSDs and affect network connection logic +between clients, OSDs and etcd. diff --git a/docs/params/head/network.ru.md b/docs/params/head/network.ru.md new file mode 100644 index 00000000..d77c74c1 --- /dev/null +++ b/docs/params/head/network.ru.md @@ -0,0 +1,7 @@ +--- +title: Параметры сетевого протокола +weight: 4 +--- + +Данные параметры используются клиентами и OSD и влияют на логику сетевого +взаимодействия между клиентами, OSD, а также etcd. diff --git a/docs/params/head/osd.en.md b/docs/params/head/osd.en.md new file mode 100644 index 00000000..a5340a82 --- /dev/null +++ b/docs/params/head/osd.en.md @@ -0,0 +1,7 @@ +--- +title: Runtime OSD Parameters +weight: 5 +--- + +These parameters only apply to OSDs, are not fixed at the moment of OSD drive +initialization and can be changed with an OSD restart. diff --git a/docs/params/head/osd.ru.md b/docs/params/head/osd.ru.md new file mode 100644 index 00000000..f805f72d --- /dev/null +++ b/docs/params/head/osd.ru.md @@ -0,0 +1,8 @@ +--- +title: Изменяемые параметры OSD +weight: 5 +--- + +Данные параметры используются только OSD, но, в отличие от дисковых параметров, +не фиксируются в момент инициализации дисков OSD и могут быть изменены в любой +момент с перезапуском OSD. diff --git a/hugo/archetypes/default.md b/hugo/archetypes/default.md new file mode 100644 index 00000000..00e77bd7 --- /dev/null +++ b/hugo/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/hugo/config.yaml b/hugo/config.yaml new file mode 100644 index 00000000..0203f425 --- /dev/null +++ b/hugo/config.yaml @@ -0,0 +1,35 @@ +baseURL: http://localhost +title: Vitastor +theme: hugo-geekdoc +#languageCode: en-us + +pluralizeListTitles: false + +# Geekdoc required configuration +pygmentsUseClasses: true +pygmentsCodeFences: true +disablePathToLower: true + +# Required if you want to render robots.txt template +enableRobotsTXT: true + +defaultContentLanguage: en +languages: + en: + weight: 1 + languageName: English + ru: + weight: 1 + languageName: Русский + +markup: + goldmark: + renderer: + # Needed for mermaid shortcode + unsafe: true + tableOfContents: + startLevel: 1 + endLevel: 9 + +taxonomies: + tag: tags diff --git a/hugo/content/_index.md b/hugo/content/_index.md new file mode 100644 index 00000000..aefdd528 --- /dev/null +++ b/hugo/content/_index.md @@ -0,0 +1,6 @@ +## The Idea + +Vitastor is a small, simple and fast clustered block storage (storage for VM drives), +architecturally similar to Ceph which means strong consistency, primary-replication, +symmetric clustering and automatic data distribution over any number of drives +of any size with configurable redundancy (replication or erasure codes/XOR). diff --git a/hugo/content/config/_index.en.md b/hugo/content/config/_index.en.md new file mode 100644 index 00000000..e982d56e --- /dev/null +++ b/hugo/content/config/_index.en.md @@ -0,0 +1,5 @@ +--- +title: Parameter Reference +weight: 1 +--- + diff --git a/hugo/content/config/_index.ru.md b/hugo/content/config/_index.ru.md new file mode 100644 index 00000000..a3a3e990 --- /dev/null +++ b/hugo/content/config/_index.ru.md @@ -0,0 +1,5 @@ +--- +title: Перечень настроек +weight: 1 +--- + diff --git a/hugo/content/config/pool.en.md b/hugo/content/config/pool.en.md new file mode 100644 index 00000000..e2359301 --- /dev/null +++ b/hugo/content/config/pool.en.md @@ -0,0 +1,5 @@ +--- +title: Pool configuration +weight: 100 +--- + diff --git a/hugo/content/installation/packages.md b/hugo/content/installation/packages.md new file mode 100644 index 00000000..227df041 --- /dev/null +++ b/hugo/content/installation/packages.md @@ -0,0 +1,5 @@ +--- +title: Packages +weight: 2 +--- + diff --git a/hugo/content/installation/quickstart.md b/hugo/content/installation/quickstart.md new file mode 100644 index 00000000..add2b277 --- /dev/null +++ b/hugo/content/installation/quickstart.md @@ -0,0 +1,5 @@ +--- +title: Quick Start +weight: 1 +--- + diff --git a/hugo/content/installation/source.md b/hugo/content/installation/source.md new file mode 100644 index 00000000..e138c548 --- /dev/null +++ b/hugo/content/installation/source.md @@ -0,0 +1,5 @@ +--- +title: Building from Source +weight: 3 +--- + diff --git a/hugo/content/introduction/_index.md b/hugo/content/introduction/_index.md new file mode 100644 index 00000000..c1bf0820 --- /dev/null +++ b/hugo/content/introduction/_index.md @@ -0,0 +1,4 @@ +--- +title: Introduction +weight: -1 +--- diff --git a/hugo/content/introduction/architecture.md b/hugo/content/introduction/architecture.md new file mode 100644 index 00000000..42917cc9 --- /dev/null +++ b/hugo/content/introduction/architecture.md @@ -0,0 +1,5 @@ +--- +title: Architecture +weight: 3 +--- + diff --git a/hugo/content/introduction/author.md b/hugo/content/introduction/author.md new file mode 100644 index 00000000..50ba68c9 --- /dev/null +++ b/hugo/content/introduction/author.md @@ -0,0 +1,5 @@ +--- +title: Author and License +weight: 3 +--- + diff --git a/hugo/content/introduction/features.md b/hugo/content/introduction/features.md new file mode 100644 index 00000000..541c91a3 --- /dev/null +++ b/hugo/content/introduction/features.md @@ -0,0 +1,5 @@ +--- +title: Features +weight: 1 +--- + diff --git a/hugo/content/performance/comparison1.md b/hugo/content/performance/comparison1.md new file mode 100644 index 00000000..49305e6c --- /dev/null +++ b/hugo/content/performance/comparison1.md @@ -0,0 +1,5 @@ +--- +title: Example Comparison with Ceph +weight: 4 +--- + diff --git a/hugo/content/performance/theoretical.md b/hugo/content/performance/theoretical.md new file mode 100644 index 00000000..11a8f0b2 --- /dev/null +++ b/hugo/content/performance/theoretical.md @@ -0,0 +1,5 @@ +--- +title: Vitastor's Theoretical Maximum Performance +weight: 3 +--- + diff --git a/hugo/content/performance/tuning.md b/hugo/content/performance/tuning.md new file mode 100644 index 00000000..b882b541 --- /dev/null +++ b/hugo/content/performance/tuning.md @@ -0,0 +1,5 @@ +--- +title: Tuning +weight: 2 +--- + diff --git a/hugo/content/performance/understanding.md b/hugo/content/performance/understanding.md new file mode 100644 index 00000000..532fb363 --- /dev/null +++ b/hugo/content/performance/understanding.md @@ -0,0 +1,5 @@ +--- +title: Understanding Storage Performance +weight: 1 +--- + diff --git a/hugo/content/usage/cli.md b/hugo/content/usage/cli.md new file mode 100644 index 00000000..20ebaf54 --- /dev/null +++ b/hugo/content/usage/cli.md @@ -0,0 +1,7 @@ +--- +title: Vitastor CLI +weight: 1 +--- + +{{< toc >}} + diff --git a/hugo/content/usage/nbd.md b/hugo/content/usage/nbd.md new file mode 100644 index 00000000..52301e44 --- /dev/null +++ b/hugo/content/usage/nbd.md @@ -0,0 +1,5 @@ +--- +title: NBD +weight: 6 +--- + diff --git a/hugo/content/usage/qemu.md b/hugo/content/usage/qemu.md new file mode 100644 index 00000000..56557513 --- /dev/null +++ b/hugo/content/usage/qemu.md @@ -0,0 +1,5 @@ +--- +title: QEMU and qemu-img +weight: 2 +--- + diff --git a/hugo/i18n/ru.yaml b/hugo/i18n/ru.yaml new file mode 100644 index 00000000..a4f4eb40 --- /dev/null +++ b/hugo/i18n/ru.yaml @@ -0,0 +1,37 @@ +--- +nav_navigation: Навигация +nav_tags: Теги +nav_more: Подробнее +nav_top: К началу + +form_placeholder_search: Поиск + +error_page_title: Открыта несуществующая страница +error_message_title: Потерялись? +error_message_code: Ошибка 404 +error_message_text: > + Похоже, страница, которую вы открыли, не существует. Попробуйте найти + нужную информацию с главной страницы. + +button_toggle_dark: Переключить тёмный/светлый/авто режим +button_nav_open: Показать навигацию +button_nav_close: Скрыть навигацию +button_menu_open: Открыть меню +button_menu_close: Закрыть меню +button_homepage: На главную + +title_anchor_prefix: "Ссылка на:" + +posts_read_more: Читать подробнее +posts_read_time: + one: "Одна минута на чтение" + other: "{{ . }} минут(ы) на чтение" +posts_update_prefix: Обновлено + +footer_build_with: > + Сделано на Hugo с + +footer_legal_notice: Правовая информация +footer_privacy_policy: Приватность + +language_switch_no_tranlation_prefix: "Страница не переведена:" diff --git a/hugo/layouts/partials/site-footer.html b/hugo/layouts/partials/site-footer.html new file mode 100644 index 00000000..15021bfa --- /dev/null +++ b/hugo/layouts/partials/site-footer.html @@ -0,0 +1,34 @@ + diff --git a/hugo/static/brand.svg b/hugo/static/brand.svg new file mode 100644 index 00000000..e51bde0e --- /dev/null +++ b/hugo/static/brand.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/hugo/static/custom.css b/hugo/static/custom.css new file mode 100644 index 00000000..0b9be97e --- /dev/null +++ b/hugo/static/custom.css @@ -0,0 +1,138 @@ +/* Global customization */ + +:root { + --code-max-height: 60rem; +} + +/* Light mode theming */ +:root, +:root[color-mode="light"] { + --header-background: #404050; + --header-font-color: #ffffff; + + --body-background: #ffffff; + --body-font-color: #343a40; + + --button-background: #62cb97; + --button-border-color: #4ec58a; + + --link-color: #c54e8a; + --link-color-visited: #c54e8a; + + --code-background: #f5f6f8; + --code-accent-color: #e3e7eb; + --code-accent-color-lite: #eff1f3; + + --accent-color: #e9ecef; + --accent-color-lite: #f8f9fa; + + --control-icons: #b2bac1; + + --footer-background: #606070; + --footer-font-color: #ffffff; + --footer-link-color: #ffcc5c; + --footer-link-color-visited: #ffcc5c; +} +@media (prefers-color-scheme: light) { + :root { + --header-background: #404050; + --header-font-color: #ffffff; + + --body-background: #ffffff; + --body-font-color: #343a40; + + --button-background: #62cb97; + --button-border-color: #4ec58a; + + --link-color: #c54e8a; + --link-color-visited: #c54e8a; + + --code-background: #f5f6f8; + --code-accent-color: #e3e7eb; + --code-accent-color-lite: #eff1f3; + + --accent-color: #e9ecef; + --accent-color-lite: #f8f9fa; + + --control-icons: #b2bac1; + + --footer-background: #606070; + --footer-font-color: #ffffff; + --footer-link-color: #ffcc5c; + --footer-link-color-visited: #ffcc5c; + } +} + +/* Dark mode theming */ +:root[color-mode="dark"] { + --header-background: #202830; + --header-font-color: #ffffff; + + --body-background: #343a44; + --body-font-color: #ced3d8; + + --button-background: #62cb97; + --button-border-color: #4ec58a; + + --link-color: #7ac29e; + --link-color-visited: #7ac29e; + + --code-background: #2f353a; + --code-accent-color: #262b2f; + --code-accent-color-lite: #2b3035; + + --accent-color: #2b3035; + --accent-color-lite: #2f353a; + + --control-icons: #b2bac1; + + --footer-background: #2f333e; + --footer-font-color: #cccccc; + --footer-link-color: #7ac29e; + --footer-link-color-visited: #7ac29e; +} +@media (prefers-color-scheme: dark) { + :root { + --header-background: #404070; + --header-font-color: #ffffff; + + --body-background: #343a40; + --body-font-color: #ced3d8; + + --button-background: #62cb97; + --button-border-color: #4ec58a; + + --link-color: #7ac29e; + --link-color-visited: #7ac29e; + + --code-background: #2f353a; + --code-accent-color: #262b2f; + --code-accent-color-lite: #2b3035; + + --accent-color: #2b3035; + --accent-color-lite: #2f353a; + + --control-icons: #b2bac1; + + --footer-background: #2f333e; + --footer-font-color: #cccccc; + --footer-link-color: #7ac29e; + --footer-link-color-visited: #7ac29e; + } +} + +.gdoc-brand__img { + width: 48px; + height: auto; + margin-top: -4px; + margin-bottom: -4px; +} + +.gdoc-menu-header > span { + display: flex; + flex-direction: row-reverse; +} + +span.gdoc-language { + margin-right: 20px; +} diff --git a/hugo/static/favicon/favicon-16x16.png b/hugo/static/favicon/favicon-16x16.png new file mode 100644 index 00000000..2e88ee28 Binary files /dev/null and b/hugo/static/favicon/favicon-16x16.png differ diff --git a/hugo/static/favicon/favicon-32x32.png b/hugo/static/favicon/favicon-32x32.png new file mode 100644 index 00000000..cfacc53f Binary files /dev/null and b/hugo/static/favicon/favicon-32x32.png differ diff --git a/hugo/static/favicon/favicon.svg b/hugo/static/favicon/favicon.svg new file mode 100644 index 00000000..17683e5f --- /dev/null +++ b/hugo/static/favicon/favicon.svg @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/json11 b/json11 index fd37016c..52a3af66 160000 --- a/json11 +++ b/json11 @@ -1 +1 @@ -Subproject commit fd37016cf85075303de74bab9c61e5d13bf71f64 +Subproject commit 52a3af664f40775426b189c85b6088d436d05df3